关于挂载选项的困惑

use*_*717 6 linux mount

我对挂载选项感到困惑,例如: --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有意义吗?

Gil*_*il' 7

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则将失败。


Flu*_*lup 4

mount(8)联机帮助页:

从 Linux 2.6.15 开始,可以将挂载及其子挂载标记为共享、私有、从属或不可绑定。共享挂载提供了创建该挂载的镜像的能力,以便任何镜像中的挂载和卸载都会传播到另一个镜像。从挂载从其主挂载接收传播,但反之则不然。私人坐骑没有传播能力。不可绑定挂载是无法通过绑定操作克隆的私有挂载。详细的语义记录在 Documentation/sharedsubtree.txt 内核源代码树的文件中。

所指的文本文件实际上是Documentation/filesystems/sharedsubtree.txt;这是当前稳定内核中该文件的链接