2012年2月25日 星期六

如何建立巢狀虛擬機器 (nested virtual machine) - 在VMware Workstation 內建立Hyper-V虛擬機器

由於教學環境和虛擬化實驗所需,筆者需要在虛擬機器內建立另一個虛擬機器,這在早期是難以做到的,拜現代的CPU支援硬體虛擬化技術,這巢狀虛擬化技術的採用已非難事,本文將簡介最簡單的巢狀虛擬化做法和需注意事項。

本文的巢狀虛擬機器設計,首先在一部實體機器上安裝VMware workstation v8 ,新增VMware 虛擬機器並安裝Windows Server 2008 R2 作業系統,然後在此Windows Server 2008 R2虛擬機器上安裝Hyper-V角色後,再新增Hyper-V虛擬機器。

nested_vm

實作此二層式的巢狀 VM並沒太大困難,值得留意的關鍵在於CPU所支援的硬體虛擬化技術

(1) SLAT (Intel 稱為 extended page tables (EPT),AMD稱為 RVI)

(2) Advanced Vector Extensions  (AVX)

使用的原則是您的電腦CPU必需支援Intel的EPT或AMD的RVI,而如果您的CPU也支援AVX功能的話,則需要安裝修正檔或以命令工具加以停用此功能。

底下說明執行步驟與注意事項:

0. 首先,您最好檢查您的電腦是否有支援並啟用硬體虛擬技術  (Intel VT 或 AMD 虛擬化 (AMD-V) ) 以及SLAT (Intel 稱為 extended page tables (EPT),AMD稱為 RVI),您可以下載執行 免費的 coreinfo工具,執行 coreinfo -v 指令,查看 VMX, EPT 後面是否為星號 (*)。

coreinfo_v

1. 首先在您的實體機器上安裝VMware workstation 8

2. 使用VMware workstation管理程式建立Windows Server 2008 R2的虛擬機器,記得重點在於其 CPU (Processor)設定,需啟用 『Virtualize Intel VT-x/EPT or AMD-v/RVI』選項。

vm_cpu_vt

3. 記得在第一次啟動此虛擬機器之前,請先編輯 .vmx檔案,加入底下一行:

hypervisor.cpuid.v0 = “FALSE”

若遺漏此重要的一行,則日後在安裝完Hyper-V並建立虛擬機器時將會出現如下圖無法建立磁碟分割的錯誤:

vm_error1

4. 現在可以安裝Windows Server 2008 R2 這部虛擬機器了。

5. 一旦完成安裝 Windows Server 2008 R2並正常啟動系統後,請利用『伺服器管理員』新增 『Hyper-V』角色然後重新開機。

install_hyperv

6. 如果您的CPU有支援 AVX,則由於Windows Server 2008 R2 不支援 AVX 功能,則您可能在建立Hyper-V虛擬機器第一次啟動安裝時會遭遇另一個無法初始化的錯誤而不能成功的啟動虛擬機器。您可以先使用 coreinfo工具命令並查看其內的內容查看 AVX那一行是否為星號即可知道您的CPU是否支援此一功能:

check_cpu_avx

為了解決Windows Server 2008 R2不支援AVX功能而導致第二層的Hyper-V虛擬機器無法初始化的錯誤,您需參考 http://support.microsoft.com/kb/2517374/ (如為AMD CPU請參閱 http://support.microsoft.com/kb/2568088/) 網址的文章說明並下載修正檔案加以安裝  (429359_intl_x64_zip.exe)以便可以順利解決此一問題。

7. 一旦解決上述問題之後,您就可以成功建立第二層的Hyper-V 虛擬機器。

8. 下圖為最後結果,第一層為VMware 的虛擬機器Windows Server 2008 R2,其內為第二層的Hyper-V虛擬機器。

nested_vm_final