Este é um caso de um detalhe de implementação que vazou.
Em um sistema UNIX, cada diretório consiste em uma lista de nomes mapeados para os números inode . Um inode contém metadados que informam ao sistema se é um arquivo, diretório, dispositivo especial, pipe nomeado, etc. Se for um arquivo ou diretório, ele também informa ao sistema onde encontrar o conteúdo do arquivo ou diretório no disco. A maioria dos inodes são arquivos ou diretórios. A opção -i
para ls
listará os números de inode.
A montagem de um sistema de arquivos leva um diretório inode e define um sinalizador na cópia em memória do kernel para dizer "na verdade, ao procurar pelo conteúdo desse diretório, observe este outro sistema de arquivos" (veja o slide 10 de esta apresentação ). Isso é relativamente fácil, pois está mudando um único item de dados.
Por que não cria uma entrada de diretório para você apontando para o novo inode? Existem duas maneiras de implementar isso, ambas com desvantagens. Uma é escrever fisicamente um novo diretório no sistema de arquivos - mas isso falha se o sistema de arquivos for somente de leitura! O outro é adicionar a cada processo de listagem de diretórios uma lista de coisas "extras" que não estão realmente lá. Isso é complicado e potencialmente incorre em um pequeno impacto no desempenho de cada operação de arquivo.
Se você quiser pontos de montagem criados dinamicamente, o sistema automount
pode fazer isso. Sistemas de arquivos especiais que não são de disco também podem criar diretórios à vontade, por ex. proc
, sys
, devfs
e assim por diante.
Editar: veja também a resposta para O que acontece quando você 'monta sobre' uma pasta existente com conteúdo?