在 Ubuntu(以及其它 Linux 发行版)里,“overlay”通常指 OverlayFS(overlay filesystem),它可以把多个目录“叠加”成一个统一视图,常用于容器、Live CD、嵌入式系统等场景。
下面从原理 → 手动使用 → 常见场景给你讲清楚。
OverlayFS 至少需要 4 个目录:
lowerdir (只读层,可多个)
upperdir (可读写层)
workdir (工作目录,必须和 upperdir 同文件系统)
merged (最终挂载后的统一视图)
规则:
upperdir 找,找不到再去 lowerdirupperdirupperdir 创建一个 “whiteout” 标记(并不真的删 lower)mkdir -p /tmp/lower /tmp/upper /tmp/work /tmp/merged
模拟 lower 中已有文件:
echo "lower file" > /tmp/lower/a.txt
echo "lower file2" > /tmp/lower/b.txt
sudo mount -t overlay overlay \
-o lowerdir=/tmp/lower,upperdir=/tmp/upper,workdir=/tmp/work \
/tmp/merged
ls /tmp/merged
cat /tmp/merged/a.txt
你看到的就是 lower + upper 合并后的视图
echo "modify" > /tmp/merged/a.txt
实际写入的是:
cat /tmp/upper/a.txt
而 /tmp/lower/a.txt 不变(只读)
mkdir -p /tmp/lower1 /tmp/lower2
mount -t overlay overlay \
-o lowerdir=/tmp/lower1:/tmp/lower2,upperdir=/tmp/upper,workdir=/tmp/work \
/tmp/merged
⚠️ 注意:
lowerdir 用冒号 : 分隔sudo umount /tmp/merged
Docker 默认使用 overlay2:
docker info | grep Storage
镜像层 = lower
容器层 = upper
你一般不需要手动操作,除非做调试。
✅ Live USB(只读系统 + 可写内存)
✅ Docker / Kubernetes
✅ 系统恢复环境
✅ 只读根文件系统 + 临时修改
❌ workdir 和 upperdir 不在同一文件系统
❌ 权限不足(需要 root)
❌ lower 被修改(lower 必须只读)
如果你是指:
可以告诉我具体场景,我可以给你更针对性的方案。