卸載 rbind 掛載而不影響原始掛載

卸載 rbind 掛載而不影響原始掛載

詢問於伺服器故障但沒有引起足夠的重視,所以轉發在這裡,希望這裡的一些人知道答案。

還有另一種問題討論卸載 rbind 掛載,但此解決方案產生了不良影響。考慮以下目錄佈局:

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

現在我綁定C_dirB_dir/mount_c並rbindB_dirA_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

現在umount A_dir/mount_b會失敗,這並不奇怪。根據網路上隨處可見的答案,我們需要umount A_dir/mount_b/mount_c先然後umount A_dir/mount_b。但是,umount A_dir/mount_b/mount_c也會 unmount B_dir/mount_c,這是不需要的:

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

現在我的問題是,如何卸載A_dir/mount_bB_dir不受影響,即仍然有B_dir/mount_c綁定C_dir

編輯:這個問題似乎不會出現在Ubuntu。更具體地說,它在我的 Ubuntu 14.04 上運行良好,但在 Fedora 23 和 CentOS 7 上不起作用。

編輯:有關我試圖解決的實際問題的更多資訊。我嘗試創建一個沙箱並用於--rbind/dev和掛載/proc到沙箱。銷毀沙箱時,似乎我無法徹底銷毀它,因為<sandbox-root>/dev/pts在 FC23 和 CentOS7 中卸載將 unmount /dev/pts,之後我的 shell 和 SSH 連接掛起,我必須重新啟動電腦。這就是為什麼我問是否有一種方法可以在不影響子安裝的情況下卸載 --rbind 安裝。

答案1

我自己找到了解決方案。我只需要使用--make-rslave來進行任何更改,A_dir/mount_b而不傳播回B_dir

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

手冊頁部分共享子樹操作

相關內容