劉豐年
(1.河南科技大學(xué)應(yīng)用工程學(xué)院 三門峽 472000)(2.三門峽職業(yè)技術(shù)學(xué)院 三門峽 472000)
近年來,云計算技術(shù)[1~4]的高速發(fā)展為人們帶來了巨大的便利。其中,由于能夠構(gòu)建更為快速的內(nèi)存數(shù)據(jù)庫以及進行更為高效實時的大數(shù)據(jù)分析,具有大量內(nèi)存的虛擬機(Virtual Machine,VM)技術(shù)更是在云計算框架中獲得了廣泛的應(yīng)用。然而,當需要進行較大內(nèi)存VM資源遷移時,往往需要事先找到具有足夠可用內(nèi)存的目標主機。此外,由于具有大內(nèi)存量的主機價格高昂,私有云無法承擔(dān)這筆費用,即便在公共云中,總是保留許多大型主機用以對數(shù)據(jù)中心(Data Center,DC)進行大規(guī)模維護也不經(jīng)濟。
目前,幾類主流的VM遷移算法包括:
1)早期的純粹VM遷移算法[5~6]:該類算法出現(xiàn)較早,幾乎不涉及人工智能的相關(guān)算法,且通常以能源節(jié)約為主要指標;
2)涉及人工智能思想的VM遷移算法:引入粒子群算法[7~8]、蟻群算法、貪心算法[9~10]、遺傳算法[11]等進行VM資源的分配與遷移,該類算法相對第1)類算法性能上有了很大的提升;
3)依托Cloudsim平臺[12]進行的VM遷移算法:該類算法將VM遷移過程劃分為物理主機狀態(tài)檢測、VM選擇以及VM放置三個階段,綜合考慮了VM遷移過程中涉及的多個因素,綜合衡量VM遷移環(huán)境,并對VM選擇與VM放置過程進行優(yōu)化,最終得出VM遷移方案。
除了將VM進行整體遷移外,還有一些學(xué)者提出對VM進行拆分遷移[13],即將一個大內(nèi)存VM劃分為若干個小規(guī)模的VM片段,并將其傳輸?shù)蕉鄠€較小的主機,即一個主主機與一個或多個子主機。該類思想將VM中諸如CPU等核心狀態(tài)信息傳輸?shù)街髦鳈C,并將未來可能訪問的VM資源傳輸?shù)街髦鳈C,而將其余的內(nèi)存?zhèn)鬏數(shù)阶又鳈C。完成拆分遷移后,VM資源可以在主主機和子主機間執(zhí)行遠程分頁實現(xiàn)跨主機運行。然而,如果采用傳統(tǒng)的遷移機制對VM資源進行遷移,即使僅維護部分主機也需要將整個VM進行遷移。不僅如此,頻繁的遠程分頁也會導(dǎo)致遷移性能的大幅降低。為此,本文設(shè)計了一種基于當下流行的Quick Emulator[14]和Kernel Virtual Machine[15](QEMU-KVM)技術(shù)的VM遷移仿真系統(tǒng)。該系統(tǒng)涉及replace,merge和divide三種遷移過程。其中,replace遷移負責(zé)將主主機或子主機中的VM資源片段傳輸?shù)揭慌_新主機,并僅替換運行拆分內(nèi)存VM主機中的一臺主機;merge遷移負責(zé)將VM主機中的VM片段合并遷移并傳輸?shù)揭慌_主機,從而完成VM資源的整合,有效避免了之后的遠程分頁操作;divide遷移是在當目標主機內(nèi)存空間有限且需要進行replace遷移時,先將VM片段進行劃分為若干子片段,再執(zhí)行replace遷移操作。仿真實驗表明,相比傳統(tǒng)遷移方式,本文設(shè)計的系統(tǒng)具有更低的遷移時間開銷。
VM資源遷移是指在不停止VM運行的前提下將正在一臺主機上運行的VM資源遷移到另一臺主機,采用VM遷移技術(shù)可以在不中斷服務(wù)的情況下對運行VM資源的主機進行維護。此外,還可以通過對VM資源進行拆解實現(xiàn)負載均衡,也可以將VM資源進行整合實現(xiàn)節(jié)能。具體的VM資源遷移過程如下:首先,在目標主機上創(chuàng)建新VM;其次,將目標VM的內(nèi)存?zhèn)鬏數(shù)叫耉M,并重新傳輸在VM遷移期間更新的內(nèi)存;再次,傳輸剩余的更新內(nèi)存和諸如CPU信息的核心狀態(tài);最后,在目標主機上運行新VM。需要注意的是目標主機的可用內(nèi)存資源應(yīng)大于要遷移的VM內(nèi)存大小。圖1給出了VM資源遷移示意圖,其中,首先將VM內(nèi)存劃分為若干個VM片段;然后,將源主機的核心狀態(tài)信息以及若干個內(nèi)存片段M1,M2,…,Mn傳輸?shù)饺舾芍鳈C,其中保存有核心狀態(tài)信息的主機為主主機,而包含有部分VM片段信息的主機稱為子主機。顯然,VM資源的內(nèi)存采用了分布式存儲方式,當主主機需要子主機中的內(nèi)存片段時,主主機和子主機之間將通過執(zhí)行遠程分頁來加以實現(xiàn)。當VM核心需要存在于子主機中的內(nèi)存時,該內(nèi)存將從子主機分頁到主主機,而在交換過程中,最不可能訪問的內(nèi)存將從主主機置換到子主機。由于可能訪問的內(nèi)存在遷移時已經(jīng)提前傳輸?shù)街髦鳈C,從而有效降低了遠程分頁的頻率。
圖1 VM資源遷移示意圖
需要說明的是,當工作集小于主主機中的內(nèi)存量時,VM性能等價于執(zhí)行資源遷移前的性能;當工作集大于主主機中的內(nèi)存量時,則會不可避免地發(fā)生頻繁的遠程分頁,導(dǎo)致執(zhí)行性能的下降。此外,當需要維護某臺主機時,始終必須事先將該臺主機上的VM資源遷移到其他主機,相應(yīng)地又衍生出兩種情況,若被遷移的主機能夠完全容納遷移進入的資源量,則必須暫時作為普通VM資源運行從而避免遠程分頁;若被遷移的主機無法完全容納遷移進入的資源量,則還需要再次對資源進行劃分和遷移。然而,傳統(tǒng)遷移方式通常采用片段內(nèi)存資源的整體遷移,且當需要維護部分主機時,其他主機中的VM片段也必須傳輸?shù)侥繕酥鳈C,這種機制效率低下,嚴重制約了VM資源的性能提升。不僅如此,傳統(tǒng)遷移方式還會導(dǎo)致許多從子主機到主主機的page in操作,主主機的性能大幅降低。
為了在一定程度上緩解當前VM資源遷移中面臨的突出問題,本文基于當下流行的QEMU-KVM技術(shù),設(shè)計了一種基于QEMU-KVM的VM遷移仿真系統(tǒng)。其中,主主機需要維護四張表,包括分頁表、子主機表、分頁標記表、位置信息表。分頁表管理從頁幀號到主機標識符的映射,子主機表管理從主主機標識符到子主機網(wǎng)絡(luò)信息及IP地址信息的映射;分頁標記表用于記錄當前是否發(fā)生了page in或page out遠程分頁操作,若發(fā)生page in或page out則進行標識,并對其他page in或page out請求“上鎖”;位置信息表用于記錄從頁幀號到指向頁中包含的內(nèi)存數(shù)據(jù)的指針的映射。不同于主主機的是,子主機僅需要維護三張表即分頁表、遠程分頁標記表和位置信息表。本文設(shè)計的基于QEMU-KVM的VM遷移仿真系統(tǒng)架構(gòu)如圖2所示。
不同于傳統(tǒng)的VM資源遷移方式,本文設(shè)計的系統(tǒng)將源主機中運行的VM片段的一部分或全部遷移到目標主機,具體包括replace,merge和divide三種遷移過程。
replace是一種部分遷移過程,具體包含主主機replace和子主機replace兩種情況。主主機replace遷移過程是指將自身包含的核心狀態(tài)信息和VM片段傳輸給目標主機,該主機將成為目標主主機,不同于傳統(tǒng)遷移方式,源子主機的VM片段不進行遷移。因此,遷移完畢后,目標主主機將與源子主機進行遠程分頁;子主機replace遷移過程是指將自身包含的VM片段傳輸給目標主機,該目標主機將成為目標子主機,不同于傳統(tǒng)遷移方式,源主主機包含的核心狀態(tài)信息和VM片段并不進行遷移。因此,遷移完畢后,源主主機將與目標子主機進行遠程分頁。顯然,當僅需要對部分主機進行維護時,只需要將對應(yīng)主機的資源進行遷移即可,而其他相關(guān)主機則無需進行資源遷移,大大提升了遷移效率。需要說明的是:
1)在源主主機replace遷移期間,若源主主機發(fā)生了page in操作,且page in操作獲取的內(nèi)存片段尚未傳輸或更新后尚未傳輸,為了保證內(nèi)存的一致性,本文設(shè)計的系統(tǒng)會將該內(nèi)存片段傳輸?shù)侥繕酥髦鳈C;若源主主機發(fā)生了page out操作,且該內(nèi)存片段已被傳輸?shù)侥繕酥髦鳈C,則本文設(shè)計的系統(tǒng)將目標主主機中的對應(yīng)內(nèi)存片段置為無效。具體操作為:在源主主機上,采用QEMU-KVM技術(shù)先行將源主主機中的內(nèi)存片段傳輸?shù)侥繕酥鳈C,并在其中的位置信息表中進行記錄,而對于源子主機中的內(nèi)存片段,僅將所在網(wǎng)絡(luò)信息及IP地址發(fā)送給目標主機。若源主主機在replace遷移中發(fā)生了page in或page out操作,則采用QEMU-KVM選擇是否進行重傳并更新目標主機的位置信息表。待源主主機完成遠程分頁操作后,再將核心狀態(tài)信息傳輸給目標主機,并將該目標主機作為目標主主機。此后,遷移之后,源子主機將會與目標主主機之間執(zhí)行遠程分頁。
2)在源子主機replace遷移期間,本文設(shè)計的系統(tǒng)也將執(zhí)行與源主主機replace遷移相似的操作。然而,不同于源主主機replace遷移,源子主機replace遷移不會將VM核心狀態(tài)信息傳輸?shù)侥繕酥鳈C。采用QEMU-KVM技術(shù)將該源子主機中存在的內(nèi)存片段傳輸?shù)侥繕俗又鳈C,并在位置信息表進行記錄。若在源子主機在replace遷移中發(fā)生了page in或page out操作,則采用與源主主機replace遷移相似的操作,源主主機更新子主機網(wǎng)絡(luò)信息及IP地址信息,并建立源主主機與目標子主機之間的遠程分頁信息。
merge遷移過程負責(zé)將多個不同主機上的VM片段進行傳輸與整合,并置于一臺主機中,具體包含兩種情況。當對源主主機和源子主機進行merge遷移時,源主主機中的核心狀態(tài)信息和VM片段以及源子主機中的VM片段均被傳輸?shù)揭慌_新的目標主主機或一臺源主機。當僅針對源子主機進行merge遷移時,源子主機中的VM片段將被傳輸?shù)揭慌_新的目標子主機或一臺源子主機。顯然,由于對原有的VM資源信息進行了有效合并,存放這些資源的主機數(shù)量將會減少,相應(yīng)的遠程分頁開銷也會隨之降低。本文設(shè)計的系統(tǒng)支持多個主機內(nèi)存片段的并行傳輸,并將整個VM內(nèi)存最終保持到一臺目標主機上。本質(zhì)上,merge遷移可看作源主主機的replace遷移與所有源子主機的replace遷移的并行傳輸。本文設(shè)計的系統(tǒng)通過在目標主機上使用多塊網(wǎng)卡,并為每塊網(wǎng)卡創(chuàng)建一個路由表,并根據(jù)分配給網(wǎng)卡的網(wǎng)絡(luò)信息及IP地址信息添加路由表規(guī)則,采用QEMU-KVM技術(shù)將源主主機和源子主機中的核心狀態(tài)信息和內(nèi)存片段傳輸?shù)侥繕酥鳈C,并在其中的位置信息表中進行記錄,從而實現(xiàn)從源主主機和源子主機的內(nèi)存片段并行傳輸。
divide遷移過程負責(zé)將一臺主機中的VM片段進行進一步劃分,生成尺寸更小的VM子片段。具體包括兩種情況。當對源主主機進行divide遷移時,源主主機中的VM片段被分解為若干個子片段,其中一個VM子片段和核心狀態(tài)信息仍保存在源主主機,而其他VM子片段將會被遷移至新主機;或者將VM子片段和核心狀態(tài)信息遷移至新主機,此時該源主主機將不再是主主機。當對源子主機進行divide遷移時,所有VM子片段會遷移至新主機或源子主機中僅保留一個子片段。顯然,當在進行replace遷移時,若目標主機內(nèi)存空間有限,則可以采取divide機制先進行VM片段劃分,再執(zhí)行遷移操作。
為了驗證本文所設(shè)計的VM遷移仿真系統(tǒng)的有效性,本節(jié)進行了一系列性能仿真實驗。有兩點需要說明:1)為了便于比較,本節(jié)中涉及的傳統(tǒng)遷移方法為經(jīng)典的一對一遷移模式;2)由于divide遷移本質(zhì)上仍屬于replace遷移,因此在本節(jié)的仿真實驗中不再進行額外討論。本文涉及到的仿真實驗的運行環(huán)境為Ubuntu 16.04和QEMU-KVM 2.4,選用的主主機配置為Intel Xeon E5-2678 v3CPU和64GB內(nèi)存。此外,還選用了四臺子主機,其中兩臺子主機的配置為Intel Core i7-10700CPU和64GB內(nèi)存,另兩臺子主機的配置為Intel Xeon E5-2678 v2CPU和32GB內(nèi)存。本文實驗構(gòu)建一個具有一塊虛擬CPU和內(nèi)存量在4GB-24GB區(qū)間范圍內(nèi)變化的VM,并將VM內(nèi)存進行平均劃分到2~5臺主機。
為了驗證本文系統(tǒng)的replace遷移性能,本節(jié)首先對主主機的遷移時間和replace遷移中的停機時間進行測量??缍嘀鳈C的主主機replace遷移時間結(jié)果圖如圖3所示。與傳統(tǒng)遷移方式相比,本文系統(tǒng)對于跨2~5臺主機的VM遷移時間分別減少至前者的約50%,33%,25%以及20%。出現(xiàn)這種結(jié)果的原因在于本節(jié)對VM中的內(nèi)存資源進行了平均劃分,且遷移時間大致與傳輸?shù)膬?nèi)存量成正比。因此,隨著傳輸內(nèi)存量的不斷變大,所需要消耗的時間也隨之出現(xiàn)增加。子主機replace遷移時間結(jié)果圖如圖4所示。不難發(fā)現(xiàn),子主機replace遷移時間與主主機的情況是類似的。
圖3 主主機replace遷移時間
圖4 子主機replace遷移時間
與replace遷移仿真實驗類似,本節(jié)針對merge遷移性能的主機遷移時間也進行了測量。圖5給出了merge遷移時間結(jié)果圖。顯然,與傳統(tǒng)遷移方式相比,本文系統(tǒng)對于跨2~5臺主機的VM遷移時間分別減少至前者的約50%,33%,25%以及20%,但同replace遷移相比,merge遷移所消耗的時間有所提升,這是因為merge遷移機制相比前者更為復(fù)雜。
圖5 merge遷移時間
綜上所述,本文設(shè)計的基于QEMU-KVM的VM遷移仿真系統(tǒng)相比傳統(tǒng)遷移模式具有較為顯著的優(yōu)勢,預(yù)期在云計算框架中將具有較好的應(yīng)用前景。
本文基于當下流行的QEMU和KVM技術(shù),設(shè)計了一種基于QEMU-KVM的VM遷移仿真系統(tǒng),該系統(tǒng)在主主機中維護了包括分頁表、子主機表、分頁標記表、位置信息表在內(nèi)的四張表,且在子主機中維護了包括分頁表、分頁標記表、位置信息表在內(nèi)的三張表,并對replace遷移、merge遷移以及divide遷移三種遷移方式進行了詳細設(shè)計。仿真實驗結(jié)果表明,本文設(shè)計的VM遷移仿真系統(tǒng)相比傳統(tǒng)的VM資源遷移模式具有更低的時間開銷,能夠有效降低主主機與子主機間的page in/page out遠程分頁開銷,預(yù)期將有較好的應(yīng)用前景。如何進一步提升遷移效率將成為課題組下一步工作的核心內(nèi)容。