X86虛擬化之Citrix XenServer
Xen管理程序(hypervisor)是一款出色的開源程序,由XenSource帶頭,與Xen社區協作開發,IBM是最活躍的貢獻者。最初它是劍橋大學計算機實驗室的一個x86虛擬化研究項目,但Xen很快就超出了研究范疇,并成立了一個獨立的公司XenSource,由其進行協調開發,在創立了開源項目的同時還發布了Xen商業版本。
Citrix系統公司在2007年10月22日收購了XenSource,現在XenSource每年的收入超過了1千萬美元,Xen的發展速度實在是太快了,Citrix每年發布兩個新版本,現在最新的版本是2009年6月發布的5.5。
雖然Xen現在是屬于XenSource的,由于它本身是開源軟件,因此存在相當多的分支版本,有些是由其它廠商發布的,最常見的版本有:
1、Xen(由XenSource發布的開源版本)
2、由以下公司發布的商業版本:
3、Citrix系統公司發布的Citrix XenServer
4、Virtual Iron/Oracle發布的Oracle VM
5、Sun公司發布的Sun xVM
Xen強大的功能征服了許多Linux廠商,許多Linux發行版默認采用的hypervisor就是Xen,但有些廠商(最著名的就是Red Hat)最近轉移到了KVM hypervisor,KVM也是一個非常優秀的開源hypervisor。
自從2006年XenSource與微軟建立了密切關系后,它們聯合推動虛擬化行業標準,本次合作擴大了微軟和Xen客戶機的互操作性。
在編寫本文時,XenServer 5.5是使用得最多的版本,預計2010年將會發布V6。
技術特性
Xen是一個開源的裸機或本地hypervisor,由XenSource基于GPL2協議發布,在它的早期版本中,Xen hypervisor引入了半虛擬化的概念(針對x86平臺),這個功能最初出現在上世紀70年代IBM的System/360-67上,半虛擬化需修改客戶機操作系統,要讓它知道hypervisor在它的底層。
自Xen Server 3.0發布后,硬件廠商開始在硬件級支持虛擬化,如英特爾的VTx和AMD的AMD-V,這些技術主要是集成到現代x86/x64處理器中了,但是在指令集方面有很大的差異,因此靠Xen實現了對硬件的抽象,這樣就不用修改主機了,硬件虛擬化技術簡化了宿主主機的部署,如果沒有這種技術,要修改操作系統(如Windows)內核支持半虛擬化可能是個大問題。
微軟Hyper-V和Xen Server的架構設計非常類似,最大的不同是,在Xen中,Dom0(運行虛擬機監視器和管理I/O的特權域)是一個經過優化的Linux內核,而微軟使用的是Windows Server 2008作為其父分區(Parent Partition)(與Xen中的Dom0類似),正是由于有這些相似點,Citrix Essentials包才可以在Hyper-V和Citrix Xen Server之間實現虛擬機遷移。
#p#
Citrix Xen Server 5.5
按照每年發布2次的節奏,Citrix在2009年6月發布了Xen Server v5.5,本次發布帶來了大量的優化和改進,最值得注意的是管理和存儲架構的更新,Citrix收購XenSource后,通過加快發布速度贏得了不少市場認可,同時Citrix也將來自開源社區的最新技術研究成果加入到上游Xen內核中(未來版本),這是一個快速占領市場的有效做法。
Citrix Xen Server提供了一個極具競爭力的虛擬化解決方案,Xen Server 5.5最顯著的一個疏忽是過量分配內存資源的能力,內存過量分配(內存膨脹)可以使整合度更高,特別是虛擬桌面方面,如果沒有過量分配內存資源的能力,Citrix XenServer就不能達到其它類似產品的整合率,如VMware的vSphere,Red Hat的KVM,Citrix將會在下一個版本中增加內存過量分配功能。并入到目前開源Xen hypervisor的Xen內核3.4具有下列新特性(希望所有新特性都能在下一個版本中見到):
1、設備穿透增強,特別是對客戶端設備的支持(更多支持包含在XCI項目中);
2、RAS功能:CPU和內存脫機;
3、電源管理:增強的頻率/電力控制,支持深度睡眠,調度程序和計時器經過優化,峰值時消耗的電力更少;
4、支持Hyper-V啟發接口。
另外,VM故障容錯功能允許在兩臺物理主機上運行一個虛擬機實例,其中一個處于隱藏狀態,兩者步調保持一致,如果主主機發生故障,輔助主機上的虛擬機實例就開始接管,虛擬機完全不用停機,因此對最終用戶是沒有任何影響的,這個技術首先是在VMware的vSphere中引入的。
許可
Citrix XenServer許可計劃簡單有吸引力,核心hypervisor和管理控制臺都是免費的,可以從Citrix網站下載,如果需要更高級的功能,可以購買一兩個“Essentials”包,這些擴展包大大增強了XenServer的功能,如下表所示。
“Essentials”包是按每服務器進行授權的,而不是按處理器或處理器核心,因此在向上擴展方面有很大的吸引力,如IBM的eX4和即將發布的eX5系統。
*以上價格來自Citrix/VMware網站2009年7月23日的報價,以美元作為單元。
#p#
Citrix XenServer版本
Citrix已經發布了三個不同版本的XenServer,核心組件都是免費的,附加功能包括兩個Essentials包,組織可以調整它們的許可,隨時增加想要的包。
#p#
Citrix Xen產品堆棧
Xen hypervisor
Xen hypervisor是XenServer的核心,它運行在最低特權層,它位于操作系統下方,直接與硬件打交道,因此算是硬件抽象層,它負責為運行在物理主機上的各個虛擬機調度CPU和內存分區,hypervisor不僅抽象了虛擬機硬件,還控制著虛擬機的執行,因為虛擬機之間要共享相同的處理環境。
在hypervisor上面運行一個或多個客戶機操作系統,在安裝時就創建了第一個客戶機VM,也就是著名的Dom0,這個VM有特權管理訪問hypervisor,并且可以直接訪問物理硬件,它的主要作用是保護hypervisor的管理接口。
最近的變化大大地改進了Xen hypervisor,包括本地運行半虛擬化Windows Server 2008作為一個XenServer客戶機的能力,正如本章前面所提到的,Hyper-V和XenServer的架構類似,微軟和Citrix之間的合作讓一個開啟Xen的Linux客戶機運行在Hyper-V上成為可能,需要用到本地Xen hypercall訪問虛擬功能,微軟提供的軟件組件調用hypercall適配器將XenServer hypercall轉換成Hyper-V hypercall,因此Linux客戶機可以運行在全內核半虛擬化支持下,在Citrix Essentials的Hyper-V版本中支持XenMotion,可以在XenServer和Hyper-V之間實現實時遷移。
Citrix XenServer v5.5使用的是Xen 3.3內核,它為Xen Hypervisor帶來了許多增強:
1、Hypervisor中的電源管理(P&C狀態);
2、硬件輔助分頁增強:2MB頁面支持,具有更好的TLB局域性;
3、CPUID功能級:允許跨不同CPU類型的系統安全域遷移;
4、PVSCSI驅動,直接訪問半虛擬化客戶機;
5、完整的x86實址方式仿真英特爾VT上的HVM客戶機:支持更多的傳統客戶機操作系統。
當Citrix發布下一個XenServer版本時,希望采用新的3.4版Xen內核。
正如前面提到的,更多增強已經在Xen內核的未來版本中存在的。
在計劃的Xen 4.0內核中包括以下特性:
1、RDMA實時遷移支持;
2、Linux 2.6.30或更高版本的Dom0內核;
3、Marvell 6480硬盤Dom0支持;
4、為PV客戶機穿透USB控制器/設備;
5、故障容錯 – Remus和Kemari項目;
6、DomUs級的監控,限制和網絡通信控制;
7、國際化/Unicode支持;
8、象真實交換機那樣配置虛擬橋(如控制VLAN,端口狀態);
9、每NIC接口VLAN標記;
10、虛擬以太網交換機;
11、通過UEFI(pUEFI)和虛擬UEFI支持物理Xen啟動/安裝;
12、限制VM的I/O;
13、動態內存管理;
14、PCI CGA穿透;
15、完整的AMD IOMMU支持;
16、在線調整DomU磁盤的大小;
17、交叉編譯Xen和模塊化構建。
#p#
Citrix XenServer 5.5需求
Citrix XenServer 5.5對宿主主機有以下要求,但對于開源版本,超出這些限制的配置可能也是可以支持的。
Citrix XenServer 5.5支持當前核心x86操作系統,但它絕大部分是Windows市場,如果需要支持半虛擬化Linux客戶機操作系統,必須安裝Linux支持包,它支持Linux運行在dom0,如果不安裝這個包,所有操作系統都必須運行在硬件輔助模式下,在安裝時你會經過如下圖所示的一步,安裝程序會提示你是否要安裝可選的Linux包。
圖 1 安裝Linux Pack的確認界面
如果在這一步你選擇不安裝Linux包,也可以在以后需要時安裝,只需要運行Linux Pack安裝CD中的install.sh即可。
下表列出了Citrix XenServer支持的操作系統清單,其實很多未列出的操作系統也可以作為客戶機運行。
支持的客戶機操作系統
#p#
XenCenter
XenCenter是為Citrix XenServer設計的多服務器管理控制臺,它可以管理所有XenServer資源池、宿主主機和虛擬機,并集成了存儲管理功能,與其它虛擬管理服務器不一樣,XenCenter是一個輕量級的Windows應用程序,它可以運行在任何桌面,所有被管理服務器的配置和性能數據被復制到一個資源池中,消除了潛在的單點故障,如果管理資源池的服務器出了故障,其它服務器可以立即接管,免費版本的XenServer需要手工操作,而購買了Essentials包的XenServer則是自動的,XenCenter可以以圖表格式顯示性能信息,非常簡單直觀。
使用XenMotion可以在資源池成員之間實時在線遷移虛擬機,因此IT維護人員可以在不中斷用戶訪問虛擬機的情況下更新和管理服務器,也就沒有所謂的計劃內停機時間了,虛擬機存儲在共享存儲上,可以隨時遷移,最令人羨慕的是這個功能是免費的。
Citrix XenServer的最低系統要求如下:
1、基于x86的系統;
2、Windows 2000,Windows XP,Windows Server 2003,Windows Server 2008或Windows Vista;
3、.Net Framework 2.0或更高版本;
4、CPU速度:最低750MHz,推薦1GHz或更快的處理器;
5、內存:最低512MB;
6、磁盤空間:最低100MB;
7、網卡。
圖 2 XenCenter主界面