Smonta un innesto rbind senza influire sull'innesto originale


11

Ha chiesto serverfault ma non ha ricevuto abbastanza attenzione, quindi ripubblicato qui, con la speranza che alcune persone qui conoscano la risposta.

C'è un'altra domanda che si sta discutendo sui montaggi rbind umounting, ma la soluzione ha effetti indesiderati. Considera il seguente layout di directory:

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

Ora mi lego C_dira B_dir/mount_ce rilevo B_dira 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

Ora umount A_dir/mount_bfallirà, il che non è sorprendente. Secondo le risposte ovunque sul web, dobbiamo umount A_dir/mount_b/mount_cprima di tutto umount A_dir/mount_b. Tuttavia, umount A_dir/mount_b/mount_csmonterà anche B_dir/mount_c, il che è indesiderato:

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

Ora la mia domanda è, come faccio a smontare A_dir/mount_b, ma lasciando B_dirinalterata, vale a dire non v'è ancora una legatura B_dir/mount_ca C_dir?

EDIT: questo problema non sembra apparire in Ubuntu. Più specificamente, funziona perfettamente sul mio Ubuntu 14.04 ma non funziona su Fedora 23 e CentOS 7. Perché c'è la differenza e qual è il problema per Fedora e CentOS?

EDIT: qualche informazione in più sul problema reale che sto cercando di risolvere. Ho provato a creare un sandbox e ho usato --rbindper montare il sandbox /deve /procil sandbox. Quando si distrugge il sandbox, sembra che non riesca a distruggerlo in modo pulito perché <sandbox-root>/dev/ptslo smontaggio in FC23 e CentOS7 verrà smontato /dev/pts, dopo di che le mie connessioni shell e SSH si bloccheranno e devo riavviare la macchina. Ecco perché sto chiedendo se esiste un modo per smontare i supporti --rbind senza influire sui montaggi secondari.


Risposte:


9

Ho trovato la soluzione da solo. Ho semplicemente bisogno di usare --make-rslaveper apportare modifiche per A_dir/mount_bnon propagare indietro a B_dir:

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

Vedere la sezione della pagina man di mount Le operazioni di sottostruttura condivise .


1
In alcuni sistemi, si può anche combinare mount --rbind src target --make-rslavein una chiamata; alcuni sistemi mi impedivano di farlo.
imz - Ivan Zakharyaschev,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.