外观
从 Hyper-V、VirtualBox 和物理机迁移
ESXi 有官方导入向导,Hyper-V、VirtualBox 和物理机(P2V,physical-to-virtual)没有。官方 wiki 给出的做法偏旧(测试环境是 PVE 6.x),思路仍然适用,但没有一键工具,全靠 qm importdisk/qm disk import 手动导入磁盘,再手动重建虚拟机配置。这篇把三种来源的迁移思路和收尾工作理顺,具体命令和参数以你的 PVE 版本 man page 为准。
方案总览
| 来源 | 磁盘格式 | 迁移思路 | 主要坑 |
|---|---|---|---|
| Hyper-V | VHDX(或 VHD) | 导出磁盘文件,qm importdisk/qm disk import 导入 | Generation 2(UEFI/GPT)虚拟机需要额外配 OVMF 和 EFI 启动项 |
| VirtualBox | VDI | 先用 qemu-img convert 转成 qcow2/raw,再导入 | 磁盘总线和网卡型号需要重新指定,原配置不会带过来 |
| 物理机(P2V) | 物理磁盘 | 用 Clonezilla 或 dd 做整盘镜像,导入后修引导 | 迁移时源机必须离线或静默,磁盘控制器驱动要提前备好 |
三种情况都只迁移磁盘数据,虚拟机的 CPU、内存、网卡这些配置要在 PVE 里重新指定,不会跟着磁盘文件自动带过来。
需要用到的章节
迁移本身
- 导入虚拟机(
qm importdisk/qm disk import的通用用法) - Hyper-V 与 PVE 概念对照
迁移后必做
承接迁移过来的虚拟机
救援与验证
实施顺序
- 导出源磁盘
- Hyper-V:在 Hyper-V 管理器导出虚拟机,只取导出结果里的
.vhdx文件,忽略快照和检查点文件;导出前先合并(merge)掉所有检查点,残留的检查点链会导致导出的磁盘不完整。 - VirtualBox:直接找到
.vdi磁盘文件,或用 VirtualBox 自带的导出向导。 - 物理机:用 Clonezilla 启动盘做整机镜像,或者用 Live Linux U 盘 +
dd做逐扇区镜像;这一步需要源机离线,是本方案里最主要的停机窗口来源。
- Hyper-V:在 Hyper-V 管理器导出虚拟机,只取导出结果里的
- 搬到 PVE 能访问的位置:拷到宿主机本地目录、或双方都能挂载的共享存储。
- 建空壳虚拟机:在 PVE 里正常走一遍创建向导,CPU/内存/网卡按目标环境重新规划,磁盘步骤创建后立即删除默认磁盘。
- 导入磁盘:用
qm importdisk(或较新版本的qm disk import)把磁盘文件导入为「未使用磁盘」(unused disk),VirtualBox 的.vdi需要先用qemu-img convert转成 qcow2 或 raw 再导入。 - 挂载并设置启动:把导入的磁盘挂到总线上(先用 SATA/IDE 保证能启动),在 Options 里把它设为启动盘。
- 首次启动排查:Generation 2/UEFI 来源的虚拟机要确认 BIOS 类型选了 OVMF 并加上 EFI 磁盘;找不到默认启动项的话需要手动添加。
- 装驱动、切总线:进系统后装 VirtIO 驱动(Windows)或确认内核已带 virtio 模块(Linux),验证稳定后再把磁盘总线切换到 VirtIO SCSI。
- 验证并保留源端:功能确认无误前,源端的 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 提供)会转换整机配置。规划好目标配置模板后照抄一遍即可,工作量不大但不能省略。