外观
Hyper-V 与 PVE 概念对照
虚拟化平台对照提过一个简表。Hyper-V 没有像 ESXi 那样的官方一键导入向导,迁移基本靠手工转换磁盘加重建配置,这篇把要对照的概念和手工迁移的关键点展开讲。
没有官方 Hyper-V 导入向导,以下手工方法未在真实环境验证
Proxmox 官方的迁移文档主要针对 VMware,明确说"大部分内容应该也适用于其他源虚拟化平台",但没有针对 Hyper-V 给出专门的步骤或限制列表。本文的磁盘转换命令(qemu-img)参数经过查证,但整体迁移流程请先在测试虚拟机上走一遍,不要直接对生产虚拟机操作。
虚拟机代际与固件
| Hyper-V | PVE | 说明 |
|---|---|---|
| 第一代虚拟机 | BIOS(SeaBIOS) | 传统 BIOS 引导,IDE/传统总线 |
| 第二代虚拟机 | OVMF(UEFI) | UEFI 引导,需要同时加一块 EFI 磁盘存放 UEFI 变量 |
| 安全启动 (Secure Boot) | OVMF 的 Secure Boot 选项 | 概念一致,但证书链不同,迁移后可能需要重新处理 |
| 虚拟 TPM | vTPM(tpmstate0) | PVE 9.1 起 vTPM 状态可以存成 qcow2 从而支持快照;Hyper-V 侧的 vTPM 状态无法直接迁移过来,依赖 vTPM 的磁盘加密(BitLocker)迁移前要准备好恢复密钥 |
磁盘:VHDX 要先转格式
Hyper-V 用 VHD/VHDX 格式,PVE 的块存储(LVM-Thin、ZFS、Ceph)只认 raw,文件存储(目录、NFS、CIFS)可以用 raw 或 qcow2。没有直接可用的路径,必须先转换格式:
sh
# 在宿主机 shell(或任意装了 qemu-utils 的 Linux 机器)上执行
qemu-img convert -p -f vhdx -O qcow2 source.vhdx output.qcow2
# 更早的 VHD(非 VHDX)用 vpc 作为源格式
qemu-img convert -p -f vpc -O qcow2 source.vhd output.qcow2转换完成后用 qm disk import <vmid> output.qcow2 <存储> 接入新建的虚拟机,磁盘会以 unused0 的形式挂上,再到 Web UI 里把它接到 SCSI/VirtIO 总线并调整启动顺序。命令细节见 qm 与 pct 速查。
建议在 Linux 上转换,不要在 Windows 上转换
有用户反馈在 Windows 版 qemu-img 上转换大文件时遇到读取错误,改到 Linux 环境转换后正常。这是社区反馈,不是官方结论,但优先选 Linux 环境能少踩一个坑。
| Hyper-V | PVE | 说明 |
|---|---|---|
| VHD/VHDX | qcow2(文件存储)/ raw(块存储) | 需要 qemu-img convert 手工转换,没有自动向导 |
| 动态扩展磁盘 | 精简分配(Thin provisioning) | qcow2、LVM-Thin、ZFS 默认都是精简分配 |
| 差异磁盘 (Differencing Disk) | 链接克隆的基础镜像 | 概念类似但实现机制不同,不能直接复用差异链 |
| 存储迁移 (Storage Migration) | 磁盘迁移(qm disk move 或 Web UI Move Storage) | 客户机运行中即可执行 |
网络
| Hyper-V | PVE | 说明 |
|---|---|---|
| 虚拟交换机(外部/内部/专用) | Linux Bridge(默认)或 Open vSwitch | 外部交换机大致对应绑定物理网卡的网桥;内部/专用交换机对应不绑物理网卡的纯内部网桥 |
| 集成服务 (Integration Services) | QEMU Guest Agent + VirtIO 驱动 | 两边都需要在客户机内单独安装对应组件,不是自动生效 |
| SET(交换机嵌入式团队) | Linux Bond | 都是把多网卡捆成一个逻辑接口,配置方式和参数命名不同 |
| VLAN ID(每个虚拟机网卡设置) | 网桥打 VLAN 标签或 VLAN-aware 网桥 + 客户机网卡 Tag | 概念一致,PVE 里选哪种方式看你的网桥怎么建的 |
管理与集群
| Hyper-V / Windows Server | PVE | 说明 |
|---|---|---|
| Hyper-V 管理器 / System Center VMM | Web UI(任意节点都能管全集群) | 没有独立管理节点,也没有 SCVMM 那种跨多套环境的统一视图;多集群/跨站点统一管理由独立产品 Proxmox Datacenter Manager 提供,见更新追踪:PDM |
| 故障转移群集 (Failover Clustering) | PVE 集群 + HA(ha-manager) | PVE 的集群通信(corosync)和 HA 是两回事:建集群不等于开 HA,客户机要单独加入 HA 管理 |
| 检查点 (Checkpoint) | 快照 (Snapshot) | 概念一致;PVE 的快照能否使用取决于存储类型,块存储的传统卷不一定支持 |
| 副本 (Hyper-V Replica) | 存储复制 (ZFS Storage Replication) 或备份 | Hyper-V Replica 是持续复制到另一台主机;PVE 对应的是基于 ZFS 的增量复制,或者干脆用备份+快速恢复替代,注意复制不是备份,删除源的破坏性操作会同步复制过去 |
| Windows Admin Center | 无直接对应 | PVE 的管理面板本身就是 Web UI,不需要额外安装管理工具 |
最大的心态差异:没有对话框告诉你哪里错了
习惯 Windows 生态的报错弹窗和向导式修复后,PVE 遇到问题通常只在日志里留一行英文(journalctl -u <服务名>),需要自己判断下一步。这是迁移过来后最需要适应的部分,不是功能缺失。
迁移前后要做的事
- 迁移前:记录客户机的静态 IP、网卡 MAC(如果 DHCP 保留是按 MAC 做的,迁移后 MAC 会变,需要更新保留或手动指定 MAC);卸载集成服务;确认没有依赖 vTPM 的磁盘加密还没准备恢复密钥;关闭源虚拟机。
- 转换与导入:按上文命令转换磁盘格式,用
qm disk import接入新建的虚拟机;Windows 客户机建议先用 SATA/IDE 总线启动,装好 VirtIO 驱动后再切换到 VirtIO SCSI,避免直接蓝屏。 - 迁移后:重新配置网络(网卡名字和驱动都变了);装 QEMU Guest Agent;在测试网段验证服务正常后再切回生产环境。
批量迁移一批 Hyper-V、VirtualBox 或物理机的实战流程见从 Hyper-V、VirtualBox 和物理机迁移。
常见问题
转换后的 Windows 虚拟机开机蓝屏。 几乎总是磁盘总线或驱动问题:先切回 IDE/SATA 总线能不能起来,能起来再按VirtIO 驱动与 QEMU Guest Agent的顺序装驱动、换总线。
网络配置迁移过来但连不上。 网卡在新系统里被识别成新设备,Windows 里检查设备管理器和网络连接列表是否出现了"重复"的网卡定义;Linux 里检查 udev 的网卡命名规则是否和新的 MAC 对应上。
vTPM 相关的加密卷(BitLocker)解不开。 见上文警示,vTPM 状态迁移不过来,只能用恢复密钥解锁,迁移前一定要导出保存好。