温馨提示×

如何迁移Debian Overlay

小樊
37
2026-07-29 09:37:21
栏目: 智能运维

迁移 Debian Overlay(通常指 OverlayFSLive 系统的 overlay 结构)需要明确具体场景。下面按最常见的几种情况分别说明,你可以对照使用。


一、什么是 Debian Overlay?

在 Debian 中,“overlay”通常指:

  1. OverlayFS(文件系统层叠)
    • 使用 lowerdirupperdirworkdir
    • 常见于:
      • Live CD
      • Docker / Podman
      • 嵌入式系统
  2. Debian Live 的 overlay 启动方式
    • persistence
    • overlay 启动参数
  3. 手工搭建的 Overlay 根目录
    • 例如 /overlay/lower/overlay/upper

二、迁移 OverlayFS(最常见)

场景:从一台机器迁移 OverlayFS 到另一台

1️⃣ 理解 Overlay 结构

mount | grep overlay

典型结构:

overlay on / type overlay (
  lowerdir=/mnt/rootfs
  upperdir=/mnt/overlay/upper
  workdir=/mnt/overlay/work
)

2️⃣ 迁移步骤(推荐)

✅ 方法一:迁移合并后的最终视图(最安全)

  1. 进入 overlay 挂载点

    cd /mnt/overlay
    
  2. 复制合并后的文件系统

    rsync -aAXHv / /target/rootfs/
    

    推荐参数说明:

    • -a 保留权限
    • -A ACL
    • -X extended attributes
    • -H hard links
  3. 在新系统中直接作为普通根文件系统使用

适合:系统迁移、重建环境


✅ 方法二:分别迁移 lower / upper / work(保留 overlay 结构)

适用于需要继续用 OverlayFS 的场景。

rsync -aAXHv /mnt/rootfs/     /new/lower/
rsync -aAXHv /mnt/overlay/upper/ /new/upper/
rsync -aAXHv /mnt/overlay/work/  /new/work/

在新系统重新挂载:

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

⚠️ 注意:

  • workdir 必须为空
  • upperdir 不能和 lowerdir 在同一文件系统(某些内核版本)

三、迁移 Debian Live 的 Overlay(Live 系统)

场景:迁移 Live USB / Live 系统

1️⃣ 找到 overlay 分区

lsblk

常见结构:

├─ persistence (ext4)
│  └─ upper/

2️⃣ 迁移 persistence 数据

rsync -aAXHv /media/persistence/ /new/persistence/

3️⃣ 修改启动参数(GRUB / Syslinux)

确保包含:

persistence
persistence-encryption=none

四、迁移 Docker / Podman 风格的 Overlay

1️⃣ 停止容器

systemctl stop docker

2️⃣ 迁移 overlay 数据

rsync -aAXHv /var/lib/docker/ /new/docker/

3️⃣ 修改 Docker 存储路径

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

五、迁移到新机器时的注意事项

必须检查

  • 内核版本(OverlayFS 格式可能不兼容)
  • SELinux / AppArmor
  • fstab 中的 overlay 条目
  • initramfs 是否支持 overlay

推荐

  • 使用 rsync 而不是 cp
  • 迁移后执行:
    update-initramfs -u
    update-grub
    

六、最简迁移方案(总结)

目标 建议
不再用 overlay ✅ 复制合并后的根目录
继续用 overlay ✅ 分别复制 lower/upper/work
Live 系统 ✅ 迁移 persistence
Docker ✅ 迁移 /var/lib/docker

如果你能贴出以下信息,我可以给你精确迁移命令

  • mount | grep overlay
  • lsblk
  • 是物理机 / 虚拟机 / Live USB / Docker?

我也可以帮你写完整迁移脚本

0