温馨提示×

linux mount绑定是什么

小樊
61
2026-08-17 04:14:05
栏目: 智能运维

在 Linux 中,mount 绑定(bind mount) 指的是把一个已经挂载的目录或文件,再挂载到另一个位置,使得两个路径指向同一份文件系统内容

可以简单理解为:

给同一个目录/文件再创建一个“访问入口”


一、什么是 bind mount

普通 mount 是把一个设备/文件系统挂载到某个目录。
bind mount 是把一个已经存在的目录或文件,挂载到另一个目录。

mount --bind /源目录 /目标目录

之后:

  • /源目录/目标目录
  • 看到的是完全相同的内容
  • 修改其中一个,另一个也会变

二、基本示例

mkdir /mnt/test1
mkdir /mnt/test2

mount --bind /mnt/test1 /mnt/test2

现在:

echo hello > /mnt/test1/a.txt
cat /mnt/test2/a.txt
# 输出 hello

取消绑定:

umount /mnt/test2

三、bind mount 的特点

1. 共享同一 inode

  • 不是复制
  • 不是软链接
  • 不是硬链接
  • 同一个文件系统对象的另一个挂载点

2. 修改互相可见

touch /mnt/test1/x
ls /mnt/test2/x   # 一定存在

3. 挂载选项可继承或覆盖

mount --bind /data /mnt
mount -o remount,ro /mnt

可让 /mnt 只读,而 /data 仍可写(取决于内核版本和挂载方式)。


四、递归绑定(rbind)

mount --rbind /src /dst
  • 递归绑定子挂载点
  • 常用于 chroot、容器

⚠️ 注意:
rbind 可能把 /proc/sys/dev 也一起绑进去。


五、bind mount 与符号链接的区别

对比项 bind mount 符号链接
本质 内核级挂载 文件系统对象
跨文件系统
权限控制
容器/chroot ✅ 常用 ❌ 不推荐
可被 umount

六、常见使用场景

1. 容器 / chroot

mount --bind /proc /chroot/proc
mount --bind /dev /chroot/dev

2. 目录“重定向”

mount --bind /data/projects /var/www/html

3. 只读暴露目录

mount --bind /conf /etc/nginx/conf.d
mount -o remount,ro /etc/nginx/conf.d

七、在 /etc/fstab 中使用

/data/projects  /var/www/html  none  bind  0 0

或递归:

/data  /mnt/data  none  rbind  0 0

八、一句话总结

Linux 的 mount 绑定(bind mount)就是:把一个已挂载的目录或文件,再挂载到另一个位置,让两个路径访问同一份真实数据。

如果你愿意,我也可以结合 Docker bind mount / volumesystemd mount 单元内核实现原理 再深入讲。

0