温馨提示×

什么是overlayfs和linux overlay

小樊
61
2026-09-09 13:17:54
栏目: 智能运维

OverlayFS 和 Linux overlay 本质上指的是同一个东西,只是叫法不同。下面用通俗一点的方式说明。


一、什么是 OverlayFS(Linux overlay)

OverlayFS 是 Linux 内核中的一种联合文件系统(union filesystem)。

它的作用是:

把多个目录“叠加”在一起,对外看起来像一个统一的目录,但底层目录本身不被修改。


二、核心概念(非常关键)

OverlayFS 通常有 至少两层目录:

  1. lower(下层 / 只读层)

    • 一般是基础镜像或原始文件
    • 默认是只读的
  2. upper(上层 / 可写层)

    • 用户对文件的修改写在这里
    • 可写
  3. merged(合并视图)

    • 用户实际看到的目录
    • lower + upper 合并后的结果
  4. work(工作目录)

    • 内核内部使用,不能让用户直接访问

三、它是怎么“叠加”的?

举例:

lower/         # 只读
  a.txt
  b.txt

upper/         # 可写
  b.txt(修改后的)

merged/        # 用户看到的
  a.txt   (来自 lower)
  b.txt   (来自 upper,覆盖 lower)

规则是:

  • 读文件:先找 upper,再找 lower
  • 修改文件:在 upper 中修改(lower 不变)
  • 删除文件:在 upper 中标记“白障(whiteout)”,看起来像删了

✅ lower 永远不被改动


四、为什么叫 “Linux overlay”

  • 在 Linux 内核里,文件系统类型叫:
    overlay
    
  • 命令中常见:
    mount -t overlay overlay ...
    
  • 所以有人叫它:
    • OverlayFS
    • overlay filesystem
    • Linux overlay

其实是一个东西。


五、典型使用场景

1️⃣ Docker(最典型)

  • 镜像 = lower
  • 容器 = upper
  • 容器可写,镜像不变

2️⃣ 容器技术(containerd、Kubernetes)

  • 所有容器共享基础层
  • 每个容器有自己的上层

3️⃣ 系统只读保护

  • 系统盘只读
  • 用户改动写在内存或临时层

4️⃣ Live CD / 嵌入式系统

  • 光盘只读
  • 修改写在内存中

六、简单示例(手动挂载)

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

之后对 merged/ 的操作:

  • 写 → 进 upper/
  • 读 → 先 upper/ 后 lower/

七、一句话总结

OverlayFS(Linux overlay)是一种把“只读层 + 可写层”合并成一个目录的文件系统,广泛用于容器和只读系统场景。

如果你愿意,我也可以:

  • 用 Docker 的例子讲
  • 讲 whiteout 删除机制
  • 对比 overlay 和其他 union fs(aufs、btrfs)

0 踩