温馨提示×

debian overlay怎么迁移

小樊
47
2026-09-16 18:15:14
栏目: 智能运维

在 Debian 里说的 overlay 通常指 OverlayFS(常用于 live 系统、容器、initramfs、Docker 等)。不同场景“迁移”方式不一样,我先按最常见情况讲,你可对号入座。


一、确认你用的是哪种 overlay

先判断来源:

mount | grep overlay
cat /proc/mounts | grep overlay

常见类型:

  1. Docker / 容器 overlay2
  2. Live CD / Live USB 的 overlay(persistence)
  3. 手工 mount 的 overlay(lowerdir/upperdir/workdir)
  4. initramfs 里的 overlay(如 Debian live-boot)

二、Docker overlay2 迁移(最常见)

1. 停止 Docker

systemctl stop docker

2. 迁移数据目录

默认在 /var/lib/docker

rsync -aP /var/lib/docker/ /new/path/docker/

3. 修改 Docker 配置

编辑或新建:

/etc/docker/daemon.json
{
  "data-root": "/new/path/docker"
}

4. 重启 Docker

systemctl start docker
docker info | grep "Docker Root Dir"

✅ 完成


三、Live 系统 overlay(persistence)迁移

如果你是 Debian Live + persistence

旧结构

persistence.conf
overlay (upperdir)

迁移步骤

  1. 拷贝 persistence 分区
  2. 确保 persistence.conf 存在
  3. 重新写入启动参数:
boot=live persistence

⚠️ 不建议直接拷 overlay 层,最好是重新生成 persistence


四、手工 overlay(lower/upper/work)迁移

假设原挂载:

mount -t overlay overlay \
  -o lowerdir=/a,upperdir=/b,workdir=/c /mnt

迁移原则

  • lowerdir 可只读拷贝
  • upperdir + workdir 必须一起迁
  • workdir 不能和 upperdir 混
rsync -aP /a /new/a
rsync -aP /b /new/b
rsync -aP /c /new/c

重新挂载:

mount -t overlay overlay \
  -o lowerdir=/new/a,upperdir=/new/b,workdir=/new/c /mnt

五、initramfs overlay(live-boot)

修改:

/etc/live/boot.conf

或 grub 参数:

overlay=UUID=xxxx

然后更新 initramfs:

update-initramfs -u
update-grub

六、迁移注意事项(很重要)

  • ❌ 不要只拷 overlay 不拷 lower
  • ✅ workdir 必须为空目录
  • ✅ 权限、SELinux/ACL 要保留(rsync -a)
  • ✅ 大目录用 rsync -aP --numeric-ids

七、你可以告诉我

你可以补充一句:

  • Docker 还是 Live 系统
  • overlay 挂载参数是什么?
  • 是从一台机器迁到另一台,还是换磁盘?

我可以直接给你精确命令

0