[VMware]Nested VM

[VMware]Nested VM

聽完微軟 V-Day 之後,對於 Windows 2012 ( 原名稱是 Windows Server 8 ) 的 Hyper-V 3.0 的新功能真的是很興奮,但按照以往經驗,研討會上的東西還是要自己試試看會比較準確一點,因此就著手進行測試。目前要來測試 Hyper-V 的環境,除非你真的實體機器有那麼多,要不然你就要用 ESXi 5.0 or Vmware Workstation 8.0 上面來模擬了,目前還沒有辦法在 Hyper-V 的 Guest VM 裡面來測試 Hyper-V,下面會針對這兩種產品的相關設定做個說明:

 

VMware Workstation 8.0

如果使用 VMware Workstation 8.0 ( 以下簡稱 Vmware ) 的話,一般來說都是在 Desktop 或者是 Notebook 的設備,首先你要確認你的 CPU 要能支援 VT-x 的功能,簡單的說就是你的 CPU 是 i3 , i5 , i7 才可以啦。接著會比較要注意的地方就是在於 Guest VM的設定中,要特別調整 Virtualization engine 的設定,將 Virtualize Intel VT-x/EPT or AMD-V/RVI 的選項給打勾

image

 

另外除了 UI 上面需要特別的設定,另外還需要手動開啟該 Guest VM 的 vmx 檔,用你習慣的文書處理器開啟後,加入以下兩行的設定值

hypervisor.cpuid.v0 = "FALSE"
mce.enable = "TRUE"

 

ESXi 5.0

如果只是單純的測試 Hyper-V 基本功能,或者是做一點簡單的練習,那麼 Vmware Workstation 還撐得下去,但如果您想要測試到多台 Hyper-V 作 Cluster,那麼我想透過 ESXi 5.0 來做模擬會是比較合適的方式,首先要先確定一下 ESXi 5.0 的版本,個人建議最好先把 Patch 給加上去

image

 

接著在透過 SSH 的工具連接到 ESXi 5.0 上,個人是習慣使用 Pitty 來做連線,再連上去之後可以透過 vi 的工具修改 /etc/vmware/config 這個設定檔,加入下面這行設定

vhv.allow = "TRUE"

 

在設定好 ESXi 的主機之後,這個時候還需要透過 vSphere Client 連接 vCenter Server來設定網路,否則會造成 Hyper-V 的 Guest VM 無法連接網路。設定方式要先在 vSphere Client 選擇你要設定的 ESXi 主機,接著選擇 Configuration 內的 Hardware –> Networking,針對你會給 Hyper-V Guest VM 所使用的 vSwitch ,按下右上方的 Properties… 的選項進入設定

image

 

進入後選擇 vSwitch 後,按下下方 Edit… 進行設定

image

 

進入 Security 的頁籤,將 Promiscuous Mode 設定為 Accept 就可以了

image

 

到這裡算是做完了一半,接下來當你要建立 Guest VM 的時候,跟 Vmware Workstation 建立 Guest VM 的設定有點相似,要透過 Edit Setting 的方式選擇 Options –> Advanced –> General –> Configuration Parameters 設定參數

image

 

按下 Add Row 加入 hypervisor.cpuid.v0 = FALSE 的設定

image

 

另外在 Options –> Advanced –> CPUID Mask –> Advanced 下也要設定

image

 

這裡要注意一下您的 ESXi 主機所使用的 Intel or AMD 的 CPU,兩者設定值會有點不同

 

 

Intel Hosts:

cpuid.1.ecx = "----:----:----:----:----:----:--H-:----"

 

AMD Hosts:

cpuid.80000001.ecx.amd = "----:----:----:----:----:----:--H-:----"

cpuid.8000000a.eax.amd = "HHHH:HHHH:HHHH:HHHH:HHHH:HHHH:HHHH:HHHH"

cpuid.8000000a.ebx.amd = "HHHH:HHHH:HHHH:HHHH:HHHH:HHHH:HHHH:HHHH"

cpuid.8000000a.edx.amd = "HHHH:HHHH:HHHH:HHHH:HHHH:HHHH:HHHH:HHHH"