bind mount 的用法

"bind命令可以让你挂载文件系统的一部分到另一个目录"

Posted by Xion on August 25, 2016      views:

The bind mounts

bind是mount中比较特殊的用法之一,这里对一些例子进行分析和实验

bind的意思是,把其他地方的子树再进行挂载,也就是说可以把文件系统中的某一个部分进行挂载。这个特性是从linux2.4.0开始的。
或者更简介的说,就是挂载一个已有的文件夹

常见使用场景

在做一些chroot的操作的时候,我们希望把当前的文件系统的一个目录(例如/dev)出现在chroot的目录下.
但是又不希望chroot对这个目录进行更改,我们该怎么做呢?

首先,我们可以使用mount –bind将/dev目录挂载到chroot的目录下:

mount --bind /dev $chrootdir/dev

这样,我们从chroot的目录和自己本身的文件系统的目录就都可以访问/dev目录.

不过有时我们不希望挂载的目录是可以修改的.
那么,可以通过下面的命令将挂载的属性设置为readonly的这样就实现了上述的要求

mount -o remount,ro,bind /dev $chrootdir/dev

最基础的用法的如下

mount --bind olddir newdir

如果执行了上面这个命令,在olddir和newdir都可以访问相同的内容,并且如果对其中一个目录内的内容进行了修改,在另一个目录会有相同的显示。

下面的命令可以创建一个挂载点

mount --bind foo foo

在挂载后可以通过mount命令查看所有的挂载点

如果要递归的挂载一个目录可以使用如下命令

mount --rbind olddir newdir

递归的挂载是指如果挂载的olddir内有挂载点,会把这个挂载点也一起挂载到newdir下。

–bind可以支持一些选项

例如:挂载一个目录。并且让他是只读的:

mount --bind olddir newdir
mount -o remount,ro,bind olddir newdir

在使用 -o 的时候,是对一个已经挂载的

这样在新的目录中的内容是无法更改的,老的目录依然是可以修改的。

mount图解:

也就是说mount的时候,做的事情,可以视为把一个目录指向了一个设备

参考:http://unix.stackexchange.com/questions/77020/what-happens-to-uids-upon-mount-of-file-system