CentOS 上 Overlay 备份与恢复实用指南
一、先明确你的 Overlay 类型
- Docker 的 OverlayFS 存储驱动(overlay2):用于容器镜像与容器可写层的存储,重点备份镜像、容器与卷数据,而非直接拷贝内核挂载点。适用于 CentOS 7/8/Stream 上的容器场景。
- 系统层面的 OverlayFS 挂载:手工或应用将多个目录叠加为统一视图(如 lowerdir/upperdir/workdir/merged),需按目录结构完整备份与恢复。
二、Docker Overlay2 场景的备份与恢复
- 备份
- 停止相关容器或确保一致性窗口:例如先停业务容器,避免运行中写入导致备份不一致。
- 备份镜像:使用 docker save -o image.tar image:tag 导出镜像归档。
- 备份容器可写层与配置:使用 docker export -o container.tar container_name 导出容器文件系统快照;如需保留容器配置与元数据,可额外记录 docker inspect 输出。
- 备份卷与关键数据:对挂载到容器的 Docker 卷与宿主机目录,使用 tar/rsync 完整备份(卷路径可通过 docker inspect 查看 Mounts 字段)。
- 恢复
- 恢复镜像:使用 docker load -i image.tar 导入镜像。
- 恢复容器:优先用编排或 docker run 重建容器(推荐基于镜像和原有运行参数重建,而不是直接导入容器文件系统);若必须使用导出文件系统,可先基于镜像启动新容器,再用 docker cp 或解包归档到目标路径。
- 恢复卷与数据:将备份归档解压到原卷或宿主机目录,确保 权限与属主一致(如需要,执行 restorecon 修复 SELinux 上下文)。
- 验证:核对容器运行状态与数据完整性(例如对数据库容器执行简单查询或校验和检查)。
三、系统层面 OverlayFS 挂载的备份与恢复
- 备份
- 停止使用该 Overlay 的服务,确保无进程占用。
- 识别挂载点与目录结构:通过 mount 或查看 /proc/mounts 找到 lowerdir、upperdir、workdir、merged 的实际路径。
- 完整备份各目录:使用 rsync -a 或 tar czvf 分别备份 lower、upper(以及 work 与 merged 若需要),保留权限、属主与时间戳。
- 恢复
- 停止服务后,按原路径恢复目录内容(先 upper,再 lower,必要时恢复 work;merged 为运行时视图,通常不需单独恢复)。
- 重新挂载 OverlayFS:使用 mount -t overlay overlay -o lowerdir=…,upperdir=…,workdir=… merged 挂载回统一视图。
- 启动服务并校验:确认进程正常、文件一致性与权限正确。
四、通用注意事项与验证清单
- 一致性与停机窗口:备份期间尽量停止写入或置于维护模式;对数据库等状态服务,先执行 flush/lock 或快照。
- 权限与 SELinux:备份与恢复全程使用 root 或具备相应能力;恢复后用 restorecon -Rv / 修复 SELinux 类型(如属主/类型变更)。
- 存储与校验:确保备份目标磁盘空间充足;对关键归档执行 sha256sum 校验;保留多份副本与异地/离线备份。
- 配置即代码:将 /etc/docker/daemon.json 等配置纳入版本管理与备份,便于快速回滚存储驱动或参数变更。
- 恢复演练:定期在测试环境演练恢复流程,记录耗时与问题,形成 SOP 与回滚预案。