温馨提示×

什么是overlay文件系统

小樊
53
2026-09-15 16:46:21
栏目: 编程语言

Overlay 文件系统(OverlayFS) 是一种 联合挂载(union mount)文件系统,在 Linux 中用于将多个目录“叠加”在一起,呈现为一个统一的目录视图,而无需修改底层目录内容。


一、核心思想

OverlayFS 把以下几个目录组合起来:

  • lower(底层,只读):一个或多个目录,通常是基础系统或镜像
  • upper(上层,可写):一个目录,用于保存修改
  • work(工作目录):OverlayFS 内部使用的临时目录
  • merged(挂载点):用户看到的最终目录
lower (只读)  +  upper (可写)  →  merged (统一视图)

二、文件行为规则

  1. 读取文件

    • 优先从 upper 读
    • 若 upper 没有,则从 lower 读
  2. 修改文件

    • 若文件在 lower:
      • 先复制到 upper(写时复制,Copy-on-Write)
      • 再修改 upper 中的副本
  3. 删除文件

    • 在 upper 中创建一个 whiteout(白out) 文件
    • 使 lower 中对应文件“不可见”
  4. 新增文件

    • 直接写入 upper

三、典型使用示例

mount -t overlay overlay \
  -o lowerdir=/lower,upperdir=/upper,workdir=/work \
  /merged

四、常见应用场景

  1. Docker / 容器

    • 镜像层 = lower
    • 容器层 = upper
    • 容器文件系统 = merged
  2. Live CD / 系统恢复

    • 只读系统 + 内存可写层
  3. 沙箱 / 测试环境

    • 不修改原始系统即可试验

五、优点

  • 高效(只复制被修改的文件)
  • 节省空间
  • 支持多层叠加

六、限制

  • upper 必须可写
  • 不支持同一文件跨层硬链接
  • 某些场景下性能略低于原生文件系统

如果你愿意,我也可以:

  • 用 图示 说明
  • 结合 Docker 层结构 讲
  • 演示 实际挂载实验

0 踩