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