理解 Linux 的 Overlay(OverlayFS) 原理,可以从“分层文件系统”和“联合挂载”这两个核心概念入手。它最常见的用途是 Docker 镜像与容器、Live CD、只读根文件系统的可写层等。
下面分层次说明。
OverlayFS 是 Linux 的一种 联合文件系统(Union File System):
它把多个目录(称为“层”)合并成一个统一的视图,对用户看起来像是一个普通目录,但底层其实来自不同来源。
关键词:
Overlay 挂载通常需要 4 类目录:
lowerdir (只读层,可以多层)
upperdir (可写层,单层)
workdir (内部工作目录)
merged (用户看到的统一视图)
挂载示例:
mount -t overlay overlay \
-o lowerdir=/lower1:/lower2,upperdir=/upper,workdir=/work \
/merged
: 分隔)upper/a.txt -> 看到的是 upper 的 a.txt
lower/a.txt -> 被遮挡
lower/foo → 复制 → upper/foo → 修改
删除并不是真的删 lower:
例如:
upper/foo (whiteout)
用户就看不到 lower/foo 了。
Docker 镜像结构:
镜像层(lower,只读)
容器层(upper,可写)
好处:
image layer1
image layer2
container writable layer
把 Overlay 想象成:
透明文件夹 + 便签纸
你写的字不在书上,而在便签上。
Overlay 通过“多层目录 + 写时复制 + 上层覆盖下层”,提供一个统一但可写的文件系统视图。
如果你愿意,我也可以: