温馨提示×

linux overlay是什么架构

小樊
43
2026-09-18 15:07:47
栏目: 智能运维

Linux 的 Overlay(OverlayFS) 是一种联合挂载(union mount)文件系统架构,核心思想是:把多个目录(称为“层”)叠加在一起,对外呈现为一个统一的目录,但底层文件不被修改


一、Overlay 的基本架构组成

OverlayFS 主要由以下几层(目录)构成:

1. lowerdir(下层 / 只读层)

  • 一个或多个目录
  • 只读
  • 通常是基础镜像或系统文件
  • 可以有多层(lower1:lower2:lower3)

2. upperdir(上层 / 可写层)

  • 单个目录
  • 可读写
  • 所有写操作都在这里发生
  • 不存在于 lower 中的文件直接写入 upper

3. workdir(工作目录)

  • 仅供 OverlayFS 内部使用
  • 用于原子操作和临时文件
  • 必须与 upperdir 在同一文件系统

4. merged(挂载点)

  • 用户看到的统一视图
  • 是 lower + upper 的“合并结果”

二、架构示意

        ┌─────────────┐
        │  merged     │  ← 用户看到的统一目录
        └─────────────┘
               ↑
   ┌───────────┴───────────┐
   │       upperdir        │  ← 可写层(修改在这里)
   ├───────────────────────┤
   │  lowerdir (layer N)   │
   │  lowerdir (layer 2)   │  ← 只读层(可多层)
   │  lowerdir (layer 1)   │
   └───────────────────────┘

三、核心工作原理(重点)

1. 读文件

  • 从上到下查找
  • 先查 upper,再查 lower
  • 找到即返回(upper 优先)

2. 写文件

  • 若文件在 lower:
    • Copy-On-Write(写时复制)
    • 先复制到 upper,再修改
  • 若文件在 upper:
    • 直接修改

3. 删除文件

  • 在 upper 中创建 whiteout(白障文件)
  • 并不真正删除 lower 中的文件
  • 用户视角:文件“消失”

四、典型使用场景

✅ Docker / 容器

  • 镜像 = 多层 lower
  • 容器 = upper + lower
  • 容器销毁 → 只删 upper

✅ 系统只读 + 用户可写

  • 根文件系统只读
  • overlay 提供临时可写环境

✅ Live CD / 嵌入式系统


五、与其它架构对比

特性 OverlayFS AUFS btrfs snapshot
内核支持 ✅ 原生 ❌ 外部
性能
层数
复杂度

六、总结一句话

Linux Overlay 是一种“多层只读 + 单层可写”的联合文件系统架构,通过写时复制实现高效、轻量的文件系统叠加。

如果你愿意,我也可以:

  • 画一张 Docker Overlay2 架构图
  • Overlay2 vs Overlay 的区别
  • 给你 mount 命令实操示例

0