理解 Linux 的 Overlay(OverlayFS),可以从“是什么、解决什么问题、怎么工作、典型用途”几个层面来看。
Overlay 通常指 OverlayFS(Overlay File System),是 Linux 内核提供的一种联合挂载(union mount)文件系统。
它的核心思想是:
把多个目录“叠”在一起,对外表现为一个统一的目录,但底层目录本身并不合并。
在没有 Overlay 之前,常见问题是:
例如:
Overlay 的价值就是: ✅ 共享底层 ✅ 只记录差异 ✅ 不破坏原始数据
OverlayFS 至少涉及这些目录:
lowerdir (底层,只读)
upperdir (上层,可写)
workdir (工作目录,内核内部用)
merged (最终挂载点,用户看到)
关系示意:
merged (= lower + upper 的视图)
↑
upperdir (写操作实际发生在这里)
↑
lowerdir (只读,可被多个 overlay 共享)
upperlowerupper 为准lower:
upper:
upper 创建一个 whiteout 文件(特殊标记)lower1:lower2:lower3
越靠前优先级越高
mkdir lower upper work merged
echo "base" > lower/file.txt
mount -t overlay overlay \
-o lowerdir=lower,upperdir=upper,workdir=work \
merged
cat merged/file.txt
# base
echo "changed" > merged/file.txt
cat upper/file.txt
# changed
umount merged
cat lower/file.txt
# base(未被修改)
❌ Overlay = 备份
✅ 不是,删 upper 就丢修改
❌ Overlay 会合并文件内容
✅ 不会,只做“视图合并”
❌ 所有文件系统都能用
✅ 通常需支持 whiteout(ext4、xfs 等)
OverlayFS 是一种“看起来的合并,实际只记差异”的文件系统,是容器和只读系统的关键技术。
如果你愿意,我也可以从:
继续深入讲。