Desmonte uma montagem rbind sem afetar a montagem original

Desmonte uma montagem rbind sem afetar a montagem original

Perguntado emfalha no servidormas não recebi atenção suficiente, então repostei aqui, com a esperança de que algumas pessoas aqui saibam a resposta.

Tem outroperguntadiscutindo sobre a desmontagem de montagens rbind, mas a solução tem efeitos indesejados. Considere o seguinte layout de diretório:

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

Agora eu ligo C_dire B_dir/mount_crbind B_dirpara 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_birá falhar, o que não é surpreendente. De acordo com as respostas em toda a web, precisamos umount A_dir/mount_b/mount_cprimeiro, então umount A_dir/mount_b. No entanto, umount A_dir/mount_b/mount_ctambém irá desmontar B_dir/mount_c, o que é indesejado:

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

Agora minha dúvida é: como faço para desmontar A_dir/mount_bmas deixando B_dirinalterado, ou seja, ainda há um bind B_dir/mount_cno C_dir?

EDIT: este problema parece não 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. Tentei criar uma sandbox e usei --rbindpara montar o /deve /procna sandbox. Ao destruir a sandbox, parece que não consigo destruí-la de forma limpa porque a desmontagem <sandbox-root>/dev/ptsem FC23 e CentOS7 irá desmontar /dev/pts, após o que minhas conexões shell e SSH travam e tenho que reiniciar a máquina. É por isso que estou perguntando se existe uma maneira de desmontar as montagens --rbind sem afetar as submontagens.

Responder1

Eu mesmo encontrei a solução. Eu simplesmente preciso usar --make-rslavepara fazer alterações e A_dir/mount_bnão propagar de volta para B_dir:

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

Vermontarseção da página de manualAs operações de subárvore compartilhada.

informação relacionada