温馨提示×

Linux overlay有何作用

小樊
51
2026-07-21 19:36:47
栏目: 智能运维

Linux 的 overlay(通常指 OverlayFS)是一种 联合文件系统(union filesystem),它的核心作用是:

把多个目录(层)合并成一个统一的目录视图,并且支持写时复制(copy-on-write)。

下面从用途、原理、典型场景和示例来说明。


一、OverlayFS 的核心作用

✅ 1. 合并多个目录

OverlayFS 可以把 多个只读目录一个可写目录 合并在一起,对外看起来像一个完整的文件系统。

例如:

  • 下层(lowerdir):只读内容(如系统文件)
  • 上层(upperdir):可写内容(如修改、新增文件)
  • 合并后(merged):统一视图

✅ 2. 写时复制(Copy-on-Write, CoW)

  • 如果 读取文件:直接从 lowerdir 读
  • 如果 修改文件
    • 先把文件从 lowerdir 复制到 upperdir
    • 然后在 upperdir 中修改
  • 如果 删除文件
    • 在 upperdir 中创建一个特殊标记(whiteout)

✅ 好处:

  • 不破坏原始只读层
  • 节省磁盘空间
  • 支持快速回滚

二、典型使用场景

1️⃣ Docker / 容器技术(最常见)

Docker 镜像和容器大量使用 OverlayFS:

  • 镜像层:只读(lowerdir)
  • 容器层:可写(upperdir)
  • 容器看到的文件系统:merged
镜像层1
镜像层2
镜像层3
容器可写层  ← 容器运行时的修改

✅ 优点:

  • 多个容器共享同一镜像
  • 容器之间互不干扰
  • 启动快、占用少

2️⃣ 系统只读 + 可写配置

例如:

  • 根文件系统只读(防止破坏)
  • 一个 overlay 提供可写 /etc/var

常用于:

  • 嵌入式 Linux
  • Live CD / Live USB
  • 工业设备

3️⃣ 软件打包与隔离

  • 把软件运行环境分层
  • 不污染宿主系统
  • 类似轻量级容器

三、OverlayFS 的基本结构

upperdir  → 可写层
lowerdir  → 只读层(可以多层)
workdir   → 临时工作目录(必须为空)
merged    → 挂载后的统一视图

四、简单示例

# 创建目录
mkdir -p lower upper work merged

# 在 lower 中放一个文件
echo "hello from lower" > lower/file.txt

# 挂载 overlay
mount -t overlay overlay \
  -o lowerdir=lower,upperdir=upper,workdir=work \
  merged

# 查看
cat merged/file.txt

修改 merged/file.txt 后:

  • lower/file.txt 不变
  • 修改只存在于 upper/

五、优缺点总结

✅ 优点

  • 轻量、快速
  • 节省磁盘
  • 非常适合容器
  • 支持多层叠加

❌ 缺点

  • 不适合大量随机写
  • 调试相对复杂
  • 对 POSIX 行为有轻微差异(如 rename)

六、一句话总结

Linux Overlay(OverlayFS)用于把多个目录“叠”在一起,实现只读共享 + 可写隔离,是 Docker 和现代容器技术的基石之一。

如果你愿意,我也可以:

  • 对比 overlay vs overlay2
  • 讲 Docker 存储驱动
  • 结合具体系统(Ubuntu / OpenWrt / Yocto)讲用法

0