本教程将一步步教你如何把 Proxmox VE(PVE)上的虚拟机完整迁移到 VMware ESXi 平台,大体流程就是将PVE下的QCOW2\RAW镜像格式转换成ESXI支持的VMDK格式,ESXI创建新虚拟机导入原镜像来达到迁移的效果。
迁移前准备
实验场景配备2台机器,一台为待迁移机器安装了PVE8,另一台为目标机器安装了ESXI8。当然如果你的场景只有一台机器也是可行的,把待迁移的虚拟机转换好vmdk格式后将其备份到本地,再安装ESXI8上传本地的vmdk进行导入即可。
- 源服务器:Proxmox VE(PVE)上有一个要迁移的虚拟机(比如 VM ID 是 101)
- 目标服务器:VMware ESXi(确保你知道它的 IP 地址、用户名和密码)
- 网络:确保 PVE 和 ESXi 之间可以互相访问(比如在同一个局域网)
正式迁移步骤
1)迁移前,请先关闭虚拟机,否则数据可能损坏。可以看到101虚拟机
有2个qcow2格式
虚拟磁盘,并存放于ssdsata1目录形式的存储池
中。
2)将101虚拟机
的2个qcow2格式虚拟磁盘
转为ESXI支持的vmdk格式
,导出到临时目录/tmp
下。
# qcow2转vmdk,导出到临时目录/tmp下
qemu-img convert -O vmdk /mnt/pve/ssdsata1/images/101/vm-101-disk-1.qcow2 /tmp/disk_64G_0.vmdk
# qcow2转vmdk,导出到临时目录/tmp下
qemu-img convert -O vmdk /mnt/pve/ssdsata1/images/101/vm-101-disk-2.qcow2 /tmp/disk_150G_1.vmdk
需要注意,如果你的存储池用的是块存储如local-lvm,则得使用 ls /dev/mapper 来查看下硬盘名称,知道硬盘名称后执行以下命令:
# 将vm-101-disk-1磁盘转换为vmdk格式的虚拟磁盘,保存到临时目录/tmp下
qemu-img convert -O vmdk /dev/mapper/vm-101-disk-1 /tmp/disk_64G_0.vmdk
# 将vm-101-disk-2磁盘转换为vmdk格式的虚拟磁盘,保存到临时目录/tmp下
qemu-img convert -O vmdk /dev/mapper/vm-101-disk-2 /tmp/disk_150G_1.vmdk
转换时间有些许长,耐心等待会。转换成功后就会在/tmp/
目录下看到disk_64G_0.vmdk
和disk_150G_1.vmdk
文件。
qemu-img命令用法:
qemu-img convert -O <目标格式> <原文件路径> <目标文件路径>
更多格式转换
# vmdk转qcow2
qemu-img convert -O qcow2 demo.vmdk demo.qcow2
# vdi转qcow2
qemu-img convert -O qcow2 demo.vdi demo.qcow2
# vhd转qcow2
qemu-img convert -O qcow2 demo.vhd demo.qcow2
# img转qcow2
qemu-img convert -O qcow2 demo.img demo.qcow2
# raw转qcow2
qemu-img convert -O qcow2 demo.raw demo.qcow2
3)接下来就是
将镜像传到ESXI
上去了。这里建议用python建立一个临时http下载器
,通过网络传送到ESXI。在
PVE Shell
中建立一个临时http直链下载服务器python3 -m http.server -d /tmp/
4)此时新开一个浏览器窗口,访问你的PVE:8000端口
,即可访问到http直链下载服务器了,映像没下载完成前都不要去点PVE控制台,离开窗口http直链下载服务器将会断开。
(如果是单机器场景,你就下载到本地备份,装好ESXI再手动上传即可)
5)2台设备的场景,就可以像我一样,在ESXI开启ssh,登录到esxi,通过复制下载链接,直接download到esxi
。
6)转换回来的vmdk格式的虚拟镜像还不能直接导入给ESXI虚拟机,需要将vmdk转成ESXi可以识别到的vmdk格式。登录到ESXI的ssh终端执行一下命令进行二次转换:
# cd到存放虚拟镜像的目录
cd /vmfs/volumes/database1/
# 进行二次转换
vmkfstools -i disk_64G_0.vmdk -d thin disk0.vmdk
转换成功后,会发现生成了2个文件:disk0.vmdk和disk0-flat.vmdk
7)最后就是去创建新的虚拟机,并把硬盘指向disk0.vmdk文件就可以了。
总结
到这,PVE虚拟机就已经成功迁移到ESXi。 如你要从ESXI迁移到PVE8可以看这篇文章。