问题描述
在 ESXi / vSphere 平台中,有若干种方法可以将虚拟机导出为 VMDK 格式的镜像文件,我们推荐您从 OVF 模版中获取 VMDK 格式的镜像,但是在导出 OVF 模版之前,您还需要在虚拟机操作系统内按照下面1、2、3步做一些简单的检查与操作,以实现自动注入 VirtIO 驱动。
解决方案
前置检查
您应该在导出之前在虚拟机中安装 Cloud-Init 软件包,以支持自动注入管理员密码。
目前只支持 x86 的 VMDK 镜像自动注入 VirtIO 驱动,在一云多芯环境下,同时要求控制节点是 x86 架构,以下情况不支持自动注入 VirtIO 驱动:
源虚拟机的系统盘被加密
源虚拟机的系统盘是动态磁盘
源虚拟机的文件系统是 BtrFS、ZFS、UFS,openSUSE 以及 SLES 默认使用 BtrFS 文件系统,可在安装系统时手动选择 XFS 或 EXT4 文件系统即可支持自动注入,FreeBSD 的 ZFS、UFS 文件系统不支持自动注入
开启 Test Signature 功能
尤其对于 Windows 8、Windows 8.1、Windows Server 2012 以及 Windows Server 2012 R2 版本的 Windows 虚拟机,需要开启虚拟机操作系统内的 Test Signature 功能,否则会导致导出 VMDK 镜像到云平台后无法引导云主机,在虚拟机的 CMD 窗口中执行如下命令:
bcdedit -set TESTSIGINING ON
通过命令行将虚拟机关机
尤其对于较新版本的 Windows 虚拟机(Windows 8、Windows Server 2012 及以上),需要通过在虚拟机操作系统中执行特定命令关机后再导出,否则会导致在云平台中自动注入 VirtIO 驱动失败。在虚拟机的 CMD 窗口中执行如下命令,该命令执行后虚拟机会立即关机,请谨慎操作:
shutdown /s /t 0
将虚拟机导出为 OVF 模版
在 ESXi / vSphere 平台中,推荐您先卸载虚拟机上的 CDROM 设备,然后右击虚拟机清单中需要导出的虚拟机名称,选择“导出 OVF 模版”条目,即可将虚拟机导出为 OVF 模版。
若您的虚拟机挂载了多块硬盘,导出的 OVF 模版中会包含多个 VMDK 格式的镜像文件(包括一个系统盘和若干数据盘),导出会花费一定时间,取决于您硬盘中数据量的大小,导出成功后,取出 OVF 模版中的系统盘、数据盘 VMDK 格式镜像文件导入云平台即可。
推荐您开启系统盘镜像“自动注入Virtio驱动”配置,但数据盘镜像不要开启该配置,如无特殊需求,数据盘镜像直接点击创建即可。
将数据盘挂载到云主机
用数据盘镜像创建云硬盘
在镜像云产品页面,无需选择自动注入 VirtIO 驱动,可以使用导入成功的 VMDK 数据盘镜像创建云硬盘。
将云硬盘挂载到云主机
若云主机已经注入 VirtIO 驱动,您可以直接挂载云硬盘到云主机。若云主机未注入 VirtIO 驱动,请参照 手动注入 VirtIO 驱动,成功注入 VirtIO 驱动后,再将云硬盘挂载到目标云主机。