温馨提示×

Linux overlay是什么

小樊
43
2026-07-10 05:30:02
栏目: 智能运维

Linux Overlay 通常指 Overlay Filesystem(OverlayFS),它是一种联合文件系统(union filesystem),可以把多个目录“叠加”在一起,形成一个统一的视图。


一、OverlayFS 是什么?

OverlayFS 是 Linux 内核自带的一种文件系统,用于:

把多个目录(层)合并成一个目录,看起来像一个完整的文件系统

它不会真正复制文件,而是通过“覆盖”的方式工作。


二、核心概念(非常重要)

OverlayFS 至少需要两个目录:

名称 含义
lowerdir 只读层(一个或多个)
upperdir 可写层(只有一个)
workdir 工作目录(内部使用)
merged 最终挂载后看到的目录

简单理解

lowerdir (只读)
    ↓
upperdir (可写)
    ↓
merged   (你看到的统一视图)

三、工作方式(重点)

1️⃣ 读文件

  • upperdir → lowerdir 依次查找
  • 找到即返回

2️⃣ 写文件

  • 如果文件在 lowerdir
    • 先复制到 upperdir(copy-up)
    • 再修改
  • 如果文件在 upperdir
    • 直接修改

3️⃣ 删除文件

  • upperdir 创建一个 whiteout 文件
  • 表示“这个文件被删除了”

四、最小示例

mkdir lower upper work merged
echo "hello" > lower/file.txt

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

cat merged/file.txt
# hello

echo "world" >> merged/file.txt
cat upper/file.txt
# hello
# world

五、OverlayFS 的典型用途

✅ Docker / 容器

  • 镜像层 = lowerdir
  • 容器可写层 = upperdir
  • 这就是 Docker 镜像分层的原理

✅ 系统只读 + 可写

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

✅ Live CD / 恢复系统

  • 光盘只读
  • 内存可写

六、优点

✅ 不复制整个文件系统
✅ 节省磁盘空间
✅ 启动快
✅ 层级清晰


七、限制 / 注意点

❌ 不适用于高并发写大量小文件
❌ 不支持同一目录多个可写层
❌ 某些操作(rename)有限制
❌ 需要内核 ≥ 3.18(推荐 ≥ 4.0)


八、和 “overlay” 其他含义的区别

名称 含义
OverlayFS Linux 联合文件系统
overlay network 容器网络(如 Docker overlay)
overlay 分区 非标准说法,通常指 OverlayFS

九、一句话总结

Linux Overlay = OverlayFS,是一种把多个目录叠在一起、只复制修改部分的轻量级文件系统,广泛用于 Docker 和只读系统。

如果你是想了解 Docker overlayk8s overlay 网络,或者 嵌入式系统 overlay,可以告诉我,我可以针对性讲。

0