天天看點

linux虛拟化xen

在讨論Xen之前首先談談虛拟,虛拟(Virtualization)指對計算機資源的抽象,一種常用的定義是“虛拟就是這樣的一種技術,它隐藏掉了系統,應用和終端使用者賴以互動的計算機資源的實體性的一面,最常做的方法就是把單一的實體資源轉化為多個邏輯資源,當然也可以把多個實體資源轉化為一個邏輯資源(這在儲存設備和伺服器上很常見)” 實際上,虛拟技術早在20世紀60年代就已出現,最早由IBM提出,并且應用于計算技術的許多領域,模拟的對象也多種多樣,從整台主機到一個元件,其實列印機就可以看成是一直在使用虛拟化技術的,總是有一個列印機守護程序運作在系統中,在作業系統看來,它就是一個虛拟的列印機,任何列印任務都是與它互動,而隻有這個程序才知道如何與真正的實體列印機正确通信,并進行正确的列印管理,保證每個任務(job)按序完成。

長久以來,使用者常見的都是程序虛拟機,也就是作為已有作業系統的一個程序,完全通過軟體的手段去模拟硬體,軟體再翻譯記憶體位址的方法實作實體機器的模拟,比如較老版本的VMWare, VirtualPC 軟體都屬于這種。

在2005年和2006年,Intel和AMD都開發出了支援硬體虛拟技術的CPU,也就是在這時,x86平台才真正有可能實作完全虛拟化。在2007年初的時候,Intel還進一步的釋出了VT-d技術規範,進而在硬體上支援I/O操作的虛拟化,而在2009年随着Intel-i系列晶片的出現,下一代硬體虛拟化技術也随之誕生。随着整機處理能力的不斷提高和虛拟化技術的發展,虛拟機已經成為雲計算的基礎架構核心,并開始深入人們的生活。

在2003年國際作業系統會議Symposium on Operating Systems Principles (SOSP)上,一篇名為Xen and the Art of Virtualization的論文正式宣告了Xen虛拟機的誕生。随後在2007年,Citrix公司接管了該項目,并一直緻力于Xen的維護和更新工作。

Xen作為最具曆史和最著名的Linux開源虛拟機已經走過了7年。在這7年中,Xen已經先後支援x86, x86_64, 安騰(Itanium)等硬體平台。不同于傳統程序虛拟機需要依賴于外部先啟動的作業系統(就像Windows上的VMWare),Xen的設計目的在于開機後先啟動虛拟機監控器(Hypervisor),再啟動宿主OS(Host OS或Native OS)和各個虛拟機,形成一個與前者相反的過程。需要注意的是,Hypervisor并不是一個圖形界面,如果以Windows作業系統比喻的話,虛拟機管理輔助工具就像是Windows界面,而Hypervisor則是Windows核心。這樣做的好處在于,通過盡量減小Hypervisor和Native OS之間的聯系而降低Hypervisor自身和各個虛拟機被破壞和資訊洩露的風險。

為了達到這樣的設計目的,Xen設計架構圖如圖1所示,其中Dom0指虛拟機輔助主機,在Xen架構中是不可缺少的,換句話說,任何原因造成的Dom0崩潰會導緻整個虛拟機系統崩潰。而DomU則指Dom0啟動後建立的虛拟機,可以動态添加和删除。

圖1. Xen架構圖

Citrix于2010年4月7号釋出Xen 4.0,其新特性包括了對可擴充性、性能、可靠性和可用性的提升,下面我們将逐一介紹每個方面。

在Xen3.x時代,對主控端最大支援CPU數量為64,如圖2所示,該圖顯示了兩個可在64顆CPU中前16顆CPU上排程的虛拟機,圖中的CPU Affinity(親核性,指系統運作在哪個CPU上)指明這點.

而在Xen4.0中提供了更強大的可擴充性,Xen4.0支援安裝1TB記憶體以及128顆實體CPU的主控端,同時對虛拟機也可支援到128個虛拟CPU(VCPU)。如果将這些CPU全部用來虛拟Win7會如圖3所示:

圖2. 兩個可在前16CPU/64CPU上排程的虛拟機[1]

圖3 一個擁有128核的Win7[2]

對于虛拟系統而言,所謂性能既包括虛拟機的運作性能和使用率,又包括虛拟化軟體對主控端造成的性能影響。Xen4.0性能上的提升分為兩大類,第一類是對高帶寬消耗的硬體進行了性能上的優化,比如:

1. 普通PCI裝置:通過優化對Intel VT-d和AMD IOMMU(I/O記憶體管理單元,也稱為I/O虛拟化)技術的使用來提升虛拟機對PCI裝置的通路效率。

