![如何检查 Linux 上的绑定挂载是私有的还是共享的?](https://linux22.com/image/680400/%E5%A6%82%E4%BD%95%E6%A3%80%E6%9F%A5%20Linux%20%E4%B8%8A%E7%9A%84%E7%BB%91%E5%AE%9A%E6%8C%82%E8%BD%BD%E6%98%AF%E7%A7%81%E6%9C%89%E7%9A%84%E8%BF%98%E6%98%AF%E5%85%B1%E4%BA%AB%E7%9A%84%EF%BC%9F.png)
mount 命令允许我们将绑定挂载设置为共享、从属、共享+从属、私有或不可绑定,但是,我无法确定给定挂载点的绑定挂载根子树的类型(共享、从属、私有、共享+从属或不可绑定)。如何确定绑定挂载是从属还是私有?
答案1
答案就在mount(8)
手册页也是如此:
使用 findmnt -o TARGET,PROPAGATION 查看当前传播标志。
一个例子:
$ findmnt -o TARGET,PROPAGATION /opt
TARGET PROPAGATION
/opt shared
$ sudo mount -o bind /opt /mnt
$ sudo mount --make-slave /opt
$ findmnt -o TARGET,PROPAGATION /opt
TARGET PROPAGATION
/opt private,slave
$ sudo umount /mnt
$ findmnt -o TARGET,PROPAGATION /opt
TARGET PROPAGATION
/opt private
检查findmnt
手册页以了解其他选项。
作为参考,这些示例使用:
$ findmnt --version
findmnt from util-linux 2.27.1
答案2
或者达乌德的答案,你可以直接这样询问内核:
# cat /proc/1/mountinfo
14 19 0:14 / /sys rw,nosuid,nodev,noexec,relatime shared:7 - sysfs sysfs rw
15 19 0:3 / /proc rw,nosuid,nodev,noexec,relatime shared:12 - proc proc rw
[...]
您可以从第 7 个字段看到我的/sys
文件系统是共享(就像/proc
)。
此外,它位于对等组 7 中(同一对等组中的挂载会相互传播事件)。
中的数字/proc/1/mountinfo
是进程的 PID,因为进程可以位于不同的挂载命名空间中并“看到”不同的结果。您可能希望使用另一个 PID,例如,如果您正在使用容器。否则,1
简单明了。
共享挂载是可用的自 Linux 内核版本 2.6.15 起。
答案3
这是同一数据的两种视图,一种视图中的修改会反映在另一个视图中
mount --bind /源/目标
https://unix.stackexchange.com/questions/198590/what-is-a-bind-mount
安装绑定只是根据您自己的偏好对文件系统视图进行排序的一种方式