近期进行了大量虚拟机迁移的动作,从PVE到EXSI,从PVE到PVE,从EXSI到EXSI,从EXSI到PVE,可算是把这两个平台玩遍了,害,简单做个记录,因为从PVE到EXSI迁移比较麻烦,而且参考了网上很多文章,都写的不够完整,导致一步步踩了很多坑,为了大家以后减少不必要的麻烦,虚拟机迁移的事情看这篇文章就够了,坑已经给大家踩过了,不要在盲目的看别的文章了
My Version: PVE: 8.4.0 | ESXi: 7.0 Update 3
1、查看虚拟机状态,停止虚拟机
# 可选命令行或者web页面操作,web页面更为直观
qm list
qm stop <vmid>
2、确定虚拟机磁盘文件位置
查看虚拟机磁盘位置,选择指定虚拟机-->硬件配置-->确认磁盘文件存储位置
# 查看data2在服务器上的准确位置,便可找到虚拟机文件存放位置
cat /etc/pve/stroage.cfg
3、磁盘文件格式转换
# 使用PVE自带的磁盘格式转换工具,转换qcrow2格式为vmdk格式
# 例:
qemu-img convert -f qcow2 -O vmdk vm-104-disk-0.qcow2 /data/vm-104-disk-0.vmdk

4、在EXSI上创建虚拟机,配置CPU、内存、网络等信息(不要添加磁盘设备)
5、再次转换磁盘格式(转换为支持VMware EXSI可识别的磁盘配置格式)

vmkfstools -d thin -i vm-103-disk-0.vmdk k8s-master01-191/k8s-master01-191.vmdk
# -d thin (指定磁盘配置方式为精简配置,也可选其他磁盘置备格式,使用vmkfstools --help 可查看详细用法)
6、添加刚刚转换好的磁盘,修改磁盘的控制器位置,改为ide模式然后启动
7、修改网卡配置信息,重启网卡(迁移过程中网卡地址可能会变需注意)
###编辑网卡配置文件
[root@localhost network-scripts]# vi ifcfg-ens18
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens18
UUID=6cd3657b-28d4-4a8f-a8a3-bfc5e1dc2963
DEVICE=ens18
IPADDR=XXX.XXX.XXX.XXX
PREFIX=23
GATEWAY=XXX.XXX.XXX.XXX
DNS1=114.114.114.114
ONBOOT=yes
###重启网卡
[root@localhost network-scripts]# nmcli connection reload
[root@localhost network-scripts]# nmcli connection up ens18
8、增加内核驱动(EXSI上虚拟机默认SCSI类型为VMware Paravirtual需增加驱动)
dracut --add-drivers "vmw_pvscsi" -f /boot/initramfs-$(uname -r).img $(uname -r)
9、关闭虚拟机,把磁盘控制器位置改回SCSI:0,启动虚拟机即可

迁移过程遇到问题:Q & A
一、【ESXi】打开电源失败提示 -- "scsi0:0"的磁盘类型 2 不受支持或无效。请确保磁盘已导入!!!
答:首先确保自己的磁盘文件在传输过程中是完整的,可对比文件大小,在虚拟机的硬件配置中磁盘显示如果正确那就基本无问题,如果此时报上述提示,那只有一个原因,磁盘格式不对,注意第5步的操作,需要将文件再次使用vmkfstools工具进行格式转换的,该步骤不可省略。
二、打开电源后,虚拟机启动很慢,且直接进入了救援模式
答:开机后进入救援模式的情况很多,可能你的磁盘挂载出了问题,也可能是其他原因,可以用journalctl -xb
仔细查看一下,我遇到的问题是刚开始启动未更改为IDE模式,因为initramfs 里没 vmw_pvscsi,内核在早期阶段无法访问磁盘就找不到根所以导致进入emergency shell,所以第8步的作用就是增加 vmw_pvscsi 驱动,在这之后你才能改回SCSI驱动磁盘。
如果你有其他问题,可以在评论区反馈,我们可以进一步交流~