Esta não é uma resposta direta, mas você pode obter um comportamento semelhante ao de montagem em dois lugares usando mount --bind
Estou lendo O design do sistema operacional Unix por Maurice J Bach, e tenho duas perguntas sobre a montagem do sistema de arquivos:
Por que a montagem do sistema de arquivos falha quando a contagem de referência do ponto de montagem inode é maior que 1 na tabela de arquivos?
Por que o Unix não permite a montagem de um sistema de arquivos em vários pontos? (Que coisas ruins poderiam acontecer se isso fosse permitido?)
Esta não é uma resposta direta, mas você pode obter um comportamento semelhante ao de montagem em dois lugares usando mount --bind
A página do manual da HP (HP-UX) para mount(2)
diz:
If mount() fails, errno is set to one of the following values.
[EACCES]
Um componente do prefixo do caminho nega permissão de pesquisa. [EBUSY]
caminho está atualmente montado, é o diretório de trabalho atual de alguém ou está ocupado. [EBUSY]
O sistema de arquivos associado ao fs está atualmente montado. Você recebe o primeiro EBUSY quando sua pergunta (1) se aplica porque:
/some/where
) for o diretório atual de algum processo, você terá um processo com uma visualização diferente do conteúdo de /some/where
; novatos ver o que está no sistema de arquivos montado, mas os processos antigos ver o que estava no diretório montado-upon. Você recebe o segundo EBUSY para responder sua pergunta (2) quando o sistema de arquivos já está montado - em outras palavras, você não pode montá-lo duas vezes. Isso é uma coisa boa - haveria um terrível perigo de confusão se dois pontos de montagem separados fossem distribuídos, assumindo que eles tivessem acesso exclusivo ao superbloco, etc., quando ele fosse de fato compartilhado. Também seria confuso se a criação de um arquivo /some/where/newfile
também criasse /opt/other/newfile
simultaneamente, porque o mesmo dispositivo foi montado em /some/where
e /opt/other
.
Eu não verifiquei as páginas de manual do AIX, Solaris, Linux, MacOS X e BSD para mount(2)
, mas espero que o comportamento seja o mesmo.
Basicamente, a possibilidade de montar um sistema de arquivos em vários lugares quebra o conceito de um sistema de arquivos hierárquico em árvore, convertendo-o em um gráfico acíclico direcionado (até você pode tentar montar um sistema de arquivos montado em um subdiretório dele). gráfico geral não-cíclico cíclico). Basicamente, o problema é que quando você tenta passar para o diretório pai usando a entrada ..
no diretório raiz montado, você tem que selecionar qual dos vários diretórios pais a seguir seguir para chegar ao pai.
No linux, há uma opção --bind
para montar que permite montar um diretório (não necessário para que seja um diretório raiz em um sistema de arquivos) em outro lugar (não um sistema de arquivos montado, mas um diretório simples) assim você pode montar coisas como os sistemas de arquivos / proc ou / sys em processos chroot (2) ed e permitir que eles acessem esta estrutura.
Esse tipo de montagem é diferente no mesmo sentido que a diferença entre links físicos e físicos para arquivos. Ele é tratado de maneira diferente pelo kernel e permite apenas um verdadeiro ponto de montagem por sistema de arquivos raiz. O motivo é basicamente o mesmo que você não pode criar loops com links rígidos e você pode com soft. Não é possível montar novamente um sistema de arquivos montado e você pode mount --bind
várias vezes o mesmo diretório.
Tags unix filesystems