Interrogé sur serverfault mais n'a pas eu assez d'attention, donc reposté ici, avec l'espoir que certaines personnes connaissent la réponse.
Il y a une autre question sur le assembly des assemblys rbind, mais la solution a un effet indésirable. Considérez la disposition de directory suivante:
. ├── A_dir │ └── mount_b ├── B_dir │ └── mount_c └── C_dir
Maintenant, je lie C_dir
à B_dir/mount_c
et rbind B_dir
à 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
Maintenant umount A_dir/mount_b
échouera, ce qui n'est pas surprenant. Selon les réponses partout sur le web, nous devons d' umount A_dir/mount_b/mount_c
puis umount A_dir/mount_b
. Cependant, umount A_dir/mount_b/mount_c
démontera également B_dir/mount_c
, ce qui est indésirable:
[hidden]$ sudo umount A_dir/mount_b/mount_c [hidden]$ mount | grep _dir | wc -l 1
Maintenant, ma question est la suivante: comment démonter A_dir/mount_b
mais en laissant B_dir
non affecté, c'est-à-dire qu'il y a encore un bind B_dir/mount_c
dans C_dir
?
EDIT: ce problème ne semble pas apparaître dans Ubuntu. Plus précisément, cela fonctionne bien sur mon Ubuntu 14.04 mais ne fonctionne pas sur Fedora 23 et CentOS 7. Pourquoi il y a la différence et quel est le travail autour de Fedora et CentOS?
EDIT: quelques informations supplémentaires sur le problème réel que j'essaie de résoudre. J'ai essayé de créer un sandbox et --rbind
utilisé --rbind
pour monter le /dev
et /proc
dans le bac à sable. En détruisant le bac à sable, il semble que je ne puisse pas le détruire proprement car le déassembly de <sandbox-root>/dev/pts
dans FC23 et CentOS7 démontera /dev/pts
, après quoi mon shell et mes connections SSH seront bloqués et je devrai redémarrer machine. C'est pourquoi je request s'il existe un moyen de démonter les montures –rbind sans affecter les sous-assemblys.
J'ai trouvé la solution moi-même. Il suffit simplement d'utiliser --make-rslave
pour faire en sorte que les modifications de A_dir/mount_b
ne se propagent pas à B_dir
:
sudo mount --make-rslave A_dir/mount_b sudo umount -R A_dir/mount_b
Voir la section de la page mount man Les opérations de la sous-arborescence partagée .