■ 上海 鄭智杰
編者按:筆者在對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文件中的硬盤模式修改掉。切勿貪圖方便,默認“重試”而放寬虛擬機合規性檢查,此時會產生一系列問題。