温馨提示×

linux overlay支持写时复制吗

小樊
43
2026-09-09 13:12:52
栏目: 智能运维

是的,Linux 的 OverlayFS(overlay)是支持写时复制(Copy-on-Write,COW)的。

基本原理

OverlayFS 是一种联合文件系统(union filesystem),通常包含以下几个目录:

  • lowerdir(只读层):一个或多个只读目录
  • upperdir(可写层):一个可读写目录
  • workdir:内部工作目录(必须和 upperdir 同文件系统)
  • merged(挂载点):用户看到的统一视图

写时复制如何工作

当你对 merged 目录中来自 lowerdir 的文件进行写操作 时:

  1. OverlayFS 不会直接修改 lowerdir 中的文件(lowerdir 是只读的)
  2. 而是先将文件从 lowerdir 复制到 upperdir
  3. 然后在 upperdir 的副本上进行修改

这就是典型的 写时复制(COW) 行为。

示例

mount -t overlay overlay \
  -o lowerdir=/ro,upperdir=/rw,workdir=/work \
  /merged
  • 读取 /merged/file:
    • 若 upperdir 没有,则读 lowerdir
  • 修改 /merged/file:
    • 若 file 来自 lowerdir,先复制到 upperdir,再修改

注意事项

  1. 目录本身不复制

    • 对目录的修改(如新建文件)直接在 upperdir 进行
    • 只有“修改已有文件内容”才会触发 COW
  2. 大文件 COW 有性能开销

    • 写大文件时会先复制,再写,可能占用额外空间和时间
  3. 同一文件可被多个 overlay 共享 lowerdir

    • 只要不写,就不会复制,节省空间(常用于容器镜像)
  4. Docker / Kubernetes 使用 OverlayFS

    • 镜像层是 lowerdir
    • 容器可写层是 upperdir
    • 完全依赖 COW 实现轻量隔离

总结

✅ Linux OverlayFS 支持写时复制
✅ 写操作不会污染只读层
✅ 是容器技术(Docker、Podman、K8s)的核心文件系统机制之一

如果你愿意,我也可以讲:

  • OverlayFS 和 aufs / btrfs COW 的区别
  • Docker 中 overlay2 的 COW 行为
  • 如何诊断 overlay COW 性能问题

0 踩