温馨提示×

Linux overlay如何挂载

小樊
47
2026-07-10 05:34:02
栏目: 智能运维

Linux 的 overlay 文件系统可以把多个目录“叠加”成一个,常用于 Docker、Live CD、容器、只读根文件系统 等场景。下面从 原理 → 手动挂载 → 常见用法 → 示例 系统说明。


一、overlay 基本原理

overlay 至少需要 两个目录

名称 作用
lowerdir 只读层(可以多个)
upperdir 可读写层(修改会写到这里)
workdir 临时工作目录(必须为空)
merged 最终挂载点(你看到的结果)

规则:

  • 读:优先 upperdir,再 lowerdir
  • 写:只写入 upperdir
  • 删除:在 upperdir 中创建 whiteout 文件

二、最小挂载示例(最常用)

1️⃣ 准备目录

mkdir -p /tmp/overlay/{lower,upper,work,merged}
echo "lower file" > /tmp/overlay/lower/lower.txt

2️⃣ 挂载 overlay

mount -t overlay overlay \
  -o lowerdir=/tmp/overlay/lower,upperdir=/tmp/overlay/upper,workdir=/tmp/overlay/work \
  /tmp/overlay/merged

3️⃣ 验证

ls /tmp/overlay/merged
cat /tmp/overlay/merged/lower.txt

写入测试:

echo "new file" > /tmp/overlay/merged/new.txt

查看实际写入位置:

ls /tmp/overlay/upper

三、多个 lowerdir(叠加层)

mount -t overlay overlay \
  -o lowerdir=/lower1:/lower2:/lower3,upperdir=/upper,workdir=/work \
  /merged

优先级:

lower1 > lower2 > lower3

四、fstab 中挂载(开机自动)

overlay /mnt/merged overlay
  lowerdir=/data/lower,upperdir=/data/upper,workdir=/data/work
  0 0

⚠️ 注意:

  • workdir 不能和 upperdir/lowerdir 相同
  • workdir 必须为空

五、Docker / 容器中的 overlay

Docker 默认使用:

overlay2

查看:

docker info | grep -i storage

Docker 的 overlay 结构:

/var/lib/docker/overlay2
├── l(短链接)
├── diff(upperdir)
├── merged
└── work

六、常见错误与排查

❌ 1. workdir 非空

workdir must be an empty directory

✅ 解决:清空 workdir


❌ 2. upperdir / lowerdir 在同一文件系统(旧内核)

旧内核要求:

  • upperdirworkdir 在同一文件系统

❌ 3. 内核不支持 overlay

modprobe overlay

或检查:

ls /sys/module/overlay

七、卸载 overlay

umount /tmp/overlay/merged

八、典型使用场景

场景 说明
Docker 镜像 + 容器层
Live CD 只读系统 + 内存写层
系统恢复 升级不影响原系统
只读根文件系统 embedded / IoT

如果你愿意,我可以:

  • ✅ 给你 Docker 风格的 overlay 实战
  • ✅ 讲 overlay vs overlay2
  • ✅ 演示 只读根文件系统
  • ✅ 帮你 调试某个具体挂载失败

直接说你的使用场景即可。

0