基于時空相關(guān)的虛擬機(jī)在線遷移方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明實(shí)施例提供一種基于時空相關(guān)的虛擬機(jī)在線遷移方法及系統(tǒng),通過在虛擬機(jī)內(nèi)存迭代拷貝階段建立內(nèi)存頁更新概率模型,根據(jù)當(dāng)前內(nèi)存頁和相鄰內(nèi)存頁的近期更新記錄計(jì)算該內(nèi)存頁在下輪內(nèi)存同步前被更新的概率;在內(nèi)存同步過程中僅拷貝那些更新概率較小的內(nèi)存頁至目標(biāo)機(jī)。與現(xiàn)有虛擬機(jī)在線遷移技術(shù)相比,本發(fā)明充分利用內(nèi)存頁訪問具有時空相關(guān)性的特點(diǎn)預(yù)測待同步內(nèi)存頁在下輪內(nèi)存同步前被更新的概率以確定是否拷貝該內(nèi)存頁,有效地減少內(nèi)存冗余拷貝的次數(shù),從而縮短虛擬機(jī)在線遷移的整體時間。
【專利說明】基于時空相關(guān)的虛擬機(jī)在線遷移方法及系統(tǒng)
[0001]
【技術(shù)領(lǐng)域】
[0002]本發(fā)明涉及一種云計(jì)算技術(shù),具體涉及一種基于時空相關(guān)的虛擬機(jī)在線遷移方法及系統(tǒng)。
【背景技術(shù)】
[0003]當(dāng)前,云計(jì)算作為一種新型網(wǎng)絡(luò)應(yīng)用模式已逐漸成為科學(xué)界和工業(yè)界研究的熱點(diǎn)。云計(jì)算實(shí)現(xiàn)了資源、平臺以及軟件的服務(wù)化,并通過計(jì)算機(jī)網(wǎng)絡(luò)向用戶提供按需、靈活、可伸縮的計(jì)算和存儲資源。
[0004]虛擬化技術(shù)是云計(jì)算的核心。前者通過軟件抽象將單個物理機(jī)資源劃分成多個相互隔離的虛擬資源,實(shí)現(xiàn)了多個操作系統(tǒng)實(shí)例(也就是虛擬機(jī))對單個物理資源的復(fù)用。虛擬化技術(shù)實(shí)現(xiàn)了虛擬機(jī)與物理機(jī)之間的松散耦合,使得虛擬機(jī)在其他物理機(jī)上運(yùn)行成為可能,虛擬機(jī)遷移技術(shù)正是解決該問題的有效手段。特別是虛擬機(jī)的在線遷移(LiveMigrat1n)技術(shù)能夠?qū)崿F(xiàn)虛擬機(jī)運(yùn)行狀態(tài)在分布、異構(gòu)的物理運(yùn)行環(huán)境中快速透明的平移,保證虛擬機(jī)服務(wù)的連續(xù)性和不間斷性,因此被廣泛應(yīng)用于集群或數(shù)據(jù)中心的管理,例如動態(tài)負(fù)載均衡、設(shè)備在線維護(hù)、系統(tǒng)容錯管理以及節(jié)能減排等。
[0005]實(shí)現(xiàn)虛擬機(jī)內(nèi)存狀態(tài)在源、目的物理機(jī)之間的高效拷貝是虛擬機(jī)在線遷移技術(shù)的關(guān)鍵所在。目前,主流虛擬化平臺提供的虛擬機(jī)在線遷移技術(shù)普遍采用基于內(nèi)存預(yù)拷貝(Pre-copy)機(jī)制。遷移初始階段,虛擬機(jī)管理器(Virtual Machine Monitor, VMM)將所有的虛擬機(jī)內(nèi)存頁面標(biāo)記為“臟頁面”;接著,遷移開始進(jìn)入多輪內(nèi)存迭代同步階段。由于所有頁面都被置為“臟頁面”,第一輪內(nèi)存同步需要拷貝全部的虛擬機(jī)內(nèi)存數(shù)據(jù);之后的每一輪同步只需要拷貝上一輪同步過程中被虛擬機(jī)更新的臟頁面數(shù)據(jù)。經(jīng)過若干次迭代后,如果剩余臟頁面數(shù)小于預(yù)設(shè)的最小值或迭代次數(shù)大于預(yù)設(shè)的最大值,VMM終止預(yù)拷貝階段并暫停源物理機(jī)上的虛擬機(jī),同時將剩余的臟頁面以及其它虛擬設(shè)備狀態(tài)拷貝至目的物理機(jī)。最后,目的物理機(jī)接收并加載全部狀態(tài)數(shù)據(jù)后立即恢復(fù)虛擬機(jī)執(zhí)行,同時向源物理機(jī)確認(rèn)遷移完成。
[0006]虛擬機(jī)內(nèi)存狀態(tài)遷移過程中存在著冗余的臟內(nèi)存頁拷貝。例如,在本輪內(nèi)存同步過程中被標(biāo)記為“臟頁面”的某內(nèi)存頁在后續(xù)的同步過程中被虛擬機(jī)更新,這意味著該內(nèi)存頁在遷移過程中至少被拷貝兩次。但對于目的虛擬機(jī)而言,只有最后一次的內(nèi)存頁拷貝才是必須的。可見,虛擬機(jī)內(nèi)存狀態(tài)遷移過程中存在著大量的冗余內(nèi)存拷貝。另一方面,對于本輪內(nèi)存同步階段的那些“臟頁面”,VMM也無法確定其未來是否會被虛擬機(jī)更新,因此,內(nèi)存頁冗余拷貝無法完全避免。
【發(fā)明內(nèi)容】
[0007]有鑒于此,有必要提供一種利用內(nèi)存頁具有時空相關(guān)性預(yù)測待同步內(nèi)存頁的更新概率以確定是否拷貝該內(nèi)存頁的虛擬機(jī)在線遷移方法及系統(tǒng)。
[0008]一種基于時空相關(guān)的虛擬機(jī)在線遷移方法,其特征在于:所述基于時空相關(guān)的虛擬機(jī)在線遷移方法包括如下步驟:
51、在虛擬機(jī)內(nèi)存迭代拷貝階段建立內(nèi)存頁更新概率模型,根據(jù)當(dāng)前內(nèi)存頁和相鄰內(nèi)存頁的近期更新記錄計(jì)算該內(nèi)存頁在下輪內(nèi)存同步前被更新的概率;
52、根據(jù)所述更新概率與預(yù)定閾值的比較,判斷該內(nèi)存頁在下輪內(nèi)存同步前是否不會被虛擬機(jī)更新,如果是,則將該內(nèi)存頁拷貝至目的虛擬機(jī)并標(biāo)記該內(nèi)存頁已被同步,同時更新同步位圖,直至虛擬機(jī)本輪次被更新的內(nèi)存頁數(shù)目小于預(yù)定義的閾值或者迭代次數(shù)達(dá)到預(yù)定義閾值;
53、暫停虛擬機(jī)的運(yùn)行,將虛擬機(jī)內(nèi)存與磁盤中待遷移數(shù)據(jù)一次性拷貝到目的虛擬機(jī)。
[0009]一種基于時空相關(guān)的虛擬機(jī)在線遷移系統(tǒng),其特征在于:包括
更新概率計(jì)算模塊,用于在虛擬機(jī)內(nèi)存迭代拷貝階段建立內(nèi)存頁更新概率模型,根據(jù)當(dāng)前內(nèi)存頁和相鄰內(nèi)存頁的近期更新記錄計(jì)算該內(nèi)存頁在下輪內(nèi)存同步前被更新的概率;
同步設(shè)置模塊,用于根據(jù)所述更新概率與預(yù)定閾值的比較,判斷該內(nèi)存頁在下輪內(nèi)存同步前是否不會被虛擬機(jī)更新,如果是,則將該內(nèi)存頁拷貝至目的虛擬機(jī)并標(biāo)記該內(nèi)存頁已被同步,同時更新同步位圖;直至虛擬機(jī)本輪次被更新的內(nèi)存頁數(shù)目小于預(yù)定義的閾值或者迭代次數(shù)達(dá)到預(yù)定義閾值;
停機(jī)拷貝模塊,用于暫停虛擬機(jī)的運(yùn)行,將虛擬機(jī)內(nèi)存與磁盤中待遷移數(shù)據(jù)一次性拷貝到目的虛擬機(jī)。
[0010]本發(fā)明實(shí)施例提供一種基于時空相關(guān)的虛擬機(jī)在線遷移方法及系統(tǒng),通過在虛擬機(jī)內(nèi)存迭代拷貝階段建立內(nèi)存頁更新概率模型,根據(jù)當(dāng)前內(nèi)存頁和相鄰內(nèi)存頁的近期更新記錄計(jì)算該內(nèi)存頁在下輪內(nèi)存同步前被更新的概率;在內(nèi)存同步過程中僅拷貝那些更新概率較小的內(nèi)存頁至目標(biāo)機(jī)。與現(xiàn)有虛擬機(jī)在線遷移技術(shù)相比,本發(fā)明充分利用內(nèi)存頁訪問具有時空相關(guān)性的特點(diǎn)預(yù)測待同步內(nèi)存頁在下輪內(nèi)存同步前被更新的概率以確定是否拷貝該內(nèi)存頁,有效地減少內(nèi)存冗余拷貝的次數(shù),從而縮短虛擬機(jī)在線遷移的整體時間。
【專利附圖】
【附圖說明】
[0011]圖1是本發(fā)明一較佳實(shí)施例的一種基于時空相關(guān)的虛擬機(jī)在線遷移方法的流程圖;
圖2是圖1中步驟SI的子流程圖;
圖3是圖2中步驟S12的一實(shí)施子流程圖;
圖4是圖1中步驟S2的子流程圖;
圖5是圖1中步驟S3的子流程圖;
圖6是本發(fā)明實(shí)施例中基于時空相關(guān)的虛擬機(jī)在線遷移方法的原理圖;
圖7是本發(fā)明實(shí)施例中基于時空相關(guān)的虛擬機(jī)在線遷移方法的工作流程示意圖;
圖8是本發(fā)明一較佳實(shí)施例的一種基于時空相關(guān)的虛擬機(jī)在線遷移系統(tǒng)的結(jié)構(gòu)框圖; 圖9是圖8中更新概率計(jì)算模塊的子結(jié)構(gòu)框圖;
圖10是圖8中同步設(shè)置模塊的子結(jié)構(gòu)框圖; 圖11是圖8中停機(jī)拷貝模塊的子結(jié)構(gòu)框圖。
【具體實(shí)施方式】
[0012]如圖1所示,本發(fā)明實(shí)施例提供一種基于時空相關(guān)的虛擬機(jī)在線遷移方法,所述可配置的虛擬機(jī)啟動完整性維護(hù)的方法包括如下步驟:所述基于時空相關(guān)的虛擬機(jī)在線遷移方法包括如下步驟:
S1、在虛擬機(jī)內(nèi)存迭代拷貝階段建立內(nèi)存頁更新概率模型,根據(jù)當(dāng)前內(nèi)存頁和相鄰內(nèi)存頁的近期更新記錄計(jì)算該內(nèi)存頁在下輪內(nèi)存同步前被更新的概率;
可選地,如圖2所示,所述步驟SI包括以下子步驟:
S11、建立內(nèi)存頁的更新記錄表來保存內(nèi)存頁近期被源虛擬機(jī)更新的情況,并設(shè)置所有初始狀態(tài)為0,建立內(nèi)存頁的同步位圖來標(biāo)記源虛擬機(jī)和目的虛擬機(jī)的內(nèi)容是否相同,并設(shè)置所有初始狀態(tài)為O ;
具體的,為更新記錄表分配N個字節(jié)大小的內(nèi)存空間,每個字節(jié)存放相應(yīng)內(nèi)存頁最近的更新記錄,字節(jié)的每個bit表示該內(nèi)存頁在一個輪次內(nèi)存同步過程中的更新情況,如果該內(nèi)存頁該輪次中被更新,則該bit置1,否則該bit置O。且由于I個字節(jié)包含8個bit,因此每個字節(jié)能夠記載對應(yīng)內(nèi)存頁最近8輪的更新情況。
[0013]為同步位圖分配N個bit的內(nèi)存空間,每個bit表示相應(yīng)內(nèi)存頁待同步信息。如果源虛擬機(jī)和目的虛擬機(jī)的內(nèi)容不一致,則該bit置1,如果源虛擬機(jī)和目的虛擬機(jī)的內(nèi)容一致,則該bit置O。
[0014]S12、掃描內(nèi)存頁的同步位圖,判斷是否存在待同步的內(nèi)存頁;
513、對于已被更新的待同步內(nèi)存頁,選擇以它為中心的連續(xù)內(nèi)存頁作為參考內(nèi)存頁,根據(jù)更新記錄表來計(jì)算所有參考內(nèi)存頁的更新因子;
514、利用參考內(nèi)存頁的更新因子計(jì)算當(dāng)前內(nèi)存頁的更新概率。
[0015]進(jìn)一步的,如圖3所示,所述步驟S12包括以下子步驟:
5121、拷貝源虛擬機(jī)內(nèi)存鏡像至目的物理機(jī);
5122、判斷迭代收斂狀態(tài),若迭代收斂,則暫停源虛擬機(jī)的運(yùn)行,將虛擬機(jī)內(nèi)存與磁盤中待遷移數(shù)據(jù)一次性拷貝到目的虛擬機(jī),若迭代不收斂,則掃描內(nèi)存頁同步位圖;
5123、若同步位圖中掃描到待同步的內(nèi)存頁,則進(jìn)入步驟S13,若未掃描到待同步的內(nèi)存頁,則直接進(jìn)入步驟S23。
[0016]具體的,所述步驟S13中的更新因子在時間上符合更新輪次越近的更新記錄對更新概率計(jì)算的影響越大,所述更新因子的計(jì)算公式如下:
Ut (1)^(1)))1 I (flag?7)
Ct (i) =Ut (i) / (255-2max (7-t, O)), Ct (i) e [O, I],
其中,Ut (i)為第i片內(nèi)存頁在第t輪迭代拷貝過程中的更新記錄表值,Ut_i(i)為第i片內(nèi)存頁在第t-Ι輪迭代拷貝過程中的更新記錄表值,flag為第t輪迭代拷貝中內(nèi)存頁的更新標(biāo)志,當(dāng)flag為I時表示內(nèi)存頁在第t輪迭代拷貝中被更新,flag為O時表示未更新,Ct(i)為第i片內(nèi)存頁在第t輪迭代拷貝時的更新因子。
[0017]具體的,在所述步驟S14中,選擇以待同步內(nèi)存頁為中心的連續(xù)內(nèi)存頁作為參考內(nèi)存頁,對這些參考內(nèi)存頁的更新因子進(jìn)行線性插值得到當(dāng)前內(nèi)存頁的更新概率,插值系數(shù)符合空間上越接近的內(nèi)存頁其更新特征越相近。其中,所述更新概率的計(jì)算公式如下:Set(i) |200_3=保卜2,Mh,Mi, Mi+1, Mi+2},Set⑴為以待同步內(nèi)存頁Mi為中心的連續(xù)5片內(nèi)存頁作為參考內(nèi)存頁的集合;
對越界的參考內(nèi)存頁進(jìn)行對稱延拓:
Set (O) = (M1, M0, M0, M1, M2I,
Set (I) = {M0, M0, M1, M2, M3I,
Set (N-2) = {Mn_4, Mn_3, Mn_2, Mh, Mn^1 },
Set (N-1) — {Μν_3> Μν_2, Μν_1; Μν_1; Μν_2},
計(jì)算Set(i)中所有內(nèi)存頁的更新因子,并通過五抽頭低通濾波器{-1/8,1/4,3/4,1/4,-1/8}對Set(i)的更新因子進(jìn)行平滑濾波得到當(dāng)前頁的更新概率Pt (i)。
[0018]S2、根據(jù)所述更新概率與預(yù)定閾值的比較,判斷該內(nèi)存頁在下輪內(nèi)存同步前是否不會被虛擬機(jī)更新,如果是,則將該內(nèi)存頁拷貝至目的虛擬機(jī)并標(biāo)記該內(nèi)存頁已被同步,同時更新同步位圖,直至虛擬機(jī)本輪次被更新的內(nèi)存頁數(shù)目小于預(yù)定義的閾值或者迭代次數(shù)達(dá)到預(yù)定義閾值;
優(yōu)選地,如圖4所示,所述步驟S2包括以下子步驟:
521、設(shè)置更新概率的基礎(chǔ)概率閾值、一個輪次中內(nèi)存頁被更新的數(shù)目閾值以及迭代次數(shù)預(yù)定值;
522、將所述更新概率Pt(i)與基礎(chǔ)概率閾值進(jìn)行比較,當(dāng)所述更新概率Pt(i)小于基礎(chǔ)概率閾值時,判斷該內(nèi)存頁在下輪內(nèi)存同步前不會被虛擬機(jī)更新,則將該內(nèi)存頁拷貝至目的虛擬機(jī)并標(biāo)記該內(nèi)存頁已被同步;當(dāng)所述更新概率Pt(i)大于基礎(chǔ)概率閾值時,則不拷貝,并返回進(jìn)行步驟S12;
523、更新同步位圖,記錄本輪次中被更新內(nèi)存頁的數(shù)目,如果本輪次中被更新內(nèi)存頁的數(shù)目小于預(yù)定內(nèi)存頁被更新的數(shù)目閾值,或迭代次數(shù)達(dá)到預(yù)定值,則停止迭代過程,反之則返回進(jìn)行步驟S12。
[0019]S3、暫停虛擬機(jī)的運(yùn)行,將虛擬機(jī)內(nèi)存與磁盤中待遷移數(shù)據(jù)一次性拷貝到目的虛擬機(jī)。
[0020]優(yōu)選地,如圖5所示,所述步驟S3包括以下子步驟:
531、暫停源虛擬機(jī),掃描同步位圖,將剩下的所有待同步內(nèi)存頁數(shù)據(jù)采用XBZRLE編碼方式進(jìn)行壓縮之后拷貝至目標(biāo)機(jī),目標(biāo)機(jī)接收內(nèi)存數(shù)據(jù)并進(jìn)行解碼,然后替換目的虛擬機(jī)相應(yīng)內(nèi)存頁;
532、將虛擬機(jī)的其他狀態(tài)信息拷貝至目標(biāo)機(jī)并加載目的虛擬機(jī);
533、將目的虛擬機(jī)的加載狀態(tài)通知給源物理機(jī)。如果目的虛擬機(jī)成功加載那么源物理機(jī)釋放源虛擬機(jī)資源,否則恢復(fù)源虛擬機(jī)。
[0021]如圖6所示,圖6是本發(fā)明實(shí)施例中虛擬機(jī)在線遷移方法的原理圖,可以看出源虛擬機(jī)和目的虛擬機(jī)之間通過不斷的迭代拷貝進(jìn)行在線遷移,在每一次迭代拷貝中,都會重新計(jì)算待同步的內(nèi)存頁的更新概率,以此判斷是否在本輪迭代拷貝中將其同步至目的虛擬機(jī)。
[0022]結(jié)合附圖7對本發(fā)明實(shí)施例所述的基于時空相關(guān)的虛擬機(jī)在線遷移方法的工作流程進(jìn)行說明,詳細(xì)流程如下所示: 步驟1.1:建立內(nèi)存頁的更新記錄表來保存內(nèi)存頁近期的更新情況,并設(shè)置所有初始狀態(tài)為O;建立內(nèi)存頁的同步位圖來標(biāo)記源虛擬機(jī)和目的虛擬機(jī)的內(nèi)容是否相同,并設(shè)置所有初始狀態(tài)為O ;然后進(jìn)入步驟1.2。
[0023]步驟1.2:拷貝源虛擬機(jī)內(nèi)存鏡像至目標(biāo)機(jī);進(jìn)入步驟1.3。
[0024]步驟1.3:判斷迭代收斂條件,若迭代收斂,則直接進(jìn)入步驟1.10,若迭代不收斂,則進(jìn)入步驟1.4。
[0025]步驟1.4:掃描內(nèi)存頁同步位圖,并記錄內(nèi)存同步位圖中該輪次待同步的內(nèi)存頁數(shù)目,進(jìn)入步驟1.5。
[0026]步驟1.5:判斷是否存在進(jìn)行更新的待同步內(nèi)存頁,若存在,則進(jìn)入步驟1.6 ;若不存在,則進(jìn)入步驟1.9。
[0027]步驟1.6:根據(jù)當(dāng)前內(nèi)存頁和相鄰內(nèi)存頁的近期更新記錄計(jì)算該內(nèi)存頁在下輪內(nèi)存同步前被更新的概率,進(jìn)入步驟1.7。
[0028]步驟1.7:將更新概率與基礎(chǔ)概率閾值進(jìn)行比較,若更新概率小于基礎(chǔ)概率閾值,則進(jìn)入步驟1.8,若更新概率大于基礎(chǔ)概率閾值,則直接進(jìn)入步驟1.9 ;
步驟1.8:將待同步的內(nèi)存頁拷貝至目標(biāo)機(jī),進(jìn)入步驟1.9。
[0029]步驟1.9:二次更新同步位圖,記錄本輪次被更新內(nèi)存頁的數(shù)目,如果本輪次被更新的內(nèi)存頁數(shù)目小于預(yù)定閾值或迭代次數(shù)達(dá)到預(yù)定值,則停止迭代過程,返回步驟1.3,如果本輪次被更新內(nèi)存頁的數(shù)目大于預(yù)定閾值或迭代次數(shù)未達(dá)到預(yù)定值,則返回進(jìn)行步驟
1.4。
[0030]步驟1.10:暫停源虛擬機(jī)并拷貝所有待同步的內(nèi)存頁至目標(biāo)機(jī)。
[0031]本發(fā)明實(shí)施例提供一種基于時空相關(guān)的虛擬機(jī)在線遷移方法,首先通過在虛擬機(jī)內(nèi)存迭代拷貝階段建立內(nèi)存頁更新概率模型,根據(jù)當(dāng)前內(nèi)存頁和相鄰內(nèi)存頁的近期更新記錄計(jì)算該內(nèi)存頁在下輪內(nèi)存同步前被更新的概率;在內(nèi)存同步過程中僅拷貝那些更新概率較小的內(nèi)存頁至目標(biāo)機(jī)。與現(xiàn)有虛擬機(jī)在線遷移技術(shù)相比,本發(fā)明充分利用內(nèi)存頁訪問具有時空相關(guān)性的特點(diǎn)預(yù)測待同步內(nèi)存頁在下輪內(nèi)存同步前被更新的概率以確定是否拷貝該內(nèi)存頁,有效地減少內(nèi)存冗余拷貝的次數(shù),從而縮短虛擬機(jī)在線遷移的整體時間。
[0032]如圖8所示,本發(fā)明實(shí)施例還提供一種基于時空相關(guān)的虛擬機(jī)在線遷移系統(tǒng),所述基于時空相關(guān)的虛擬機(jī)在線遷移系統(tǒng)包括如下模塊:
更新概率計(jì)算模塊,用于在虛擬機(jī)內(nèi)存迭代拷貝階段建立內(nèi)存頁更新概率模型,根據(jù)當(dāng)前內(nèi)存頁和相鄰內(nèi)存頁的近期更新記錄計(jì)算該內(nèi)存頁在下輪內(nèi)存同步前被更新的概率;
同步設(shè)置模塊,用于根據(jù)所述更新概率與預(yù)定閾值的比較,判斷該內(nèi)存頁在下輪內(nèi)存同步前是否不會被虛擬機(jī)更新,如果是,則將該內(nèi)存頁拷貝至目的虛擬機(jī)并標(biāo)記該內(nèi)存頁已被同步,同時更新同步位圖;直到虛擬機(jī)內(nèi)存總量小于預(yù)定義的停機(jī)閾值;
停機(jī)拷貝模塊,用于暫停虛擬機(jī)的運(yùn)行,將虛擬機(jī)內(nèi)存與磁盤中待遷移數(shù)據(jù)一次性拷貝到目的虛擬機(jī)。
[0033]可選地,如圖9所示,所述更新概率計(jì)算模塊包括以下單元:
建立概率模型單元,用于建立內(nèi)存頁的更新記錄表來保存內(nèi)存頁近期被源虛擬機(jī)更新的情況,并設(shè)置所有初始狀態(tài)為0,建立內(nèi)存頁的同步位圖來標(biāo)記源虛擬機(jī)和目的虛擬機(jī)的內(nèi)容是否相同,并設(shè)置所有初始狀態(tài)為O ;
同步位圖掃描單元,用于掃描內(nèi)存頁的同步位圖,判斷是否存在待同步的內(nèi)存頁;
更新因子計(jì)算單元,用于對已被更新的待同步內(nèi)存頁,選擇以它為中心的連續(xù)內(nèi)存頁作為參考內(nèi)存頁,根據(jù)更新記錄表來計(jì)算所有參考內(nèi)存頁的更新因子;
更新概率計(jì)算單元,用于利用參考內(nèi)存頁的更新因子計(jì)算當(dāng)前內(nèi)存頁的更新概率。
[0034]可選地,如圖10所示,所述同步設(shè)置模塊包括以下單元:
閾值設(shè)置單元,用于設(shè)置更新概率的基礎(chǔ)概率閾值、一個輪次中內(nèi)存頁被更新的數(shù)目閾值以及迭代次數(shù)閾值;
更新概率比較單元,用于將所述更新概率Pt (i)與基礎(chǔ)概率閾值進(jìn)行比較,當(dāng)所述更新概率pt(i)小于基礎(chǔ)概率閾值時,判斷該內(nèi)存頁在下輪內(nèi)存同步前不會被虛擬機(jī)更新,則將該內(nèi)存頁拷貝至目的虛擬機(jī)并標(biāo)記該內(nèi)存頁已被同步;當(dāng)所述更新概率Pt(i)大于基礎(chǔ)概率閾值時,則不拷貝,并啟動同步位圖掃描單元的功能;
同步位圖更新單元,用于記錄本輪次中被更新內(nèi)存頁的數(shù)目,如果本輪次中被更新內(nèi)存頁的數(shù)目小于預(yù)定內(nèi)存頁被更新的數(shù)目閾值,或迭代次數(shù)達(dá)到預(yù)定值,則停止迭代過程,如果本輪次中被更新內(nèi)存頁的數(shù)目大于預(yù)定內(nèi)存頁被更新的數(shù)目閾值,或迭代次數(shù)未達(dá)到預(yù)定值,則啟動同步位圖掃描單元的功能。
[0035]可選地,如圖11所示,所述停機(jī)拷貝模塊包括以下單元:
剩余數(shù)據(jù)拷貝單元,用于暫停源虛擬機(jī),掃描同步位圖,將剩下的所有待同步內(nèi)存頁數(shù)據(jù)采用XBZRLE編碼方式進(jìn)行壓縮之后拷貝至目標(biāo)機(jī),目標(biāo)機(jī)接收內(nèi)存數(shù)據(jù)并進(jìn)行解碼,然后替換目的虛擬機(jī)相應(yīng)內(nèi)存頁;
其他數(shù)據(jù)拷貝單元,用于將虛擬機(jī)的其他狀態(tài)信息拷貝至目的目標(biāo)機(jī)并加載目的虛擬機(jī);
狀態(tài)加載單元,用于將目的虛擬機(jī)的加載狀態(tài)通知給源物理機(jī)。如果目的虛擬機(jī)成功加載那么源物理機(jī)釋放源虛擬機(jī)資源,否則恢復(fù)源虛擬機(jī)。
[0036]本發(fā)明提供的基于時空相關(guān)的虛擬機(jī)在線遷移系統(tǒng),通過在迭代拷貝中,計(jì)算待同步內(nèi)存頁的更新概率,判斷是否在本輪迭代拷貝中將其同步至目的虛擬機(jī),分利用內(nèi)存頁訪問具有時空相關(guān)性的特點(diǎn)預(yù)測待同步內(nèi)存頁在下輪內(nèi)存同步前被更新的概率以確定是否拷貝該內(nèi)存頁,減少了虛擬機(jī)在線遷移過程中產(chǎn)生的重復(fù)無效遷移數(shù)據(jù),從而節(jié)約網(wǎng)絡(luò)帶寬、宿主機(jī)CPU、內(nèi)存等資源。
[0037]以上裝置實(shí)施例與方法實(shí)施例是一一對應(yīng)的,裝置實(shí)施例簡略之處,參見方法實(shí)施例即可。
[0038]本說明書中各個實(shí)施例采用遞進(jìn)的方式描述,每個實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處,各個實(shí)施例之間相同相似部分互相參見即可。
[0039]專業(yè)人員還可以進(jìn)一步意識到,結(jié)合本文中所公開的實(shí)施例描述的各示例的單元及算法步驟,能夠以電子硬件、計(jì)算機(jī)軟件或者二者的結(jié)合來實(shí)現(xiàn),為了清楚地說明硬件和軟件的可互換性,在上述說明中已經(jīng)按照功能性一般性地描述了各示例的組成及步驟。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計(jì)約束條件。專業(yè)技術(shù)人員可以對每個特定的應(yīng)用來使用不同方法來實(shí)現(xiàn)所描述的功能,但是這種實(shí)現(xiàn)不應(yīng)超過本發(fā)明的范圍。
[0040]結(jié)合本文中所公開的實(shí)施例描述的方法或算法的步驟可以直接用硬件、處理器執(zhí)行的軟件模塊,或者二者的結(jié)合來實(shí)施。軟件模塊可以置于隨機(jī)儲存器、內(nèi)存、只讀存儲器、電可編程ROM、電可檫除可編程ROM、寄存器、硬盤、可移動磁盤、CD-ROM、或【技術(shù)領(lǐng)域】內(nèi)所公知的任意其他形式的存儲介質(zhì)中。
[0041]上面結(jié)合附圖對本發(fā)明的實(shí)施例進(jìn)行了描述,但是本發(fā)明并不局限于上述的【具體實(shí)施方式】,上述的【具體實(shí)施方式】僅僅是示意性的,而不是限制性的,本領(lǐng)域的普通技術(shù)人員在本發(fā)明的啟示下,在不脫離本發(fā)明宗旨和權(quán)利要求所保護(hù)的范圍情況下,還可做出很多形式,這些均屬于本發(fā)明的保護(hù)之內(nèi)。
【權(quán)利要求】
1.一種基于時空相關(guān)的虛擬機(jī)在線遷移方法,其特征在于:所述基于時空相關(guān)的虛擬機(jī)在線遷移方法包括如下步驟: 51、在虛擬機(jī)內(nèi)存迭代拷貝階段建立內(nèi)存頁更新概率模型,根據(jù)當(dāng)前內(nèi)存頁和相鄰內(nèi)存頁的近期更新記錄計(jì)算該內(nèi)存頁在下輪內(nèi)存同步前被更新的概率; 52、根據(jù)所述更新概率與預(yù)定閾值的比較,判斷該內(nèi)存頁在下輪內(nèi)存同步前是否不會被虛擬機(jī)更新,如果是,則將該內(nèi)存頁拷貝至目標(biāo)機(jī)并標(biāo)記該內(nèi)存頁已被同步,同時更新同步位圖;直到虛擬機(jī)內(nèi)存總量小于預(yù)定義的停機(jī)閾值; 53、暫停虛擬機(jī)的運(yùn)行,將虛擬機(jī)內(nèi)存與磁盤中待遷移數(shù)據(jù)一次性拷貝到目的虛擬機(jī)。
2.根據(jù)權(quán)利要求1所述的基于時空相關(guān)的虛擬機(jī)在線遷移方法,其特征在于:所述步驟SI包括以下子步驟: 511、建立內(nèi)存頁的更新記錄表來保存內(nèi)存頁近期被源虛擬機(jī)更新的情況,并設(shè)置所有初始狀態(tài)為O,建立內(nèi)存頁的同步位圖來標(biāo)記源虛擬機(jī)和目的虛擬機(jī)的內(nèi)容是否相同,并設(shè)置所有初始狀態(tài)為O ; 512、掃描內(nèi)存頁的同步位圖,判斷是否存在待同步的內(nèi)存頁; 513、對于已被更新的待同步內(nèi)存頁,選擇以它為中心的連續(xù)內(nèi)存頁作為參考內(nèi)存頁,根據(jù)更新記錄表來計(jì)算所有參考內(nèi)存頁的更新因子; 514、利用參考內(nèi)存頁的更新因子計(jì)算當(dāng)前內(nèi)存頁的更新概率。
3.根據(jù)權(quán)利要求2所述的基于時空相關(guān)的虛擬機(jī)在線遷移方法,其特征在于:更新因子在時間上符合更新輪次越接近的更新記錄對更新概率計(jì)算的影響越大。
4.根據(jù)權(quán)利要求3所述的基于時空相關(guān)的虛擬機(jī)在線遷移方法,其特征在于:所述步驟S13中,更新因子的計(jì)算公式如下: UtI (flag?7)
Ct (i) =Ut (i) / (255-2max (7-t, O)), Ct (i) e [O, I], 其中,Ut (i)為第i片內(nèi)存頁在第t輪迭代拷貝過程中的更新記錄表值,Ut_i(i)為第i片內(nèi)存頁在第t-Ι輪迭代拷貝過程中的更新記錄表值,flag為第t輪迭代拷貝中內(nèi)存頁的更新標(biāo)志,當(dāng)flag為I時表示內(nèi)存頁在第t輪迭代拷貝中被更新,flag為O時表示未更新,Ct(i)為第i片內(nèi)存頁在第t輪迭代拷貝時的更新因子。
5.根據(jù)權(quán)利要求4所述的基于時空相關(guān)的虛擬機(jī)在線遷移方法,其特征在于:選擇以待同步內(nèi)存頁為中心的連續(xù)內(nèi)存頁作為參考內(nèi)存頁,對這些參考內(nèi)存頁的更新因子進(jìn)行線性插值得到當(dāng)前內(nèi)存頁的更新概率,插值系數(shù)符合空間上越接近的內(nèi)存頁其更新特征越相近。
6.根據(jù)權(quán)利要求5所述的基于時空相關(guān)的虛擬機(jī)在線遷移方法,其特征在于:所述步驟S14中,更新概率的計(jì)算公式如下: Set(i) |2彡 i 彡N-3={Mi_2,Mi^1, Mi, Mi+1, Mi+2},Set ⑴為以待同步內(nèi)存頁 Mi 為中心的連續(xù)5片內(nèi)存頁作為參考內(nèi)存頁的集合; 對越界的參考內(nèi)存頁進(jìn)行對稱延拓:
Set (O) = (M1, M0, M0, M1, M2I,
Set (I) = {M0, M0, M1, M2, M3I,
Set (N-2) = {Μν_4, Μν_3, Μν_2, Μν_1; Mn^1 },
Set (N-1) — {Mn_3, Mn_2, Mn_1; Mn_1; Mn_2}, 然后計(jì)算Set(i)中所有內(nèi)存頁的更新因子;并通過五抽頭低通濾波器{-1/8,1/4,3/4,1/4,-1/8}對Set (i)的更新因子進(jìn)行平滑濾波得到當(dāng)前頁的更新概率Pt (i)。
7.根據(jù)權(quán)利要求6所述的基于時空相關(guān)的虛擬機(jī)在線遷移方法,其特征在于:所述步驟S2包括以下子步驟: 521、設(shè)置更新概率的基礎(chǔ)概率閾值、一個輪次中內(nèi)存頁被更新的數(shù)目閾值以及迭代次數(shù)閾值; 522、將所述更新概率Pt(i)與基礎(chǔ)概率閾值進(jìn)行比較,當(dāng)所述更新概率Pt(i)小于基礎(chǔ)概率閾值時,判斷該內(nèi)存頁在下輪內(nèi)存同步前不會被虛擬機(jī)更新,則將該內(nèi)存頁拷貝至目的虛擬機(jī)并標(biāo)記該內(nèi)存頁已被同步;當(dāng)所述更新概率Pt(i)大于基礎(chǔ)概率閾值時,則不拷貝,并返回進(jìn)行步驟S12; 523、更新同步位圖,記錄本輪次中被更新內(nèi)存頁的數(shù)目,如果本輪次中被更新內(nèi)存頁的數(shù)目小于預(yù)定內(nèi)存頁被更新的數(shù)目閾值,或迭代次數(shù)達(dá)到預(yù)定值,則停止迭代過程,如果本輪次中被更新內(nèi)存頁的數(shù)目大于預(yù)定內(nèi)存頁被更新的數(shù)目閾值,或迭代次數(shù)未達(dá)到預(yù)定值,則返回進(jìn)行步驟S12。
8.一種基于時空相關(guān)的虛擬機(jī)在線遷移系統(tǒng),其特征在于:包括 更新概率計(jì)算模塊,用于在虛擬機(jī)內(nèi)存迭代拷貝階段建立內(nèi)存頁更新概率模型,根據(jù)當(dāng)前內(nèi)存頁和相鄰內(nèi)存頁的近期更新記錄計(jì)算該內(nèi)存頁在下輪內(nèi)存同步前被更新的概率; 同步設(shè)置模塊,用于根據(jù)所述更新概率與預(yù)定閾值的比較,判斷該內(nèi)存頁在下輪內(nèi)存同步前是否不會被虛擬機(jī)更新,如果是,則將該內(nèi)存頁拷貝至目的虛擬機(jī)并標(biāo)記該內(nèi)存頁已被同步,同時更新同步位圖;直到虛擬機(jī)內(nèi)存總量小于預(yù)定義的停機(jī)閾值; 停機(jī)拷貝模塊,用于暫停虛擬機(jī)的運(yùn)行,將虛擬機(jī)內(nèi)存與磁盤中待遷移數(shù)據(jù)一次性拷貝到目的虛擬機(jī)。
9.根據(jù)權(quán)利要求8所述的可配置的虛擬機(jī)啟動完整性維護(hù)的系統(tǒng),其特征在于,所述更新概率計(jì)算模塊包括 建立概率模型單元,用于建立內(nèi)存頁的更新記錄表來保存內(nèi)存頁近期被源虛擬機(jī)更新的情況,并設(shè)置所有初始狀態(tài)為O,建立內(nèi)存頁的同步位圖來標(biāo)記源虛擬機(jī)和目的虛擬機(jī)的內(nèi)容是否相同,并設(shè)置所有初始狀態(tài)為O ; 同步位圖掃描單元,用于掃描內(nèi)存頁的同步位圖,判斷是否存在待同步的內(nèi)存頁; 更新因子計(jì)算單元,用于對已被更新的待同步內(nèi)存頁,選擇以它為中心的連續(xù)內(nèi)存頁作為參考內(nèi)存頁,根據(jù)更新記錄表來計(jì)算所有參考內(nèi)存頁的更新因子; 更新概率計(jì)算單元,用于利用參考內(nèi)存頁的更新因子計(jì)算當(dāng)前內(nèi)存頁的更新概率。
10.根據(jù)權(quán)利要求9所述的可配置的虛擬機(jī)啟動完整性維護(hù)的系統(tǒng),其特征在于,所述同步設(shè)置模塊包括 閾值設(shè)置單元,用于設(shè)置更新概率的基礎(chǔ)概率閾值、一個輪次中內(nèi)存頁被更新的數(shù)目閾值以及迭代次數(shù)閾值; 更新概率比較單元,用于將所述更新概率Pt (i)與基礎(chǔ)概率閾值進(jìn)行比較,當(dāng)所述更新概率pt(i)小于基礎(chǔ)概率閾值時,判斷該內(nèi)存頁在下輪內(nèi)存同步前不會被虛擬機(jī)更新,則將該內(nèi)存頁拷貝至目的虛擬機(jī)并標(biāo)記該內(nèi)存頁已被同步;當(dāng)所述更新概率Pt(i)大于基礎(chǔ)概率閾值時,則不拷貝,并啟動同步位圖掃描單元的功能; 同步位圖更新單元,用于記錄本輪次中被更新內(nèi)存頁的數(shù)目,如果本輪次中被更新內(nèi)存頁的數(shù)目小于預(yù)定內(nèi)存頁被更新的數(shù)目閾值,或迭代次數(shù)達(dá)到預(yù)定值,則停止迭代過程,如果本輪次中被更新內(nèi)存頁的數(shù)目大于預(yù)定內(nèi)存頁被更新的數(shù)目閾值,或迭代次數(shù)未達(dá)到預(yù)定值,則啟動同步位圖掃描單元的功能。
【文檔編號】G06F9/46GK104346210SQ201410447729
【公開日】2015年2月11日 申請日期:2014年9月4日 優(yōu)先權(quán)日:2014年9月4日
【發(fā)明者】高毅, 伍華鳳, 徐士偉, 何龍, 戴新發(fā) 申請人:中國船舶重工集團(tuán)公司第七0九研究所