Montando apenas um caminho particular de um sistema de arquivos

3

Depois de um tempo, finalmente entendi como as montagens de bind são indistinguíveis das montagens "regulares" no Linux (além de serem montadas com --bind ). Se /dev/sda1 estiver montado em /mnt e /mnt/variable_data for montado em /var , a única diferença entre os dois é que a raiz do sistema de arquivos em /dev/sda1 está montada em /mnt enquanto o caminho /variable_data no mesmo sistema de arquivos é montado em /var (no sistema de arquivos virtual / root).

Minha pergunta é dupla:

  1. Supondo que eu não execute mount /dev/sda1 /mnt (o que significa que não há /mnt/variable_data ), como posso montar o /variable_data dentro de sda1 at /var ?
  2. Como o acima pode ser realizado com fstab ?
por Melab 07.06.2017 / 15:56

2 respostas

1

A maneira mais simples e possivelmente única é montar /dev/sda1 primeiro. Você pode montar o dispositivo somente para leitura se estiver preocupado com alterações acidentais, mas permissões de montagem de bind podem ser complicadas para serem configuradas. Também é possível over mount o diretório na parte superior do dispositivo. Em outras palavras, em geral, você pode montar /dev/sda1 a /var e, em seguida, montar /var/variable_data a /var .

Um possível problema com isso é que o processo de montagem não é atômico e há uma chance de que algo possa ser gravado em /var no breve momento em que /dev/sda1 é montado lá. Mesmo se /dev/sda1 for montado somente para leitura, isso pode causar problemas, dependendo de como as falhas de gravação são manipuladas. Como /var é frequentemente uma partição separada montada em fstab, isso não deve ser um problema.

    
por 07.06.2017 / 17:08
0

A partir da página de manual de mount(2) , não acho você pode fazer isso diretamente. A chamada do sistema não usa um caminho que seria usado para considerar uma subárvore do sistema de arquivos montado. Há apenas o dispositivo de origem, caminho de destino, tipo de sistema de arquivos, sinalizadores de montagem (as opções comuns como ro e nosuid ) e um campo opaco data que é interpretado pelo próprio sistema de arquivos (as opções específicas do sistema de arquivos).

Parece que você precisa montar o dispositivo em um caminho temporário, em seguida, ligar a subárvore desejada e, finalmente, desmontar o primeiro sistema de arquivos. Além da desmontagem, você pode fazer isso a partir do fstab. Algo como isso funcionou no Ubuntu (com systemd):

# fstab
/dev/somedevice      /tmpmnt      ext4      auto,rw
/tmpmnt/var          /var         none      auto,bind
    
por 08.06.2017 / 13:53