Linux Overlay(OverlayFS) 是一种联合文件系统(union filesystem),常见于容器、Live CD、系统升级等场景。它的核心优势主要体现在以下几个方面:
一、OverlayFS 的核心优势
1. 节省磁盘空间(写时复制 Copy-on-Write)
- 多个容器或实例可以共享同一个只读基础层
- 只有发生写操作时,才会把文件复制到上层(upper layer)
- 避免重复存储相同数据
✅ 非常适合 Docker、Kubernetes 等容器场景
2. 高性能、实现简单
- 相比 AUFS、UnionFS,OverlayFS 已合入 Linux 主线内核(3.18+)
- 代码精简,I/O 路径短
- 性能优于早期联合文件系统
✅ 是目前 Docker 默认推荐存储驱动之一
3. 多层叠加,结构清晰
典型结构:
upperdir (可写层)
lowerdir (只读层,可以有多个)
workdir (临时工作目录)
merged (最终挂载点)
优势:
- 每次修改只影响
upperdir
lowerdir 永远不被破坏
- 可轻松回滚、替换、升级
4. 非常适合容器和镜像管理
- 镜像 = 多层只读 overlay
- 容器 = 镜像 + 一个可写层
- 容器删除后,只需删除可写层
✅ 实现:
5. 支持只读根文件系统
- 系统根目录设为只读
- 所有修改保存在内存或单独分区
- 提高系统稳定性和安全性
✅ 常用于:
- 嵌入式系统
- Live CD / Live USB
- 工业设备
6. 便于系统升级与回滚
- 升级时只替换 lowerdir
- 出现问题时切换回旧 lowerdir
- 不需要完整重装系统
二、与常见方案对比
| 特性 |
OverlayFS |
AUFS |
Device Mapper |
| 内核支持 |
✅ 主线 |
❌ 非主线 |
✅ |
| 性能 |
高 |
中 |
中 |
| 复杂度 |
低 |
高 |
高 |
| 容器友好 |
✅ |
✅ |
✅ |
| 维护成本 |
低 |
高 |
中 |
三、典型使用场景
- ✅ Docker / Podman / Kubernetes
- ✅ 系统只读根目录
- ✅ Live OS
- ✅ 系统升级(A/B 分区)
- ✅ 测试环境快速还原
四、需要注意的缺点
- ❌ 不支持某些复杂文件操作(如 rename 在某些场景受限)
- ❌
upperdir 和 lowerdir 必须在同一文件系统(早期限制)
- ❌ 多层嵌套过多时性能略有下降
五、一句话总结
OverlayFS 的最大优势是:用最少的磁盘和内存,实现高效、安全、可回滚的多层文件系统叠加。
如果你愿意,我也可以:
- 给你一个 overlay 手动挂载示例
- 对比 overlay vs overlay2
- 结合 Docker 存储驱动详细讲