實時發(fā)布天互官方新聞和媒體報道,了解天互最新動態(tài)
毫無疑問,在業(yè)界,微軟Microsoft是當之無愧的軟件霸主,不僅僅在操作系統(tǒng)上占據(jù)巨大的市場份額,更在數(shù)據(jù)庫、遷入式移動計算、搜索引擎等各個方面都具有很強的影響力,在各個領域都不容忽視。由于低估微軟在產(chǎn)品創(chuàng)新和銷售執(zhí)行方面的能力,眾多的企業(yè)在與微軟的競爭中遭遇挫折。
微軟進入虛擬化領域已經(jīng)很有一段時間了(微軟在2003年收購了推出VirtualPC軟件的Connectix公司,并在其后推出了VirtualServer服務器虛擬化軟件),在Hpyer-V推出之前,微軟在虛擬化領域尤其是服務器虛擬化領域可說是略顯不自信,與競爭對手VMware的頻頻新品相比,VirtualPC和VirtualServer的發(fā)布和宣傳都十分低調(diào),畢竟,VMware/Xen等產(chǎn)品憑借出色的性能已經(jīng)占據(jù)了大半江山。而現(xiàn)在,隨著Hyper-V的正式推出,企業(yè)級虛擬化領域極可能會引起一場風暴,市場格局有可能迅速改變。
為什么微軟的Hyper-V會具有這樣的能力呢?
Hyper-V是一個Hypervisor(系統(tǒng)管理程序),開發(fā)代號為Viridian,它主要作用就是管理、調(diào)度虛擬機的創(chuàng)建和運行,并提供硬件資源的虛擬化。Hyper-V是微軟伴隨WindowsServer2008最新推出的服務器虛擬化解決方案,在WindowsServer2008發(fā)布的時候,集成了一個Beta版本的Hyper-V,微軟承諾在180天之內(nèi)會提供正式版的Hyper-V。WindowServer2008是4月份發(fā)布的,180天就是不到6個月,因此微軟會在9月到10月之間發(fā)布正式版的Hyper-V,而目前已經(jīng)到了RTM階段,可以正常使用了。
Hyper-V跟微軟自家的VirtualPC、VirtualServer等產(chǎn)品相比,有著很顯著的區(qū)別,和競爭對手VMwareServer和ESXServer也有很大不同:Hyper-V在構架上絕對是一個突破性的進展!
Hyper-V虛擬化細節(jié)架構
微軟發(fā)布的架構圖資料有很多,然而主要內(nèi)容都很相似,就是上圖那樣。
VirtualServer2005R2的架構
Hyper-V的本質(zhì)是一個VMM(虛擬化管理程序),和微軟之前的VirtualServer系列產(chǎn)品,處在的層次不同,它更接近于硬件,這一點比較像VMware的ESXServer系列,實際上Hyper-V屬于微軟的第一個裸金屬虛擬化產(chǎn)品(Bare-MetalVirtualization)。然而,在一些基礎架構上,Hyper-V和ESXServer又有著明顯的不同,所以說,Hyper-V是很特別的。
作為一個虛擬化產(chǎn)品,Hyper-V具有一個很特別的要求:處理器必須支持AMD-V或者IntelVT技術,也就是說,處理器必須具備硬件輔助虛擬化技術。
對于一個虛擬化產(chǎn)品來說,要求一個硬件特性是比較奇特的事情(要求支持一個指令集不算),微軟之前的VirtualServer2005R2不需要這個特性。對于VMware的產(chǎn)品來說,這也只是一個可選的特性,不像Hyper-V那樣,是一個硬性的要求。處理器不支持VT/AMD-V,就無法運行Hyper-V。
VT-x處理器輔助虛擬化技術,是Hyper-V的硬性要求
VT,或者AMD-V,是一種硬件輔助虛擬化技術,用來解決RingPrivilege的問題,傳統(tǒng)處理器下虛擬機通過使用指令轉換的方法來在Ring3執(zhí)行Ring0特權指令,嚴重影響性能,而VT則解決了這個問題。對VT的依賴和支持是Hyper-V架構的基礎,也是Hyper-V最大的特點。
也因為Hyper-V需要處理器支持硬件虛擬化輔助,一部分處理器無法應用Hyper-V,只有較新、非Value型的處理器才能應用。例如訪問www.microsoft.com只有75%的幾率碰到部署在Hyper-V上的虛擬化服務器,剩下的25%都是未Hyper-V虛擬化的服務器。要在這些服務器上應用虛擬化,用戶只能選擇VirtualServer2005R2或者其它公司的產(chǎn)品。
MicrosoftHyper-V和VMwareESXServer是比較相像的,都是Bare-Metal類型,但是它們的內(nèi)核架構也有著明顯的不同。微軟在談到競爭對手ESXServer時,總會提到,Hyper-V是微內(nèi)核架構的,而ESXServer是單內(nèi)核架構,Hyper-V要更好。#p#分頁標題#e#
這兩者具有什么不同?到底誰更好呢?
單內(nèi)核(分層的內(nèi)核)與微內(nèi)核
單內(nèi)核和微內(nèi)核實際上是操作系統(tǒng)內(nèi)核術語,操作系統(tǒng)的內(nèi)核——實現(xiàn)核心功能的那部分——可能是微內(nèi)核(Microkernel),也可能是單內(nèi)核(Monolithickernel,有時也叫宏內(nèi)核Macrokernel)。按照類似封裝的形式,這些術語定義如下:
微內(nèi)核(Microkernel):在微內(nèi)核中,最常用的功能被精心挑選設計在內(nèi)核模式(或者按照上一頁的說法,在x86上是Ring0模式)運行的一個或一組進程上,而其它大部分不怎么重要的核心功能都作為單獨的進程在用戶模式下(類似地,Ring3模式下)運行,它們通過消息傳遞進行通訊(例如,Windows采用的進程間通信IPC機制,IPC就是InterProcessCommunicate)。最基本的思想就是要盡量地小。通常微內(nèi)核只包含了進程調(diào)度、內(nèi)存管理和進程間通信這幾個根本的功能。
這種設計具有許多好處,例如增加了靈活性、易于維護和易于移植。只需要把微內(nèi)核本身進行移植就能夠完成將整個內(nèi)核移植到新的平臺上。同時微內(nèi)核的模塊化設計讓其他核心功能模塊都只依賴于微內(nèi)核模塊或其他模塊,并不直接依賴硬件。
同樣,由于模塊化的設計,不包含在微內(nèi)核內(nèi)的驅動程序可以動態(tài)地加載,或者卸載。同時,微內(nèi)核也不依賴于固定的文件系統(tǒng),用戶可以隨意選擇對文件系統(tǒng)的支持。用戶甚至能夠在系統(tǒng)運行時將研發(fā)出的新系統(tǒng)模塊或需要替換現(xiàn)有模塊的模塊直接而且迅速地加入系統(tǒng)。不需要的模塊將不會被加載到內(nèi)存中,因此微內(nèi)核就能夠更有效地利用內(nèi)存。微內(nèi)核還具有的好處是實時性、安全性比較好,并且更適合于構建分布式操作系統(tǒng)和面向對象操作系統(tǒng)。
微內(nèi)核操作系統(tǒng)的典型例子是,Mach(一個非原生的分布式操作系統(tǒng)內(nèi)核,也被應用在MacOSX上)、IBMAIX、BeOS以及WindowsNT,還有著名的Minix(一個主要用于教學的Unix系統(tǒng))和Amoeba(一個原生的分布式操作系統(tǒng))。
單內(nèi)核(Monolithickernel):單內(nèi)核是個很大的進程。它的內(nèi)部又能夠被分為若干模塊(或層次,或其他)。但是在運行的時候,它是一個單獨的大二進制映象。因為是在同一個進程內(nèi),其模塊間的通訊是通過直接調(diào)用其他模塊中的函數(shù)實現(xiàn)的,而不是微內(nèi)核那樣在多個進程內(nèi)進行消息傳遞。因此在運行效率上,單內(nèi)核會具有一定的好處。
單內(nèi)核操作系統(tǒng)的典型例子是,大部分Linux,包括BSD在內(nèi)的幾乎所有的Unix、MS-DOS及Windows9x。例如SunSolaris的內(nèi)核就運行著數(shù)百個線程以實現(xiàn)各種功能,而編譯過Linux內(nèi)核的人就知道Linux內(nèi)核有數(shù)十MB之大。
單內(nèi)核和微內(nèi)核哪個更好顯然是一個很有爭議性的問題,必須說明的很有趣的一點是,這種爭論經(jīng)常會令人想到上一個時代CPU領域中RISC和CISC的斗爭?,F(xiàn)代的CPU設計中包含了任何這兩種技術,就像現(xiàn)在Linux(單內(nèi)核)和WindowsNT(微內(nèi)核)都是微內(nèi)核和單內(nèi)核的混合產(chǎn)物一樣。歷史上有過這樣的爭論,Linux(單內(nèi)核)的作者Linus和Minix/Amoeba(均為微內(nèi)核)的作者AndrewS.Tanenbaum博士對壘,最終Linus也同意微內(nèi)核架構更為先進的論點。
通過采用微內(nèi)核架構,Hyper-V在體積上很有優(yōu)勢,它的大小只有300k左右(似乎新版本的更加?。?,而VMwareESXServer的Linux核心則非常大。就VMM虛擬化管理程序來說,需要的功能不多,因此采用微內(nèi)核架構是很合適的,運行效率可以很高。不過就理論上來說,合理配置的單內(nèi)核其實和微內(nèi)核也很相似。哪一種性能更好?這要在測試之后才能知曉了,不過在這之前,我們接下來可以先看看微內(nèi)核帶來的一個好處:設備驅動程序的變遷。
無論采用什么內(nèi)核,驅動程序和文件系統(tǒng)總是必要的,虛擬機需要使用服務器的硬件就需要驅動程序,虛擬機的文檔需要保存在適當?shù)奈募到y(tǒng)上。在單內(nèi)核的VMwareESXServer上,驅動程序包含在單內(nèi)核內(nèi)部,虛擬機映像文件則保存在VMFS(一種類似EXT的文件系統(tǒng))上,那么微內(nèi)核架構的Hyper-V呢?#p#分頁標題#e#
這就要談到Hyper-V的VSP/VSC架構了,VSP是VirtualServicesProvider,VSC則是VirtualServicesClient,還有一個VMBus部件,將放在“宿主操作系統(tǒng)”的VSP和虛擬機操作系統(tǒng)的VSC連接起來。實際上“宿主操作系統(tǒng)”也是一個虛擬機——就是你最初安裝的、帶有Hyper-V的WindowsServer2008,微軟將其稱為ParentPartition操作系統(tǒng),而每一個虛擬機則成為ChildPartition。
VSP與VPC,注意VSP并不是VirtualStorageProvider的縮寫。VirtualStorageProvider屬于VSP
上圖很好地解釋了Hyper-V使用VSP/VSC架構解決驅動程序/文件系統(tǒng)的方式,通過加入VSP和VSC以及它們互相溝通的VMBus總線,Hyper-V將虛擬機的操作映射入ParentPartition的對應驅動程序/文件系統(tǒng)中,簡化起來就如下圖:
Hyper-V的VSPs/VSCs、VMBus架構
這種方式具有不少好處,例如,最明顯地,Hyper-V可以兼容大量的驅動程序,而不必為虛擬機開發(fā)專用的驅動程序(ESXServer就是這樣干的),只要設備能在WindowsServer2008下工作,那么Hyper-V虛擬機就能使用這些設備資源,再加上Windows驅動天生就比其他操作系統(tǒng)(如Linux)的驅動豐富,因此在硬件支持上Hyper-V具有著無可比擬的優(yōu)勢。VMwareESXServer甚至不能直接應用Linux驅動程序,需要另外進行額外的操作才能使用,因此VMwareESXServer容易受到設備方面的問題,當然用戶可以使用具備VMware認證的全套硬件以避免這個問題。
有利就有弊,VSP/VSC架構需要支持Hyper-V技術的客戶端的支持,這樣就大為限制了虛擬機操作系統(tǒng)的選擇,不支持Hyper-V的客戶操作系統(tǒng)只能使用設備模擬的方式,性能和以前的VirtualServer2005R2沒有太大的分別,要享受到Hyper-V性能的提升,需要虛擬機使用WindowsServer2008,或者內(nèi)含Xen的Linux/Unix。Hyper-V的客戶機操作系統(tǒng)的選擇確實只注明了Windows和少數(shù)幾種Linux,雖然筆者猜測或多或少有著商業(yè)策略上的因素,不過從技術上來看,確實也有一些限制。
Hyper-V設備驅動的這個優(yōu)點正好就和微內(nèi)核驅動程序架構的優(yōu)點一樣,模塊化,架構靈活,不需要更改就可以提供新硬件的支持。
順便提一下,設備虛擬硬件輔助VTd技術在Hyper-V下的實現(xiàn)很輕松,只需要開發(fā)WindowsServer2008下的驅動程序。
Hyper-V還具有一個關于性能的重要特性:多處理器虛擬機,Hyper-V支持4CPU的WindowsServer2008虛擬機,和2CPU的WindowsServer2003虛擬機。多處理器虛擬機并不是Hyper-V才具有的特性,VMware的ESXServer早已經(jīng)實現(xiàn)4CPU的虛擬機,并且是在各種操作系統(tǒng)下(WMwareWorkstation也能提供2CPU的虛擬機)。
如果服務器工作負載需要很高的性能,我們可以考慮使用多處理器的虛擬機。數(shù)據(jù)庫服務器可以消耗掉大量的處理器資源,這時,多處理器虛擬機就是很必須的,就像我們做過的測試那樣。當然,只有當工作負載確實需要的時候,才應該使用多處理器虛機,因為管理更多的處理器會帶來一些額外的開銷。就像早期WindowNT具有單處理器和多處理器兩種內(nèi)核一樣(單處理器版本去掉了一些多處理器才有的如同步之類的模塊,并作了相關優(yōu)化)。
進程狀態(tài)及其轉換示意圖,進程的就在這些狀態(tài)之間“旋轉”
眾所周知,為了保護共享數(shù)據(jù),需要一些同步機制,例如鎖、信號量等。通常,多處理器操作系統(tǒng)內(nèi)核和驅動會采用自旋鎖(SpinLock,類似于互斥鎖,但是保持時間更短。更詳細的信息可以參考《WindowsInternals》第四版,P152)的機制,在獲得自旋鎖之前,線程并不會阻塞,而是一直處于自旋狀態(tài),前提是自旋鎖只會保持很短的時間。然而在虛擬化條件下,這個前提會被打破,因為虛擬處理器是按照時間片進行調(diào)度的。如果在保持自旋鎖的時候競爭虛擬處理器,則其他虛擬處理器就要自旋很長時間,導致CPU循環(huán)的浪費。#p#分頁標題#e#
在WindowsServer2008內(nèi)核以及Hyper-VHypervisor中加入了一個創(chuàng)新設計,盡可能防止出現(xiàn)自旋鎖的長時間等待條件,如果確實存在長時間等待條件,也會有效地加以檢測并對其進行處理。這個方法叫做自旋鎖啟發(fā)方法,未實現(xiàn)自旋鎖啟發(fā)方法的虛擬機系統(tǒng)將停在一個緊湊循環(huán)上旋轉以等待其他虛擬處理器釋放自旋鎖,通常這個旋轉可能會阻塞其中一個硬件CPU,從而降低虛擬化性能。而在自旋鎖啟發(fā)式操作系統(tǒng)中,自旋鎖代碼會在將要發(fā)生旋轉時通過HypercallAPI通知Hyper-VHypervisor管理程序,這樣Hypervisoer管理程序就可以立即調(diào)度執(zhí)行另一個虛擬處理器并降低不必要的CPU使用。Hyper-V還在調(diào)度程序和內(nèi)存虛擬化邏輯上進行了優(yōu)化以使它們在大多數(shù)臨界區(qū)中都不會被鎖定,從而確保多處理器系統(tǒng)能夠獲得很好的延展性。
在前些天的媒體測試見面會上,微軟中國的工程師展示了Hyper-V虛擬機的效率,表明4CPU的WindowsServer2008虛擬機,其延展性可以和物理4CPU系統(tǒng)一較高下。當然,具體的提升仍然需要通過測試來評估。
注:自旋鎖啟發(fā)方法其實不完全是Hyper-V的內(nèi)容,它更多是WindowsServer2008的核心內(nèi)容。Vista也實現(xiàn)了這個自旋鎖啟發(fā)方法。
不知不覺間說了很多顯得有些深澀的內(nèi)容,不過Hyper-V的特點總結起來就是:VT/AMD-V實現(xiàn)、微內(nèi)核設計、VSP/VSC虛擬設備驅動架構以及虛擬處理器自旋鎖啟發(fā)架構,這些特性糅合在一起就形成了獨特的Hyper-V。此外,28美元的價格(或者,購買WindowsServer2008:免費)也很值得一提。
微軟服務器虛擬化戰(zhàn)略的里程碑:Hyper-V
更好的性能、更廣泛的兼容性、更強的安全性,以及更便宜——這就是Hyper-V,從2003年收購Connetix后就沉寂的微軟并沒有睡著。從最早的TerminalServices,到早期的VirtualPC、VirtualServer、SoftGrid,到今天Hyper-V的推出,這些看似不經(jīng)意的動作,現(xiàn)在看來均是為其全面的虛擬化戰(zhàn)略實施做鋪墊。而經(jīng)過這樣一系列的鋪墊,微軟從數(shù)據(jù)中心到桌面虛擬化、全面的端到端的虛擬化戰(zhàn)略已經(jīng)正式部署完畢,我們已經(jīng)可以看到,虛擬化市場即將到來的一場暴風雨。