■ 上海 郑智杰
编者按:笔者在对Linux虚拟机导入到一台Windows PC主机的VMware Workstation上时,出现一系列报错,本文就将这些问题及解决办法一一列出,供读者参考。
因业务需要,单位要将VMware vSphere上的一台Linux虚拟机导入到一台Windows PC主机的VMware Workstation上进行使用。
虚拟化平台为VMware vSphere 6.5,Windows PC为Windows 10,VMware Worksta tion为VMware Workstation 14 Pro,虚拟机为CentOS 7。
首先,通过vSphere Web Client选择将虚拟机右键→模板→导出OVF模板。
其次,导出后会生成3个不同后缀的文件,如下所示。
*.vmdk文件:虚拟机数据硬盘文件
*.ovf文件:虚拟机配置文件包含CPU、内存、硬盘控制器等配置信息
*.mf文件:vmdk及ovf文件的HASH校验,检查文件的完整性。
最后,依次选择VMware Workstation→文件→打开→OVF文件。
方案一:在报错提示上点击“重试”,放松OVF合规性检查强制导入OVF模板,直接忽略硬件合规性的检查。
但不建议使用这个方案,因为会产生其他问题,下面我们会继续讨论。
方案二:修改*.ovf文件。
1.将硬盘继承模式从SCSI改成STAT,修改配置文件中硬盘节点“rasd:Parent”从原来“3”改成“4”,因为从上下文可以查到SCSI控制器InstanceID=3,STAT控制器InstanceID=4。具体配置如图2所示。
2.在OVF导出过程中会把原有的CD-ROM作为配置节点一并导出,所以可以在导出模板时移除CD-ROM硬件设备或是在导出后的配置文件中删除CD/DVD Drive整个Item节点。如图3所示。
图1 未通过OVF规范一致性或虚拟机硬件合规性检查
3.最后保存退出后再重新对*.ovf文件进行SHA256 HASH校验并将HASH值更新到*.mf文件,老版本可能是SHA1 HASH值,具体请查看mf文件内容。如图4所示。
4.修改完成后再次导入并开机正常。
查询相关的材料,可以通过修改*.ovf中SCSI控制器的Resour ceSubType节点从“Vir tualSCSI”变更成“lsi logicsas”,该属性是指SCSI控制器的类型,而WorkStation 14 Pro没有pvscsi控制器类型。保存变更后再次更新*.mf校验文件,即可导入成功。如图5所示。
图2 修改“rasd:Parent”从原来“3”改成“4”
图3 删除CD/DVD Drive整个Item节点
图4 重新对*.ovf文件进行校验并将HASH值更新到*.mf文件
图5 修改ResourceSubType节点从“VirtualSCSI”变更成“lsilogicsas”
图6 导入成功后,虚拟机无法正常开机,系统界面报错
由于无法找到系统目录,因此笔者猜测是修改了Resource SubType参数导致的。因为变更了SCSI控制器的类型后,导致系统无法识别硬盘控制器驱动,此时需要重启进入CentOS 7的rescue模式,先备份当前系统内核。虚拟机里面做过升级,故有2个版本,均备份一下。
ls -ltrh/boot/ini tramfs-*
cp -iv/boot/ini tramfs-3.10.0-1127.el7.x86_64.img/boot/initramfs-3.10.0-1127.el7.x86_64.img.back
cp -iv/boot/ini tramfs-3.10.0-957.el7.x86_64.img/boot/initramfs-3.10.0-957.el7.x86_64.img.back
最后通过指令dracut-f重建内核,此时驱动程序会打包到新内核里,重启后开机正常了。
为了更好的做虚拟机的迁移,应尽量选择将*.ovf文件中的硬盘模式修改掉。切勿贪图方便,默认“重试”而放宽虚拟机合规性检查,此时会产生一系列问题。