我对挂载选项感到困惑,例如: --bind,--make-unbindable并且--make-shared你能帮我解释一下下面的命令吗?
sudo "mount --bind #{vm_bind_mount} #{vm_bind_mount}"
sudo "mount --make-unbindable #{vm_bind_mount}"
sudo "mount --make-shared #{vm_bind_mount}"
Run Code Online (Sandbox Code Playgroud)
编辑:其实,我不知道为什么有重复#{vm_bind_mount}的mount --bind?换句话说,mount --bind /tmp/foo /tmp/foo有意义吗?
mount --bind在另一个位置复制安装。例如,经过
mount --bind /foo /bar
Run Code Online (Sandbox Code Playgroud)
then/foo/something和/bar/something是同一个文件(通过不同路径访问)。您可以使用mount --bind复制子树:/foo不必是挂载点。
这很有用的一个示例是使目录树的某些部分在chroot下可用。例如,如果您运行一个以 chroot 为 chroot 的 web 服务器/srv,但您想在 下提供文件/home/bob,那么您可以在服务器根目录下复制(部分)Bob 的主目录:
mount --bind /home/bob/public_html /srv/home/bob
Run Code Online (Sandbox Code Playgroud)
选项--make-private,--make-shared,--make-slave并--make-unbindable提供了一些控制绑定安装及以上,如果你下安装另一个文件系统发生了什么/foo或/bar做之后mount --bind /foo /bar。
/foo或下挂载文件系统/bar,这不会影响通过其他路径可见的内容。/foo在执行 之前已声明为 shared mount --bind,那么如果您稍后在/foo或下安装某些内容/bar,则它也可以通过其他路径看到。/foo上共享:如果是共享的并且/bar是从属挂载,则在/bar其下挂载某些东西会影响其下的视图,/foo但反之则不然。/foo被声明为不可绑定,mount --bind /foo /bar则将失败。从mount(8)联机帮助页:
从 Linux 2.6.15 开始,可以将挂载及其子挂载标记为共享、私有、从属或不可绑定。共享挂载提供了创建该挂载的镜像的能力,以便任何镜像中的挂载和卸载都会传播到另一个镜像。从挂载从其主挂载接收传播,但反之则不然。私人坐骑没有传播能力。不可绑定挂载是无法通过绑定操作克隆的私有挂载。详细的语义记录在
Documentation/sharedsubtree.txt内核源代码树的文件中。
所指的文本文件实际上是Documentation/filesystems/sharedsubtree.txt;这是当前稳定内核中该文件的链接。