2017年3月15日 星期三

VirtualBox匯出之OVF,嘗試匯入ESXi 6.0失敗解法

遭遇這種問題真的很無奈

還好老外對於研究結果很大方的分享

主要參考網頁: www.itsecurenet.com
本文係參考多個網頁/論壇整理而成,可點選連結閱讀原文

親自試成功後 整理成中文版給需要的人參考

步驟1.
從VirtualBox匯出VM,選項如下圖(勾選Write Metafest file)

建議匯成OVF格式(副檔名直接加.ovf,匯出後有3個檔案),





















步驟2.
將匯出的3個檔案複製到本地硬碟(如果前一步驟儲存在server上的話)


步驟3.
嘗試用vSphere Client部署OVF檔 (ESXi 6.5後只有WEB介面),運氣好的話,系統只會偵測出Metafile裡有2或3組不支援的硬體定義,導致部署失敗。解決對策如下方(i) (ii) (iii)

說明: 部署OVF的過程,遇到問題就會馬上暫停。因此,第n個問題就是部署第n次時才會遇到的。


   (i) 虛擬硬體不相容 :

   錯誤訊息:  

   OVF 套件要求不支援的硬體  
   詳細資料: Line 25: Unsupported hardware family 'virtualbox-2.2'  











   對策: 

   以純文字編輯器(如 notepad++)編輯ovf檔,找到下面這段

      <System>
        <vssd:ElementName>Virtual Hardware Family</vssd:ElementName>
        <vssd:InstanceID>0</vssd:InstanceID>
        <vssd:VirtualSystemIdentifier>Windows Server 2012</vssd:VirtualSystemIdentifier>
        <vssd:VirtualSystemType>virtualbox-2.2</vssd:VirtualSystemType>
      </System>

   將 virtualbox-2.2 至換成 vmx-07 (請注意: 原本沒空白就別自己添加)


   (ii) 不支援VirtualBox定義的音效卡 :

   錯誤訊息:  

   OVF套件要求不支援的硬體  
   詳細資料: Line 92: OVF hardware element 'ResourceType' with instance ID '8': No support for the virtual hardware device type '35'  













   對策:

   同一個ovf檔內,移除以下這段定義

      <Item>
        <rasd:AddressOnParent>3</rasd:AddressOnParent>
        <rasd:AutomaticAllocation>false</rasd:AutomaticAllocation>
        <rasd:Caption>sound</rasd:Caption>
        <rasd:Description>Sound Card</rasd:Description>
        <rasd:ElementName>sound</rasd:ElementName>
        <rasd:InstanceID>8</rasd:InstanceID>
        <rasd:ResourceSubType>ensoniq1371</rasd:ResourceSubType>
        <rasd:ResourceType>35</rasd:ResourceType>

      </Item>

   整段全部刪除 (包括 <Item> 及 </Item> 都刪掉)

   (iii) 不支援AHCI硬體

   錯誤訊息 :  

   Line 111: No space left for device '11' on parent controller '5'.  
   Line 66: Unsupported virtual hardware device 'AHCI'.  




















   對策 :

   同一個ovf檔內,找到這一段

      </Item>
      <Item>
        <rasd:Address>0</rasd:Address>
        <rasd:Caption>sataController0</rasd:Caption>
        <rasd:Description>SATA Controller</rasd:Description>
        <rasd:ElementName>sataController0</rasd:ElementName>
        <rasd:InstanceID>5</rasd:InstanceID>
        <rasd:ResourceSubType>AHCI</rasd:ResourceSubType>
        <rasd:ResourceType>20</rasd:ResourceType>
      </Item>

   改成這樣

      <Item>
        <rasd:Address>0</rasd:Address>
        <rasd:Caption>SCSIController</rasd:Caption>
        <rasd:Description>SCSI Controller</rasd:Description>
        <rasd:ElementName>SCSIController</rasd:ElementName>
        <rasd:InstanceID>5</rasd:InstanceID>
        <rasd:ResourceSubType>lsilogic</rasd:ResourceSubType>
        <rasd:ResourceType>6</rasd:ResourceType>
      </Item>

   修改完成後,儲存ovf檔。

   基於安全考量,匯出VM時選擇產生Metafile後,系統會將對應VM的vmdk硬碟檔及ovf定義檔做checksum計算寫入.mf檔。因此必須為修改過的新ovf檔更新mf內的資訊(沒有勾選Write Metafile就沒有.mf檔,匯入時好像就不檢查。請自行查詢)


步驟4.
更新.mf檔以對應新的.ovf檔 (如果匯出時有勾選Write Metafile)

下載微軟提供的checksum計算工具 (載點)

開啟DOS Shell(命令提示字元),移至剛才下載工具程式的目錄下

(如果你不是 DOS 時代長大的,指定大概是 C:\>cd /d d:\downloads 這樣)

計算新ovf檔的checksum


D:\DOWNLOADS>fciv -sha1 c:\temp\w2012svr.ovf

//
// File Checksum Integrity Verifier version 2.05
//
01970fab299090ec43355f6059f51a391d629b6f c:\temp\w2012svr.ovf

把舊的(下方xxx代表)用這一段 "01970fab299090ec43355f6059f51a391d629b6f" 換掉

SHA (w2012svr.ovf)=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx




儲存後再部署一次,成功了! 恭喜你!

如果還是有問題,用相同的方式繼續調整,應該很有機會。







VirtualBox V4.1.8 r75467

沒有留言:

張貼留言