温馨提示×

debian mount怎样共享挂载

小樊
37
2026-09-25 05:21:42
栏目: 智能运维

在 Debian 下,“共享挂载(shared mount)”通常是指 mount namespace 中的挂载传播(mount propagation)属性,也就是让某个挂载点在绑定挂载或子挂载时,能把挂载/卸载事件“传播”到其他地方(或反向传播)。

下面按常见需求给你说明。


一、什么是共享挂载(shared mount)

Linux 挂载点有几种传播类型:

  • private:默认大多数情况,挂载事件不传播
  • shared:挂载/卸载会传播到“对等”挂载点
  • slave:只接收传播,不向外传播
  • unbindable:不能被绑定挂载

共享挂载常用于:

  • 容器运行时(Docker / LXC)
  • 多个目录同时看到同一个设备的挂载
  • chroot / 容器共享宿主挂载

二、查看当前挂载传播属性

findmnt -o TARGET,PROPAGATION

或:

mount | grep -i shared

三、把某个目录设为共享挂载

1️⃣ 创建一个目录

mkdir -p /mnt/shared

2️⃣ 挂载一个设备(示例用 tmpfs)

mount -t tmpfs tmpfs /mnt/shared

3️⃣ 设置为 shared

mount --make-shared /mnt/shared

验证:

findmnt -o TARGET,PROPAGATION | grep shared

四、通过绑定挂载“共享”同一个挂载

mkdir -p /mnt/bind
mount --bind /mnt/shared /mnt/bind

如果 /mnt/shared 是 shared,那么:

mount -t tmpfs tmpfs /mnt/shared/test

在 /mnt/bind/test 也能看到。


五、在 fstab 中设置共享挂载(Debian 开机生效)

编辑 /etc/fstab:

tmpfs  /mnt/shared  tmpfs  defaults  0 0

但 fstab 不直接支持 propagation 参数,需要配合 mount -o 或启动脚本。

推荐方式(systemd)

创建:

/etc/systemd/system/mnt-shared.service

内容:

[Unit]
Description=Make /mnt/shared shared

[Service]
Type=oneshot
ExecStart=/bin/mount --make-shared /mnt/shared
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

启用:

systemctl enable --now mnt-shared

六、递归设为共享(常见容器场景)

mount --make-rshared /

⚠️ 危险操作,通常在容器初始化或容器中做,不建议直接在宿主机根目录执行。


七、常见错误

❌ 绑定挂载后看不到内容
✅ 原挂载点必须是 shared 或 slave

❌ Docker 挂载不生效
✅ 宿主挂载点需是 shared

Docker 官方建议:

mount --make-shared /

(仅某些旧系统需要)


八、总结一句话

Debian 下“共享挂载”= 使用 mount --make-shared 设置挂载传播属性,再通过 bind mount 共享。

如果你能说清楚你是:

  • 宿主 ↔ 容器
  • 多目录共享
  • NFS / SMB
  • Docker / LXC

我可以给你更精确的命令。

0 踩