廖國龍,王晉明(四川大學(xué)計算機學(xué)院,成都610000)
虛擬機動態(tài)遷移技術(shù)及優(yōu)化研究
廖國龍,王晉明
(四川大學(xué)計算機學(xué)院,成都610000)
近年來,為了滿足用戶多變而復(fù)雜的服務(wù)需求,云計算作為一種更加靈活的、高擴展性的計算模式得到了廣泛的應(yīng)用。云計算旨在讓用戶通過互聯(lián)網(wǎng)就可以得到快速、安全、真實的計算服務(wù)。目前,云計算平臺都采用虛擬化技術(shù)來整合硬件資源,降低計算機硬件體系結(jié)構(gòu)和軟件系統(tǒng)服務(wù)之間的耦合度,解決計算環(huán)境對硬件平臺的依賴,更加高效地利用硬件資源,提供靈活多變的使用環(huán)境。而其中虛擬機的遷移在平臺的負(fù)載均衡、高可用、資源管理方面都起著至關(guān)重要的作用。
虛擬機遷移是把虛擬機從一臺物理機器遷移到另一臺物理機器上,并在目的物理機恢復(fù)虛擬機的運行,分為靜態(tài)遷移和動態(tài)遷移兩種[1]。靜態(tài)遷移要求在遷移的過程中暫停虛擬機的服務(wù),主要面對沒有實時性要求的應(yīng)用,實現(xiàn)難度不大。動態(tài)遷移能夠在遷移時為用戶提供不間斷的服務(wù),具有更廣闊的應(yīng)用場景。本文將闡述動態(tài)遷移技術(shù)的實現(xiàn)及相關(guān)優(yōu)化策略。
虛擬機的動態(tài)遷移需要在不干涉虛擬機上服務(wù)運行的基礎(chǔ)上,把虛擬機在內(nèi)存狀態(tài)、存儲信息、網(wǎng)絡(luò)連接狀態(tài)等方面的數(shù)據(jù)遷移到目的節(jié)點,并保證遷移前后充分的一致性。通常把動態(tài)遷移分成三個部分:網(wǎng)絡(luò)遷移、存儲遷移、內(nèi)存遷移。
目前,絕大部分動態(tài)遷移都是指局域網(wǎng)里的虛擬機遷移,而局域網(wǎng)內(nèi)部實質(zhì)上是通過MAC地址來標(biāo)記機器的。所以,網(wǎng)絡(luò)遷移常見的方法是通過局域網(wǎng)內(nèi)部的ARP重定向,把待遷移虛擬機的IP地址綁定到目的機器上來實現(xiàn)[2]。而存儲遷移的通常解決方案是把虛擬機的存儲掛到獨立的共享存儲系統(tǒng)中。例如,OpenStack平臺通過把虛擬機的存儲外掛到NFS共享存儲,livemigration的過程中就只需要遷移內(nèi)存和網(wǎng)絡(luò)狀態(tài)就可以了。
而內(nèi)存遷移部分需要考慮到虛擬機上應(yīng)用的狀態(tài)、平臺的帶寬分配和CPU負(fù)荷對其他服務(wù)的影響等因素,涉及的數(shù)據(jù)量偏大,同時還要保證內(nèi)存一致性的原則,最為復(fù)雜。所以如何提高內(nèi)存遷移的效率是影響動態(tài)遷移性能的最重要因素。
一般來說,內(nèi)存遷移分為三個階段[3]:
(1)push階段:拷貝源虛擬機的內(nèi)存頁面到目的虛擬機,在此過程中源虛擬機運行服務(wù)不中斷;
(2)stop-and-copy階段:掛起源虛擬機,啟動目的虛擬機,并由目的虛擬機提供對外服務(wù);
(3)pull階段:目的虛擬機運行服務(wù)的過程中,如果出現(xiàn)內(nèi)存頁面與源虛擬機不一致的情況,發(fā)出頁面請求,獲取正確內(nèi)存頁面。
針對內(nèi)存遷移的三個階段的不同特性,能否做出的相應(yīng)優(yōu)化優(yōu)化,是衡量一個內(nèi)存遷移算法優(yōu)劣的基本思路。例如,在stop-and-copy階段會進(jìn)行停機拷貝,因而讓虛擬機產(chǎn)生一個宕機時間,在這個時間段內(nèi),虛擬機和I/O設(shè)備之間處于斷開狀態(tài),勢必會造成虛擬機服務(wù)質(zhì)量下降。故而宕機時間就成為衡量遷移性能的重要指標(biāo)之一。此外,內(nèi)存遷移時占用的網(wǎng)絡(luò)帶寬和對系統(tǒng)CPU的占有率也是影響動態(tài)遷移的重要因素。
目前主流的內(nèi)存遷移解決方案有4種:預(yù)拷貝方法(pre-copy)、后拷貝方法(post-copy)、混合拷貝方法和日志回放方法。
預(yù)拷貝算法是當(dāng)前主流的內(nèi)存動態(tài)遷移算法,它在push階段先拷貝源虛擬機所有的內(nèi)存頁面到目的虛擬機保存,并記錄在這個過程中產(chǎn)生變化的內(nèi)存頁面(臟頁面),然后僅拷貝臟頁面到目的虛擬機,并記錄新的臟頁面表,通過這樣迭代拷貝的方式逐步更新目的虛擬機的內(nèi)存狀態(tài),即第n輪迭代中只拷貝第n-1次迭代后發(fā)生變化的內(nèi)存頁面[4]。當(dāng)臟頁面的數(shù)量小于預(yù)定值時,就進(jìn)入stop-and-copy階段,然后啟動目的虛擬機。預(yù)拷貝算法在push階段的迭代使得臟頁面足夠小,使得stop-and-copy時停機時間極短,對虛擬機的應(yīng)用服務(wù)影響非常小。
然而,虛擬機的動態(tài)遷移要求運行在虛擬機上的服務(wù)持續(xù)運行,這就導(dǎo)致虛擬機內(nèi)存的任何頁面都有成為臟頁面的可能。特別是對于運行I/O頻繁服務(wù)的虛擬機,臟頁面的反復(fù)重傳會很大的增加迭代拷貝次數(shù)和降低平臺網(wǎng)絡(luò)的吞吐量。當(dāng)出現(xiàn)虛擬機臟頁面的產(chǎn)生速率大于迭代頁面的拷貝速率的情況下,理論上就會進(jìn)行無限迭代的過程。同時,push階段迭代拷貝過程中,大量的數(shù)據(jù)傳輸導(dǎo)致較高的網(wǎng)絡(luò)開銷,降低了虛擬機的網(wǎng)絡(luò)服務(wù)性能。
針對這個問題,通常有兩種解決方案:
(1)增加迭代退出條件。當(dāng)?shù)螖?shù)達(dá)到設(shè)定的上限值時,提前進(jìn)入stop-and-copy階段。但這樣會極大地增加停機時間,使虛擬機上運行的服務(wù)產(chǎn)生中斷;
(2)通過硬件控制等方法限定進(jìn)程對內(nèi)存的寫次數(shù)。通過限定內(nèi)存寫次數(shù),極大地降低了臟頁面的產(chǎn)生率,降低迭代拷貝次數(shù)。但這樣會對虛擬機上運行的原生服務(wù)產(chǎn)生影響,降低本身的服務(wù)性能。
2.1基于分層拷貝的優(yōu)化方法
分層拷貝算法是在臟頁面預(yù)測算法的基礎(chǔ)上的優(yōu)化。臟頁面預(yù)測算法是一種基于內(nèi)存局部性原理的附帶簡單的預(yù)測功能的預(yù)拷貝算法,其在源虛擬機中維護(hù)了兩張臟頁面位圖previous_dirty和present_dirty,分別記錄在上一次迭代和本次迭代過程中發(fā)生變化的內(nèi)存頁面。每輪迭代結(jié)束后,下次迭代拷貝哪些臟頁面由對應(yīng)的previous_dirty和present_dirty比特位共同決定。它的判定規(guī)則如下:
(1)當(dāng)previous_dirty和present_dirty都為0時,表示內(nèi)存頁在最近兩次迭代中都沒有被修改,不屬于臟頁面,不需要拷貝到目的虛擬機;
(2)當(dāng)previous_dirty=1且present_dirty=0時,表示內(nèi)存頁在前一次迭代中被修改而此次迭代沒有變化,表示該內(nèi)存頁已經(jīng)修改結(jié)束,將在下次迭代中拷貝,并令previous_dirty清零;
(3)當(dāng)previous_dirty=0且present_dirty=1時,表示內(nèi)存頁只在此次迭代中被修改,那么下次迭代時可能繼續(xù)被修改,因此不會立即拷貝,并在下次迭代前令previous_dirty為1且present_dirty為0;
(4)當(dāng)previous_dirty和present_dirty都為1時,表示內(nèi)存頁在最近兩次迭代中都被修改,屬于頻繁修改的臟頁面,將于最后一次迭代時拷貝。
臟頁面預(yù)測算法的缺點在于只把最近兩次迭代作為預(yù)測依據(jù),當(dāng)內(nèi)存訪問出現(xiàn)類似乒乓模型(即內(nèi)存頁面每隔1個迭代寫入一次)時,并不能改善臟頁面反復(fù)迭代拷貝的情況。
分層拷貝算法相對應(yīng)臟預(yù)測算法增加了算法對于內(nèi)存的檢測時間,更加全面的檢測一段時間內(nèi)的內(nèi)存狀態(tài),并在這基礎(chǔ)上平衡掉某些頁面在一小段時間內(nèi)的異?;钴S所帶來的判定誤差,記錄內(nèi)存頁近段時間被訪問的頻率,分成不同的層次,并在push階段中一直維護(hù),被修改的內(nèi)存頁向高層次移動,長時間未被修改的內(nèi)存頁向低層次移動,而在迭代時,按從低到高的層次拷貝。通過這種方式降低內(nèi)存頁面重復(fù)拷貝率,減少迭代時間,提高遷移性能。
2.2基于內(nèi)存壓縮的優(yōu)化方法
內(nèi)存壓縮算法在虛擬機的系統(tǒng)層次中邏輯加入了內(nèi)存壓縮層[5]。把在push過程中標(biāo)記為即將迭代的內(nèi)存頁都先放入內(nèi)存壓縮層,用壓縮算法壓縮成更小的塊封裝起來,遷移到目的虛擬機的壓縮層,再解壓并調(diào)入內(nèi)存使用。遷移過程中壓縮技術(shù)的引入可以有效地提高遷移性能和緩解對網(wǎng)絡(luò)帶寬的負(fù)載。一方面,壓縮要拷貝傳輸?shù)膬?nèi)存頁,相當(dāng)于變相地增加了源虛擬機和目的虛擬機之間的網(wǎng)絡(luò)帶寬,提高內(nèi)存頁的傳輸速率;另一方面,由于待傳輸?shù)臄?shù)據(jù)量減小,降低了平臺網(wǎng)絡(luò)流量,減少擁塞發(fā)生的頻率。
該算法的缺點是內(nèi)存頁壓縮時對CPU等物理資源的額外開銷會對虛擬機服務(wù)性能產(chǎn)生影響,因此選擇一個適合高效的壓縮算法至關(guān)重要。在MECOM算法中,通過識別內(nèi)存頁面的類型,針對不同的內(nèi)存頁面采用不同的壓縮方法,進(jìn)一步提高了遷移性能。
2.3基于帶寬分配的優(yōu)化方法
目前主流平臺在內(nèi)存遷移過程中,都采取的是默認(rèn)帶寬分配的方法。默認(rèn)帶寬分配方法采用的策略是:在push階段的每次迭代拷貝的過程中,先把待傳輸?shù)膬?nèi)存頁面放入系統(tǒng)內(nèi)部緩存,待緩存容量充滿后,傳輸?shù)綑C器物理網(wǎng)卡,由物理網(wǎng)卡選擇發(fā)送時機。在實際使用過程中,遇到物理帶寬占有率高的情況時,會導(dǎo)致大量需要傳輸?shù)膬?nèi)存頁面在物理網(wǎng)卡處擁塞,降低整個平臺的網(wǎng)絡(luò)性能,從而影響虛擬機服務(wù)的穩(wěn)定性。
基于帶寬分配的優(yōu)化方法會在整個遷移的過程中檢測平臺的網(wǎng)絡(luò)狀態(tài)。在push階段,記錄每輪迭代將要傳輸?shù)膬?nèi)存頁,在根據(jù)實時的網(wǎng)絡(luò)狀態(tài),按需分配網(wǎng)絡(luò)帶寬給傳輸服務(wù),以降低對虛擬機原生服務(wù)的影響。而在stop-and-copy階段,因為虛擬機處于宕機狀態(tài),在保證平臺網(wǎng)絡(luò)通信基本帶寬的基礎(chǔ)上,分配給傳輸服務(wù)最大剩余帶寬,極大地提高最后一次迭代拷貝的效率,減少宕機時間。
后拷貝算法沒有push階段,在遷移開始的時候掛起源虛擬機,然后僅將源虛擬機的CPU狀態(tài)拷貝到目的虛擬機,再在目的虛擬機上啟動服務(wù)[6]。當(dāng)目的虛擬機調(diào)用內(nèi)存的時候,產(chǎn)生缺頁異常,向源虛擬機發(fā)出缺頁請求,直到獲取所有的內(nèi)存頁面。
后拷貝算法所有內(nèi)存頁面都只需要通過一次傳輸,避免了臟頁面的頻繁重復(fù)拷貝,降低了平臺網(wǎng)絡(luò)帶寬的負(fù)載,在總遷移時間上優(yōu)于預(yù)拷貝算法。但同時后拷貝算法對源虛擬機的依賴較強,在目的虛擬機運行服務(wù)期間如果遇到頻繁的缺頁請求,I/O等待時間過長,對虛擬機上服務(wù)的性能影響較大。
基于主動推送的優(yōu)化方法
為了降低目的虛擬機對源虛擬機的依賴,源虛擬機除了響應(yīng)目的虛擬機的請求頁要求以外,主動傳輸內(nèi)存頁面,減少pull階段的時間。主動推送通常與請求頁預(yù)測同時應(yīng)用與后拷貝技術(shù)中。請求頁預(yù)測方法會記錄短時間內(nèi)收到的請求頁要求,根據(jù)請求頁在內(nèi)存中的邏輯位置和內(nèi)存的空間局部性原理,推測接下來請求頁的訪問位置,優(yōu)先推送訪問率高的內(nèi)存頁面,使得目的虛擬機上發(fā)生缺頁的頻率降低,緩解后拷貝算法對服務(wù)性能的影響。
預(yù)拷貝算法是針對push和stop-and-copy階段的解決方案,而后拷貝算法是針對stop-and-copy和pull階段的解決方案,兩種方案都沒有囊括完內(nèi)存遷移的整個過程。因此,混合拷貝算法應(yīng)運而生,它的遷移流程為:
(1)在push階段,由源虛擬機提供服務(wù),進(jìn)行一次預(yù)拷貝,傳輸源虛擬機的所有內(nèi)存頁面到目的虛擬機,并創(chuàng)建臟頁面位圖記錄這個過程中發(fā)生修改的內(nèi)存頁;
(2)在stop-and-copy階段,掛起源虛擬機,傳輸臟頁面位圖到目的虛擬機并啟動服務(wù);
(3)在pull階段,類似后拷貝的缺頁請求策略,當(dāng)系統(tǒng)訪問臟頁面位圖中標(biāo)記為真的內(nèi)存頁時,從源虛擬機獲取正確的內(nèi)存頁。
混合拷貝算法相對與預(yù)拷貝而言,沒有迭代拷貝臟頁面的過程,除了臟頁面會拷貝兩次以外,其它內(nèi)存頁都只會進(jìn)行一次拷貝,減少了數(shù)據(jù)流量和對網(wǎng)絡(luò)的負(fù)荷;相對于后拷貝,push階段的內(nèi)存頁傳輸使得目的虛擬機剛運行時已經(jīng)有了本地工作集,極大地降低了缺頁異常的發(fā)生。
與之前介紹的方法不同,日志回放算法并不是旨在提高內(nèi)存頁面在遷移過程中的拷貝傳輸性能,而是采用日志來代替內(nèi)存頁面進(jìn)行傳輸。該算法中,源虛擬機要記錄可能影響系統(tǒng)內(nèi)存狀態(tài)的事件,生成可執(zhí)行追蹤的日志文件,用日志文件代替內(nèi)存頁面進(jìn)行傳輸。目的虛擬機收到日志文件后,執(zhí)行日志中記錄的事件,回放源虛擬機的操作過程,達(dá)到與源虛擬機一致的內(nèi)存狀態(tài)。和預(yù)拷貝類似,目的虛擬機在日志回放的過程中,源虛擬機會根據(jù)內(nèi)存的改變不斷生成新的日志文件。在經(jīng)過有限次的日志迭代拷貝后,掛起源虛擬機,一次性傳輸剩余的日志文件到目的虛擬機回放,回放完成后啟動目的虛擬機。
相對與內(nèi)存頁面,日志具有的數(shù)據(jù)量小的特點,因此在動態(tài)遷移時的拷貝速率和網(wǎng)絡(luò)傳輸效率上有著天然的優(yōu)勢,也只需要占用更少的虛擬機網(wǎng)絡(luò)帶寬,有利于優(yōu)化整個平臺的網(wǎng)絡(luò)環(huán)境。
隨著局域網(wǎng)動態(tài)遷移技術(shù)的日益成熟,廣域網(wǎng)的動態(tài)遷移開始受到人們的關(guān)注。廣域網(wǎng)動態(tài)遷移相比與局域網(wǎng)最大的區(qū)別在于,源虛擬機和目的虛擬機處于不同的網(wǎng)段。而不同網(wǎng)段之間網(wǎng)絡(luò)的高延遲、低性能的特點,使得共享存儲不是存儲遷移的一個較為好的解決方案。所以,如何實現(xiàn)在較為惡劣的廣域網(wǎng)環(huán)境下,遷移高數(shù)據(jù)容量的虛擬機存儲成為我們要攻克的下一個技術(shù)難題。
[1]馬飛,劉峰,李竹伊.云計算環(huán)境下虛擬機快速實時遷移方法[J].北京郵電大學(xué)學(xué)報,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虛擬機的動態(tài)遷移技術(shù)研究[J].上海:上海交通大學(xué)計算機應(yīng)用專業(yè),2009.
[5]高翔.基于Xen的虛擬機動態(tài)遷移算法優(yōu)化[D].哈爾濱:哈爾濱工業(yè)大學(xué),2010.
[6]楊正宏.云計算技術(shù)指南:應(yīng)用、平臺與架構(gòu)[M].北京:化學(xué)工業(yè)出版社,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-),男,四川南充人,碩士研究生,研究方向為網(wǎng)絡(luò)與信息安全
2016-01-05
2016-02-15
云計算作為一種新型的計算模式,靈活多變的服務(wù)特性使其得到越來越廣泛的關(guān)注。虛擬化技術(shù)是云計算平臺整合硬件資源的解決方案,而其中的虛擬機動態(tài)遷移技術(shù)起著重中之重的作用。綜述現(xiàn)今主流的虛擬機動態(tài)遷移解決方案,對其算法思想和實現(xiàn)機制進(jìn)行研究介紹,并較為全面分析各算法的利弊,最后闡述比較典型的優(yōu)化方案。
云計算;虛擬化;動態(tài)遷移;優(yōu)化
王晉明(1990-),男,四川成都人,碩士研究生,研究方向為網(wǎng)絡(luò)與信息安全