询问于服务器故障但没有引起足够的重视,所以转发在这里,希望这里的一些人知道答案。
还有另一种问题讨论卸载 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
也会 unmount B_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 中卸载将 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
看山手册页部分共享子树操作。