搜索中...
🔍

未找到相关结果

Akemi

EVE-NG 迁移至 PVE 全记录

字数统计: 1.1k阅读时长: 4 min
2026/06/27

本文由 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,包含所有分区和引导信息。

前置操作:

  1. 停止 VM 200
  2. 删除第二次的 qcow2 文件(回收 285G)
  3. 反激活 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 数据

经验教训

  1. 先评估空间再动手:dd 产生的 raw 文件大小等于源盘容量,迁移前必须确认目标存储有足够空间
  2. 优先使用压缩格式:qcow2 带压缩(-c)可大幅减少磁盘占用(950G → 285G,约 70% 压缩率)
  3. 转换整盘而非单个分区:包含引导分区(EFI + /boot)的整盘转换才能保证系统可启动
  4. 注意磁盘总线类型:PVE 默认总线可能与原系统不匹配,需要手动切换为 SATA
  5. 检查 fstab 挂载:迁移后原系统的数据盘挂载条目可能失效,需要清理避免进入救援模式
  6. LVM 卷组冲突:转换前需要反激活 PVE 上残留的源系统 LVM 卷组
CATALOG
  1. 1. 背景
  2. 2. 迁移过程
    1. 2.1. 第一次尝试:dd 写 raw 到 local-nvme(失败)
    2. 2.2. 第二次尝试:qemu-img convert 转换 nvme1n1p3(转换成功,但无法启动)
    3. 2.3. 第三次尝试:qemu-img convert 转换整块 nvme1n1(成功)
    4. 2.4. VM 启动问题:磁盘总线类型不匹配
    5. 2.5. 系统启动问题:fstab 挂载失败进入救援模式
  3. 3. 最终状态
  4. 4. 环境信息
  5. 5. 经验教训