温馨提示×

为什么用centos overlay

小樊
41
2026-09-12 02:47:17
栏目: 智能运维

在 CentOS(以及一般 Linux 系统)里提到 overlay,通常是指 OverlayFS(overlay 文件系统)Docker 的 overlay/overlay2 存储驱动。下面从“为什么用”和“用在哪”两个角度说明。


一、什么是 overlay(OverlayFS)

OverlayFS 是一种 联合文件系统(union filesystem),可以把多个目录“叠加”在一起:

  • lowerdir(底层,只读)
  • upperdir(上层,可写)
  • merged(合并后视图)

对用户的视角看,是一个统一目录;但实际写操作只发生在 upperdir。


二、为什么在 CentOS 上使用 overlay

1️⃣ Docker / Kubernetes 默认存储驱动(最重要原因)

在 CentOS 7/8 上:

  • Docker 默认使用 overlay2
  • 原因:
    • 性能比 devicemapper
    • 支持写时复制(Copy-on-Write)
    • 磁盘利用率高
    • 稳定性好

✅ 如果不改配置,CentOS 上的 Docker 基本都在用 overlay


2️⃣ 节省磁盘空间(写时复制)

例如:

  • 启动 10 个 CentOS 容器
  • 它们共享同一个镜像层(lowerdir)
  • 只有修改的文件才写入 upperdir

➡ 避免复制完整系统


3️⃣ 镜像分层结构天然适配 overlay

Docker 镜像本身就是分层结构:

layer1 (centos base)
layer2 (yum install)
layer3 (app)

OverlayFS 正好映射:

lower: layer1 + layer2
upper: layer3
merged: 容器根目录

4️⃣ 比 devicemapper 更简单稳定

CentOS 早期 Docker 用 devicemapper:

  • 需要 LVM
  • 容易满
  • 配置复杂

overlay2:

  • 不需要 LVM
  • 直接用文件系统
  • 官方推荐

5️⃣ 适合云原生环境

  • Kubernetes Pod
  • 容器临时文件系统
  • CI/CD 构建环境

都依赖 overlay 的高效隔离能力


三、典型使用场景

场景 是否用 overlay
Docker 容器 ✅ 是
Podman 容器 ✅ 是
系统根文件系统 ❌ 一般不是
多版本软件共存 ✅ 可用
Live CD / 修复系统 ✅ 常用

四、简单示例(手动 overlay)

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

五、一句话总结

在 CentOS 上使用 overlay,主要是因为 Docker / 容器技术需要一种高效、节省空间、支持分层和写时复制的文件系统,而 overlay2 是目前最成熟、官方推荐的选择。

如果你是指 CentOS 系统本身用 overlay 启动(如 LiveOS),我也可以单独讲。

0