2. 顯示卡:Xen4.0支援虛拟機對主控端顯示卡的獨占式通路,進而大大提升了在虛拟機中圖形圖像的處理速度。有過一段時間玩虛拟機經驗的朋友知道,過去無論所裝顯示卡能力有多強,在虛拟機中玩3D遊戲總是圖像跳幀甚至根本不能玩,這主要是由于虛拟機需要引入額外的記憶體讀寫或建立共享記憶體而大大降低了顯示卡在虛拟機中的性能所緻。Xen4.0出現這項技術之後,使用者可以将機器上額外的顯示卡裝置指定給某個虛拟機獨占使用,進而避免這些開銷而獲得與主控端一樣的圖像體驗。

3. 網卡:Xen4.0對網卡性能的提升主要在于引入了多隊列機制和對SR-IOV(單點I/O虛拟化)網卡的支援。後者是最近剛剛興起的一種I/O裝置虛拟化技術,這種技術要求I/O裝置有專門的硬體實作。Intel VT-d技術為了保證高性能使用裝置,是以将某個PCI裝置完全指定給某個虛拟機,這就造成一旦某個虛拟機擁有裝置,則在這個虛拟機被完全關閉之前,其它虛拟機甚至主控端也不能通路該裝置,這顯然違背了虛拟化技術中“共享”的原則。而SR-IOV技術則在保證高性能使用裝置基礎上添加了“共享”的功能。以SR-IOV網卡而言,可以将這種網卡視作若幹個虛拟網卡(目前一般為8個,最多64個)和一個交換機的組合各個虛拟網卡之間完全隔離,這就使得每個虛拟機可以擁有一塊獨占的虛拟網卡,而主控端可以對所有虛拟網卡進行管理。

圖4. SR-IOV裝置配置設定示意圖[3]

4. USB裝置:引入對USB裝置的并行虛拟化,進而提高了虛拟機通路USB裝置的吞吐率。之前的方案是在通過模拟為USB1.1裝置來實作的,相比之下,後者通路速度較慢且僅支援部分USB裝置。

第二類則是結構優化帶來的性能提升,比如:

1. TMEM技術(Transcendent Memory,超記憶體技術):提高了半虛拟化(Paravirtualization)中虛拟機記憶體的使用率。這樣做可以避免某個空閑(Idle)狀态虛拟機占據大量不需要的實體記憶體,進而避免了可能造成的其它虛拟機上記憶體短缺現象。

2. 支援虛拟機間的頁面共享,這樣可以加快虛拟機間的通信。目前采用的實作是寫時複制(Copy-On-Write)機制,即共享頁面在某個共享者嘗試寫入時,會首先複制一份該頁面内容作為這個共享者的私有頁面并重新綁定,這樣可以最大限度的減少不必要的記憶體複制操作。

衆所周知,每台機器即使在使用壽命中每天内仍有一定的機率發生故障,這種故障稱為單點故障。而對于伺服器而言,由于發生故障而造成的服務中斷會造成大量的金錢損失,有時這種損失甚至會遠遠超過機器本身的價值。一些知名公司中斷服務造成的每小時損失清單如表1所示。為了将這種損失發生頻率降到最低,大公司必須未雨綢缪實施多種方案,當今在工業界使用最多的是主從複制(Primary-Backup)方案,通過建構備份的方法來大大降低全系統故障機率。

表1知名公司中斷服務每小時造成的損失

公司/行業

每小時損失(美元/每小時)

金融

6.45M

信用卡認證

2.6M

Ebay.com

225K

Amazon.com

180K

飛機訂票業務

89K

ATM服務

14K

是以Xen4.0突出更好發揮伺服器穩定性,主要有以下兩點提升:

1. 借鑒了Remus,實作了對虛拟機狀态的熱備份,通過實作Primary-Backup方案來抵禦因為硬體損壞造成的虛拟機失效,圖5為Remus架構圖。

2. RAS特性:支援運作時熱插拔CPU和記憶體條。這一特性對于伺服器來說很有用,由于大型伺服器上擁有數量衆多的記憶體和CPU,因而頻繁發生元件損壞。熱插拔技術的誕生使得伺服器可以不用斷電即可完成對故障元件的更換,進而避免了由于該因素造成的大量不可服務時間。Xen4.0對該特性的支援使得Xen可以充分發揮伺服器的可靠性,并使得部署在更大規模伺服器上成為現實。

圖5. Remus架構圖[4]

Xen4.0除了上述提升外,還引入了衆多新功能以提升可用性,包括:

