“使用 Linux Overlay(OverlayFS)”通常是为了在几乎不改动原有文件系统的情况下,叠加出一份可写、可定制的视图。它在容器、系统维护、嵌入式设备等场景中非常常见。
下面从原理、优点、典型使用场景三个角度说明“为什么用”。
一、OverlayFS 是什么(简单理解)
OverlayFS 是一种联合挂载(union mount)文件系统:
- 有多个目录层:
- lower(底层,只读)
- upper(上层,可写)
- merged(合并后看到的视图)
- 你看到的是“合并后的结果”
- 写入只发生在 upper 层
- lower 层永远不被修改
lower (只读系统)
\
merged (你看到的文件系统)
/
upper (你的修改)
二、为什么要用 Overlay(核心原因)
1️⃣ 不破坏原始系统(只读保护)
- lower 可以是:
- 所有修改都在 upper 层
- 原始系统始终干净、可复用
✅ 非常适合:
2️⃣ 快速创建“多个不同环境”
- 同一个 lower
- 多个不同的 upper
- 每个 upper 就是一个“分支环境”
例如:
- 容器 A:只装了 Nginx
- 容器 B:只装了 MySQL
- 底层系统完全一样
➡ 节省磁盘,启动极快
3️⃣ 写时复制(Copy-on-Write)
- 读文件:直接读 lower
- 改文件:
- 先从 lower 复制到 upper
- 再修改
优点:
4️⃣ 易于回滚 / 清理
非常适合:
5️⃣ 容器技术的基石
Docker / Kubernetes 都依赖 OverlayFS:
- image = lower 层叠加
- container = image + 可写层
- 容器删除 = 删 upper 层
没有 OverlayFS:
三、典型使用场景
| 场景 |
用法 |
| Docker |
镜像 + 容器可写层 |
| 系统维护 |
Live CD + 本地修改 |
| 嵌入式 |
只读根文件系统 + 可写配置 |
| 软件测试 |
不污染宿主机 |
| 多用户环境 |
每人一个 upper |
四、什么时候“不适合”用 Overlay?
- 需要强一致性数据库写入
- 大量随机写、频繁改大文件
- 对性能极度敏感的场景(有额外层开销)
总结一句话
Linux Overlay 让你用最小的代价,在安全、隔离、可恢复的前提下“假装改了系统”。
如果你愿意,我也可以:
- 给你一个 手动 mount overlay 的示例
- 或对比 OverlayFS vs 普通文件系统
- 或讲 Docker 是怎么用 overlay 的
你想看哪一块?