自從微軟宣布將在Windows 8中集成Hyper-V客戶端虛擬化hypervisor,圍繞實際案例和將對桌面虛擬化軟件格局影響的猜測就不絕于耳。
可以確定的一點是微軟將停止Windows Virtual PC,由于它的功能多數已經被其它產品替代,影響并不大。而另一點可能更為深遠的影響在于,是否Windows 8的Hyper-V將可以取代所有第三方工作站虛擬化軟件。作為Oracle VirtualBox的用戶,我對這個跟VMware Workstation類的軟件從本質上有所沖突的產品特別關注。
由于Windows 8和Hyper-V 終端都還處于開發階段,很難準確預測它們最終的產品形態和工作方式。不過關于Windows 8自帶的Hyper-V 客戶端如何同VirtualBox等工作站虛擬化方案進行競爭方面還是有一些可比較的線索。
硬件需求
首先可比較的是Hyper-V和VirtuaBox的硬件需求。前者需要64位操作系統而且支持二級地址轉換(SLAT Second Level Address Translation),英特爾稱之為SLAT EPT(Extended Page Table),而AMD叫做快速虛擬化索引(RVI Rapid Virtualization Indexing)。它們的基本功能都一樣——讓處理器可以在內存中更高效地把虛擬地址映射到物理地址。不巧的是,現在使用的多數硬件都不支持SLAT。我現在的辦公室有4臺機器,都是2007年后生產的,只有1臺支持SLAT,還恰好不是我現在正是使用的這臺。
Hyper-V內核無法在不支持SLAT的系統上安裝
VirtualBox不需要SLAT,或任何其它的基于Intel或AMD芯片的硬件級虛擬化功能(Intel VT-x和AMD-V)。如果系統提供這些硬件虛擬化功能,軟件也可以支持;反之,也不會成為障礙,僅僅速度慢一點。這種靈活性使得VirtualBox的使用范圍更廣。
換句話說,VirtualBox虛擬化需要的兩個硬件條件是:支持64位OS和對稱的多核處理器。幾乎現在出廠的所有PC都支持硬件虛擬化,所以這兩點需求對多數用戶不會形成障礙(而是否能特別支持SLAT則是另外一回事了)。
關于內存的需求,Windows 8要少于Windows 7,所以您所需要的內存數量完全取決于對虛擬化后的性能期望。Hyper-V允許用戶在虛擬機運行期間分配和釋放內存,而未使用的內存可以在Hyper-V 虛擬機之間共享來提高效率。
VirtualBox提供了兩個相似的功能:內存膨脹和頁面共享(memory ballooning and page fusion)。前者可以讓用戶在不停機的前提下,改變虛擬機可用內存數量。當希望在虛擬機運行時對其中2、3臺虛擬機重新分配內存時是很方便的。頁面共享指的是運行同種OS的虛擬機可以共享部分內存交換區。注意這兩項都是需要手動開啟的,默認對虛擬機關閉。
Windows 8 Hyper-V客戶端優缺點
Windows 8 Hyper-V和VirtualBox這樣的第三方工作站虛擬化軟件的關鍵區別之一在于,它是屬于Windows系統的組件之一。這項優點是把宿主機和客機緊密地結合在一起。
例如,可以把.VHD文件直接映射給Windows 8,并在Hyper-V客戶端中進行加載,類似于Internet Explorer Application Compatibility VPC Images的功能,可以在Windows實例中獨立運行早期的IE版本一樣。
VirtualBox平臺的中立屬性也代表了它不能達到Hyper-V和Windows 8的集成緊密程度。通過集成工具VirtualBox可以改善宿主機和客機的交互能力,但是把某個單獨的應用從客機輸出到宿主機Windows系統還需要對客機的Windows附件進行修改。例如,把Windows虛擬應用輸出到Mac桌面這樣的跨平臺應用輸出雖然理論上是可行的,但工作量不小。
Windows 8可能會包含一個向導程序來完成該功能(最終情況還不清楚)。假設這樣,您可以雙擊.VHD文件實現在Windows中的啟動。IT達人通過使用Hyper-V就可以無縫地把應用輸出到宿主機操作系統。例如在最新版本的Windows中運行已經淘汰的IE版本(通過虛擬化技術運行老版本的IE在現在的微軟授權規則下是不允許的。)
Windows 8的Hyper-V客戶端具備一些優勢的同時還需要不斷地完善來發揮出最大的潛力。
相比而言,VirtualBox這樣的工作站虛擬化產品要更直白一些——它是一個擁有友好界面的獨立開發的應用。它跟Windows的任何特殊組件都沒有關聯,也可以運行于Windows、Linux、Mac OS X或任意OS上。
只有等到帶有Hyper-V的Windows 8發布,人們才能知道是否它可以取代VirtualBox這類的虛擬化產品。短期內看是不太可能的,Hyper-V需要借助于處理器附加功能,而VirtualBox不需要,而且它更成熟,用戶界面更為友好。