目前,新一代AMD和Intel處理器中的虛擬化功能正在為有效的、基于hypervisor管理程序的x86系統虛擬化鋪平道路,隨之重點也轉向了如何使得處理器更加可靠。盡管我們看到VMware、Microsoft以及開源Xen是基于不同的hypervisor方法,但在這些hypervisor 技術之間選擇的重要性,遠遠不如應對大型虛擬化所提出的管理挑戰更為關鍵。最終,真正的市場贏家必然是那些可以為把我們的物理環境轉變為更多產的虛擬環境而提供很好功能的廠商。但是,為實現這個目標,首先代價都需要來自處理器廠商的幫助。
老問題,新解決
在目前我們所看到的兩種主要服務器虛擬化選擇中,基于hypervisor的服務器虛擬化比操作系統分區的方法提出了更多的問題。使用操作系統分區的方法,主機操作系統提供了對所有資源的訪問,消除了hypervisor中固有的很多問題,但用戶只限于主機操作系統;基于Hypervisor的虛擬化提供了裸機支持多操作系統的靈活性,但引出了很多的技術挑戰,需要大量的軟件來處理與分配CPU、內存以及I/O資源有關的工作。
幸運的是,AMD和Intel已經針對這些棘手的問題拿出了新的硬件應對解決方案。
在保護模式下,x86處理器一共有4個不同優先級,術語稱為Ring,從Ring 0~Ring3。Ring 0的優先級最高,Ring 3最低。一般情況下,Ring 0是被用于運行操作系統內核,Ring 1和Ring 2是用于操作系統服務,Ring 3則是用于應用程序。
也就是說,在一個常規的x86操作環境中,操作系統是運行在受保護的ring 0。在沒有處理器輔助的虛擬化情況下,取而代之的是必須要ring 0來運行VMM (Virtual Machine Monitor,虛擬機監視器)或hypervisor,來為VM以及它們的VOS(Virtual OS,虛擬操作系統)管理硬件資源。那么,CPU虛擬化的挑戰就是要尋找一種方法使得操作系統正常運行在ring 0之外的一個地方。
為了解決這個問題,芯片輔助(chip-assisted)的虛擬化能夠讓一個新的、有超級特權的和受保護的ring 1來運行VMM。這個新的位置使得VOS能夠平靜地共存于ring 0,通信自動改變到ring 1,而這些VOS并不知道它們與同一系統中的其他操作系統共享物理資源。
這項主要的進步消除了操作系統的ring轉換問題,也減少了虛擬化的費用,它可以為各種操作系統的虛擬化提供支持,而且并不需要對內核或運行時間做任何改變。盡管AMD和Intel選擇了略微不同的方法來達到這個目標,不過令我們高興的是,即使兩公司的技術不能完全互換,我們也不擔心,因為很多虛擬化提供商已經致力于這兩種技術積極展開工作。
Intel公司首先出手的是其VT-x,它創建了ring 1并提供了一套新指令來建立、管理和退出VM,就如同操作內存管理一樣。VT-x與AMD-V(以前被稱為Pacifica)芯片輔助技術有很多相似之處。在具有芯片輔助的處理器中,hypervisor駐留在 ring 1,并創建一個VM控制結構來支持新的VM。這提供了一種機制,可以根據需要來創建、重新分配以及撤銷VM,其作用就如同是在VMM和大量VM之間場景轉換的控制架構。
很多虛擬機和它們的操作系統堆棧可以和平共處在ring 0中;而每一個芯片上都類似地會有這些虛擬機VM的控制器——Intel稱之為VMX,而AMD則稱之為SVM(secure VM)。更重要的是,允許虛擬的操作系統駐留在ring 0還消除了ring轉換的挑戰。因為大量的指令是對位置敏感的,只被設計為在rings 0和3之間轉換,如果VOS位于ring 0以外的其他地方,關鍵程序就可能出現不可預知的錯誤。
現在,VM安全地位于ring 0,為截取和校正VOS所引發的問題而必需的軟件機制運行在錯誤的ring也無所謂了。當在虛擬的VM上出現問題的時候,處理器有能力轉換控制器到受保護的VMM,它可以解決問題并把控制器返回給VM或者在不中斷系統中其他VM的情況下終止該問題。
不過在這里也看到了AMD和Intel的技術分叉點,因為Intel處理器使用外部內存控制器,新的VT-x處理器修改并不只提供虛擬內存管理功能,這也就意味著仍然需要軟件來處理物理和虛擬內存資源之間的地址轉化。這并不是最理想的解決方案,但是確實是有效的方案。
與之形成對照的是,AMD的處理器片上集成了內存控制器,因此AMD-V虛擬化技術引入了獨特的新指令,使得內存的模式和特性與其設計無關。這些指令中的大多數用于MMU (memory management unit)的操作,MMU提供內存分配。
在虛擬化情況下,MMU需要跟蹤了解什么時候分配任務來映射多操作系統、運行多種連接到物理內存地址的應用程序。另外,AMD-V還提供了先進的內存特性,包括Tagged Translation Look-Aside Buffers。
也許最有趣的特性是AMD對NPTs (nested page tables)的支持。與Intel的軟件方法相對立,NPT支持通過為每一個VM提供不受硬件約束的、虛擬CR3內存寄存器,允許每一個VM更有力地控制其內部內存管理。
盡管使用NPTs增加了內存查找的數量,但NPTs消除了VT-x所需要的軟件層。這就使得內存管理保留在其本應該在的硬件區域,從而充分保證了更高的VM內存性能。這種速度的提升在一些對內存要求較高的應用中表現最為明顯,尤其是在有很多VM存在的環境中。
AMD的虛擬化策略比Intel的看似更具有性能潛力,但是AMD-V要在即將發布的第一代Rev.F Opteron中才會出現,而Intel的VT-x 已經出現在其目前最新的Xeon處理器中,不過服務器廠商才剛剛開始發布BIOS修訂來支持這些新的特性。
來自Microsoft和使用Xen的廠商的所有未來基于hypervisor的虛擬化將依賴于這種芯片輔助技術,但是VMware的完全硬件虛擬化方法將持續支持沒有芯片輔助的傳統系統。
打破I/O瓶頸
CPU和VMM內存管理問題只是虛擬化難題中的一部分;對于硬件制造商來說,接下來的巨大挑戰將是改善具有共享I/O設備的內存的交感和安全性。
這本身有兩方面的問題,也許更艱巨的任務會落到I/O硬件開發者肩上,他們需要創建能夠跨越多個VM共享訪問設備——今天的存儲、網絡和圖形設備只能夠對操作系統提供單一接口界面,這就意味著對于具有多個VM的系統必須使用軟件來處理IRQ、內存和計時器函數,直到I/O硬件能夠支持多個功能性接口。
從處理器的立場,挑戰在于為共享設備提供處理器級的架構。現在以及未來,AMD和Intel已經創建了非常類似的規格來達到這個目標,二者的規范都已經在春季發布,一些虛擬化的廠商也已經對二者做了簽約支持。
據預測,AMD將首先在這塊市場出擊,推出其IOMMU(I/O memory mapping unit)技術,該技術提供了附加的指令來支持硬件虛擬化。這些新的特性被設計用于改進DMA(direct memory access)映射以及對硬件設備的訪問,取代目前的圖形化的尋址機制,并支持通過一個VM對設備的直接控制,同時能夠在一個VM中直接訪問用戶空間 I/O。
Intel的VT-d(Virtualization Technology for Directed I/O)標準也是鎖定直接設備訪問和內存保護的問題。與IOMMU一樣,VT-d提供了在VM和I/O設備之間直接通信的架構。
不過,最初這些功能對于虛擬化來說還只是有名無實,因為I/O虛擬化解決方案的另外一半目前還沒有到位——那就是,如今還沒有I/O設備能夠管理共享VM對硬件資源的訪問。
事實上,甚至還沒有一個適當的標準支持設備跨越PCI共享,也許要看到普遍的、基于設備的硬件I/O虛擬化解決方案還需要等兩年到四年的時間。到那個時候,虛擬化廠商將需要提供一個提取層,來支持對存儲、網絡以及其他中斷驅動的設備的共享訪問。
在三種主要的hypervisor技術中,來自Xen和Microsoft的最新成果都將從芯片輔助的虛擬化之中獲得最大的幫助。這些新的處理器級的功能消除了許多VMware曾花費很多年時間、開發很多睿智軟件力求解決的障礙。隨著硬件虛擬化技術的改進,采取創新的方法來解決這些問題已經變得很容易,隨之關注點也由hypervisor本身轉移到性能和管理方面的考慮。
在此,我們將全面分析三種完整的服務器虛擬化最新成果,這些環境能夠同時支持Windows Server 2003和Linux,而且我們把關注點放在供應和管理一個跨越多個物理機器的統一的服務器資源池。對于開源的Xen hypervisor,我們選擇Virtual Iron為代表來介紹,因為它對Xen虛擬化提供了全面服務方法。
VMware
目前虛擬化領域的市場領導者是VMware的企業級產品ESX Server。該VM model使用裝載在每一個物理機器上的“服務控制臺”來管理和控制hypervisor的動作,也提供對管理代理的支持。
VMware使用二進制轉化方法來提供一個通用的硬件平臺,這就意味著軟件放置在物理和虛擬設備之間來管理資源,以及“誘捕和轉化”可能導致VM損壞的操作系統錯誤狀況。這種方法解決了傳統x86硬件管理的ring轉換問題,并支持不加任何改變地使用所有x86兼容的操作系統,但也有很高代價:軟件模擬硬件服務在換來靈活性的同時也產生性能下降的弊端;而且這個性能影響也不小,一些市場估計數字將近10%~30%,當然這也是取決于不同的應用以及不同的評估者。
幸運的是,VMware已經從芯片輔助的虛擬化技術中獲益,ESX Server 3.0已經有了大量的性能提升,并充分利用了新的處理器特性。
目前ESX Server在企業級、多操作系統服務器虛擬化市場上占有絕對優勢,并且有大量的企業級管理工具包支持,為高可用性環境提供了集中化的管理、現場虛擬服務器遷移、自動化資源安排scheduling、分布式文件服務、整合的備份以及高級保護。VMware虛擬服務也能很好地集成在已經使用了IBM Tivoli、HP OpenView等高端管理系統的數據中心中。
![]() |
VMware和Xen的比較 |
開放源代碼的Xen hypervisor 開始的時候只是劍橋大學計算機實驗室的一個有趣的項目。Xen的第一版本是以Linux社區為目標,基于para-virtualization技術,需要Linux內核作特殊修改才能夠在Xen hypervisor 上運行。
需要指出的是,這是一個單向的改變,也就是說,修改后的內核就不能再在傳統的沒有Xen hypervisor的硬件之上運行了。同樣也是因為Para-virtualization,在早期的Xen版本上運行Windows也是不太可能的, 因為不允許Windows被修改。
在2005年12月,Xen開發團隊發布了Xen 3.0,這是其免費軟件hypervisor的第一個版本,支持芯片輔助技術,借助于Intel VT-x或AMD-V的幫助,可以運載各種操作系統不需要做任何改變既可運行在其上。
Xen 3.0產生的影響也是巨大的:消除了對para-virtualization的需求,允許Windows在Xen環境中與Linux和Solaris等肩并肩運行。不過Xen中并沒有像VMware提供的大量企業級支持工具。
因為Xen只是一個hypervisor,為了方便深入研究,我們選擇一家富有經驗的基于Xen技術開展虛擬化的廠商來做介紹。Virtual Iron軟件公司從2003年出現,剛開始提供使用其自有VFe hypervisor技術的Linux虛擬化。隨著Xen 3.0的發布,Virtual Iron最終放棄了其VFe,完全擁抱開源,將產品開發重點鎖定在自認為最重要的方面——虛擬環境的管理。
這里需要指出的是,與VMware在每一臺物理服務器上安裝管理系統軟件的做法不同,Virtual Iron在每一臺系統上放置一個Xen hypervisor的小型、bare-metal version版本, 并裝配一臺獨立的專用服務器來為硬件資源池中的所有系統提供資源管理服務。
所謂的Virtual Iron管理服務器能夠自動在所連接的服務器中創建一個所有物理設備的詳細目錄,使得能夠在虛擬架構內的任意地方進行虛擬服務器的創建、資源分配以及部署。
另外,從諸如政策驅動的工作負載管理、動態容量供應、快速VM遷移、報表和分析的先進工具等特性,我們也看出Virtual Iron正在提供企業級管理工具,而這在以前的基于Xen的系統上是沒有的。
Microsoft
2004年Virtual Server 2005的發布標志著Microsoft進入服務器虛擬化領域,不過這個產品獲得的反響不一,部分原因是由于它缺乏很好的管理工具和服務。
如今,隨著Virtual Server 2005 R2 beta版本的公開,該產品確實已經做了改進;從長長的改進列表上,顯然Microsoft是注意到了IT專業人士的呼聲。VSR2需要安裝一套精簡的、核心版本的Microsoft Server 來管理一個虛擬化堆棧,為客操作系統guest OS提供設備支持device support。
核心版的操作系統能夠使VSR2使用所有被Windows Server正常支持的硬件設備,為大量的VM創建了一個統一的硬件平臺。
這個最新版本的VSR2可以充分利用VT-x和AMD-V指令的優勢。該版本中的另外一個新功能是System Center Virtual Machine Manager,這是一個獨立應用軟件包,包含了大量的集中管理工具,提供簡化的系統遷移、智能的供應、可編程自動化以及快速系統恢復功能。
![]() |
Microsoft Virtual Server 2005 R2的性能 |
挑戰傳統
從實用性角度看,以上所有這些廠商都在向正確的方向努力,我們看到大家的重點都放在了與轉換物理環境、動態資源分配、VM的無縫遷移以及VM相互之間的保護等方面。但是虛擬化也引發了一些在傳統服務器環境中不存在的應用級的問題,如:
虛擬SMP:Virtual Iron 基于Xen 3.0的方案能夠支持多達32路SMP的VM,其次是Microsoft VSR2能夠支持8路,VMware ESX Server能夠支持4路虛擬SMP。當然,在實際應用中你會受到主機系統本身所包含物理處理器數量的限制,因此32路SMP似乎有些過度。不過隨著在不久的將來四核處理器的出現,滿足這種期望或需求應該也不會那么牽強了。
擴展64位支持:盡管能夠充分利用x86-64系統的擴展內存尋址技術的應用軟件還不多,但虛擬化是很好地利用新一代高性能服務器的一種方法。Virtual Iron和Microsoft都提供了對同時使用32位和64位操作系統及應用軟件提供了全面支持,但是VMware仍然在為改善對類似混合環境的支持而努力著。
資源池:同集群類似,虛擬化方案是被設計用來將許多物理系統組合成一個資源池,在需要的時候提供對VM的無縫甚至自動化的遷移。實際上,虛擬化和集群是不同的,在集群情況下,在多個物理系統上的幾十個處理器可以被指派為去完成一個單一的任務;而虛擬化所創造的虛擬池,是將幾十個處理器呈現為一個可分配的池,但是應用程序不會跨越多個物理機器。
VMware和Virtual Iron為高可用的應用資源池提供了非常成熟的支持,但Microsoft也提供HA功能,外加Microsoft Cluster Services。
值得指出的是,在所有案例中,無縫的HA/VM遷移會取決于在資源和目標系統之間的共享存儲環境的可用性,這對于典型虛擬化應用來說并不是必須的。在一個完全虛擬化的世界,處理、內存、存儲以及網絡就如同一個大型、統一的資源一樣存在,你可以按需取用。很不幸,這種公用數據中心的理想天堂還沒有出現。
根據Gartner 的市場數字,今天大約有20%~25%的中型商業環境正在使用虛擬化,到2007年,40%的企業將會通過實施虛擬化減少其20%的服務器數量。
最近Forrester的調查顯示,大型企業更能意識到服務器虛擬化的好處,從而實現服務器虛擬化,在員工人數超過20000的全球2000家企業中,有三分之一已經使用了虛擬化,13%的企業則表示計劃在未來一年內開始虛擬化的試驗和部署。