陳俊鵬
摘要:Xen虛擬化技術(shù)作為當(dāng)前作為火熱的虛擬化技術(shù)之一,在日漸龐大的大型計算機系統(tǒng)設(shè)計使用過程中扮演著愈發(fā)重要的角色。當(dāng)前,這類系統(tǒng)的后期維護及整體系統(tǒng)升級時間通常十分冗長。本文在對當(dāng)前大型計算機系統(tǒng)的設(shè)計進行分析基礎(chǔ)上,就Xen虛擬化技術(shù)的原理與系統(tǒng)的升級機制進行探討,并對其升級機制提出了針對性改進。
關(guān)鍵詞:Xen 補丁 更新機制 超時機制
中圖分類號:TP393.08 文獻標識碼:A 文章編號:1007-9416(2016)12-0112-01
1 當(dāng)前大型計算機系統(tǒng)的設(shè)計
隨著計算機硬件技術(shù)及網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,人們對于復(fù)雜計算、智能計算、分布式計算以及云計算的需求越來越大。一方面,復(fù)雜的計算機系統(tǒng)就需要復(fù)雜的前期系統(tǒng)設(shè)計,對于整體架構(gòu)的要求極高,稍不注意就會導(dǎo)致整體系統(tǒng)冗余,占用大量硬件資源的同時卻無法真正發(fā)揮整體性能;另一方面,對于運行中的系統(tǒng)而言,安全補丁及不定期的系統(tǒng)升級非常重要,如果系統(tǒng)過于復(fù)雜,后期的維護成本急劇增加。
這就使得當(dāng)前越來越多企業(yè)級系統(tǒng)軟件開始朝著分布式設(shè)計管理、多操作系統(tǒng)運行的方向進行設(shè)計。通過將某一龐大的計算系統(tǒng)分解為多個單獨的子系統(tǒng),使這些子系統(tǒng)分布式運行,達到硬件使用及運行效率的提升。這其中,有很大一部分的大型系統(tǒng)開始采用虛擬化技術(shù),特別是Xen虛擬化技術(shù)來作為此類系統(tǒng)的分布式設(shè)計及運行支撐。通過在Xen虛擬化環(huán)境中分布式運行的幾個OS(操作系統(tǒng)),在這些OS中運行基于該OS設(shè)計的子系統(tǒng),使在極小的硬件性能損耗的前提下,充分發(fā)揮這些OS及在為OS特別設(shè)計的子系統(tǒng)的獨特性和優(yōu)越性,做到整體系統(tǒng)運行及計算的最優(yōu)。
2 Xen虛擬化技術(shù)的原理
Xen虛擬化技術(shù)是當(dāng)前唯一的type 1開源虛擬化技術(shù)解決方案。其內(nèi)核小,可以在極小硬件損耗的情況下同時支持多達100個以上的OS以接近于直接在裸機上運行的性能運行,并同時保持這些OS運行的安全隔離。當(dāng)前,Xen可以支持全虛擬化技術(shù)(hardware-assisted virtualization)、半虛擬化技術(shù) (para-virtualization) 以及混合虛擬化技術(shù)(PV on HVM)。使用最多,性能最強的則是其半虛擬化技術(shù)。
在一個Xen的虛擬化環(huán)境中,主要包括Xen Hypervieosr、Domain0、DomainU、GuestOS及Application等幾個組成部分。Xen Hypervisor是Xen下的虛擬機監(jiān)測器,即VMM。它負責(zé)完成CPU的調(diào)度、內(nèi)存資源分布以及中斷請求。由于hypervisor對于所有的Domain0及DomainU都是透明的,所以可以把hypervisor可以認定為是Domain0及DomainU的硬件層。
DomainU是Xen下的客戶域,客戶域中單獨運行有各自的OS以及相應(yīng)的子系統(tǒng)及應(yīng)用軟件。
Domain0是Xen在初始化運行之后在整個環(huán)境中運行的第一個虛擬機。作為Xen下所有DomainU的控制域,它處理所有訪問各個域的I/O請求及其他相關(guān)的交互。特別的,所有進出Xen虛擬化環(huán)境的網(wǎng)絡(luò)傳輸以及DomainU之間的網(wǎng)絡(luò)傳輸,都需要經(jīng)過Domain0。
3 當(dāng)前這類系統(tǒng)的升級機制
在一個大型計算機系統(tǒng)中,升級系統(tǒng)模塊不可避免的會需要暫停系統(tǒng)的使用,這通常都是需要極力避開的。所以,為減少更新次數(shù),每次進行升級更新時很有可能會同時涉及到當(dāng)前運行的各個子系統(tǒng)以及其底層的OS,甚至還會包括Xen的更新。因此,當(dāng)前的升級補丁通常以一個含有各DomainU內(nèi)所有更新文件的多個升級包(package)組成。在這些升級包中,含有該DomainU中子系統(tǒng)及其中OS的所有升級文件。具體的升級過程如下所示:(1)當(dāng)前運行的系統(tǒng)檢測到有升級補丁時,由Domain0發(fā)起一個更新進程,從而從遠端服務(wù)器下載相應(yīng)的補丁文件到特定的文件夾中;(2)補丁文件下載完成后,系統(tǒng)需要先檢查該文件是否合法完整,之后提取其中的升級包,并根據(jù)補丁中的控制腳本預(yù)設(shè)好的安裝順序進行排序;(3)將第一個升級包同步到相應(yīng)的DomainU中,控制腳本會根據(jù)該DomainU中的安裝成功消息來決定是否進行下一個DomainU的升級。如果補丁包的安裝過程中某一DomainU出錯,需回滾整個安裝流程。
在這個過程中,我們能看到很多值得注意的問題:(1)這個升級機制要求在某一DomainU的升級包安裝過程中,其他的DomainU均掛起。只有當(dāng)前一個域安裝成功后才進行下一個域的升級。這一設(shè)置會大大增加升級時間;(2)當(dāng)某個域的安裝出現(xiàn)問題時,需要回滾整個安裝過程。當(dāng)排除掉這些問題之后進行重新升級時,卻有要重新安裝一遍上一次已經(jīng)安裝成功的組件。這會大大降低升級效率;(3)每個域內(nèi)都運行有自己特定的OS,如果升級包中涉及到OS的升級,就會使得每個升級包變得非常龐大,從而使升級補丁變得十分巨大。這就造成了網(wǎng)絡(luò)傳輸上的困難。
4 對該升級機制做的幾類改進
從縮短升級時間以及提高升級效率的方面,我們對升級機制進行了重新設(shè)計:
將當(dāng)前的升級機制從同步升級改為異步升級,也就是說,將多個升級包文件進行同時傳輸至各個DomainU,使多個域同時進行包的安裝。
當(dāng)某個DomainU中的安裝出錯導(dǎo)致升級失敗時,只回滾該域中的安裝過程。下次再執(zhí)行補丁升級時,只對之前升級出錯的域進行重新安裝。
每個升級包中都會涉及到大量的系統(tǒng)組件。有些組件的升級事關(guān)系統(tǒng)的安全及正常運行,而有些則可以推遲甚至不升級。由此我們可以在升級過程中設(shè)置一個動態(tài)的超時機制。
當(dāng)某些不重要的組件安裝失敗時,迫使其推出當(dāng)前升級過程并恢復(fù)已備份的版本,進行下一組件的安裝。
參考文獻
[1]Barham P, Dragovic B, Fraser K, et al. Xen and the art of virtualization[J]. Acm Sigops Operating Systems Review, 2003, 37(5):164-177.
[2]孟江濤,盧顯良,董貴山.Xen的虛擬機網(wǎng)絡(luò)優(yōu)化研究[J].電子科技大學(xué)學(xué)報,2010, 39(1):106-109.