Linux Namespace : Mount
mount namespace 用来隔离文件系统的挂载点,这样进程就只能看到自己的 mount namespace 中的文件系统挂载点。
$ /demo && /demo && -p iso1/ -p iso2/-o .iso ./-o .iso ./iso2
$ /mnt/iso1 /mnt/iso2
第一步,我们打开两个 bash shell,为了方便区分,分别把它们称为为 shell1 和 shell2。在 shell1 中执行挂载操作,把 1.iso 挂载到 /mnt/iso1 目录: $ .iso /mnt/iso1
第二步,先在 shell2 中执行 sudo unshare -m,然后在两个 shell 中分别执行 readlink /proc/$$/ns/mnt 命令: 第三步,通过 mount 命令查看两个 mount namespace 中的挂载点信息: 第四步,我们在 shell2 中执行一些 mount 和 umount 操作: $ .iso /mnt/ /mnt/iso1
Shared subtree 的核心是允许在 mount namespace 之间自动地或者是受控地传播 mount 和 umount 事件。
$ /demo && /demo && =/dev/zero bs=1M count= of=./ =/dev/zero bs=1M count= of=./ =/dev/zero bs=1M count= of=./ =/dev/zero bs=1M count= of=.///// disk1 disk2
第一步,我们打开两个 bash shell,为了方便区分,分别把它们称为为 shell1 和 shell2。在 shell1 中执行挂载操作,分别以 shared 和 private 方式挂载 disk1 和 disk2: 第二步,在 shell2 中执行 sudo unshare -m --propagation unchanged,然后在两个 shell 中分别执行 readlink /proc/$$/ns/mnt 命令: 第三步,分别在 shell1 和 shell2 中执行 cat /proc/self/mountinfo |grep disk| sed 's/ - .*//' 命令查看挂载点信息: )。第四步,在 shell2 中分别在 disk1 目录下创建 disk3 目录,在 disk2 目录下创建 disk4 目录,并把 disk3.img 挂载到 ./disk1/disk3 目录,把 disk4.img 挂载到 ./disk2/disk4 目录: $ ./disk1/disk3 ./disk2/ disk3.img ./disk1/ disk4.img ./disk2/disk4
因为 /demo/disk1 的挂载方式为 shared,所以它的子挂载点 /demo/disk1/disk3 被传播到了 shell1 所在的 mount namespace 中。而 /demo/disk2 的挂载方式为 private,所以它的子挂载点 /demo/disk2/disk4 不会被传播。
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |