温馨提示×

Linux overlay怎么备份

小樊
35
2026-08-20 12:21:36
栏目: 智能运维

在 Linux 中“overlay”通常指 OverlayFS(overlay 文件系统),常见于 Docker、容器、Live CD、嵌入式系统等场景。下面分几种常见情况,说明如何备份 overlay


一、先搞清楚:你在用哪种 overlay?

1️⃣ OverlayFS(最常见)

典型挂载形式:

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

或 Docker 使用的:

/var/lib/docker/overlay2

2️⃣ Docker overlay 存储

Docker 默认使用 overlay2 存储驱动。

3️⃣ Kubernetes overlay(通常是容器层)

本质还是 Docker / containerd 的 overlay。


二、备份 OverlayFS 的正确思路(重点)

⚠️ 不要直接备份 overlay 挂载点(/merged)作为“增量结构”
⚠️ 不要直接 rsync overlay 挂载点并期望还原 overlay 结构

✅ 正确方式:分别备份 lower、upper、work


三、手动 OverlayFS 备份方法

1️⃣ 查看 overlay 挂载参数

mount | grep overlay

示例输出:

overlay on /merged type overlay (rw,lowerdir=/lower,upperdir=/upper,workdir=/work)

2️⃣ 备份 lowerdir(只读层,通常不常变化)

rsync -aAXHv /lower/ /backup/lower/

3️⃣ 备份 upperdir(增量层,最重要)

rsync -aAXHv /upper/ /backup/upper/

4️⃣ 备份 workdir(可选项)

workdir 通常不需要备份,恢复时重建即可

mkdir -p /backup/work

四、恢复 OverlayFS

1️⃣ 恢复目录结构

cp -a /backup/lower /restore/lower
cp -a /backup/upper /restore/upper
mkdir -p /restore/work

2️⃣ 重新挂载 overlay

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

✅ 这样 overlay 的“增量特性”完整保留。


五、Docker overlay2 的备份(常见场景)

✅ 推荐方式(官方推荐)

systemctl stop docker
rsync -aAXHv /var/lib/docker/ /backup/docker/
systemctl start docker

⚠️ 必须停止 Docker 再备份 否则:

  • 文件可能不一致
  • overlay2 出现 EBUSY / EIO

❌ 不推荐方式

  • 只备份 /var/lib/docker/overlay2
  • 在线热备份 overlay2
  • 只备份容器目录(会丢 metadata)

六、Live CD / 只读系统常见 overlay 备份

例如:

/run/initramfs/overlay

备份整个 root:

rsync -aAXHv --numeric-ids / /backup/rootfs/

七、常见错误总结

错误做法 后果
只备份 /merged 丢失增量结构
在线备份 Docker overlay 数据损坏
忽略 workdir 无法挂载
用 cp 不保留 xattr overlay 异常

八、最佳实践建议

✅ 备份 原始目录结构(lower + upper)
✅ Docker 场景 停机备份
✅ 用 rsync -aAXHv --numeric-ids
✅ 如可能,优先 备份容器数据卷,而不是 overlay


如果你愿意,我可以:

  • 帮你分析 当前 overlay 具体结构
  • 给你 一键备份/恢复脚本
  • 针对 Docker / Kubernetes / 嵌入式系统 给出定制方案

你可以贴一下:

mount | grep overlay

0