1. 更新blktap,引入對VHD格式的支援,并且提升快照和備份的效率。在Xen3.x時代,主要支援RAW格式虛拟磁盤檔案。在這裡,VHD格式和RAW格式均指虛拟磁盤檔案格式,兩者都用于在主控端上以檔案格式存儲虛拟機整個檔案系統,對虛拟機提供硬碟視圖。兩者的誕生是由于虛拟機軟體曾經出現過一個百花齊放的時代,發展到最後這兩種格式分别被不同虛拟機軟體陣營支援,比如VHD格式虛拟機磁盤檔案就常見于Virtual PC和HyperV等微軟公司出品的虛拟機軟體,而RAW格式就被Xen和QEMU等開源虛拟機一直支援,除這兩者外還有VMDK格式虛拟磁盤檔案,常用于VMWare虛拟機軟體系列。 VHD和RAW格式之間存在差異,這導緻兩者之間不太容易互相轉換,并且在性能上RAW格式虛拟磁盤稍快,原因主要是VHD格式虛拟磁盤檔案可視做在RAW格式基礎上增加額外管理功能,引入一定開銷。是以在Xen4.0中引入對VHD格式虛拟磁盤檔案的支援可以說意在蠶食微軟陣營的份額。

2. 引入運作時更改虛拟機磁盤大小的功能。這樣做可以有效避免主控端硬碟空間的浪費。

3. 對于并行虛拟化,Xen4.0對Dom0可以支援到pvops-kernel 2.6.31.x,最高到2.6.32.x,同時對已經使用很長時間(大約三年)的linux-2.6.18 Dom0核心仍然提供支援。不過根據筆者的實驗,對于自己手動編譯安裝Xen來說,linux-2.6.18 Dom0核心仍然是最好的選擇。

4. 新提供libxl庫,用于開發者開發一系列上層控制Xen的工具,進而實作對各虛拟機狀态的監控和管理,進而便于開發無人值守虛拟機伺服器管理程式組。

5. 對Citrix WHQL認證的Windows并行虛拟化驅動的支援。

這些特性使得Xen不僅可以更好的用于個人電腦,還可以充分發揮伺服器的穩定性,可以更好的應用于實際場合中。

通過上文介紹我們可以看出,Xen4.0作為最新的虛拟機系統,充分使用了最新虛拟化技術,從可擴充性、性能、可靠性和可用性上均較前代産品有很大提升。在實際應用中,Amazon的EC2雲計算平台基礎架構就使用Xen建構,由此可以看出Xen并不隻是一個各種新技術堆積起來的玩具,而是一個可應用到實際環境中的系統。

當然Xen也存在很多缺點。比如從可用性上來說,VMWare就做得比Xen要好很多,比如滑鼠指針漂移問題就沒有出現在VMWare的虛拟機中。另一個例子是VMWare提供了強大的VMWare Unity功能,使得虛拟機中的視窗可以整合在主控端桌面上,并且可以從主控端直接點選,編緝,拖曳這些視窗。類似的功能并未出現在目前版本的Xen上,當然這個問題受制于Xen的表現層架構設計以及其它非Xen維護的相關項目,不過相信這些問題會在未來某一天解決,進而在Linux越來越盛行的今天給使用者帶來更好的體驗。

[1]《NewBluePill:深入了解硬體虛拟機》 本作者著,即将出版

[2] Remus: High Availability via Asynchronous Virtual Machine Replication, NSDI 2008,

Brendan Cully, Geoffrey Lefebvre, Dutch Meyer, Mike Feeley, Norm Hutchinson, Andrew Warfield

[3] Xen and the Art of Virtualization, SOSP2003, Paul Barham, Boris Dragovic, Keir Fraser, Steven Hand, Tim Harris, Alex Ho, Rolf Neugebauer, Ian Pratt, Andrew Warfield

[4] Xen Architecture Overview,

http://wiki.xensource.com/xenwiki/XenArchitecture?action=AttachFile&do=get&target=Xen+Architecture_Q1+2008.pdf

[5] Virtual Hard Disk Performance, Microsoft Corp.

http://download.microsoft.com/download/0/7/7/0778C0BB-5281-4390-92CD-EC138A18F2F9/WS08_R2_VHD_Performance_WhitePaper.docx

[1] 摘自Installing and configuring Xen on Red Hat Enterprise Linux 5.2 on System x

[2] 摘自 The Moth’s Blog

[3] 摘自http://doc.chinaunix.net/server/201002/389306.shtml

[4] 摘自Remus: High Availability via Asynchronous Virtual Machine Replication

http://www.cnblogs.com/superymk/archive/2010/07/04/1770799.html

繼續閱讀