温馨提示×

centos overlay如何做持久化

小樊
34
2026-09-24 10:48:22
栏目: 智能运维

在 CentOS(以及一般的 Linux)里,overlay(OverlayFS)本身只是一个联合挂载文件系统,它不会自动做持久化——重启后挂载会丢失,除非你把它写进系统配置或者放到持久层里。

下面按常见使用场景给你讲几种“overlay 持久化”的做法。


一、CentOS 上 overlay 的基本原理回顾

OverlayFS 至少需要:

  • lowerdir(只读层)
  • upperdir(可读写层)
  • workdir(工作目录)
  • merged(挂载点)

示例:

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

⚠️ 这个挂载重启就没了。


二、方式一:写入 /etc/fstab(最常用)

1️⃣ 准备目录

mkdir -p /lower /upper /work /merged

2️⃣ 编辑 fstab

vi /etc/fstab

添加:

overlay /merged overlay defaults,lowerdir=/lower,upperdir=/upper,workdir=/work 0 0

3️⃣ 测试挂载

mount -a
df -h | grep merged

✅ 重启后自动挂载,实现持久化


三、方式二:systemd mount 单元(CentOS 7/8 推荐)

适合复杂环境(比如 upper 在 LV / 磁盘上)

1️⃣ 创建 mount 单元

vi /etc/systemd/system/merged.mount
[Unit]
Description=Overlay Mount

[Mount]
What=overlay
Where=/merged
Type=overlay
Options=lowerdir=/lower,upperdir=/upper,workdir=/work

[Install]
WantedBy=multi-user.target

2️⃣ 启用

systemctl daemon-reload
systemctl enable --now merged.mount

✅ 开机自动挂载


四、方式三:Docker overlay 持久化(很多人问的)

如果你是 Docker 的 overlay2 存储驱动:

✅ Docker 本身已经“持久化”

  • 数据在:
/var/lib/docker/overlay2
  • 只要不 docker rm -v,数据就在

想换存储位置(持久化到数据盘)

vi /etc/docker/daemon.json
{
  "storage-driver": "overlay2",
  "data-root": "/data/docker"
}
systemctl restart docker

五、方式四:Live CD / 救援系统(临时系统持久化)

如果你是 CentOS Live USB + overlay:

持久化要:

  • 单独分区
  • 内核参数:
overlay=live,persistence

或用:

rd.live.overlay=UUID=xxxx

(这个属于 Live 系统范畴)


六、常见问题

❓ 重启后 upper 里东西没了?

  • upperdir 不能在 tmpfs
  • 不能在 /tmp、/run

❓ SELinux 问题

setenforce 0

或:

Options=...,context="system_u:object_r:usr_t:s0"

七、总结一句话

CentOS 上 overlay 持久化 = 把挂载写进 fstab 或 systemd,并确保 upper/work 在持久磁盘上

如果你能告诉我:

  • 是 系统 overlay
  • 还是 Docker
  • 还是 Live 系统

我可以给你完全针对性的配置示例。

0 踩