Entfernen Sie eine Rbind-Halterung, ohne die ursprüngliche Halterung zu beeinträchtigen

11

Auf Serverfehler gefragt , aber nicht genug Aufmerksamkeit erhalten, also hier neu gepostet, mit der Hoffnung, dass einige Leute hier die Antwort wissen.

Es gibt noch eine andere Frage zum Umounten von Rbind-Mounts, aber die Lösung hat unerwünschte Auswirkungen. Betrachten Sie das folgende Verzeichnislayout:

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

Jetzt binde ich C_diran B_dir/mount_cund binde B_diran 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

Jetzt umount A_dir/mount_bwird scheitern, was nicht überraschend ist. Nach den Antworten überall im Web müssen wir umount A_dir/mount_b/mount_cerst dann umount A_dir/mount_b. Allerdings umount A_dir/mount_b/mount_cwird auch Aushängen B_dir/mount_c, die unerwünscht ist :

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

Jetzt ist meine Frage, wie ich abmontiere, A_dir/mount_baber nicht B_dirbetroffen bin , dh es gibt immer noch eine Bindung B_dir/mount_czu C_dir?

BEARBEITEN: Dieses Problem scheint in Ubuntu nicht aufzutreten. Genauer gesagt funktioniert es gut auf meinem Ubuntu 14.04, aber nicht auf Fedora 23 und CentOS 7. Warum gibt es den Unterschied und was ist die Arbeit für Fedora und CentOS?

EDIT: einige weitere Informationen zum eigentlichen Problem, das ich zu lösen versuche. Ich habe versucht, eine Sandbox zu erstellen und habe --rbinddie /devund /procan die Sandbox gemountet . Wenn ich die Sandbox zerstöre, kann ich sie anscheinend nicht sauber zerstören, da das <sandbox-root>/dev/ptsAufheben der Bereitstellung in FC23 und CentOS7 aufgehoben wird. Danach /dev/ptshängen meine Shell- und SSH-Verbindungen und ich muss den Computer neu starten . Aus diesem Grund frage ich, ob es eine Möglichkeit gibt, die --rbind-Mounts zu entfernen, ohne die Submounts zu beeinflussen.

ich kann
quelle
Dieses Problem wurde auch unter bugs.launchpad.net/ubuntu/+source/util-linux/+bug/759394
imz - Ivan Zakharyaschev am

Antworten:

9

Ich habe die Lösung selbst gefunden. Ich muss nur verwenden --make-rslave, um Änderungen vorzunehmen und A_dir/mount_bnicht zurück zu verbreiten B_dir:

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

Siehe Abschnitt " Mount- Manpage" Die freigegebenen Teilbaumoperationen .

ich kann
quelle
1
In einigen Systemen kann man sogar mount --rbind src target --make-rslavein einem Anruf kombinieren ; Einige Systeme haben dies für mich verboten.
imz - Ivan Zakharyaschev