Linux 的 Overlay 文件系统(OverlayFS) 之所以被认为“性能高”,并不是因为它比普通文件系统读写更快,而是因为它在特定使用场景(容器、只读基础 + 可写层)下,做到了极低的额外开销和高效的文件访问方式。下面从原理层面解释为什么它“性能高”。
OverlayFS 的典型结构是:
upperdir (可写层)
lowerdir (只读层,如镜像)
merged (用户看到的统一视图)
upperdir 中 → 直接读lowerdir 中 → 直接读 lowerdir✅ 读操作几乎零开销
没有额外的元数据转换,也没有“合并拷贝”。
✅ 只有真正修改时才发生复制
这是它比“全量拷贝文件系统”快的根本原因。
OverlayFS 不是在磁盘上生成一份合并后的文件系统,而是在 VFS 层做路径解析:
➡️ 避免了:
所以启动容器、挂载镜像非常快。
典型 Docker 使用方式:
lowerdir:镜像层(只读,可共享)upperdir:容器可写层lowerdir优势:
这是 OverlayFS 在容器中“性能高”的关键。
OverlayFS 是 Linux 内核文件系统(不是 FUSE):
对比:
➡️ rm 一个 lower 文件只是“标记”,不是真删
需要客观说明:
❌ 大量写已存在文件(频繁 COW)
❌ 深层目录大量覆盖
❌ 对小文件随机写敏感的场景
这些情况下:
OverlayFS 性能高的本质:用“视图叠加 + 按需复制”代替“数据拷贝”,在内核层以极低开销实现文件系统分层。
如果你愿意,我也可以: