引言
虛擬機(jī)(Viaual Machine。VM)技術(shù)常常應(yīng)用于數(shù)據(jù)中心、集群計(jì)算等場合。該技術(shù)讓多個(gè)操作系統(tǒng)可以運(yùn)行在同一個(gè)物理機(jī)器上,并提供了可靠的隔離,大大提高了物理資源的復(fù)用性。
隨著虛擬機(jī)技術(shù)的盛行,VMM(Virtual MachineMonitor)的概念也隨之推廣,VMM是建它在虛擬機(jī)和硬件中間的隔離層,它可以有效地協(xié)調(diào),分配和管理在虛擬機(jī)中運(yùn)行的客戶操作系統(tǒng)。XEN是一種混合模式的VMM,它是準(zhǔn)虛擬化技術(shù)的代表,這表示,為了調(diào)用系統(tǒng)管理程序,要有選擇地修改操作系統(tǒng),而不需要修改操作系統(tǒng)上運(yùn)行的應(yīng)用程序。XEN占用資源少,其虛擬機(jī)性能與真實(shí)機(jī)器性能相差3%左右。
虛擬機(jī)遷移對(duì)于分布式數(shù)據(jù)中心和集群的負(fù)載均衡和災(zāi)難恢復(fù)有非常重大的意義,Vmware、Intel和微軟目前都在進(jìn)行虛擬機(jī)遷移相關(guān)的研究。虛擬機(jī)動(dòng)態(tài)遷移停機(jī)時(shí)間很短,可使服務(wù)中斷最小,從而實(shí)現(xiàn)動(dòng)態(tài)負(fù)載均衡和服務(wù)器在線維護(hù),將成為新的發(fā)展趨勢。
1 相關(guān)工作
Collective項(xiàng)目把VM的遷移當(dāng)作一種方法,該方法使得在不同時(shí)間使用不同位置物理主機(jī)的用戶得到便利,比如用戶在從家里到公司的途中,OS的實(shí)例從家里的計(jì)算機(jī)遷移到公司的計(jì)算機(jī)上。這個(gè)項(xiàng)目是在ADSL慢速連接上進(jìn)行的,在遷移時(shí)停止了OS的執(zhí)行,并減小映像文件的大小,使得網(wǎng)絡(luò)帶寬占用小、總遷移時(shí)間比較快。相對(duì)的,本文是在比較快的網(wǎng)絡(luò)鏈接環(huán)境下,實(shí)現(xiàn)了更小的downtime。
Zap是基于修改后的Linux內(nèi)核的項(xiàng)目,采用了部分的US虛擬化,支持名為pods的進(jìn)程級(jí)虛擬機(jī)的遷移,這種進(jìn)程虛擬機(jī)實(shí)際上是一組進(jìn)程的集合。Zap的方法是把進(jìn)程對(duì)內(nèi)核的接口,如文件句柄、socket,都獨(dú)立出來并放到一個(gè)可遷移的容器中。這種方法比Collective項(xiàng)目的速度快,主要是因?yàn)檫w移的單位更小,而且Zap的遷移也不支持動(dòng)態(tài)遷移。
NomadBIOS}0是一個(gè)基于L4microkernel的虛擬化的遷移系統(tǒng)。NomadBIOS采用了pre-copy遷移來實(shí)現(xiàn)盡可能小的downtime。但它沒有涉及到工作集的概念。
本文小結(jié)了相關(guān)工作,采用了預(yù)拷貝技術(shù),基于XEN的開源環(huán)境,進(jìn)行了同一個(gè)局域網(wǎng)內(nèi)不同物理機(jī)器之間的虛擬機(jī)動(dòng)態(tài)遷移的研究。
2 虛擬機(jī)動(dòng)態(tài)遷移模型
要實(shí)現(xiàn)動(dòng)態(tài)遷移,必須達(dá)到以下幾點(diǎn)要求。
1)最小中斷:遷移時(shí)盡量使停機(jī)時(shí)間最小,因?yàn)樵谕C(jī)時(shí)間內(nèi)任何服務(wù)都無法執(zhí)行。
2)一致性:總遷移時(shí)間不要太長,因?yàn)檫@段時(shí)間內(nèi)2臺(tái)機(jī)器狀態(tài)必須同步,可能會(huì)影響穩(wěn)定性。
3)最小干擾:保證遷移不會(huì)通過資源爭奪來干擾正在活動(dòng)的服務(wù),如CPU、網(wǎng)絡(luò)帶寬。
4)透明性:遷移過程對(duì)用戶應(yīng)該是透明的,在遷移期間,要維持所有的網(wǎng)絡(luò)連接、應(yīng)用程序狀態(tài)。本文將通過預(yù)拷貝(pre-copy)方法來實(shí)現(xiàn)這個(gè)要求。
虛擬機(jī)的遷移包括文件系統(tǒng)、內(nèi)存、網(wǎng)絡(luò)連接等完整的狀態(tài)和資源的遷移,這樣才能保證遷移后的虛擬機(jī)能在新的計(jì)算機(jī)上恢復(fù)且繼續(xù)運(yùn)行。其中,文件系統(tǒng)的遷移可以通過網(wǎng)絡(luò)文件系統(tǒng)NFS的方式解決。XEN已經(jīng)實(shí)現(xiàn)了局域網(wǎng)內(nèi)的網(wǎng)絡(luò)連接重定向,通過發(fā)送ARP重定向包,將虛擬機(jī)的IP地址與目的機(jī)器的MAC地址相綁定,之后的所有包就可以發(fā)送到目的機(jī)器上。內(nèi)存中數(shù)據(jù)量大,且內(nèi)容是動(dòng)態(tài)變化的,因此內(nèi)存的遷移難度最大,本文將重點(diǎn)介紹內(nèi)存遷移的部分。
2. 1內(nèi)存遷移的階段
一般說來,內(nèi)存遷移有三個(gè)階段。
1)push階段。一些頁面從源VM通過網(wǎng)絡(luò)被push到目的機(jī)器,而源VM運(yùn)行不間斷,為了保證數(shù)據(jù)一致性,被修改了的頁面需要重傳。
2)stop-and-copy階段。源VM停止,頁面被傳送到目的VM,然后啟動(dòng)新的VM。
3)pull階段。新的VM執(zhí)行,如果訪問到?jīng)]有被拷貝的頁面,出現(xiàn)頁錯(cuò)誤并且從源VM處執(zhí)行pull得到該頁面。
實(shí)際的做法是選取三個(gè)階段中的1或2個(gè)。純粹的stopand-copy階段,雖然實(shí)現(xiàn)簡單,但是停頓時(shí)間、總遷移時(shí)間與VM分得的物理內(nèi)存成正比,性能低下。本文采用了預(yù)拷貝遷移方法,由有限次push階段和stop-and-copy階段組成。pre-copy的push階段是分為多次迭代執(zhí)行的,在第一次傳送全部頁面,第n次傳送的頁面是第n一1次中被修改了的頁面。每個(gè)VM都有一定的頁面集合會(huì)經(jīng)常被修改,這些頁面不利于pre-copy方法,被稱為可寫工作集。我們通過分析可寫工作集來限制pre-copy的迭代次數(shù)。
2.2遷移的步驟
我們把遷移過程視作兩個(gè)主機(jī)之間的事務(wù)交互,具體的步驟如下。
1)預(yù)遷移。在物理主機(jī)A上啟動(dòng)一個(gè)VM。預(yù)先選好接受遷移VM的目的主機(jī)B。
2)預(yù)定。從主機(jī)A向主機(jī)B發(fā)起一個(gè)遷移請(qǐng)求。我們先確認(rèn)B上有遷移所必須的資源,并且預(yù)定一個(gè)適當(dāng)大小的VM容器。如果B上資源不夠,VM繼續(xù)在A執(zhí)行。
3)迭代的pre-copy。在第一次迭代中,所有的頁面被A傳送到B,后來的迭代過程只拷貝前一次傳送頁面中被修改的頁面。我們限制r最大迭代次數(shù),并且對(duì)遷移造成的網(wǎng)絡(luò)負(fù)擔(dān)進(jìn)行了限制,一旦達(dá)到最高限度將停止迭代。
4)stop-and-copy階段。掛起主機(jī)A上運(yùn)行中的US實(shí)例,CPU狀態(tài)和任何其他的不一致的內(nèi)存頁面被傳送。在這階段,A和B都有VM的掛起的拷貝。A上的拷貝為主,萬一失敗,將在A上繼續(xù)執(zhí)行。
5)提交。主機(jī)B通知A,它已經(jīng)成功收到了一致的US映象,主機(jī)A收到這個(gè)消息后可以拋棄原來的VM,此時(shí)以主機(jī)B上的映像為主。
6)激活。已遷移的VM在B上被激活并正常運(yùn)行。
假定源主機(jī)在遷移事務(wù)提交前一直穩(wěn)定,VM在源主機(jī)上可以安全的掛起、重啟動(dòng),這個(gè)方法可以保證在遷移過程中任何時(shí)候至少一個(gè)主機(jī)有此VM的映象。這樣不管遇到什么錯(cuò)誤,都可以在本地恢復(fù)。
2.3模型的優(yōu)化
XEN是準(zhǔn)虛擬化的VMM,可以讓US感知到真實(shí)的和虛擬的環(huán)境的區(qū)別,這種優(yōu)點(diǎn)使得遷移時(shí)的優(yōu)化成為可能。我們?cè)谶w移前先通知US,并且在以下幾個(gè)方面改進(jìn)性能。
1)寫錯(cuò)誤的限制。pre-copy遷移時(shí)最好的情況是,內(nèi)存頁面被復(fù)制到目的主機(jī)的速度比變臟的速度快。但是實(shí)際情況通常相反。在遷移開始時(shí)在OS內(nèi)核中fork一個(gè)監(jiān)控線程,這個(gè)監(jiān)管線程可以監(jiān)視每個(gè)進(jìn)程的工作集。在每個(gè)進(jìn)程進(jìn)人等待隊(duì)列前,給它們加上不得超過40個(gè)寫錯(cuò)誤的限制,這樣就可以轄制妨礙到遷移的進(jìn)程,但是必須保證不會(huì)打擊到一些重要的交互式服務(wù)。
2)釋放page cache的頁面。在OS中,總會(huì)有一些空閑頁面,可能是完全空閑的或者在冷卻的buffer cache中,遷移開始前,US可以把這些頁面中的一些或者全部都交給XEN,這樣第一次復(fù)制的時(shí)間就被減少很多。不過再次需要這些頁面的內(nèi)容時(shí)候,就要從磁盤中讀了,這樣引起更大的開銷,需要權(quán)衡二者利弊。
3 動(dòng)態(tài)遷移模型的評(píng)測
3. 1評(píng)測環(huán)境
1)硬件環(huán)境:實(shí)驗(yàn)在兩臺(tái)支持Intel VT-x技術(shù)的計(jì)算機(jī)上進(jìn)行,這兩臺(tái)機(jī)器配置如下:
CPU:Intel Core 2 6320 1 .86 CHZ
內(nèi)存:1024 MB
磁盤:60 GB
網(wǎng)絡(luò)連接:100 Mbps以太網(wǎng)
2)軟件環(huán)境:實(shí)驗(yàn)在安裝了XEN 3. 1. 0的Fedora7(2. 6. 18)系統(tǒng)上進(jìn)行。在下面的實(shí)驗(yàn)中,若無特殊說明,所有的虛擬機(jī)都是分配了6GB的磁盤空間,2個(gè)VCPU,通過XEN模擬的RTL8139虛擬網(wǎng)卡借由Domain0連到網(wǎng)絡(luò)。另外根據(jù)不同實(shí)驗(yàn)口的,在虛擬機(jī)上安裝了相應(yīng)的軟件。
3.2評(píng)測方案設(shè)計(jì)
本文把遷移過程中因虛擬機(jī)停止運(yùn)行而造成的服務(wù)中斷時(shí)間稱為停機(jī)時(shí)間,而將虛擬機(jī)開始遷移到整個(gè)遷移結(jié)束的時(shí)間稱為總遷移時(shí)間。實(shí)驗(yàn)主要分為動(dòng)態(tài)遷移(live)和靜態(tài)遷移(non_live)兩種遷移方式,live方式采用了pre-copy方法,non_live方式是純粹的stop-and-copy,故其總遷移時(shí)間就是停機(jī)時(shí)間。
為了測量不同大小內(nèi)存對(duì)虛擬機(jī)遷移的影響,分別測試了128MB,256MB,512MB內(nèi)存下不同虛擬機(jī)的遷移情況。另外不同的負(fù)載情況一也會(huì)影響虛擬機(jī)遷移過程,本文設(shè)計(jì)了CPU密集型、內(nèi)存密集型、I/0密集型的遷移實(shí)驗(yàn),另外做了一組無負(fù)載的遷移實(shí)驗(yàn)作為對(duì)比。以卜是兒種實(shí)驗(yàn)方案的具體設(shè)置和實(shí)驗(yàn)數(shù)據(jù)。
1)無負(fù)載型。這組實(shí)驗(yàn)遷移的是基礎(chǔ)系統(tǒng),在虛擬機(jī)中沒有安裝任何軟件。由于是在無負(fù)載的情況下進(jìn)行實(shí)驗(yàn),臟頁率比較低,所以迭代次數(shù)很少。
表1無負(fù)載虛擬化系統(tǒng)的遷移
2)CPU密集型。通過這組實(shí)驗(yàn)測量CPU密集的情況對(duì)虛擬機(jī)遷移的影響。采用的方法是在遷移的同時(shí),編譯虛擬機(jī)的內(nèi)核。
在這組實(shí)驗(yàn)中,停機(jī)時(shí)間是無負(fù)載情況下的7倍左右,128MB,256MB,512MB情況下分別是靜態(tài)遷移的停機(jī)時(shí)間的34.9%,15.9%,8.70%,停機(jī)時(shí)間隨內(nèi)存的增加有所縮短。由于在編譯內(nèi)核時(shí)進(jìn)行遷移,臟頁率較無負(fù)載時(shí)高,但臟頁速度沒有超過遷移速度,沒有達(dá)到迭代終止條件,當(dāng)達(dá)到預(yù)設(shè)的最大迭代次數(shù)(30)時(shí),才進(jìn)行停機(jī)拷貝。
表2 CPU密集型虛擬化系統(tǒng)的遷移
3)I/O密集型。通過這組實(shí)驗(yàn)測量I/O密集的情況對(duì)虛擬機(jī)遷移的影響。使用netperf工具,讓控制域Domain0成為server端,虛擬機(jī)作為client端,在遷移的同時(shí),虛擬機(jī)不斷向Domain0發(fā)包,從而形成I/O密集型的遷移。
表3 網(wǎng)絡(luò)I/O密集型虛擬化系統(tǒng)的遷移
在這組實(shí)驗(yàn)中,停機(jī)時(shí)間是無負(fù)載情況下的2到3倍左右,128MB,256MB,512MB情況下分別是靜態(tài)遷移的停機(jī)時(shí)間的8.88%,3.61%,3.00%,停機(jī)時(shí)間與內(nèi)存大小沒有明顯的關(guān)系。由于頁速度快,大于遷移速度,因此遷移開始后不久即達(dá)到迭代終止條件,迭代次數(shù)較少,但略多于內(nèi)存密集型。
4)內(nèi)存密集型。通過這組實(shí)驗(yàn)測量內(nèi)存密集的情況對(duì)虛擬機(jī)遷移的影響。用C語言編寫了一個(gè)寫內(nèi)存的小程序,在遷移的同時(shí),運(yùn)行這個(gè)程序則自動(dòng)向虛擬機(jī)內(nèi)存執(zhí)行寫操作,每次寫人數(shù)據(jù)量為虛擬機(jī)內(nèi)存大小的一半,形成內(nèi)存密集型的遷移。
表4 內(nèi)存密集型負(fù)載虛擬化系統(tǒng)的遷移
表5 不同負(fù)載情況的比較
在這組實(shí)驗(yàn)中,停機(jī)時(shí)間是無負(fù)載情況下的2倍左右,128MB,256MB,512MB情況下分別是靜態(tài)遷移的停機(jī)時(shí)間的7.53%,4.39%,1.96%,停機(jī)時(shí)間與內(nèi)存大小沒有明顯的關(guān)系。這種情況臟頁率最高,臟頁速度遠(yuǎn)遠(yuǎn)大于遷移速度,因此遷移開始后不久即達(dá)到迭代終止條件,迭代次數(shù)非常少,僅比無負(fù)載情況略有增加。
3.3評(píng)測結(jié)果分析
1)不同內(nèi)存大小。由圖1-3可知,內(nèi)存大小對(duì)于遷移時(shí)間有明顯影響。live方式的遷移,總遷移時(shí)間與內(nèi)存大小基本成正比,然而停機(jī)時(shí)間與內(nèi)存大小無關(guān);non_live方式的遷移,停機(jī)時(shí)間與內(nèi)存基本成正比。
2)動(dòng)態(tài)和靜態(tài)遷移。從圖1-圖3來看,live方式的總遷移時(shí)間總是比non_ive方式要長。由表1一表4可知在CPU密集型實(shí)驗(yàn)中,live方式總遷移時(shí)間是non_live方式的2到3倍,其他幾種負(fù)載live方式是non_live方式的1.2倍左右。
圖1 128MB內(nèi)存在四種負(fù)載情況下的遷移時(shí)間
圖2 256MB內(nèi)存在四種負(fù)載情況下的遷移時(shí)間
圖3 512MB內(nèi)存在四種負(fù)載情況下的遷移時(shí)間
但live方式的停機(jī)時(shí)間總是遠(yuǎn)遠(yuǎn)小于non_live方式的停機(jī)時(shí)間,128MB,256MB,512MB的停機(jī)時(shí)間分別是non_live方式的4.8%,2.1%,1%。
說明live方式比non_live方式總遷移時(shí)間稍長但可以忍受,而且被遷移虛擬機(jī)的服務(wù)中斷時(shí)間要少很多,可以提高虛擬機(jī)在遷移時(shí)的可用性。
3)不同負(fù)載對(duì)遷移時(shí)間的影響。從圖1一圖3可以看出,在內(nèi)存大小相同的情況下,負(fù)載的不同導(dǎo)致總遷移時(shí)間和停機(jī)時(shí)間也不相同。由表1一表4可知,I/O密集和內(nèi)存密集型的總遷移時(shí)間分別為無負(fù)載時(shí)的1.07倍、1.2倍,而CPU密集型負(fù)載是無負(fù)載時(shí)的2.2倍;I/O密集和內(nèi)存密集型的停機(jī)時(shí)間分別為無負(fù)載時(shí)的2.15倍、1.84倍,而CPU密集型負(fù)載是無負(fù)載時(shí)的7.75倍。說明CPU密集型負(fù)載對(duì)XEN的動(dòng)態(tài)遷移影響比較大。
4 結(jié)語
本文在總結(jié)相關(guān)工作的基礎(chǔ)上,研究了虛擬機(jī)動(dòng)態(tài)遷移方法,并設(shè)計(jì)了4種不同負(fù)載下的遷移實(shí)驗(yàn)。實(shí)驗(yàn)數(shù)據(jù)表明CPU密集型負(fù)載對(duì)遷移的影響最大,I/O和內(nèi)存密集型影響較小。動(dòng)態(tài)遷移方式的停機(jī)時(shí)間總是遠(yuǎn)遠(yuǎn)小于傳統(tǒng)靜態(tài)遷移方式的停機(jī)時(shí)間,內(nèi)存越大,靜態(tài)遷移停機(jī)時(shí)間越長,但動(dòng)態(tài)遷移停機(jī)時(shí)間變化不大,說明動(dòng)態(tài)遷移可以顯著改善服務(wù)性能。本文主要在局域網(wǎng)進(jìn)行遷移,今后會(huì)向廣域網(wǎng)遷移發(fā)展,為了保持虛擬機(jī)的網(wǎng)絡(luò)連接,需要采用移動(dòng)IP或者動(dòng)態(tài)DNS等網(wǎng)絡(luò)重定向技術(shù)}SJ;如果在集群中要遷移整個(gè)磁盤內(nèi)容,可以在目的主機(jī)上建立一個(gè)cow的磁盤鏡像,支持塊設(shè)備遷移。
核心關(guān)注:拓步ERP系統(tǒng)平臺(tái)是覆蓋了眾多的業(yè)務(wù)領(lǐng)域、行業(yè)應(yīng)用,蘊(yùn)涵了豐富的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)載請(qǐng)注明出處:拓步ERP資訊網(wǎng)http://www.ezxoed.cn/
本文標(biāo)題:虛擬機(jī)動(dòng)態(tài)遷移的研究
本文網(wǎng)址:http://www.ezxoed.cn/html/support/1112159202.html