Snap133.png

最近所寫的一些文章,被搜尋最多次的算是 Workstation 8,果然較為大眾熟知的產品,總是得到最多的關注。既然如此,那就再談一些 Workstation 8 的虛擬化。看過電影 "全面啟動" 嗎? 你是否知道你現在身處在哪一層虛擬的夢境?

當我在看這部電影時,對於夢中夢的內容直覺反應就是:這不就是 Nested VM 嗎? 在 VMWare 虛擬化的世界裡,我們可以用這種方式搭建一層又一層的 VM,讓每層的 Guest OS 都活在夢境之中。(如果看倌不知道什麼是 Nested VM,請參閱小弟的書,裡面採用的 vSphere in a box 就是利用這種方式,以一部實體電腦建構出 vSphere 虛擬世界)

那麼,VMware Workstation 8 的 Nested VM 又有什麼新意?

有些事情說來話長,有些觀念必須要加以釐清,小弟將這些內容以 FAQ 的方式呈現,並嘗試將其運作解釋清楚 (某些細節很難三言兩語表述,請見諒):

 

VMware Workstation 虛擬化軟體,是一種 hypervisor 嗎?

是的,它屬於 Type 2 hypervisor。關於 hypervisor 的相關資訊請參閱這裡: http://vlife.pixnet.net/blog/post/18754670

什麼是 Nested VM?

拜 CPU 硬體輔助虛擬化以及 VMware 原本的全虛擬化技術之賜,我們可以實現在單一部個人電腦上搭建 vSphere 平台來做測試。Intel VT 與 AMD-V 可以讓 hypervisor VMM 處於 Ring -1 的Root mode,所以可以先以 VMware Workstation 或 VMware Player 來安裝 ESXi 5,這時是採用 CPU 硬體輔助虛擬化,讓 ESXi 自己本身成了 VM (可稱為 Nested ESXi)。而 ESXi 安裝完成之後,變成了是「外層」的虛擬機器,別忘了 ESXi 本身亦擁有 hypervisor,可以再創建內層 VM 出來。

被虛擬化後的 ESXi 可以再創建內層 VM,怎麼做到的?

因為實體機器啟用了硬體輔助虛擬化,所以 Root Mode 由 VMware Workstation 掌控,而非 ESXi。此時 ESXi 依靠的就是全虛擬化技術:Binary Translation。VMware 是全虛擬化技術的廠商,透過 Binary Translation 來運作全虛擬化的好處,就是即便 hypervisor 沒有 64 位元 CPU 或 Intel VT / AMD-V 硬體輔助虛擬化,依然能夠創建 VM。所以這一層的 ESXi 可透過全虛擬化來產生下一層的 VM。 

注意,此時的實體機器,已經有三層的 OS 了。

 第一層:實體機安裝的 host OS

第二層:Workstation 創建的 Nested ESXi

第三層:Nested ESXi 創建的 Guet OS (Windows、Linux)

Nested VM 的限制?

這就是要談的重點,本來 Nested VM 的限制是第三層的 Guest OS 只能安裝 32 位元,不能是 64 位元。也不能在第二層安裝 Hyper-V 來產生第三層VM,因為 Hyper-V 須要用到 CPU 輔助虛擬化,必須由它來掌控 Root mode 才行。

我曾經一度以為這已經是極限了,上述兩點限制應該沒辦法再突破,沒想到 VMware 又辦到了!!!

現在 Workstation 8 可以達成:

第一層 / host OS ==> 第二層 / Workstation 創建 ESXi ===> 第三層 / ESXi 創建 64 位元 OS (Windows、Linux)

或是

第一層 / host OS ==> 第二層 / Workstation 創建 Hyper-V 可稱為 (Nested Hyper-V) ===> 第三層 / Hyper-V 創建 64 位元 OS

也可以像電影那樣,創造出第四層夢境:

第一層 / host OS ==> 第二層 / Workstation 創建的 ESXi ===> 第三層 / ESXi 再創建 ESXi ==> 第四層 / ESXi 創建 32 位元 OS (Windows、Linux)

VMware 是怎麼做到的?

它抽象化了 Intel-VT-x / AMD-V,也就是 "硬體輔助虛擬化也被虛擬化了",可以直接由第二層 VM 的 hypervisor 來控制。在 Hardware Version 8 的 CPU 設定裡,勾選一個 Virtualize Intel-VT-x/EPT or AMD-V/RVI 選項,然後再到 Hyper-V VM 的 VMX 檔新增一行 hypervisor.cpuid.v0 = "FALSE" 即可。

既然第二層 VM 可以運用到 CPU 硬體輔助虛擬化,第三層的 ESXi 就可以用 Binary Translation 來達成第四層虛擬化。

這也就是為何半虛擬化的 Hyper-V 能變成 VM 的緣故,照一般而言是無法做到的,由於找不到相關技術文件,我現在還不知道運作原理,只能說 VMware 實在太厲害了。

可以在第二層同時創建 ESXi 與 Hyper-V 嗎?

行。VMware 實在太厲害了。

可在 Nested Hyper-V 裡再創建 ESXi 嗎?

行。VMware 實在太厲害了。

可以用原生 ESXi 取代第一層 host OS 嗎?

行。參考這裡:http://www.vcritical.com/2011/07/vmware-vsphere-can-virtualize-itself/#comment-12442

Nested VM 方式效能如何?

就像電影一樣,每一層運作都有延遲,層層虛擬化的關係,第一層的一瞬間,第四層可能要經歷很久。

可以在第四層再安裝 64 位元 OS  或是 ESXi嗎?

你還想進入第五層? 應該是會陷入混沌吧..... 我認為是不行,你可以試試看再告訴我。

 

原本以為只有我,看到電影全面啟動有這種感想,但是在 virtuallyGhetto 看到他的第一張圖,我不禁笑了出來,原來大家想的都一樣啊..... 所以就把相關 FAQ 寫出來了。

那就決定了,乾脆第二本書,書名就叫虛擬化全面啟動好了 Orz

 

 

 

 

 

 

 

 

 

還有,今天借用這個版面,哀悼一位改變世界的人物....... 不論你喜不喜歡他,我們都不能否認,他是偉大的。 

Snap132.png  

Steve, Great Jobs.

Rest In Peace.

 

arrow
arrow
    全站熱搜

    Johnny 發表在 痞客邦 留言(6) 人氣()