ln -s vs mount --bind

19

Existe alguma diferença prática entre usar ln -s ou mount --bind ?

Eu quero mover algumas pastas para outra partição, sem alterar sua configuração de daemon, e me pergunto qual abordagem devo seguir.

Eu prefiro ln -s , já que requer configuração mínima (sem /etc/fstab de modificações), mas talvez haja uma razão pela qual não é comum?

    
por SyRenity 31.12.2009 / 13:51

4 respostas

25

Claro que sim. Se você executar o ln -s você cria um link simbólico, que é um inode apontando para um determinado objeto do sistema de arquivos, que é por que os links simbólicos podem atravessar sistemas de arquivos e os links físicos não podem: hard links não possuem seu próprio inode.

Se você montar um sistema de arquivos com --bind , crie um segundo ponto de montagem para um dispositivo ou sistema de arquivos.

Se você imaginar um link simbólico como um redirecionamento, visualize um sistema de arquivos --bind montado para criar outro gateway para os dados.

Links simbólicos e montagens de ligação são um jogo totalmente diferente.

A montagem --bind parece um pouco mais robusta para mim e provavelmente é um pouco mais rápida do que trabalhar com um link simbólico. Por outro lado, não há inconvenientes sérios no uso do link simbólico, já que o impacto no desempenho será pequeno (se é que existe).

Editar : Eu estive pensando sobre isso, e o impacto no desempenho pode ser um pouco maior do que eu pensava inicialmente. Se você tiver um aplicativo que leia muitos arquivos diferentes, cada novo arquivo aberto exigirá uma leitura extra. Algumas pesquisas aqui sugerem que minha suposição está correta, por isso, se você tiver um aplicativo IO pesado em execução, considere o --bind option para montar acima da solução de link simbólico.

A razão não é comum, é provavelmente o fato de que um link simbólico é visível em um ls , enquanto uma montagem de bind é visível apenas ao olhar em / proc / mounts ou / etc / mtab (que é o que a montagem comando, se for executado sem parâmetros). Fora isso, não acho que existam problemas. Eu estaria interessado se houvesse, no entanto.

Adição : outro problema com ln -s é que, para alguns aplicativos, quando o caminho é desreferenciado, pode ser que o aplicativo seja recusado se "espera" que determinados itens estejam em locais específicos.

    
por 31.12.2009 / 14:02
6

Uma das grandes diferenças entre ln -s e uma montagem de ligação é que você pode usar uma montagem de ligação para "modificar" um sistema de arquivos somente leitura. Por exemplo, se houvesse um CD montado em /mnt/application e você quisesse substituir /mnt/application/badconfigfile.conf por uma versão correta, você poderia fazer isso:

mount -o bind /path/to/correct/file.conf /mnt/application/badconfigfile.conf

Não seria possível afetar a mesma alteração usando um link simbólico porque você não pode modificar o sistema de arquivos de destino.

Isso também pode ser usado para um bom efeito se você distribuir um conjunto comum de software via NFS (ou algum tipo de sistema de arquivos em cluster) e quiser fazer alterações específicas do host em um sistema. Você pode simplesmente usar uma montagem de ligação no sistema de destino para substituir os arquivos ou diretórios conforme necessário.

    
por 11.02.2011 / 15:39
2

Diferença prática # 1 para mim entre ln -s e mount --bind:

O vsftpd não permite navegar em um diretório através de um link simbólico, mas permite quando montado.

Eu não sei qual daemon você está usando, mas pode se comportar de maneira semelhante.

    
por 11.02.2011 / 15:31
1

Pode-se notar que, como conseqüência da ligação a uma montagem, que é em si uma ligação, que é posteriormente rebote, a ligação original permanece intacta, assumindo que tudo está fisicamente conectado.

Ou seja, se vincular A a B e vincular B a C e, em seguida, vincular D a B, C ainda será vinculado a A. Isso pode ser o que você deseja ou não. Se alguém desejar que C siga B, volte a usar os mesmos destinos, por exemplo, mount -o remount B C ou use --rbind . Não há opção --rebind .

    
por 02.02.2014 / 08:07