温馨提示×

CentOS为何配置Overlay

小樊
34
2026-08-30 14:00:12
栏目: 智能运维

在 CentOS 上配置 Overlay(通常指 OverlayFSDock er 的 overlay/overlay2 存储驱动)主要是为了提升性能、节省磁盘空间,并更好地支持容器化场景。下面从几个常见角度解释“为什么要在 CentOS 上配置 Overlay”。


一、什么是 Overlay?

Overlay 一般指 OverlayFS,一种 联合文件系统(Union File System)

  • 可以把多个目录“叠加”成一个目录
  • 上层(upper)可写,下层(lower)只读
  • 修改内容只发生在上层,下层保持只读
lowerdir (只读)
upperdir (可写)
merged  (最终挂载视图)

二、CentOS 中为什么要配置 Overlay?

1️⃣ Docker / Kubernetes 强烈依赖 Overlay

这是最主要原因。

✅ Docker 默认存储驱动

  • CentOS 7 / 8 上,Docker 默认使用 overlay2
  • 原因:
    • overlay2 性能优于 devicemapper
    • 不会产生大量稀疏文件
    • 启动容器更快
    • 磁盘利用率更高

❌ 不推荐 devicemapper 的原因

  • 需要配置 LVM thin pool
  • 磁盘容易写满
  • 性能较差
  • Docker 官方已不推荐

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

Overlay 使用 Copy-on-Write(CoW)

  • 多个容器共享同一镜像层
  • 只有发生修改时才占用额外空间

✅ 非常适合:

  • 大量容器
  • CI/CD 环境
  • 高密度的 Kubernetes 节点

3️⃣ 启动速度快

OverlayFS:

  • 不需要复制整个文件系统
  • 容器启动只需挂载层

对比:

存储驱动 启动速度 磁盘占用
devicemapper
overlay2 低 ✅

4️⃣ CentOS 内核原生支持

  • CentOS 7(3.10+)支持 OverlayFS
  • CentOS 8 / Stream 支持更完善
  • Docker 官方推荐

只需确认:

lsmod | grep overlay
modprobe overlay

5️⃣ Kubernetes 场景

Kubernetes 的容器运行时(containerd / CRI-O):

  • 默认使用 overlayfs
  • kubelet 会检测是否支持 overlay

配置 Overlay 可以避免:

  • Pod 启动失败
  • 存储驱动不兼容
  • 节点 NotReady

三、典型配置场景

✅ Docker 使用 overlay2

docker info | grep -i storage

如果不是 overlay2:

cat > /etc/docker/daemon.json <<EOF
{
  "storage-driver": "overlay2"
}
EOF
systemctl restart docker

✅ 手动挂载 Overlay(非 Docker)

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

四、什么时候不适合 Overlay?

❌ 以下情况需谨慎:

  • 使用非常老的内核(< 3.10)
  • 文件系统不支持 d_type(如某些老旧 XFS)
  • 高性能数据库直接跑在 Overlay 上(不建议)

检查 d_type:

xfs_info / | grep ftype
# ftype=1 才支持 overlay

五、一句话总结

CentOS 配置 Overlay,主要是为了更好地支持 Docker / Kubernetes,提升容器性能、节省磁盘并简化运维。

如果你是在 Docker / Kubernetes / 手动挂载 / CI 环境 中遇到具体配置问题,可以告诉我你的使用场景,我可以给你更针对性的配置建议。

0