临时私有挂载

临时私有挂载

我正在 ubuntu 服务器 14.04 上测试共享挂载,并且遇到了一些有关挂载传播的问题。

#mount -t tmpfs tmpfs /mnt/tmp/
#mkdir /tmp/foo/
#mount -o bind /mnt/tmp/ /tmp/foo/
#mount -o remount,bind,private /tmp/foo/
#touch /tmp/foo/data
#ls -la /mnt/tmp/
drwxr-xr-x 3 root root 4096 Aug  4 16:11 ..
-rw-r--r-- 1 root root    0 Aug  4 16:13 data
# mount
/dev/mapper/ubucon--vg-root on / type ext4 (rw,errors=remount-ro)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
none on /sys/fs/cgroup type tmpfs (rw)
none on /sys/fs/fuse/connections type fusectl (rw)
none on /sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
udev on /dev type devtmpfs (rw,mode=0755)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755)
none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880)
none on /run/shm type tmpfs (rw,nosuid,nodev)
none on /run/user type tmpfs (rw,noexec,nosuid,nodev,size=104857600,mode=0755)
none on /sys/fs/pstore type pstore (rw)
/dev/vda1 on /boot type ext2 (rw)
rpc_pipefs on /run/rpc_pipefs type rpc_pipefs (rw)
systemd on /sys/fs/cgroup/systemd type cgroup (rw,noexec,nosuid,nodev,none,name=systemd)
tmpfs on /mnt/tmp type tmpfs (rw)
/mnt/tmp on /tmp/foo type none (rw,bind,private)

如您所见,/tmp/foo 已挂载为私有,但文件系统传播仍在进行。理论上,当我创建数据在 /tmp/foo/ 中它不必在 /mnt/tmp/ 上列出。红帽 - 共享安装

答案1

理论上,当我在 /tmp/foo/ 中创建数据时,它不必在 /mnt/tmp/ 上列出。

错误的。

私有挂载不会传播文件系统挂载事件。也就是说,如果您在私有挂载的条目内挂载了某些内容,则不会反映在原始内容中。

四种相关的挂载类型(共享、从属、私有、不可绑定)仅处理与挂载相关的挂载事件如何传播。

看一下内核文档(在Documentation/filesystems/sharedsubtree.txt. 例子应该说清楚了。

相关内容