理解 Debian 中的 overlay(OverlayFS)原理,可以从“联合挂载文件系统”这个核心概念入手。它在 Debian(以及大多数 Linux 发行版)中常用于容器、Live CD、系统只读 rootfs + 可写层等场景。
下面分层说明。
OverlayFS 是 Linux 内核提供的一种联合文件系统(union filesystem):
它把 多个目录 合并成一个 统一的视图,但底层目录本身不被修改。
在 Debian 中,OverlayFS 通常通过 overlay 内核模块实现:
modprobe overlay
或使用 mount -t overlay。
Overlay 挂载至少需要 两个目录:
mount -t overlay overlay \
-o lowerdir=/lower,upperdir=/upper,workdir=/work \
/merged
挂载后:
/lower (只读)
/upper (可写)
/work (内部用)
/merged (用户看到)
当用户访问 /merged/file:
upper 中有 → 用 upper 的✅ upper 覆盖 lower
这就是为什么第一次写大文件会慢
upperdirupper 中创建 whiteout(白出)文件白出文件示例(字符设备):
c--------- 1 root root 0, 0 whiteout
镜像层 = lowerdirs
容器层 = upperdir
image layer 1
image layer 2
container writable layer
例如嵌入式 Debian:
| Debian 版本 | 内核 | Overlay 支持 |
|---|---|---|
| Debian 8 | 3.16 | 实验性 |
| Debian 9 | 4.9 | 稳定 |
| Debian 10+ | 4.19+ | 多 lowerdir |
把 Overlay 想成:
透明文件夹 + 便签纸
你写的字不在原书上,而在便签上。
❌ Overlay 会复制整个文件系统
✅ 只有被修改的文件才会 copy-up
❌ lower 可以被写
✅ lower 必须视为只读
❌ overlay 是备份方案
✅ 它只是视图层,不是数据冗余
如果你愿意,我可以: