在不影響原始掛載的情況下解除安裝 rbind 掛載
被問到serverfault但沒有得到足夠的關注,所以在這裡轉發,希望這裡的一些人知道答案。
還有另一個問題正在討論關於解除安裝 rbind 掛載,但該解決方案會產生不良影響。考慮以下目錄佈局:
. ├── A_dir │ └── mount_b ├── B_dir │ └── mount_c └── C_dir
現在我綁定
C_dir
到B_dir/mount_c
並 rbindB_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
現在
umount A_dir/mount_b
會失敗,這並不奇怪。根據網上到處的答案,我們需要umount A_dir/mount_b/mount_c
先umount A_dir/mount_b
。但是,umount A_dir/mount_b/mount_c
也將 unmountB_dir/mount_c
,這是不需要的:[hidden]$ sudo umount A_dir/mount_b/mount_c [hidden]$ mount | grep _dir | wc -l 1
現在我的問題是,我如何解除安裝
A_dir/mount_b
但B_dir
不受影響,即仍然綁定B_dir/mount_c
到C_dir
?編輯:這個問題似乎沒有出現在 Ubuntu 中。更具體地說,它在我的 Ubuntu 14.04 上執行良好,但在 Fedora 23 和 CentOS 7 上執行良好。為什麼存在差異以及 Fedora 和 CentOS 的解決方法是什麼?
編輯:有關我要解決的實際問題的更多資訊。我嘗試創建一個沙箱並用於
--rbind
將/dev
和安裝/proc
到沙箱。銷毀沙箱時,我似乎無法徹底銷毀它,因為<sandbox-root>/dev/pts
在 FC23 和 CentOS7 中解除安裝會解除安裝/dev/pts
,之後我的 shell 和 SSH 連接掛起,我必須重新啟動機器。這就是為什麼我要問是否有辦法解除安裝 –rbind 掛載而不影響子掛載。
我自己找到了解決方案。我只需要使用
--make-rslave
來進行任何更改A_dir/mount_b
而不傳播回B_dir
:sudo mount --make-rslave A_dir/mount_b sudo umount -R A_dir/mount_b
請參閱mount手冊頁部分共享子樹操作。