跳过正文

从ESXi迁移到PVE 虚拟化平台迁移指南 以及遇到的一些问题

·168 字·1 分钟
作者
王浩宇
记录服务器、虚拟化、网络和日常折腾。

从ESXI迁移到PVE有多种方式,其中最简单的是网络迁移,通过PVE webUI管理界面中把ESXI节点主机添加进来(下图),

esxi-in-pve
这个不是今天讲的重点(因为我只有一台机器),今天讲的主要是通过 离线/导入的方式将ESXI虚拟机完整的迁移到PVE中。

先别急着迁移,在开始之前呢,先来了解下虚拟机常用的磁盘格式以及虚拟机配置之间的一些差异,不然可能会出现一些错误。 之前写过的,虚拟机磁盘格式的介绍:一文了解虚拟机磁盘镜像:从 0 到 1 看懂 VMDK、QCOW2、RAW

下面我把常见磁盘文件格式做了个总结,别搞错了。

文件后缀所属平台本质/作用迁移时必须带吗?
.vmdkVMware ESXi/Workstation虚拟磁盘描述符(小文本文件,指向真正数据)✅ 必须带,否则 qemu-img 报错
-flat.vmdkVMware真正的磁盘数据(大块二进制)✅ 必须与同名的 .vmdk 配对
.vmxVMware虚拟机 配置文件(文本,记录 CPU/内存/网卡/磁盘控制器等)❌ 不直接用于 PVE,但可以用来查“控制器类型、固件、磁盘顺序”
.vmdk(单文件)VMware描述+数据合一的“monolithic”格式✅ 直接当 .vmdk 用即可
.qcow2KVM/QEMU/Proxmox虚拟磁盘格式,支持快照、压缩、精简置备✅ PVE 推荐最终格式
.rawKVM/QEMU/Proxmox裸镜像(= dd 出来的整块盘),无元数据⚠️ 占满空间大,不推荐
.ova/.ovfVMware/VirtualBox打包的“导出模板”,内含 .vmdk + .ovf 描述⚠️ 需先解压提取 .vmdk 再导入

还有需要明确的是控制器总线是什么,操作系统以BIOS 还是UEFI方式启动的,错误的配置会导致迁移之后无法启动虚拟机

需要确认的磁盘属性为什么必须知道不确认的代价
控制器总线(IDE / SATA / SCSI / NVMe)Windows 缺驱动会 0x7B 蓝屏,Linux 可能找不到根分区直接黑屏/蓝屏
固件启动方式(BIOS vs UEFI)UEFI 系统用 SeaBIOS 启动 → 找不到 EFI 分区永远停在 “Boot from Hard Disk…”
分区表格式(MBR vs GPT)重建引导记录、调整 BIOS/UEFI 时必须知道修复引导失败

好了 既然都看到这里了,想必应该都了解了吧,下面开始迁移

首先将ESXI中的虚拟机导出,或者到虚拟机目录下载vmdk也可以(不建议),通过导出虚拟机会得到一个OVA/OVF 虚拟机模板配置文件,将其解压之后可以获得 vmdk 原始虚拟机磁盘文件。

导出完成之后就可以愉快的安装PVE了,安装完成之后将虚拟磁盘文件采用SCP等方式上传到PVE中。

upload-disk

我觉得到这里你可能会发现一个问题,原来在 ESXI中部署的虚拟机明明选择了精简置备但还是占用了很大的空间(相当于厚置备 看下图),原因是导出vmdk之前的Thin 精简置备会自动变为flat,而且 ESXI下的 Thin 只对 VMFS层有效,对于外部工具(导入/导出)来说这还是一块厚置备的磁盘,我不是通过导出的ova解压得到的vmdk,我是通过群晖的AAB直接下载到PVE中的,与直接复制vmdk文件一样

disk-info
这种情况怎么解决呢?

使用 vmkfstools 先复制为 thin 然后再下载就可以了。

vmkfstools -i xxx.vmdk /vmfs/volumes/nfs/export/xxx-thin.vmdk -d thin

```bash

或者你不嫌费劲你可以直接给200G的vmdk干到PVE里面去。利用`-o preallocation=off` 转换为 thin
```bash
qemu-img convert \
  -p -f vmdk -O qcow2 \
  -o preallocation=off,compat=1.1,lazy_refcounts=on \
  /opt/Win2K12_1.vmdk \
  /var/lib/vz/images/${VMID}/vm-${VMID}-disk-x.qcow2

然后将磁盘挂载上去就可以了。


qm set ${VMID} --scsihw virtio-scsi-pci --scsi0 ${STORE}:${VMID}/vm-${VMID}-disk-0.qcow2

最近有点忙,写的有点乱,后面在优化。。。