温馨提示×

如何迁移ubuntu overlay

小樊
41
2026-10-27 07:47:22
栏目: 智能运维

在 Ubuntu 中,“overlay”通常有两种常见含义,迁移方式也不同:

  1. OverlayFS(文件系统,常用于容器、Live CD、Docker)
  2. Ubuntu Overlay 软件源 / 系统层(如 Ubuntu overlay 仓库或系统升级中的 overlay)

下面分别说明。


一、迁移 OverlayFS(最常见)

场景

你使用了 overlay 挂载,例如:

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

迁移步骤

1. 查看当前 overlay 挂载

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

2. 卸载 overlay

umount /merged

3. 复制数据(关键)

overlay 的数据分散在:

  • lowerdir(只读)
  • upperdir(可写变更)
  • workdir(临时)

真正需要迁移的是:

  • lowerdir(原系统)
  • upperdir(增量修改)

示例:

rsync -aHAX /upper/ /new_upper/
rsync -aHAX /lower/ /new_lower/

4. 在新位置重新挂载

mount -t overlay overlay \
  -o lowerdir=/new_lower,upperdir=/new_upper,workdir=/new_work \
  /new_merged

5. 设置开机自动挂载(可选)

编辑 /etc/fstab:

overlay /new_merged overlay defaults,lowerdir=/new_lower,upperdir=/new_upper,workdir=/new_work 0 0

二、Docker 使用的 overlay2 迁移

如果你是指 Docker overlay2 存储:

1. 停止 Docker

systemctl stop docker

2. 迁移数据目录

默认位置:

/var/lib/docker

迁移示例:

rsync -aP /var/lib/docker/ /data/docker/

3. 修改 Docker 配置

编辑:

/etc/docker/daemon.json

添加:

{
  "data-root": "/data/docker"
}

4. 启动 Docker

systemctl start docker

三、Ubuntu Overlay 源(系统层)

如果你是指 Ubuntu 的 overlay 软件源(如 ubuntu-sdk-team/overlay):

# 查看源
cat /etc/apt/sources.list.d/*.list

# 修改或迁移到新系统
cp /etc/apt/sources.list.d/xxx.list /新系统/etc/apt/sources.list.d/
apt update

四、常见问题

overlay 无法 umount

fuser -km /merged
umount /merged

workdir 不能和 upperdir 同级错误

确保:

workdir ≠ upperdir
workdir 为空目录

如果你能补充说明:

  • 是 Docker / 容器
  • 还是 系统 rootfs overlay
  • 还是 Ubuntu 源 overlay

我可以给你更精确的迁移方案。

0 踩