“为什么用 Linux Overlay(OverlayFS)”这个问题,通常出现在容器、镜像、文件系统隔离、系统调试等场景中。下面从是什么、解决什么问题、典型用途、优点几个角度来说明。
一、什么是 Linux Overlay(OverlayFS)
OverlayFS 是 Linux 内核提供的一种联合挂载(union mount)文件系统:
- 把多个目录叠加成一个统一视图
- 常见结构:
- lower(只读层)
- upper(可读写层)
- merged(最终看到的目录)
- 对 merged 的修改:
- 写操作 → 落到 upper
- lower 永远不变
简单说:只读基础 + 可写覆盖 = 一个“看起来完整”的文件系统
二、为什么要用 Overlay(核心原因)
1️⃣ 节省磁盘空间(最重要)
在很多场景里:
如果用复制:
用 Overlay:
- 1 份 lower(基础系统)
- 100 份很小的 upper(只存差异)
✅ 极大节省磁盘
2️⃣ 快速创建 / 销毁环境
Overlay 的特点:
所以:
- 启动容器:毫秒级
- 删除容器:删 upper 即可
- lower 完全不受影响
非常适合:
- Docker
- Kubernetes
- CI/CD
- 测试环境
3️⃣ 保证底层“不可变”
lower 是只读的:
这对:
非常重要。
4️⃣ 方便做“实验 / 调试 / 回滚”
典型用法:
- 原系统作为 lower
- 实验改动放在 upper
- 不满意 → 删 upper 就恢复
常用于:
5️⃣ 容器技术的基石
Docker 默认的存储驱动之一就是:
原因:
三、典型使用场景
| 场景 |
用法 |
| Docker |
镜像层 + 容器层 |
| 系统恢复 |
Live CD + 写时复制 |
| 嵌入式 |
只读固件 + 可写配置 |
| 测试环境 |
干净系统 + 临时改动 |
| 安全沙箱 |
限制对真实系统修改 |
四、Overlay 的缺点(也要知道)
- ❌ 不适合大量小文件随机写
- ❌ 多层叠加性能下降
- ❌ 调试复杂(路径不是真实路径)
- ❌ 需要内核支持(≥ 3.18 稳定)
五、一句话总结
用 Linux Overlay,是为了在“不复制、不破坏原系统”的前提下,高效、灵活、低成本地提供可写文件系统。
如果你是想问:
- Docker 为什么用 overlay2
- 怎么手动 mount overlay
- overlay 和 aufs / btrfs 的区别
可以继续问我。