Desmonte uma montagem rbind sem afetar a montagem original

9

Perguntado sobre serverfault mas não recebi atenção suficiente, então repostamos aqui, com a esperança de que algumas pessoas aqui saibam a resposta.

Há outra pergunta discutindo sobre o desmontagem de montagens de rbind, mas a solução tem efeito indesejado. Considere o seguinte layout de diretório:

.
├── A_dir
│   └── mount_b
├── B_dir
│   └── mount_c
└── C_dir

Agora vinculo C_dir a B_dir/mount_c e rbind B_dir a A_dir/mount_b :

[hidden]$ sudo mount --bind C_dir B_dir/mount_c
[hidden]$ sudo mount --rbind B_dir A_dir/mount_b
[hidden]$ mount | grep _dir | wc -l
3

Agora umount A_dir/mount_b falhará, o que não é surpresa. De acordo com as respostas em toda a web, precisamos umount A_dir/mount_b/mount_c primeiro, em seguida, umount A_dir/mount_b . No entanto, umount A_dir/mount_b/mount_c também desmontará B_dir/mount_c , o que não é desejado:

[hidden]$ sudo umount A_dir/mount_b/mount_c
[hidden]$ mount | grep _dir | wc -l
1

Agora, minha pergunta é: como desmontar A_dir/mount_b , mas deixar B_dir não afetado, ou seja, ainda há uma ligação B_dir/mount_c to C_dir ?

EDIT: este problema não parece aparecer no Ubuntu. Mais especificamente, funciona bem no meu Ubuntu 14.04, mas não funciona no Fedora 23 e no CentOS 7. Por que existe a diferença e qual é a solução para o Fedora e o CentOS?

EDIT: mais algumas informações sobre o problema real que estou tentando resolver. Eu tentei criar um sandbox e usei --rbind para montar o /dev e /proc no sandbox. Ao destruir o sandbox, parece que não posso destruí-lo corretamente porque a desmontagem de <sandbox-root>/dev/pts no FC23 e no CentOS7 desmontará /dev/pts , após o que minhas conexões shell e SSH travarão e eu tenho que reinicializar a máquina. É por isso que estou perguntando se existe uma maneira de desmontar as montagens --rbind sem afetar as submontagens.

    
por icando 18.02.2016 / 01:27

1 resposta

8

Eu mesmo encontrei a solução. Eu simplesmente preciso usar --make-rslave para fazer com que quaisquer alterações em A_dir/mount_b não se propaguem de volta para B_dir :

sudo mount --make-rslave A_dir/mount_b
sudo umount -R A_dir/mount_b

Consulte monte seção da página man As operações da subárvore compartilhada .

    
por 20.02.2016 / 02:30