廖劍偉,陳善雄,李莉
(西南大學(xué) 計(jì)算機(jī)與信息科學(xué)學(xué)院,重慶 400715)
隨著云計(jì)算技術(shù)的發(fā)展,虛擬化技術(shù)推動(dòng)著整合計(jì)算機(jī)硬件和軟件系統(tǒng)并向外界提供彈性、可擴(kuò)展性和可靠性的虛擬化服務(wù)[1]。虛擬機(jī)(VM, virtual machine)復(fù)制技術(shù)是云計(jì)算環(huán)境下提高系統(tǒng)可靠性的重要機(jī)制,一旦主虛擬機(jī)所屬的物理機(jī)器發(fā)生崩潰或者主虛擬機(jī)本身發(fā)生崩潰而無法繼續(xù)提供服務(wù)時(shí),位于云計(jì)算機(jī)環(huán)境中的其他物理機(jī)器上的備份虛擬機(jī)會(huì)接替已崩潰的主虛擬機(jī)重新向外界提供服務(wù),從而提高服務(wù)的可用性和系統(tǒng)的可靠性[2,3,17]。
在主虛擬機(jī)正常工作狀態(tài)下,需要同步主虛擬機(jī)和備份虛擬機(jī)狀態(tài),通常通過檢查點(diǎn)技術(shù)或者其他技術(shù)將主虛擬機(jī)的虛擬磁盤和內(nèi)存狀態(tài)定期的保存并通過網(wǎng)絡(luò)發(fā)送至備份虛擬機(jī)幫助其更新虛擬機(jī)狀態(tài),使備份虛擬機(jī)與主虛擬機(jī)最近的檢查點(diǎn)時(shí)狀態(tài)一致[2,4,5]。然而系統(tǒng)性能是虛擬機(jī)同步操作的最大挑戰(zhàn),通常虛擬機(jī)可能占據(jù)幾GB的內(nèi)存,因此同步虛擬機(jī)狀態(tài)是一個(gè)相當(dāng)重量級(jí)的操作[2,5]。為了減少虛擬機(jī)同步操作時(shí)主虛擬機(jī)的停止運(yùn)行時(shí)間、內(nèi)存復(fù)制和網(wǎng)絡(luò)傳送的數(shù)據(jù)量,諸如預(yù)復(fù)制(pre-copy)[6]、I/O deduplication[7]和寫時(shí)復(fù)制(copyon-write)[8]等優(yōu)化技術(shù)相繼被提出,盡管這些技術(shù)從一定程度上減少了虛擬機(jī)同步操作帶來的性能代價(jià),但是沒有從根本上解決需要處理并通過網(wǎng)絡(luò)傳送的龐大數(shù)據(jù)量。以寫時(shí)復(fù)制為例,它需要保存自上一同步點(diǎn)以來的發(fā)生變化的所有頁面,即使某頁面僅僅改變了一個(gè)字節(jié),也需要保存并發(fā)送該完整的內(nèi)存頁面[8]。
本文提出了一種基于內(nèi)存分塊相異數(shù)據(jù)的虛擬機(jī)同步技術(shù)。在進(jìn)行同步操作時(shí),主虛擬機(jī)通過基于內(nèi)容和地址的二維散列表逐一尋找與發(fā)生變化的頁面(dirty pages)分塊最優(yōu)匹配的未變化頁面(non-dirty pages)分塊,同時(shí)找出頁面分塊之間的數(shù)據(jù)相異部分,即補(bǔ)??;最后通過XOR壓縮方法對(duì)相異數(shù)據(jù)進(jìn)行壓縮編碼并傳送給備份虛擬機(jī)。備份虛擬機(jī)在接收到數(shù)據(jù)后進(jìn)行解碼并重構(gòu)主虛擬機(jī)端的發(fā)生變化的內(nèi)存頁面,并更新其虛擬機(jī)狀態(tài)。同時(shí),為了減少主虛擬機(jī)的停止運(yùn)行時(shí)間,在進(jìn)行XOR數(shù)據(jù)壓縮時(shí),主虛擬機(jī)在寫時(shí)復(fù)制模式下保持運(yùn)行狀態(tài)。不同于傳統(tǒng)的異步同步方式,基于內(nèi)存分塊相異數(shù)據(jù)的虛擬機(jī)同步機(jī)制僅需處理和保存發(fā)生變化的頁面分塊與對(duì)應(yīng)的未發(fā)生變化的最優(yōu)匹配頁面分塊的相異數(shù)據(jù)和描述相異數(shù)據(jù)位移信息,大大減少了主虛擬機(jī)端需要處理、保存和通過網(wǎng)絡(luò)傳送的數(shù)據(jù)量,從而提高主虛擬機(jī)在同步操作時(shí)的系統(tǒng)性能。
定量分析了不同基準(zhǔn)測(cè)試程序的內(nèi)存數(shù)據(jù)信息,說明在應(yīng)用程序的內(nèi)存地址空間中不同頁面分塊的相異數(shù)據(jù)較小,即通過實(shí)驗(yàn)分析在同一應(yīng)用程序的內(nèi)存地址空間內(nèi),屬于不同頁面的分塊之間相異數(shù)據(jù)字節(jié)數(shù)占分塊大小的百分比。選取了Linux Kernel Compile、SPECweb 2005 Banking,SPECweb 2005 E-Commerce和Exchange Load Generator共4種不同的高可靠性基準(zhǔn)測(cè)試程序[9,10]來分析內(nèi)存頁面分塊的數(shù)據(jù)相異性,其中前3種基準(zhǔn)測(cè)試程序運(yùn)行在Debian Linux虛擬機(jī)環(huán)境,Exchange Load Generator運(yùn)行在Windows Server 2003虛擬機(jī)環(huán)境。
1) Linux Kernel Compile:使用默認(rèn)配置,編譯Linux Kernel Version 2.6.31。
2) SPECweb 2005 Banking:模擬網(wǎng)上銀行,多用戶同時(shí)訪問帳號(hào),事務(wù)處理等操作,采用基于SSL協(xié)議進(jìn)行數(shù)據(jù)傳輸[11]。
3) SPECweb 2005 E-commerce:模擬網(wǎng)上商店,多用戶同時(shí)瀏覽、選擇和購(gòu)買商品等,采用了基于SSL協(xié)議和普通HTTP協(xié)議進(jìn)行數(shù)據(jù)傳輸[11]。
4) Exchange Load Generator:模擬多用戶同時(shí)發(fā)送和閱讀郵件,瀏覽工作議程等[12]。
在實(shí)驗(yàn)中,使用大小為5 000內(nèi)存頁面的RUDP(recently used dirty pages)緩存來保存最近使用過的Dirty頁面,緩存采用LRU策略進(jìn)行頁面替換。通過追蹤RUDP緩存記錄基準(zhǔn)測(cè)試程序的Non-Zero Dirty內(nèi)存頁面。同時(shí),將這些Dirty內(nèi)存頁面分割成固定大小的頁面分塊,利用3.1節(jié)提及的二維散列表查找相異數(shù)據(jù)最少的Non-Zero Non-Dirty內(nèi)存頁面中的分塊,稱之為最優(yōu)匹配頁面分塊。
圖1顯示在不同大小的頁面分塊的條件下,對(duì)應(yīng)于Non-Zero Dirty頁面分塊的最優(yōu)匹配的Non-Zero Non-Dirty頁面分塊的數(shù)據(jù)相異性。從圖1中可以看出,隨著分塊逐漸變小,頁面分塊的數(shù)據(jù)相異性逐漸變小。以SPECweb2005 Banking為例,相比于分塊為4KB,當(dāng)分塊大小為64B時(shí)(13.4%),最優(yōu)匹配頁面分塊的內(nèi)容相異度降低超過13.2%(即26.6%~13.4%)。但是,頁面分塊變小直接增加了尋找最優(yōu)匹配分塊的時(shí)間,也間接帶來額外的整合、保存、發(fā)送同步數(shù)據(jù)的性能代價(jià)。通過重復(fù)實(shí)驗(yàn)比較,將分塊大小固定為512byte時(shí),可以獲取較好的頁面分塊相異度(即相異數(shù)據(jù)的大小)與性能代價(jià)之間的平衡點(diǎn)。
基于存儲(chǔ)器分塊相異數(shù)據(jù)的虛擬機(jī)同步機(jī)制的基本算法如圖2所示,與傳統(tǒng)的直接收集Dirty頁面并將其從主虛擬機(jī)端傳送至備份虛擬機(jī)端不同,本文算法中的虛擬機(jī)同步操作主要分為以下3步。
圖1 基準(zhǔn)測(cè)試程序的內(nèi)存分塊數(shù)據(jù)相異性
1) 主虛擬機(jī)停止運(yùn)行以確保狀態(tài)的一致性,找出內(nèi)存地址空間中所有Dirty頁面分塊的最優(yōu)匹配頁面分塊。
2) 將Dirty頁面分塊與最優(yōu)匹配頁面分塊之間相異數(shù)據(jù)(即存儲(chǔ)器內(nèi)容補(bǔ)?。﹫?zhí)行XOR操作,附加相異數(shù)據(jù)的分塊位移信息進(jìn)行編碼;將編碼后的數(shù)據(jù)置于I/O緩沖區(qū)并通過網(wǎng)絡(luò)傳送至備份虛擬機(jī)。為了減少主虛擬機(jī)的停止時(shí)間,一旦編碼后的數(shù)據(jù)置于I/O緩沖區(qū),主虛擬機(jī)立即重啟繼續(xù)運(yùn)行。
3) 備份虛擬機(jī)接收到主虛擬機(jī)發(fā)送的數(shù)據(jù)后,通過解析壓縮數(shù)據(jù),結(jié)合頁面分塊的位移信息,從而在備份虛擬機(jī)中重構(gòu)在主虛擬機(jī)端發(fā)生變化的頁面;最后將發(fā)生變化的頁應(yīng)用于備份虛擬機(jī)中完成同步操作。
圖2 基于內(nèi)存分塊數(shù)據(jù)相異性的虛擬機(jī)復(fù)制技術(shù)體系結(jié)構(gòu)
因?yàn)镈irty頁面分塊與最優(yōu)匹配頁面分塊之間相異數(shù)據(jù)、分塊位移信息和其他輔助信息的數(shù)據(jù)量要遠(yuǎn)遠(yuǎn)小于Dirty頁面本身的數(shù)據(jù)量,因此在主虛擬機(jī)端處理、保存和通過網(wǎng)絡(luò)傳送的數(shù)據(jù)量大大減少,從而有效的提高了主虛擬機(jī)的系統(tǒng)性能,減少了主虛擬機(jī)的停止運(yùn)行時(shí)間。
K-clustering[13]和R-trees[14]等算法可以精確的查找最優(yōu)匹配內(nèi)存頁面分塊,但是這些算法較高的時(shí)間復(fù)雜度太高,過長(zhǎng)的查找時(shí)間直接導(dǎo)致主虛擬機(jī)的停止服務(wù)時(shí)間變長(zhǎng),因此該類算法并不適用于虛擬機(jī)同步操作。因此本文提出了一種快速、基于內(nèi)存頁面分塊內(nèi)容的查找近似的最優(yōu)匹配頁面分塊的算法。
與Run-Length Encoding (RLE)[15]向量壓縮機(jī)制類似,本文算法首先將內(nèi)存頁面分塊劃分為32個(gè)子區(qū)域,當(dāng)子區(qū)域內(nèi)的比特位為1的總位數(shù)超過設(shè)定的閥值(注:該閥值與頁面分塊大小和具體的應(yīng)用程序相關(guān),通過實(shí)驗(yàn)發(fā)現(xiàn)將該閥值設(shè)為子區(qū)域位數(shù)的80%較為合適),則該子區(qū)域?qū)?yīng)的散列值為1,否則為0。最終,對(duì)每個(gè)內(nèi)存頁面分塊,都有一個(gè)相應(yīng)的32位的內(nèi)存頁面分塊的內(nèi)容散列值。在查找最優(yōu)匹配頁面分塊時(shí),認(rèn)為具有一樣或者最為接近的內(nèi)容散列值的頁面分塊具有最優(yōu)匹配性。
為了讓內(nèi)存頁面分塊內(nèi)容與地址相對(duì)應(yīng),提出了包括地址和內(nèi)容的二維散列函數(shù)查找最優(yōu)匹配內(nèi)存頁面分塊。圖3顯示了二維散列表的構(gòu)成,每一個(gè)None-zero內(nèi)存頁面分塊由一個(gè)內(nèi)存描述符(memory descriptor)表示,該描述符包括內(nèi)存頁面分塊的地址散列值以及相對(duì)應(yīng)的頁面分塊的內(nèi)容散列值。當(dāng)不同的內(nèi)存描述符具有相同的內(nèi)容散列值時(shí),說明這些內(nèi)存頁面分塊極有可能是最優(yōu)匹配頁面分塊。在主虛擬機(jī)收集同步數(shù)據(jù)時(shí),一旦某頁面分塊被確定為Dirty頁面分塊,則其相對(duì)應(yīng)的內(nèi)存分塊描述符會(huì)從二維散列表中刪除,以確保存其他Dirty頁面分塊不會(huì)尋找它作為最優(yōu)匹配頁面分塊。
圖3 基于地址和內(nèi)容的二維散列表
通過基于內(nèi)容和地址的散列表查找到最優(yōu)匹配內(nèi)存頁面分塊,為了減少置于I/O緩沖區(qū)和通過網(wǎng)絡(luò)傳送的數(shù)據(jù)量,提出了基于XOR的數(shù)據(jù)壓縮機(jī)制。如圖4所示,找出dirty頁面分塊與最優(yōu)匹配頁面分塊的數(shù)據(jù)相異比特位,執(zhí)行XOR操作形成相異頁面分塊(diff);最后將相異頁面分塊的有效比特位作為同步消息的一部分。其中同步消息中的bitmask記錄相異比特位的分塊位移信息,幫助備份虛擬機(jī)重構(gòu)在主虛擬機(jī)端發(fā)生變化內(nèi)存頁面。
圖4 基于XOR的數(shù)據(jù)壓縮
基于Linux KVM實(shí)現(xiàn)了本文提出的基于內(nèi)存分塊相異數(shù)據(jù)的虛擬機(jī)同步機(jī)制。圖5顯示了Linux KVM的體系結(jié)構(gòu),這里不再介紹各模塊的具體功能。為了使Linux KVM各模塊支持虛擬機(jī)復(fù)制和同步功能,除利用開源的BLCR 0.80[8]作為檢查點(diǎn)模塊外,還修改了Linux KVM的功能模塊,約4 000行的源代碼。
圖5 Linux KVM 體系結(jié)構(gòu)
3.3.1 寫時(shí)復(fù)制(copy-on-write)
寫時(shí)復(fù)制技術(shù)是一項(xiàng)在操作系統(tǒng)中的常用的優(yōu)化技術(shù),為了減少主虛擬機(jī)在同步操作時(shí)的停止運(yùn)行時(shí)間,在進(jìn)行XOR壓縮分塊相異數(shù)據(jù)時(shí),主虛擬機(jī)在寫時(shí)復(fù)制模式下運(yùn)行。與傳統(tǒng)意義上的寫時(shí)復(fù)制技術(shù)不同,在基于內(nèi)存分塊數(shù)據(jù)相異性的虛擬機(jī)同步操作中,由于XOR壓縮線程與虛擬機(jī)本身共享相同的內(nèi)存地址空間,一旦虛擬機(jī)需要向頁面寫操作時(shí),新的頁面會(huì)被通過復(fù)制方式創(chuàng)建,虛擬機(jī)便向新頁面進(jìn)行寫操作。然而,XOR壓縮線程關(guān)心的是寫入數(shù)據(jù)之前的頁面。為了解決這個(gè)問題,本文算法在寫時(shí)復(fù)制之前將原始頁面映射到另一虛擬地址,并將映射信息記錄在臨時(shí)轉(zhuǎn)換表中供XOR壓縮線程訪問和查詢。因此,在KVM的最底層,為了支持qemu-kvm模塊中XOR線程對(duì)原始頁面的訪問,對(duì)KVM內(nèi)核模塊的寫時(shí)復(fù)制的功能模塊進(jìn)行了修改和一定程度的擴(kuò)展。
3.3.2 查找、壓縮和I/O緩沖
虛擬機(jī)的同步操作相關(guān)的各個(gè)功能模塊,包括尋找最優(yōu)內(nèi)存頁面分塊和XOR數(shù)據(jù)壓縮模埠的實(shí)現(xiàn)等都在qemu-kvm模塊中。另外,通過修改qemu-kvm模塊中的virtio驅(qū)動(dòng)以支持虛擬機(jī)同步操作時(shí)的磁盤I/O和網(wǎng)絡(luò)緩沖機(jī)制,磁盤I/O緩沖區(qū)利用散列表加快數(shù)據(jù)的讀寫操作;網(wǎng)絡(luò)緩沖主要是在暫存發(fā)送的同步信息數(shù)據(jù)分組,當(dāng)備份虛擬機(jī)準(zhǔn)備好接收同步信息數(shù)據(jù)分組后,處于緩沖區(qū)的所有同步數(shù)據(jù)分組才會(huì)通過網(wǎng)絡(luò)進(jìn)行傳送。
為了評(píng)價(jià)基于內(nèi)存分塊相異數(shù)據(jù)的虛擬機(jī)同步技術(shù),通過各種實(shí)驗(yàn)與傳統(tǒng)的虛擬機(jī)復(fù)制技術(shù)(即虛擬機(jī)同步技術(shù))進(jìn)行了比較。因?yàn)樘摂M機(jī)同步操作時(shí),備份虛擬機(jī)一直處于一種待機(jī)狀態(tài),所以實(shí)驗(yàn)僅測(cè)試和記錄主虛擬機(jī)端進(jìn)行同步操作時(shí)帶來的系統(tǒng)性能代價(jià)。本節(jié)首先介紹實(shí)驗(yàn)平臺(tái),然后根據(jù)基準(zhǔn)測(cè)試程序類型分別介紹相應(yīng)的實(shí)驗(yàn)結(jié)果并進(jìn)行分析和討論。
圖6 編譯內(nèi)核時(shí)間
使用了3臺(tái)服務(wù)器運(yùn)行虛擬機(jī),具體性能參數(shù)如表1所示;在服務(wù)器上運(yùn)行操作系統(tǒng)為Debian Linux和windows server 2003的虛擬機(jī),均采用virtio磁盤和網(wǎng)絡(luò)驅(qū)動(dòng)程序。同時(shí),使用2臺(tái)Windows XP和Debian Linux的臺(tái)試機(jī)分別運(yùn)行Exchange Load Generator和SPECweb客戶端腳本。
表1 服務(wù)器性能參數(shù)
通過編譯默認(rèn)設(shè)置的Linux內(nèi)核2.6.31為bzImage文件,分別記錄采用原始方式(Native VM)、標(biāo)準(zhǔn)異步同步方式(Reg Async)[3]、本文算法(Sim Comp)、寫時(shí)復(fù)制機(jī)制的本文算法(Sim comp+COW)等不同虛擬機(jī)運(yùn)行方式時(shí)所需的運(yùn)行時(shí)間。
其中,原始方式指直接在未修改的Linux KVM上執(zhí)行內(nèi)核編譯所需要的運(yùn)行時(shí)間;標(biāo)準(zhǔn)異步虛擬機(jī)方式指主虛擬機(jī)停止運(yùn)行以確保狀態(tài)的一致性,然后收集所有的Dirty頁面并將其置于I/O緩沖區(qū)后,主虛擬機(jī)立即重啟運(yùn)行,即通過網(wǎng)絡(luò)傳送Dirty頁面數(shù)據(jù)操作與主虛擬機(jī)的運(yùn)行是并發(fā)完成;本文算法是指在主虛擬機(jī)停止運(yùn)行后,通過尋找最優(yōu)匹配頁面分塊、XOR壓縮后并置于I/O緩沖區(qū),隨即主虛擬機(jī)重啟運(yùn)行,最后壓縮并編碼的同步數(shù)據(jù)通過網(wǎng)絡(luò)傳送至備份虛擬機(jī);寫時(shí)復(fù)制的本文算法是指在XOR數(shù)據(jù)壓縮時(shí),主虛擬機(jī)運(yùn)行于寫時(shí)復(fù)制模式,因此主虛擬機(jī)的停止時(shí)間相對(duì)于本文算法的普通模式會(huì)有所減少。
圖6顯示了采用不同方式編譯Linux內(nèi)核所需的時(shí)間。原始方式不需要產(chǎn)生和處理同步數(shù)據(jù)并進(jìn)行傳送,所以它需要的運(yùn)行時(shí)間最少;然而由于標(biāo)準(zhǔn)異步方式需要收集所有的Dirty頁面并將其置于I/O緩沖區(qū),所以它需要的運(yùn)行時(shí)間最長(zhǎng);本文算法以及寫時(shí)復(fù)制的本文算法所需要收集、處理和發(fā)送的數(shù)據(jù)量要遠(yuǎn)少于標(biāo)準(zhǔn)異步方式,因此分別約減少約17.2%和30.0%的運(yùn)行時(shí)間。
同時(shí)分析了當(dāng)基準(zhǔn)測(cè)試程序?yàn)閮?nèi)核編譯時(shí),分別采用標(biāo)準(zhǔn)異步方式與本文算法進(jìn)行虛擬機(jī)同步操作需要處理的同步消息數(shù)據(jù)量。從圖7可知,本文算法收集和處理并通過網(wǎng)絡(luò)傳送的數(shù)據(jù)量要遠(yuǎn)小于標(biāo)準(zhǔn)異步方式,僅為標(biāo)準(zhǔn)異步方式約30%的數(shù)據(jù)量。
圖7 編譯內(nèi)核的數(shù)據(jù)傳輸量
運(yùn)行SPECweb基準(zhǔn)測(cè)試程序需要3臺(tái)機(jī)器,一臺(tái)機(jī)器運(yùn)行實(shí)際的SPECweb基準(zhǔn)測(cè)試程序,另一臺(tái)作為后備機(jī)器,在實(shí)驗(yàn)中使用了2臺(tái)虛擬機(jī)來模擬實(shí)際機(jī)器,即一臺(tái)虛擬機(jī)為主虛擬機(jī),另一臺(tái)為備份虛擬機(jī);第3臺(tái)臺(tái)式機(jī)被用來運(yùn)行客戶端腳本。
實(shí)驗(yàn)首先通過調(diào)整設(shè)置,使得在原始虛擬機(jī)中運(yùn)行得到99%的“good answer”(該數(shù)據(jù)是由運(yùn)行客戶端腳本的機(jī)器端報(bào)告)。在標(biāo)準(zhǔn)異步方式和本文算法進(jìn)行同步操作時(shí)都采用同樣的調(diào)整設(shè)置;由于SPECweb對(duì)于網(wǎng)絡(luò)延遲敏感的基準(zhǔn)測(cè)試程序,所以設(shè)置主虛擬機(jī)與備份虛擬機(jī)的同步操作的時(shí)間間隔為50ms。
圖8顯示了分別采用2種不同的同步機(jī)制時(shí)行虛擬機(jī)同步操作時(shí),主虛擬機(jī)端帶來的系統(tǒng)性能代價(jià)。其中,圖8(a)顯示了在Banking子基準(zhǔn)測(cè)試程序時(shí)客戶端的響應(yīng)報(bào)告。在標(biāo)準(zhǔn)異步方式中,僅僅約45%的“good answers”,本文算法可以帶來約88%的“good answers”;另一方面,在“tolerable answers”指標(biāo)中,本文提出的算法也要高于標(biāo)準(zhǔn)異步方式。圖8(b)顯示當(dāng)子基準(zhǔn)測(cè)試程序?yàn)镋-Commerce的客戶端響應(yīng)報(bào)告,同樣本文明顯優(yōu)于標(biāo)準(zhǔn)異步方式。
圖8 SPECweb 2005 Banking & E-Commerce數(shù)據(jù)
同時(shí)分析了當(dāng)基準(zhǔn)測(cè)試程序?yàn)镾PECweb2005-Banking時(shí),采用標(biāo)準(zhǔn)異步方式與本文算法進(jìn)行虛擬機(jī)同步操作需要處理的同步消息數(shù)據(jù)量。從圖9可知,本文算法收集和處理并通過網(wǎng)絡(luò)傳送的數(shù)據(jù)量要遠(yuǎn)小于標(biāo)準(zhǔn)異步方式,是它約20%的數(shù)據(jù)量。
本節(jié)的實(shí)驗(yàn)均在Windows環(huán)境下完成,在Windows2003 Server虛擬機(jī)下部署Microsoft Exchange Server 2007。Exchange Server軟件向外界客戶端提供e-mail,日志,通訊錄等系統(tǒng)服務(wù)。同時(shí),在運(yùn)行Windows XP的臺(tái)試機(jī)中運(yùn)行Windows Exchange Load Generator應(yīng)用程序模擬多用戶同時(shí)請(qǐng)求Exchange Server服務(wù)。需要指出實(shí)驗(yàn)中僅僅服務(wù)器端是使用備份虛擬機(jī)以提供系統(tǒng)容錯(cuò),虛擬機(jī)同步操作的時(shí)間間隔為50ms;本文算法支持寫時(shí)復(fù)制功能。
圖10(a)顯示了使用不同的虛擬機(jī)同步機(jī)制時(shí),10分鐘內(nèi)Exchange Server完成的總?cè)蝿?wù)數(shù)。與在原始虛擬機(jī)方式下完成超過10 000任務(wù)數(shù)相比,采用標(biāo)準(zhǔn)異步方式進(jìn)行虛擬機(jī)同步操作環(huán)境下的完成任務(wù)數(shù)下降為3 954,而采用本文算法進(jìn)行虛擬機(jī)同步操作環(huán)境下的完成任務(wù)數(shù)達(dá)到了7 100。性能提高近80%。圖10(b)顯示了不同子任務(wù)完成所需的時(shí)間延遲,因?yàn)镽equestMeeting子任務(wù)的時(shí)間延遲大大超出其他子任務(wù),所以完成該子任務(wù)時(shí)間延遲并沒有完成顯示出來,同樣,本文算法要明顯優(yōu)于標(biāo)準(zhǔn)異步方式。
定量分析不同應(yīng)用程序的內(nèi)存地址空間的不同頁面分塊數(shù)據(jù)相異性。通過實(shí)驗(yàn)觀察,發(fā)現(xiàn)內(nèi)存頁面分塊與前一階段的某些頁面分塊(即從前一階段開始,該內(nèi)存頁面數(shù)據(jù)未發(fā)生變化)的數(shù)據(jù)相異性較小。當(dāng)內(nèi)存頁面分塊為512byte時(shí),內(nèi)存分塊的相異性為20%左右。基于該發(fā)現(xiàn),本文提出了一種基于內(nèi)存分塊數(shù)據(jù)相異性的虛擬機(jī)同步技術(shù),該方法在主虛擬機(jī)端通過基于地址和內(nèi)容的散列函數(shù)表尋找與Dirty內(nèi)存頁面分塊的最優(yōu)匹配Non-dirty內(nèi)存頁面分塊,將兩個(gè)內(nèi)存分塊的相異數(shù)據(jù)通過XOR壓縮技術(shù)進(jìn)行壓縮后加上分塊的位移信息整合進(jìn)行編碼,通過網(wǎng)絡(luò)傳遞給備份虛擬機(jī)。備份虛擬機(jī)對(duì)接收到數(shù)據(jù)進(jìn)行解碼,重組在主虛擬機(jī)端的Dirty內(nèi)存頁面,從而完成備份虛擬機(jī)的同步操作。
圖10 Microsoft Exchange Server數(shù)據(jù)
與傳統(tǒng)的標(biāo)準(zhǔn)異步虛擬機(jī)復(fù)制技術(shù)直接收集所有Dirty內(nèi)存頁面相比,通過基于內(nèi)容與地址的散列表技術(shù)查找指定內(nèi)存分塊的最優(yōu)匹配內(nèi)存分塊可以減少近30%的性能代價(jià)。另外,基于XOR的壓縮方法可以減少80%的網(wǎng)絡(luò)通信量,對(duì)于部分基準(zhǔn)測(cè)試程序而言,本文算法可提高性能高達(dá)90%,適用于對(duì)延遲敏感的應(yīng)用程序的主虛擬機(jī)與備份虛擬機(jī)之間的同步操作。不過,需要指出本文提出的算法需要在主虛擬機(jī)端查找最優(yōu)匹配內(nèi)存分塊和進(jìn)行數(shù)據(jù)壓縮,當(dāng)虛擬機(jī)的內(nèi)存空間為1GB時(shí),大約需要額外的70MB的內(nèi)存空間存儲(chǔ)散列表和部分中間數(shù)據(jù),同時(shí)也需要額外30%CPU計(jì)算機(jī)資源進(jìn)行XOR數(shù)據(jù)壓縮。
[1] MORENO-VOZMEDIANO R, MONTERO R, LLORENTE I. Elastic management of cluster-based services in the cloud [A]. Proceedings of the 1st Workshop on Automated Control for Datacenters and Clouds[A]. Barcelona, Spain, 2009. 19-24.
[2] VOORSLUYS W, BROBERG J, VENUGOPAL S, etal. Cost of virtual machine live migration in clouds: a performance evaluation[A].Proceedings of the 1st International Conference on Cloud Computing[C]. Beijing, China, 2009. 254-265.
[3] CULLY B, LEFEBVRE G, MEYER D, etal. Remus: high availability via asynchronous virtual machine replication[A]. Proceedings of the 5th USENIX Symposium on Networked Systems Design and Implementation[C]. San Francisco, USA, 2008. 161-174.
[4] SAPUNTZAKIS C P, CHANDRA R, PFAFF B, etal. Optimizing the migration of virtual computers[J]. ACM SIGOPS Operating Systems Review, 2002, 36(SI): 377-390.
[5] ZHU J, DONG W, JIANG Z, etal. Improving the performance of hypervisor-based fault tolerance[A]. Proceedings of International Parallel and Distributed Processing Symposium[C]. Georgia, USA, 2010.1-10.
[6] CLARK C, FRASER K, HAND S, etal. Live migration of virtual machines[A]. Proceedings of the 2nd Conference on Symposium on Networked Systems Design & Implementation[C]. Berkeley, CA,USA, 2005. 273-286.
[7] KOLLER R, RANGASWAMI R. I/O deduplication: utilizing content similarity to improve I/O performance [J]. ACM Transaction on Storage, 6(13): 1-26, 2010.
[8] VRABLE M, MA J, CHEN J, etal. Scalability, fidelity, and containment in the potemkin virtual honeyfarm[J]. SIGOPS Oper Syst Rev,200539(5): 148-162.
[9] LAGAR-CAVILLA H A, TOLIA N, LARA E, etal. Interactive resource-intensive applications made easy[A]. Proceedings of 8th International Middleware Conference[C]. Grenoble, France, 2005. 143-163.
[10] LU M, CKER CHIUEH T. Fast memory state synchronization for virtualization-based fault tolerance[A]. Proceedings of IEEE/IFIP Inter-national Conference on Dependable Systems Networks[C]. Lisbon,Portugal, 2009. 534-543.
[11] HARIHARAN R, SUN N. Workload characterization of SPEC-web2005[EB/OL].http://www.spec.org/workshops/2006/papers/02_Workload_char_SPECweb2005_Final.pdf, 2012.
[12] Microsoft Corporation. Microsoft exchange load generator [EB/OL].http://www.msexchange.org/articles/Microsoft-Exchange-Load-Gener ator.html, 2012.
[13] GUTTMAN A. R-trees: a dynamic index structure for spatial searching[A]. Proceedings of the 1984 ACM SIGMOD International Conference on Management of Data (SIGMOD ’84)[C]. Massachusetts,USA, 1984. 47-57.
[14] HARTIGAN J A. Clustering Algorithms[M]. New York: John Wiley&Sons, Inc, 1975.
[15] ZHANG X, HUO Z, MA J, etal. Exploiting data deduplication to accelerate live virtual machine migration[A]. proceedings of 2010 IEEE International Conference on Cluster Computing (CLUSTER ‘10)[C].Crete, Greece, 2010. 88-96.
[16] 懷進(jìn)鵬, 李沁, 胡春明. 基于虛擬機(jī)的虛擬計(jì)算環(huán)境研究與設(shè)計(jì)[J]. 軟件學(xué)報(bào),2007,18(8):2016-2026.HUAI J P, LI Q, HU C M, Research and design on hypervisor based virtual computing environment[J]. Journal of Software, 2007,18(8):2016-2026.
[17] 孫昱. 虛擬機(jī)Xen及其實(shí)時(shí)遷移技術(shù)研究[D]. 上海:上海交通大學(xué),2008.SUN Y. A study of Xen and Live Migration[D]. Shanghai: Shanghai-Jiaotong University, 2008.