PVE 版本是 Proxmox Virtual Environment 7.1-4
ESXi 版本是 6.5
待迁移的虚拟机是 Debian11

1,先在PVE的虚拟机中进行Backup

Compression选的ZSTD,Mode 选的是Stop

2,备份完成之后,SSH 到 PVE主机进行操作

ssh root@PVE_HOST_IP

PVE内置的备份可以生成 VMA文件 (Proxmox Virtual Machine Archive)
备份在目录/var/lib/vz/images下,PVE的web端并没有提供下载,可以ssh进入PVE进行导出操作
备份后的文件,可以通过vma命令转换成raw.如果你备份时候选择了压缩,请先使用zstd解压

3,解压备份出来的文件

cd /var/lib/vz/dumpzstd -d vzdump-qemu-103-2023_04_01-13_36_26.vma.zst 

4,通过vma命令转换成raw后缀的磁盘文件

vma extract vzdump-qemu-103-2023_04_01-13_36_26.vma extract

5,接下来要是用qemu-img把raw转换vmdk

cd extract/qemu-img convert -f raw -O vmdk disk-drive-scsi0.raw disk-drive-scsi0.vmdk

6,把转换后的vmdk文件上传到ESXi服务器上
7,再进行一次磁盘转换

网页管理端启用ssh,然后ssh到ESXi服务器上ssh root@ESXi_HOST_IP找到上传的vmdk文件存放位置(网页端可以看到datastore的位置 /vmfs/volumes/6419c39b-c2aaf182-8bf3-6cae8b232df2)cd /vmfs/volumes/6419c39b-c2aaf182-8bf3-6cae8b232df2再进入具体存放vmdk的位置,执行下面的命令进行转换vmkfstools -i disk-drive-scsi0-1.vmdk disk-debian11-scsi0.vmdk -d thin其中【 -i 】作用是转换,【 -d thin 】作用是将新磁盘文件使用“精简置备模式”。

8,转换完成之后,再在ESXi 服务器上新建虚拟机,最后一步的时候,把默认磁盘删掉,添加上传上去的磁盘文件作为虚拟机的磁盘即可。

参考资料

1,从 Proxmox VE 迁移到 ESXI/VMware Workstation | 雨き声残響 (abyss.moe)

2,【ESXi】失败 – “scsi0:0”的磁盘类型 2 不受支持或无效。请确保磁盘已导入 – adolfmc – 博客园 (cnblogs.com)

过程中遇到的问题

1,从PVE服务器用ftp上传到win 2016 中用 filezilla 搭建的ftp服务器上时,传过去的文件,哈希值与原PVE中的不一致,也无法解压。

之后改成在PVE服务器中搭建vsftpd服务,然后从win 2016中去下载转换后的vmdk才成功。

2,没进行第二次磁盘格式转换,直接新建虚拟机启动的时候,会报下面的错误

【“scsi0:1”的磁盘类型 2 不受支持或无效。请确保磁盘已导入】

所以进行了第二次磁盘格式转换

对于不同版本的ESXi服务器来说,这里转换的格式会有差异,比如ESXi6.7上默认是zeroedthick,通过vsphere web client访问添加磁盘,无法修改:“scsi0:0”的磁盘类型 2 不受支持或无效。请确保磁盘已导入。

zeroedthick :厚置备延迟置零
thin :精简置备
eagerzeroedthick:厚置备置零