本文由 AI (OpenClaw) 根据实际迁移过程整理,部分细节经人工补充修正。
背景
EVE-NG 网络模拟器原本裸金属安装在一台独立机器上,使用 nvme1n1(长江存储 TiPlus7100 1TB)作为系统盘。需要迁移为 PVE (Proxmox VE) 虚拟机。
环境信息:
- PVE 主机:AZW SEi12 MAX 迷你主机,i7-12700H / 32GB / 2块 NVMe
- nvme0n1(TiPlus5000 2TB):PVE 系统 + VM 存储(local-nvme 1.4TB)
- nvme1n1(TiPlus7100 1TB):EVE-NG 系统盘
- OpenClaw 运行在 PVE 上的 VM 100(1panel)中,通过 SSH(sshpass)远程操作 PVE 宿主机
- EVE-NG 原始系统 IP:192.168.10.20
nvme1n1 磁盘布局:
| 分区 | 挂载点 | 用途 |
|---|---|---|
| nvme1n1p1 | — | EFI 引导 |
| nvme1n1p2 | /boot | GRUB + 内核 |
| nvme1n1p3 | LVM → / | ubuntu-vg/ubuntu-lv,根文件系统(936G,已用 599G) |
迁移过程
第一次尝试:dd 写 raw 到 local-nvme(失败)
通过 SSH 将 EVE-NG 整块盘 dd 为 raw 镜像,直接写入 PVE 的 local-nvme 存储。
问题: dd 产生的 raw 文件大小等于源盘容量(~950G),但 local-nvme 当时只剩约 500G 可用空间。写了约 490G 后发现空间即将耗尽,紧急停止。
止损:
- 终止 dd 进程
- 删除已写入的 raw 文件(457G),local-nvme 恢复到 581G 可用
第二次尝试:qemu-img convert 转换 nvme1n1p3(转换成功,但无法启动)
改用 qemu-img convert 将 nvme1n1p3(LVM 逻辑卷)转换为 qcow2 压缩格式,大幅减少磁盘占用。
1 | qemu-img convert -p -c -O qcow2 /dev/mapper/ubuntu--vg--ubuntu--lv /dev/pve/storage/images/200/vm-200-disk-0.qcow2 |
转换结果: 285G(qcow2 压缩),空间充裕。
启动失败: VM 启动报错 boot failed: no bootable disk。
原因分析: 只转换了根分区(ubuntu-lv),qcow2 里面是裸 ext4 文件系统,缺少:
- 分区表(GPT/MBR)
- /boot 分区(GRUB + 内核)
- /boot/efi 分区(EFI 引导代码)
第三次尝试:qemu-img convert 转换整块 nvme1n1(成功)
改为转换整块磁盘 nvme1n1,包含所有分区和引导信息。
前置操作:
- 停止 VM 200
- 删除第二次的 qcow2 文件(回收 285G)
- 反激活 PVE 上残留的 LVM 卷组(ubuntu-vg),防止冲突
转换命令:
1 | qemu-img convert -f raw -O qcow2 -c /dev/nvme1n1 /dev/pve/storage/images/200/vm-200-disk-0.qcow2 |
VM 200 重建配置(UEFI):
- BIOS: OVMF (UEFI)
- 机型: q35
- 添加 EFI 磁盘(efidisk0)
- CPU: 8 核 host pass-through
- 内存: 16GB
- 网络: virtio,桥接 vmbr0
转换结果: 285G(qcow2 压缩),整盘包含完整引导链。
VM 启动问题:磁盘总线类型不匹配
VM 创建后启动失败。原因是 PVE 默认创建的磁盘总线类型与 EVE-NG 原始系统不兼容。
解决: 将磁盘总线从默认类型切换为 SATA 后,VM 成功启动。
系统启动问题:fstab 挂载失败进入救援模式
VM 启动后系统进入紧急模式(rescue mode)。原因是 /etc/fstab 中有旧的数据盘挂载条目,迁移后该磁盘已不存在,导致挂载失败。
解决: 进入系统后编辑 /etc/fstab,注释掉不存在的磁盘挂载条目,重启后恢复正常。
最终状态
- ✅ 整盘 qcow2 转换完成(285G)
- ✅ VM 200 配置完成(OVMF/UEFI + q35 + SATA + EFI 磁盘)
- ✅ 磁盘总线切换为 SATA,VM 正常启动
- ✅ fstab 修复后系统正常运行
- PVE 存储:local-nvme 1.4TB 总量,剩余约 344G
环境信息
- PVE 主机:192.168.10.120,AZW SEi12 MAX(i7-12700H / 32GB)
- PVE 版本:8.3.2(Debian 12,内核 6.8.12-5-pve)
- 存储:2 块长江存储 NVMe(TiPlus5000 2TB + TiPlus7100 1TB)
- EVE-NG 内容:23 个实验拓扑、22 个 QEMU 镜像、599G 数据
经验教训
- 先评估空间再动手:dd 产生的 raw 文件大小等于源盘容量,迁移前必须确认目标存储有足够空间
- 优先使用压缩格式:qcow2 带压缩(
-c)可大幅减少磁盘占用(950G → 285G,约 70% 压缩率) - 转换整盘而非单个分区:包含引导分区(EFI + /boot)的整盘转换才能保证系统可启动
- 注意磁盘总线类型:PVE 默认总线可能与原系统不匹配,需要手动切换为 SATA
- 检查 fstab 挂载:迁移后原系统的数据盘挂载条目可能失效,需要清理避免进入救援模式
- LVM 卷组冲突:转换前需要反激活 PVE 上残留的源系统 LVM 卷组