虛擬機在線遷移是虛擬化的一個殺手級應(yīng)用,在沒有共享存儲的情況下,遷移除了需要拷貝虛擬機的CPU狀態(tài)和內(nèi)存映像以外,還必須同步磁盤映像,稱為虛擬機全系統(tǒng)在線遷移,全系統(tǒng)在線遷移越來越廣泛地受到重視,因為:首先,廣域網(wǎng)環(huán)境中沒有共享存儲,無論是個人工作環(huán)境在辦公室和家庭之間的同步,還是云計算中計算向數(shù)據(jù)的移動,都需要使用全系統(tǒng)遷移;其次,即使在局域網(wǎng)內(nèi)共享存儲也有自身限制,價格昂貴,延遲較高,使得不少虛擬化平臺依然采用本地存儲,全系統(tǒng)在線遷移就變得更加重要。
全系統(tǒng)在線遷移分為3個階段:第1階段將初始映像拷貝到目的端;第2階段包括多輪增量同步,不斷拷貝上一輪遷移中改變的映像數(shù)據(jù);第3階段停機同步,拷貝剩余映像和CPU狀態(tài),并在目的端繼續(xù)運行虛擬機,這種方法稱為預(yù)拷貝。
遷移的性能指標(biāo)主要包括遷移數(shù)據(jù)量、遷移時間和停機時間,提高遷移性能非常必要,因為:首先,遷移需消耗大量系統(tǒng)資源,遷移時間越長,應(yīng)用性能受影響的時間就越長;其次,遷移是為了進(jìn)行負(fù)載平衡、功耗管理等系統(tǒng)運維任務(wù),遷移時間過長,會錯失合適的遷移時機,導(dǎo)致系統(tǒng)運維效果變差;最后,如果停機時間過長,一些延遲敏感的應(yīng)用就會拒絕服務(wù),在線遷移便失去意義。
提高I/O帶寬固然能加速遷移,但價格昂貴,在I/O帶寬不變的情況下,如何減少同步的數(shù)據(jù)量,是加速遷移的關(guān)鍵,XenoServer利用寫拷貝方法有效減少了遷移同步的磁盤映像,但是,寫拷貝影響虛擬機正常運行時的性能,在大規(guī)模虛擬化平臺上抽象出統(tǒng)一的磁盤映像模板也異常困難,壓縮被引入到內(nèi)存映像同步中,取得了很好的效果,如何根據(jù)遷移映像特征提高壓縮比并降低壓縮時間,如何將壓縮引入磁盤映像的遷移,值得進(jìn)一步探討,后拷貝可以保證映像數(shù)據(jù)不會重復(fù)拷貝,但其可靠性存在缺陷,不再深入探討。
本文提出一種快速全系統(tǒng)在線遷移方法,包括文件系統(tǒng)感知的磁盤同步、異或壓縮和流水遷移3個關(guān)鍵技術(shù),在不影響虛擬機正常使用的情況下,避免了無效和冗余數(shù)據(jù)的拷貝,充分并行遷移各個階段,有效加速了遷移過程。
1 快速全系統(tǒng)在線遷移的設(shè)計
1.1 文件系統(tǒng)感知的磁盤同步
我們調(diào)查了一些實驗室及IT企業(yè)的虛擬機磁盤資源使用情況,發(fā)現(xiàn)其利用率都很低,一般在50%左右,這是因為大容量的磁盤越來越便宜,系統(tǒng)管理員往往按照最大使用量一次性分配磁盤配額,以減少工作量,同時,物理平臺最大可支持的虛擬機數(shù)量往往受限于I/o帶寬,而磁盤的容量相對充足,因此存在大量的空閑塊,空閑塊的內(nèi)容沒有任何意義,傳統(tǒng)遷移方法把虛擬磁盤當(dāng)作黑盒,將空閑磁盤塊連同實際使用的磁盤塊一起同步,不僅增加了遷移時間,還浪費了大量的磁盤和網(wǎng)絡(luò)帶寬。
文件系統(tǒng)感知的磁盤同步,就是在特權(quán)域虛擬機DO塊設(shè)備層消除對非特權(quán)域虛擬機DU文件系統(tǒng)部分信息的語義缺失,在遷移磁盤映像時,根據(jù)DU文件系統(tǒng)提供的磁盤塊分配位圖,只遷移實際使用的磁盤塊,虛擬機的設(shè)備驅(qū)動采用前后端形式實現(xiàn),前端使用文件系統(tǒng)管理虛擬磁盤,虛擬磁盤在后端看來,只是一個磁盤分區(qū)或映像文件,DO中的遷移進(jìn)程并不知道該分區(qū)或文件中哪些塊是空閑的,因此,在DO中如何獲得DU文件系統(tǒng)的磁盤塊分配位圖,是消除語義缺失的關(guān)鍵。
在準(zhǔn)虛擬化系統(tǒng)里,文件系統(tǒng)感知的磁盤同步工作流程如下:假設(shè)DO以磁盤分區(qū)作為DU的虛擬磁盤,遷移進(jìn)程將DU虛擬磁盤置為記錄模式,然后通過事件通道通知DU生成該虛擬磁盤的磁盤塊分配位圖,DU根據(jù)文件系統(tǒng)信息生成位圖,以共享頁面形式傳遞給DO,遷移進(jìn)程根據(jù)由DU傳遞的磁盤塊分配位圖讀取磁盤映像,通過網(wǎng)絡(luò)發(fā)送給遷移目的端,并由目的端恢復(fù)映像,修改DU的操作系統(tǒng),使其根據(jù)內(nèi)存中最新的文件系統(tǒng)元數(shù)據(jù)生成磁盤塊分配位圖,體現(xiàn)了準(zhǔn)虛擬化的靈活性。
全虛擬化系統(tǒng)中,DU的操作系統(tǒng)可能不是開源的,不能像準(zhǔn)虛擬化系統(tǒng)那樣工作,但是,所有磁盤文件系統(tǒng)的元數(shù)據(jù)都會定期寫回到磁盤的固定區(qū)域,因此,DO可以根據(jù)磁盤分區(qū)或映像文件中存儲的DU文件系統(tǒng)元數(shù)據(jù),生成DU虛擬磁盤的磁盤塊分配位圖,磁盤中的元數(shù)據(jù)可能不是最新的,但由于元數(shù)據(jù)總是先于數(shù)據(jù)被寫回,同時,在生成位圖之前整個磁盤已被置為記錄模式,所以根據(jù)磁盤元數(shù)據(jù)生成的位圖總是有效的。
此時,DO先讀取引導(dǎo)塊以確定DU虛擬磁盤的分區(qū)結(jié)構(gòu),然后只需采用探測的方法從分區(qū)固定位置讀取魔術(shù)簽名(類似fsck開始階段的操作),就可確定該分區(qū)的文件系統(tǒng)類型,并得知磁盤塊分配位圖的存放位置,讀取位圖,此過程涉及3個特殊位置:引導(dǎo)塊位置、魔術(shù)簽名位置和磁盤塊分配位圖的位置,引導(dǎo)塊固定于磁盤的0~512B;如果由魔術(shù)簽名確定了文件系統(tǒng)類型,那么該文件系統(tǒng)磁盤塊分配位圖的位置就隨之確定,不同文件系統(tǒng)魔術(shù)簽名的位置可能不同,因此探測過程最為復(fù)雜,但依然是可行和有效的,因為:首先,常用的文件系統(tǒng)不多,包括EXT2,EXT3,XFS,OCFS2以及GFS等,探測過程只探測這些常用文件系統(tǒng)的魔術(shù)簽名,就可滿足絕大多數(shù)需求,即使探測失敗,遷移也可正常進(jìn)行,此時DO只需將磁盤塊分配位圖全部置1(即退回黑盒遷移模式);其次,探測開銷很小,只讀1個磁盤塊即可,若成功則極大加速磁盤遷移,即使失敗,對黑盒遷移的性能影響也可忽略,因此,文件系統(tǒng)感知的磁盤同步對準(zhǔn)虛擬化和全虛擬化都適用。
需要說明,有些文件系統(tǒng)是內(nèi)存文件系統(tǒng),如TMPFS,它們沒有對應(yīng)的磁盤存儲;有些文件系統(tǒng),如NFS,雖掛載到本地目錄,但不對應(yīng)任何磁盤數(shù)據(jù),遷移不需要考慮這些,有些文件系統(tǒng)雖對應(yīng)磁盤存儲,但在磁盤上的元數(shù)據(jù)很少(如SWAP分區(qū)的磁盤塊分配位圖只保存在內(nèi)存中),全虛擬化時,DO即使探測到該文件系統(tǒng)的類型,也不能生成磁盤塊分配位圖,幸運的是,我們調(diào)研了很多文件系統(tǒng),只有SWAP屬于這種情況,一般而言,SWAP分區(qū)的大小和內(nèi)存大小相同,即使DO將SWAP分區(qū)的磁盤塊分配位圖全部置1,也沒有太大的性能損失,如前所述,虛擬機磁盤空問利用率不高,磁盤塊分配位圖作為預(yù)拷貝遷移第1階段的磁盤位圖,有效避免了空閑磁盤塊的同步,節(jié)省了系統(tǒng)資源,極大加速了全系統(tǒng)在線遷移,同時,文件系統(tǒng)感知的磁盤同步在虛擬機正常運行時,并不影響其寫操作性能,也不占用任何額外內(nèi)存資源,本研究目前支持的文件系統(tǒng)類型有EXT2,EXT3和SWAP,并采用模塊化設(shè)計,方便擴展到其他文件系統(tǒng)類型。
1.2異或壓縮
磁盤映像先壓縮再遷移,一般不能降低整個過程的時間開銷,讀取磁盤映像的帶寬一般為70 MBps,千兆局域網(wǎng)的傳輸帶寬為128 MBps,從帶寬比較中明顯看出,磁盤遷移的瓶頸在于讀取磁盤映像,不在于網(wǎng)絡(luò)傳輸,文件系統(tǒng)感知的磁盤同步之所以有效,是因為它減少了磁盤映像的讀取,而壓縮的價值在于克服網(wǎng)絡(luò)帶寬的限制,網(wǎng)絡(luò)帶寬并不是瓶頸時,壓縮只能降低網(wǎng)絡(luò)傳輸量,但是,在廣域網(wǎng)環(huán)境下,或者虛擬機上的應(yīng)用占據(jù)大量網(wǎng)絡(luò)資源的條件下,用來遷移的網(wǎng)絡(luò)帶寬往往低于讀取磁盤映像的帶寬,此時,網(wǎng)絡(luò)帶寬重新成為性能瓶頸,壓縮便非常必要,這就是本研究第1次引入磁盤映像壓縮的意義所在。
對于內(nèi)存映像的遷移來說,內(nèi)存映像的讀取就是DO映射DU內(nèi)存空間的過程,映射帶寬可達(dá)每秒幾個GB,即使在千兆局域網(wǎng)環(huán)境下,網(wǎng)絡(luò)也必然成為遷移的性能瓶頸,壓縮必不可少,壓縮和遷移時間的關(guān)系依賴于壓縮算法的壓縮比和壓縮帶寬,壓縮使得傳輸?shù)臄?shù)據(jù)量變小,有利于降低遷移時間,然而,一般而言,高壓縮比的算法壓縮速度都很慢;反之,快速壓縮算法壓縮比都不高,如果一味追求高壓縮比,則壓縮時間開銷過大,甚至超過減少的網(wǎng)絡(luò)傳輸時間,得不償失;如果犧牲壓縮比,只追求壓縮速度,則減少的網(wǎng)絡(luò)傳輸時間有限,不能體現(xiàn)壓縮的價值,如何根據(jù)網(wǎng)絡(luò)帶寬選擇合適的壓縮算法,甚至根據(jù)應(yīng)用負(fù)載改善壓縮算法的壓縮比和壓縮速度,成為提高遷移性能的關(guān)鍵。
表1統(tǒng)計了虛擬機運行VOD和Specweb05等應(yīng)用時,增量遷移各輪中內(nèi)存頁面內(nèi)容變化數(shù)據(jù)量的比例,表1表明,多數(shù)應(yīng)用內(nèi)存寫操作修改的數(shù)據(jù)量低于內(nèi)存頁面大小的20%,存在和磁盤寫操作同樣的特征,因此,本文將異或壓縮引入到虛擬機磁盤和內(nèi)存映像的壓縮遷移中。
表1 不同應(yīng)用內(nèi)存寫操作修改頁面內(nèi)容的比例%
異或壓縮在源端DO的內(nèi)存中,以最近最少被使用(least recently used,LRU)方式維護(hù)一個舊版本映像緩存,源端壓縮一個磁盤塊或內(nèi)存頁時,先查詢是否存在該磁盤塊或內(nèi)存頁的舊版本緩存,如果有,就異或壓縮(參見式(1)),并以最新內(nèi)容更新緩存;否則,直接將映像數(shù)據(jù)插入緩存,使用其他算法壓縮,目的端理論上不維護(hù)LRU緩存也能支持解壓以后的數(shù)據(jù)恢復(fù)(參見式(2)),因為舊版本磁盤塊和內(nèi)存頁都已經(jīng)被同步過來,但是,為了不從磁盤中讀取舊版本磁盤塊,異或壓縮在目的端DO內(nèi)存中仍然維護(hù)LRU緩存,并且只有當(dāng)磁盤塊在源端進(jìn)入緩存的情況下,該磁盤塊傳遞到目的端后才進(jìn)入目的端緩存,舊版本內(nèi)存頁本來就保存在目的端內(nèi)存中,只需重新映射即可,不必進(jìn)入緩存。
1.3流水遷移
引入壓縮以后,遷移在源端和目的端都分為3個階段:源端讀取映像,壓縮映像,發(fā)送映像;目的端接收映像,解壓映像,恢復(fù)映像。
發(fā)送和接收映像是異步操作,與其他階段并行執(zhí)行;遷移內(nèi)存時,內(nèi)存映像的讀寫非?,開銷完全可以忽略,因此,傳統(tǒng)的多線程壓縮方法E5]能很好地并行內(nèi)存遷移各個階段,然而,磁盤映像的讀寫開銷很大,甚至比網(wǎng)絡(luò)傳輸還慢,單純的多線程壓縮遷移磁盤就不是非常有效了。
遷移時,源端和目的端操作完全并行,遷移在源端所需時間可近似為整個遷移過程的時間,圖1以磁盤遷移源端3個階段為例,說明傳統(tǒng)遷移方法的不足,以及流水并行各個階段的好處,讀取磁盤映像、壓縮映像和發(fā)送映像的帶寬相差不大,而且各階段相對獨立,各磁盤塊遷移順序也不互相依賴,非常適合流水。
圖1各種遷移方法的比較
綜上,由式(3)和式(4)可以看出,流水遷移可以并行遷移的各個階段,相比于普通壓縮遷移和多線程壓縮遷移,極大加速了遷移過程,式(5)表明,采用流水遷移以后,只要保證壓縮帶寬不低于讀取映像的帶寬即可,多線程壓縮意義不大。
2快速全系統(tǒng)在線遷移的實現(xiàn)
由于讀取磁盤映像的時間較長,內(nèi)存映像被修改的速度更快,本研究在每一輪同步中,都先遷移磁盤映像,再遷移內(nèi)存映像。
流水遷移線程組采用多線程實現(xiàn),多個壓縮和解壓線程以線程池形式存在,功能不同的各類線程之間是經(jīng)典的生產(chǎn)者和消費者關(guān)系,實驗表明,當(dāng)壓縮線程為2個(壓縮內(nèi)存需2個線程,壓縮磁盤只需1個線程)、解壓線程為1個時,整個流水遷移線程組就能非常有效地工作。
本研究采取多算法綜合壓縮的方法,它基于3種算法:異或壓縮、WKDM壓縮和LZO壓縮,其中,異或壓縮在異或后采用WKDM算法壓縮;WKDM是現(xiàn)有最快速的壓縮算法之一,但壓縮比有限;LZO算法是一種壓縮比很高的現(xiàn)代壓縮算法,但壓縮速度較慢,綜合壓縮算法先判斷待壓縮數(shù)據(jù)是否有舊版本在LRU緩存中,若有則使用異或壓縮,如果效果不佳則退回到LZO高壓縮比算法;若沒有則使用WKDM快速壓縮算法壓縮,如果壓縮比不高再退回到LZO算法。
全系統(tǒng)在線遷移需要進(jìn)行網(wǎng)絡(luò)重定向,使虛擬機的網(wǎng)絡(luò)應(yīng)用在跨網(wǎng)段遷移后也可繼續(xù)運行,我們采用的方法和文獻(xiàn)[4]一致,即使用IP通道、動態(tài)域名系統(tǒng)和IP信息包過濾系統(tǒng)共同完成這一目標(biāo),不再詳細(xì)論述。
3性能評價
3.1 實驗平臺和應(yīng)用
本實驗的硬件平臺,是由6個相同服務(wù)器組成的機群,其中,2臺機器作為遷移的源端和目的端,其他機器作為負(fù)載的客戶端,每臺服務(wù)器配置2個AMD Opteron雙核處理器,主頻為2,4 GHz,4 GB物理內(nèi)存,1個轉(zhuǎn)速為10 000轉(zhuǎn)/min的SeagateSCSI硬盤,1張千兆網(wǎng)卡,VMM為Xen一3.3.1,客戶操作系統(tǒng)為修改過的Linux一2.6.18.8.每個虛擬機配置1個VCPU和1 GB物理內(nèi)存,分配40 GB的磁盤空間和1 GB的交換分區(qū),遷移不使用專用網(wǎng)絡(luò),和應(yīng)用共享千兆網(wǎng)卡。
本節(jié)使用的應(yīng)用負(fù)載如下:
1)VOD,視頻服務(wù)器,屬于延遲敏感應(yīng)用,以測試停機時間對應(yīng)用的影響,客戶端有400個連接同時向VOD服務(wù)器請求視頻文件。
2)Specweb05,復(fù)雜網(wǎng)絡(luò)服務(wù)器,模擬真實負(fù)載(Banking,Ecommerce和Support),同時提供靜態(tài)、動態(tài)網(wǎng)絡(luò)內(nèi)容,不規(guī)則地產(chǎn)生大量寫操作,對內(nèi)存和磁盤壓力較大,客戶端有400個連接同時向Specweb05服務(wù)器發(fā)出請求。
3)Iozone,磁盤密集型標(biāo)準(zhǔn)測試程序,可測試系統(tǒng)在極限負(fù)載時的遷移性能。
如不作特別說明,實驗中的遷移數(shù)據(jù)量,為每一輪傳輸?shù)膬?nèi)存和磁盤映像的數(shù)據(jù)量總和。
3.2文件系統(tǒng)感知的磁盤同步的有效性
本實驗測試文件系統(tǒng)感知的磁盤同步(Fs—aware)能否避免空閑磁盤塊的遷移,并與傳統(tǒng)黑盒磁盤同步方式(Default)、黑盒結(jié)合綜合壓縮的方式(Cpr)以及文件系統(tǒng)感知的磁盤同步結(jié)合綜合壓縮的方式(Fs+Cpr)進(jìn)行比較,表2為各種方法遷移空閑虛擬機時,實際同步磁盤映像的數(shù)據(jù)量,其中,新建虛擬機(New)指的是剛創(chuàng)建的虛擬機,沒有任何用戶數(shù)據(jù),實際使用磁盤空間4.5 GB;正常虛擬機(Normal)是在新建虛擬機中,安裝了4.1節(jié)所有測試程序和數(shù)據(jù)的虛擬機,實際使用磁盤空間20 GB,代表了多數(shù)企業(yè)和實驗室中虛擬磁盤資源使用率的平均值;過載虛擬機(OverlOAd)指的是磁盤使用率過高的虛擬機,實際使用磁盤空間34.7 GB.由表2數(shù)據(jù)可知,文件系統(tǒng)感知的磁盤同步能有效避免空閑磁盤塊的遷移;同時,由于磁盤映像數(shù)據(jù)壓縮性較差,壓縮算法所減少的磁盤同步數(shù)據(jù)量,比文件系統(tǒng)感知的磁盤同步少很多。
表2遷移磁盤映像數(shù)據(jù)量的比
圖2描述了各種方法遷移空閑的正常虛擬機時的遷移時間和停機時間,遷移內(nèi)存時,所有方法都使用相同的壓縮算法,故性能差別只和磁盤遷移相關(guān),由圖2可知,磁盤遷移的瓶頸在于讀取磁盤映像,文件系統(tǒng)感知的磁盤同步通過減少讀磁盤的數(shù)據(jù)量,有效降低了50%的遷移時間,千兆局域網(wǎng)環(huán)境下網(wǎng)絡(luò)資源不是瓶頸,壓縮減少了傳輸數(shù)據(jù)量,但并沒有減少讀磁盤的數(shù)據(jù)量,故不能降低遷移時間,如不特殊說明,以下實驗均采用文件系統(tǒng)感知的磁盤同步遷移正常虛擬機。
核心關(guān)注:拓步ERP系統(tǒng)平臺是覆蓋了眾多的業(yè)務(wù)領(lǐng)域、行業(yè)應(yīng)用,蘊涵了豐富的ERP管理思想,集成了ERP軟件業(yè)務(wù)管理理念,功能涉及供應(yīng)鏈、成本、制造、CRM、HR等眾多業(yè)務(wù)領(lǐng)域的管理,全面涵蓋了企業(yè)關(guān)注ERP管理系統(tǒng)的核心領(lǐng)域,是眾多中小企業(yè)信息化建設(shè)首選的ERP管理軟件信賴品牌。
轉(zhuǎn)載請注明出處:拓步ERP資訊網(wǎng)http://www.ezxoed.cn/
本文標(biāo)題:虛擬機快速全系統(tǒng)在線遷移(上)
本文網(wǎng)址:http://www.ezxoed.cn/html/consultation/1083975785.html