vCenter 虚拟机导出及 PVE 侧导入手记
从vCenter导出虚拟机
其实这部分没什么好记的,主要是路径拼接和转义。
导出可以选ova或者ovf格式,导入PVE建议使用ovf,会简单一些,OVA的话适合用于分发。
- 安装ovftools,很可惜我已经忘了从哪下载的了
1
unzip VMware-ovftool-4.6.3-24031167-lin.x86_64.zip && cd ovftools
- 导出的基本逻辑
1
./ovftool vi://[USERNAME]:[PASSWORD]@[VSPHERE]/[PATH]/[VM-NAME] "/path/to/output-folder"
在 ovftool 的 vi:// URL 里,所有特殊符号都必须变成 URL 编码,否则 vCenter 以为你在乱写路径。
例如:
1 | # administrator@vsphere.local |
那么接下来是/[PATH]/[VM-NAME],这里记录一个笨方法,直接写根路径,然后让ovftools自己把文件列出来:
1 | root@Vostro-3470:~/ovftool# ./ovftool "vi://administrator%40vsphere.local:Admin%234062%261733@192.168.20.88/" |
这样我们就知道根目录下有Datacenter和hosts两个目录,然后一点一点往下找就可以了,直至找到虚拟机名称。
ovf导入PVE
我的PVE使用了Ceph作为后端存储,其中cephfs用于存储ISO镜像、CT模板、片段和导入;datapool0(RBD)用于存储VM磁盘和CT卷。
那么我们现在需要做的就是将ovf整个文件夹传入Cephfs,然后使用qm命令导入。
传入ovf
现在我已在本地导出vCenter的虚拟机,清单如下:
1 | root@Vostro-3470:/userdisk0/testvm/WindowsServer/WindowsServer# ls -la |
然后将整个文件夹传入PVE主机Cephfs的挂载点内:
1 | scp -rC WindowsServer/ root@192.168.20.88:/mnt/pve/cephfs/import/ |
然后应该可以在PVE的Cephfs中看到刚才传入的文件。接下来进行导入:
在PVE上导入虚拟机
导入的基本命令格式:
1 | qm importovf [VM ID] [STORAGE] [OPTIONS] |
其中VM ID取一个不存在的ID;STORAGE我这里选择Ceph的RBD;OPTIONS因为我这里采用了Ceph存储,所以要启用--format raw,使得磁盘镜像以raw格式导入。
1 | qm importovf 123 WindowsServer.ovf datapool0 --format raw |
等待导入完成即可。
Windows 虚拟机配置改动
- 处理器-类别:默认导入后是
kvm64,根据实际情况改; - BIOS类型:默认导入后是
SeaBIOS(Legacy),根据实际情况改,如果从Legacy改成EFI还需要添加一个EFI磁盘(用于存储EFI配置); - 机型:Windows 8 及以上建议改成
q35; - SCSI控制器:改成
VMware PVSCSI; - 网络设备:添加
VMware vmxnet3。
其他项诸如显示我这里没改也可以正常启动,后面再安装QEMU Guest Tools即可。
Linux 虚拟机配置变动
Linux 虚拟机测试了 CentOS 7 和 ubuntu 24 ,目前确定一定会变动的配置只有网卡,
- 处理器-类别:默认导入后是
kvm64,根据实际情况改; - BIOS类型:默认导入后是
SeaBIOS(Legacy),根据实际情况改,如果从Legacy改成EFI还需要添加一个EFI磁盘(用于存储EFI配置); - SCSI控制器:改成
VirtIO SCSI single; - 网络设备:添加
VMware vmxnet3。
CentOS7
迁移后由于设备树拓扑和总线地址改变,原有网卡配置将不再适用于新网卡,最简单的方法是将原有配置文件中的DEVICE=改成新网卡名(例如ens18)。
启动后由于磁盘接口更改,CentOS/RHEL 系列的 initramfs 是“按需打包”,不是“全家桶模式”。它会根据你上次开机时的硬件环境来决定 initramfs 里要放入哪些驱动,目的是让系统启动更快、更小、更稳定。
则第一次启动一定会卡在找不到磁盘,需要进入rescue模式,重新打包initramfs:
1 | dracut --regenerate-all --force |
随后重启应该就可以进入系统了。
ubuntu 24
迁移后由于设备树拓扑和总线地址改变,原有网卡配置将不再适用于新网卡,最简单的方法是将原有netplan配置文件中的网卡名改成新网卡名(例如enp6s18)。

