如果你需要暂时修改一个配置文件用来测试,但是这个配置文件是read only的,你不想大费周折,怎么办?这时bind mount就可以派上用场。
mount命令的常规用法是将一个块设备上的文件系统挂载一个指定的路径。而bind选项可以将一个目录挂载到一个指定的路径。
假设我们需要临时修改一下config文件,但是当前用户没有权限修改这个文件:
1 2 3 4 5 |
|
现在我们将/tmp/bind_dir挂载到/tmp/etc:
1 2 3 4 5 |
|
现在/tmp/bind_dir被挂载到了/tmp/etc,也就是说访问/tmp/etc实际上是访问的是/etc/bind_dir目录。现在我们可以往/tmp/etc目录写入我们想要的修改:
1 2 3 4 |
|
现在就达到了修改/tmp/etc/config的目的,可以执行测试。测试完毕后,执行umount:
1
|
|
/tmp/etc目录下的内容没有变化:
1 2 3 4 5 6 |
|
mount的过程实际上是inode被替换的过程,这里我们将/tmp/bind_dir挂载到/tmp/etc上,实际上的实现过程是将/tmp/etc的dentry目录项所指向的inode重定向到/tmp/bind_dir的inode索引节点,也就是说让/tmp/bind_dir和/tmp/etc指向同一个inode节点:
1 2 3 |
|
可见两个路径都指向了1094756的inode索引节点。
另外几个应用bind mount的例子:
* http://docs.1h.com/Bind_mounts
* http://backdrift.org/how-to-use-bind-mounts-in-linux