跳转到内容

从 Hyper-V、VirtualBox 和物理机迁移 ​

ESXi 有官方导入向导,Hyper-V、VirtualBox 和物理机(P2V,physical-to-virtual)没有。官方 wiki 给出的做法偏旧(测试环境是 PVE 6.x),思路仍然适用,但没有一键工具,全靠 qm importdisk/qm disk import 手动导入磁盘,再手动重建虚拟机配置。这篇把三种来源的迁移思路和收尾工作理顺,具体命令和参数以你的 PVE 版本 man page 为准。

方案总览 ​

来源磁盘格式迁移思路主要坑
Hyper-VVHDX(或 VHD)导出磁盘文件,qm importdisk/qm disk import 导入Generation 2(UEFI/GPT)虚拟机需要额外配 OVMF 和 EFI 启动项
VirtualBoxVDI先用 qemu-img convert 转成 qcow2/raw,再导入磁盘总线和网卡型号需要重新指定,原配置不会带过来
物理机(P2V)物理磁盘用 Clonezilla 或 dd 做整盘镜像,导入后修引导迁移时源机必须离线或静默,磁盘控制器驱动要提前备好

三种情况都只迁移磁盘数据,虚拟机的 CPU、内存、网卡这些配置要在 PVE 里重新指定,不会跟着磁盘文件自动带过来。

需要用到的章节 ​

迁移本身

迁移后必做

承接迁移过来的虚拟机

救援与验证

实施顺序 ​

  1. 导出源磁盘
    • Hyper-V:在 Hyper-V 管理器导出虚拟机,只取导出结果里的 .vhdx 文件,忽略快照和检查点文件;导出前先合并(merge)掉所有检查点,残留的检查点链会导致导出的磁盘不完整。
    • VirtualBox:直接找到 .vdi 磁盘文件,或用 VirtualBox 自带的导出向导。
    • 物理机:用 Clonezilla 启动盘做整机镜像,或者用 Live Linux U 盘 + dd 做逐扇区镜像;这一步需要源机离线,是本方案里最主要的停机窗口来源。
  2. 搬到 PVE 能访问的位置:拷到宿主机本地目录、或双方都能挂载的共享存储。
  3. 建空壳虚拟机:在 PVE 里正常走一遍创建向导,CPU/内存/网卡按目标环境重新规划,磁盘步骤创建后立即删除默认磁盘。
  4. 导入磁盘:用 qm importdisk(或较新版本的 qm disk import)把磁盘文件导入为「未使用磁盘」(unused disk),VirtualBox 的 .vdi 需要先用 qemu-img convert 转成 qcow2 或 raw 再导入。
  5. 挂载并设置启动:把导入的磁盘挂到总线上(先用 SATA/IDE 保证能启动),在 Options 里把它设为启动盘。
  6. 首次启动排查:Generation 2/UEFI 来源的虚拟机要确认 BIOS 类型选了 OVMF 并加上 EFI 磁盘;找不到默认启动项的话需要手动添加。
  7. 装驱动、切总线:进系统后装 VirtIO 驱动(Windows)或确认内核已带 virtio 模块(Linux),验证稳定后再把磁盘总线切换到 VirtIO SCSI。
  8. 验证并保留源端:功能确认无误前,源端的 Hyper-V/VirtualBox 虚拟机或物理机保持关闭但不要销毁。

风险评估 ​

单点故障 ​

物理机迁移(P2V)通常要求源机整机离线做镜像,如果这台物理机同时承担其他还没规划迁移的服务,镜像过程中的停机会直接影响这些服务,而不仅仅是被迁移的那部分。迁移前确认这台物理机上还跑着什么,必要时先把无关服务拆分出去。

同一故障域 ​

手动导入过程中,磁盘文件本身在被转换和挂载之前只有一份:qemu-img convert 转换失败、导入中途磁盘写满、或者对着错误的磁盘文件操作,都可能导致这份唯一的数据副本损坏,而这时候源系统可能已经在导出后被关闭甚至清理。

转换和导入前,先确认有第二份副本

qemu-img convert、dd 镜像、qm importdisk 这些操作都不是原地可逆的。影响范围:操作对象是源虚拟机或物理机的全部磁盘数据。前置条件:导出的磁盘文件(.vhdx/.vdi/镜像文件)在完成导入验证之前,额外保留一份只读副本,不要在导入完成前就删除或覆盖它;dd 镜像的目标路径开始前反复核对,避免对着系统盘执行。回退:验证失败可以直接从保留的副本重新导入,而不必回到已经关闭甚至部分清理过的源系统。

验收清单 ​

  • [ ] 导入的磁盘能正常挂载并设为启动盘,虚拟机可以进入系统
  • [ ] Generation 2/UEFI 来源的虚拟机确认 BIOS 类型、EFI 磁盘和启动项配置正确
  • [ ] VirtIO 驱动已安装(Windows)或已确认内核自带支持(Linux),磁盘总线按需切换
  • [ ] 客户机网络配置(静态 IP、路由)迁移后重新核对过
  • [ ] 迁移后的虚拟机做过一次备份,不依赖已经保留但可能被清理的源端
  • [ ] 源端(Hyper-V 虚拟机、VirtualBox 虚拟机或物理机)在验证期内保持关闭而非直接销毁

常见问题 ​

导入后蓝屏或直接起不来。 先确认磁盘总线用的是 IDE/SATA 而不是 VirtIO(新导入的磁盘还没装 VirtIO 驱动时用不了);UEFI 来源的虚拟机检查 BIOS 是否选了 OVMF、是否加了 EFI 磁盘。

导入的 VHDX 报格式不支持。 不同 PVE 版本对 .vhdx 的支持程度不一致,可以先用 Windows 自带的 Convert-VHD 转成 .vhd,或者用第三方转换工具转成 .qcow2 再导入,具体以你的版本实测为准。

P2V 之后网卡驱动不对,进不去系统排障。 Windows 物理机迁移后网卡会被识别为新硬件,如果原来装的是老版本网卡驱动可能导致驱动初始化失败;先用 e1000 等通用网卡型号进系统排查,稳定后再换成 VirtIO。

磁盘导入完成,但虚拟机配置(CPU/内存/网络)都要重新来一遍,很麻烦。 这是手动导入方式的固有限制——只有导入向导(目前仅 ESXi 提供)会转换整机配置。规划好目标配置模板后照抄一遍即可,工作量不大但不能省略。

参考资料 ​

Proxmox VE 非官方中文使用指南,与 Proxmox Server Solutions GmbH 无隶属关系。