我对命令的--make-shared
、--make-slave
和--make-private
标志感到困惑。--make-unbindable
mount
有人可以用简单的语言解释一下每个标志的作用吗?它们之间有什么区别?
答案1
命令中的这些标志mount
是高级功能,可修改绑定挂载的工作方式。它们对挂载命名空间也有同样的效果,有时用于systemd
允许进程拥有自己的私有挂载。
该--make-unbindable
标志可防止以后对部分或全部挂载进行绑定挂载:
mount --make-unbindable /master
#Both of these will fail
mount --rbind /master /slave
mount --rbind /master/subdir /slave
其他标志影响挂载中子挂载的更改如何在未来的绑定挂载和命名空间之间同步。仍然需要使用--rbind
而不是来递归共享所有--bind
现存的带有绑定挂载的子挂载,除了如上所述不可绑定的挂载。
类似--bind
,所有这些标志也都有带前缀的变体r
,并以递归方式应用于所有包含的挂载点。
该--make-[r]shared
标志(systemd 的初始状态)启用主挂载和未来副本之间的同步。例如,对于 处的现有挂载/master
, 和 都master-submount
将slave-submount
挂载在 和/master
下/slave
:
mount --make-rshared /master
mount --rbind /master /slave
mount /dev/$DEVICE /master/master-submount
mount /dev/$DEVICE /slave/slave-submount
该--make-[r]private
标志停止进一步同步。这对于任何现存的继续上面的例子,卸载/master/master-submount
将/slave/slave-submount
不是/slave/master-submount
现在卸载和处的副本/master/slave-submount
:
mount --make-rprivate /slave
umount /master/master-submount
umount /slave/slave-submount
该--make-[r]slave
标志可用于仅中断更新到其他,但仍会收到它们。如果rslave
使用 代替rprivate
上述,/master/slave-submount
仍不会被卸载/slave
,但/slave/master-submount
也会被卸载/master
。
这些标志的完整文档不在页面中man
,但可以访问https://www.kernel.org/doc/Documentation/filesystems/sharedsubtree.txt。