廖國龍,王晉明(四川大學計算機學院,成都610000)
虛擬機動態遷移技術及優化研究
廖國龍,王晉明
(四川大學計算機學院,成都610000)
近年來,為了滿足用戶多變而復雜的服務需求,云計算作為一種更加靈活的、高擴展性的計算模式得到了廣泛的應用。云計算旨在讓用戶通過互聯網就可以得到快速、安全、真實的計算服務。目前,云計算平臺都采用虛擬化技術來整合硬件資源,降低計算機硬件體系結構和軟件系統服務之間的耦合度,解決計算環境對硬件平臺的依賴,更加高效地利用硬件資源,提供靈活多變的使用環境。而其中虛擬機的遷移在平臺的負載均衡、高可用、資源管理方面都起著至關重要的作用。
虛擬機遷移是把虛擬機從一臺物理機器遷移到另一臺物理機器上,并在目的物理機恢復虛擬機的運行,分為靜態遷移和動態遷移兩種[1]。靜態遷移要求在遷移的過程中暫停虛擬機的服務,主要面對沒有實時性要求的應用,實現難度不大。動態遷移能夠在遷移時為用戶提供不間斷的服務,具有更廣闊的應用場景。本文將闡述動態遷移技術的實現及相關優化策略。
虛擬機的動態遷移需要在不干涉虛擬機上服務運行的基礎上,把虛擬機在內存狀態、存儲信息、網絡連接狀態等方面的數據遷移到目的節點,并保證遷移前后充分的一致性。通常把動態遷移分成三個部分:網絡遷移、存儲遷移、內存遷移。
目前,絕大部分動態遷移都是指局域網里的虛擬機遷移,而局域網內部實質上是通過MAC地址來標記機器的。所以,網絡遷移常見的方法是通過局域網內部的ARP重定向,把待遷移虛擬機的IP地址綁定到目的機器上來實現[2]。而存儲遷移的通常解決方案是把虛擬機的存儲掛到獨立的共享存儲系統中。例如,OpenStack平臺通過把虛擬機的存儲外掛到NFS共享存儲,livemigration的過程中就只需要遷移內存和網絡狀態就可以了。
而內存遷移部分需要考慮到虛擬機上應用的狀態、平臺的帶寬分配和CPU負荷對其他服務的影響等因素,涉及的數據量偏大,同時還要保證內存一致性的原則,最為復雜。所以如何提高內存遷移的效率是影響動態遷移性能的最重要因素。
一般來說,內存遷移分為三個階段[3]:
(1)push階段:拷貝源虛擬機的內存頁面到目的虛擬機,在此過程中源虛擬機運行服務不中斷;
(2)stop-and-copy階段:掛起源虛擬機,啟動目的虛擬機,并由目的虛擬機提供對外服務;
(3)pull階段:目的虛擬機運行服務的過程中,如果出現內存頁面與源虛擬機不一致的情況,發出頁面請求,獲取正確內存頁面。
針對內存遷移的三個階段的不同特性,能否做出的相應優化優化,是衡量一個內存遷移算法優劣的基本思路。例如,在stop-and-copy階段會進行停機拷貝,因而讓虛擬機產生一個宕機時間,在這個時間段內,虛擬機和I/O設備之間處于斷開狀態,勢必會造成虛擬機服務質量下降。故而宕機時間就成為衡量遷移性能的重要指標之一。此外,內存遷移時占用的網絡帶寬和對系統CPU的占有率也是影響動態遷移的重要因素。
目前主流的內存遷移解決方案有4種:預拷貝方法(pre-copy)、后拷貝方法(post-copy)、混合拷貝方法和日志回放方法。
預拷貝算法是當前主流的內存動態遷移算法,它在push階段先拷貝源虛擬機所有的內存頁面到目的虛擬機保存,并記錄在這個過程中產生變化的內存頁面(臟頁面),然后僅拷貝臟頁面到目的虛擬機,并記錄新的臟頁面表,通過這樣迭代拷貝的方式逐步更新目的虛擬機的內存狀態,即第n輪迭代中只拷貝第n-1次迭代后發生變化的內存頁面[4]。當臟頁面的數量小于預定值時,就進入stop-and-copy階段,然后啟動目的虛擬機。預拷貝算法在push階段的迭代使得臟頁面足夠小,使得stop-and-copy時停機時間極短,對虛擬機的應用服務影響非常小。
然而,虛擬機的動態遷移要求運行在虛擬機上的服務持續運行,這就導致虛擬機內存的任何頁面都有成為臟頁面的可能。特別是對于運行I/O頻繁服務的虛擬機,臟頁面的反復重傳會很大的增加迭代拷貝次數和降低平臺網絡的吞吐量。當出現虛擬機臟頁面的產生速率大于迭代頁面的拷貝速率的情況下,理論上就會進行無限迭代的過程。同時,push階段迭代拷貝過程中,大量的數據傳輸導致較高的網絡開銷,降低了虛擬機的網絡服務性能。
針對這個問題,通常有兩種解決方案:
(1)增加迭代退出條件。當迭代次數達到設定的上限值時,提前進入stop-and-copy階段。但這樣會極大地增加停機時間,使虛擬機上運行的服務產生中斷;
(2)通過硬件控制等方法限定進程對內存的寫次數。通過限定內存寫次數,極大地降低了臟頁面的產生率,降低迭代拷貝次數。但這樣會對虛擬機上運行的原生服務產生影響,降低本身的服務性能。
2.1基于分層拷貝的優化方法
分層拷貝算法是在臟頁面預測算法的基礎上的優化。臟頁面預測算法是一種基于內存局部性原理的附帶簡單的預測功能的預拷貝算法,其在源虛擬機中維護了兩張臟頁面位圖previous_dirty和present_dirty,分別記錄在上一次迭代和本次迭代過程中發生變化的內存頁面。每輪迭代結束后,下次迭代拷貝哪些臟頁面由對應的previous_dirty和present_dirty比特位共同決定。它的判定規則如下:
(1)當previous_dirty和present_dirty都為0時,表示內存頁在最近兩次迭代中都沒有被修改,不屬于臟頁面,不需要拷貝到目的虛擬機;
(2)當previous_dirty=1且present_dirty=0時,表示內存頁在前一次迭代中被修改而此次迭代沒有變化,表示該內存頁已經修改結束,將在下次迭代中拷貝,并令previous_dirty清零;
(3)當previous_dirty=0且present_dirty=1時,表示內存頁只在此次迭代中被修改,那么下次迭代時可能繼續被修改,因此不會立即拷貝,并在下次迭代前令previous_dirty為1且present_dirty為0;
(4)當previous_dirty和present_dirty都為1時,表示內存頁在最近兩次迭代中都被修改,屬于頻繁修改的臟頁面,將于最后一次迭代時拷貝。
臟頁面預測算法的缺點在于只把最近兩次迭代作為預測依據,當內存訪問出現類似乒乓模型(即內存頁面每隔1個迭代寫入一次)時,并不能改善臟頁面反復迭代拷貝的情況。
分層拷貝算法相對應臟預測算法增加了算法對于內存的檢測時間,更加全面的檢測一段時間內的內存狀態,并在這基礎上平衡掉某些頁面在一小段時間內的異常活躍所帶來的判定誤差,記錄內存頁近段時間被訪問的頻率,分成不同的層次,并在push階段中一直維護,被修改的內存頁向高層次移動,長時間未被修改的內存頁向低層次移動,而在迭代時,按從低到高的層次拷貝。通過這種方式降低內存頁面重復拷貝率,減少迭代時間,提高遷移性能。
2.2基于內存壓縮的優化方法
內存壓縮算法在虛擬機的系統層次中邏輯加入了內存壓縮層[5]。把在push過程中標記為即將迭代的內存頁都先放入內存壓縮層,用壓縮算法壓縮成更小的塊封裝起來,遷移到目的虛擬機的壓縮層,再解壓并調入內存使用。遷移過程中壓縮技術的引入可以有效地提高遷移性能和緩解對網絡帶寬的負載。一方面,壓縮要拷貝傳輸的內存頁,相當于變相地增加了源虛擬機和目的虛擬機之間的網絡帶寬,提高內存頁的傳輸速率;另一方面,由于待傳輸的數據量減小,降低了平臺網絡流量,減少擁塞發生的頻率。
該算法的缺點是內存頁壓縮時對CPU等物理資源的額外開銷會對虛擬機服務性能產生影響,因此選擇一個適合高效的壓縮算法至關重要。在MECOM算法中,通過識別內存頁面的類型,針對不同的內存頁面采用不同的壓縮方法,進一步提高了遷移性能。
2.3基于帶寬分配的優化方法
目前主流平臺在內存遷移過程中,都采取的是默認帶寬分配的方法。默認帶寬分配方法采用的策略是:在push階段的每次迭代拷貝的過程中,先把待傳輸的內存頁面放入系統內部緩存,待緩存容量充滿后,傳輸到機器物理網卡,由物理網卡選擇發送時機。在實際使用過程中,遇到物理帶寬占有率高的情況時,會導致大量需要傳輸的內存頁面在物理網卡處擁塞,降低整個平臺的網絡性能,從而影響虛擬機服務的穩定性。
基于帶寬分配的優化方法會在整個遷移的過程中檢測平臺的網絡狀態。在push階段,記錄每輪迭代將要傳輸的內存頁,在根據實時的網絡狀態,按需分配網絡帶寬給傳輸服務,以降低對虛擬機原生服務的影響。而在stop-and-copy階段,因為虛擬機處于宕機狀態,在保證平臺網絡通信基本帶寬的基礎上,分配給傳輸服務最大剩余帶寬,極大地提高最后一次迭代拷貝的效率,減少宕機時間。
后拷貝算法沒有push階段,在遷移開始的時候掛起源虛擬機,然后僅將源虛擬機的CPU狀態拷貝到目的虛擬機,再在目的虛擬機上啟動服務[6]。當目的虛擬機調用內存的時候,產生缺頁異常,向源虛擬機發出缺頁請求,直到獲取所有的內存頁面。
后拷貝算法所有內存頁面都只需要通過一次傳輸,避免了臟頁面的頻繁重復拷貝,降低了平臺網絡帶寬的負載,在總遷移時間上優于預拷貝算法。但同時后拷貝算法對源虛擬機的依賴較強,在目的虛擬機運行服務期間如果遇到頻繁的缺頁請求,I/O等待時間過長,對虛擬機上服務的性能影響較大。
基于主動推送的優化方法
為了降低目的虛擬機對源虛擬機的依賴,源虛擬機除了響應目的虛擬機的請求頁要求以外,主動傳輸內存頁面,減少pull階段的時間。主動推送通常與請求頁預測同時應用與后拷貝技術中。請求頁預測方法會記錄短時間內收到的請求頁要求,根據請求頁在內存中的邏輯位置和內存的空間局部性原理,推測接下來請求頁的訪問位置,優先推送訪問率高的內存頁面,使得目的虛擬機上發生缺頁的頻率降低,緩解后拷貝算法對服務性能的影響。
預拷貝算法是針對push和stop-and-copy階段的解決方案,而后拷貝算法是針對stop-and-copy和pull階段的解決方案,兩種方案都沒有囊括完內存遷移的整個過程。因此,混合拷貝算法應運而生,它的遷移流程為:
(1)在push階段,由源虛擬機提供服務,進行一次預拷貝,傳輸源虛擬機的所有內存頁面到目的虛擬機,并創建臟頁面位圖記錄這個過程中發生修改的內存頁;
(2)在stop-and-copy階段,掛起源虛擬機,傳輸臟頁面位圖到目的虛擬機并啟動服務;
(3)在pull階段,類似后拷貝的缺頁請求策略,當系統訪問臟頁面位圖中標記為真的內存頁時,從源虛擬機獲取正確的內存頁。
混合拷貝算法相對與預拷貝而言,沒有迭代拷貝臟頁面的過程,除了臟頁面會拷貝兩次以外,其它內存頁都只會進行一次拷貝,減少了數據流量和對網絡的負荷;相對于后拷貝,push階段的內存頁傳輸使得目的虛擬機剛運行時已經有了本地工作集,極大地降低了缺頁異常的發生。
與之前介紹的方法不同,日志回放算法并不是旨在提高內存頁面在遷移過程中的拷貝傳輸性能,而是采用日志來代替內存頁面進行傳輸。該算法中,源虛擬機要記錄可能影響系統內存狀態的事件,生成可執行追蹤的日志文件,用日志文件代替內存頁面進行傳輸。目的虛擬機收到日志文件后,執行日志中記錄的事件,回放源虛擬機的操作過程,達到與源虛擬機一致的內存狀態。和預拷貝類似,目的虛擬機在日志回放的過程中,源虛擬機會根據內存的改變不斷生成新的日志文件。在經過有限次的日志迭代拷貝后,掛起源虛擬機,一次性傳輸剩余的日志文件到目的虛擬機回放,回放完成后啟動目的虛擬機。
相對與內存頁面,日志具有的數據量小的特點,因此在動態遷移時的拷貝速率和網絡傳輸效率上有著天然的優勢,也只需要占用更少的虛擬機網絡帶寬,有利于優化整個平臺的網絡環境。
隨著局域網動態遷移技術的日益成熟,廣域網的動態遷移開始受到人們的關注。廣域網動態遷移相比與局域網最大的區別在于,源虛擬機和目的虛擬機處于不同的網段。而不同網段之間網絡的高延遲、低性能的特點,使得共享存儲不是存儲遷移的一個較為好的解決方案。所以,如何實現在較為惡劣的廣域網環境下,遷移高數據容量的虛擬機存儲成為我們要攻克的下一個技術難題。
[1]馬飛,劉峰,李竹伊.云計算環境下虛擬機快速實時遷移方法[J].北京郵電大學學報,2012,35(001):103-106.
[2]Park,Kim.Virtual Machine Migration in Self-managing Virtualized Server Environments[C].Dublin:Proceedings of the 11th International Conference on Advanced Communication Technology,2009.
[3]Krishnan.VM Power Metering:Feasibility and Challenges[C].New York:Proceedings of the Second Green Metrics Workshop,2010.
[4]江雪.基于Xen虛擬機的動態遷移技術研究[J].上海:上海交通大學計算機應用專業,2009.
[5]高翔.基于Xen的虛擬機動態遷移算法優化[D].哈爾濱:哈爾濱工業大學,2010.
[6]楊正宏.云計算技術指南:應用、平臺與架構[M].北京:化學工業出版社,2010.
Cloud Computing;Virtualization;Live Migration;Optization
Live Migration of Virtual Machine and Optimization Research
LIAO Guo-long,WANG Jing-ming
(College of Computer Science,Sichuan University,Chengdu 610065)
Abstarct:
As a new computing mode,cloud computing gets the attention of more and more widely with a flexible service feature.Virtualization technology is the solution for integration of cloud computing platform hardware resources,of which the virtual machine live migration technology plays a key role.Summarizes the mainstream of the virtual machine live migration solution,researches the algorithm and implementation mechanism,and gives a comprehensive analysis of the advantages and disadvantages of each algorithm,finally expounds the typical optimization scheme.
1007-1423(2016)05-0041-04
10.3969/j.issn.1007-1423.2016.05.009
廖國龍(1991-),男,四川南充人,碩士研究生,研究方向為網絡與信息安全
2016-01-05
2016-02-15
云計算作為一種新型的計算模式,靈活多變的服務特性使其得到越來越廣泛的關注。虛擬化技術是云計算平臺整合硬件資源的解決方案,而其中的虛擬機動態遷移技術起著重中之重的作用。綜述現今主流的虛擬機動態遷移解決方案,對其算法思想和實現機制進行研究介紹,并較為全面分析各算法的利弊,最后闡述比較典型的優化方案。
云計算;虛擬化;動態遷移;優化
王晉明(1990-),男,四川成都人,碩士研究生,研究方向為網絡與信息安全