虛擬機(jī)連續(xù)快照方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種虛擬機(jī)連續(xù)快照方法和裝置。
【背景技術(shù)】
[0002]虛擬化技術(shù)可以有效整合和利用計(jì)算機(jī)資源,因此成為了云計(jì)算領(lǐng)域的關(guān)鍵支撐計(jì)算。為了提供連續(xù)、高可用的云服務(wù),虛擬機(jī)中的數(shù)據(jù)和狀態(tài)需要滿足可靠性和安全性,由此引入了快照技術(shù)??煺占夹g(shù)可以保存虛擬機(jī)運(yùn)行過(guò)程中的完整狀態(tài),包括虛擬機(jī)的磁盤狀態(tài)、內(nèi)存狀態(tài)及設(shè)備狀態(tài),如CPU、網(wǎng)絡(luò)等,在虛擬機(jī)故障時(shí)用于恢復(fù)虛擬機(jī)的狀態(tài),盡量少的丟失虛擬機(jī)的數(shù)據(jù)和狀態(tài)。
[0003]目前,虛擬機(jī)對(duì)內(nèi)存狀態(tài)進(jìn)行快照時(shí)主要采用停機(jī)拷貝。停機(jī)拷貝是在進(jìn)行虛擬機(jī)連續(xù)快照時(shí)將虛擬機(jī)掛起,當(dāng)所有的內(nèi)存數(shù)據(jù)被保存了后再恢復(fù)虛擬機(jī)運(yùn)行,以保證此次快照時(shí)虛擬機(jī)內(nèi)存中的各頁(yè)面的數(shù)據(jù)完整,未被修改。
[0004]但是,停機(jī)拷貝使得每次快照時(shí)虛擬機(jī)的宕機(jī)時(shí)間非常長(zhǎng),影響了虛擬機(jī)的性能。
【發(fā)明內(nèi)容】
[0005]本發(fā)明提供一種虛擬機(jī)連續(xù)快照方法和裝置,用于解決現(xiàn)有技術(shù)中虛擬機(jī)連續(xù)快照方法使虛擬機(jī)宕機(jī)時(shí)間長(zhǎng),影響虛擬機(jī)性能的問(wèn)題。
[0006]本發(fā)明提供一種虛擬機(jī)連續(xù)快照方法,包括:
[0007]將虛擬機(jī)停機(jī);
[0008]根據(jù)所述虛擬機(jī)中各頁(yè)面的第一位圖信息的值更新各頁(yè)面的第二位圖信息的值,所述第一位圖信息用于標(biāo)識(shí)各頁(yè)面是否已被修改,所述第二位圖信息用于標(biāo)識(shí)所述各頁(yè)面是否需要保存,所述各頁(yè)面的第一位圖信息和第二位圖信息與各頁(yè)面的地址一一對(duì)應(yīng);
[0009]初始化所述虛擬機(jī)中各頁(yè)面的第一位圖信息的值;
[0010]恢復(fù)所述虛擬機(jī)的運(yùn)行;
[0011]依次判斷所述虛擬機(jī)中各頁(yè)面的第二位圖信息的值是否為第一預(yù)設(shè)的值;
[0012]將第二位圖信息的值為第一預(yù)設(shè)的值的各頁(yè)面保存到緩存區(qū),并將保存到緩存區(qū)的各頁(yè)面的第二位圖信息的值更改為第二預(yù)設(shè)的值。
[0013]本發(fā)明提供一種虛擬機(jī)連續(xù)快照裝置,包括:
[0014]停機(jī)模塊,用于將虛擬機(jī)停機(jī);
[0015]更新模塊,用于根據(jù)所述虛擬機(jī)中各頁(yè)面的第一位圖信息的值更新各頁(yè)面的第二位圖信息的值,所述第一位圖信息用于標(biāo)識(shí)各頁(yè)面是否已被修改,所述第二位圖信息用于標(biāo)識(shí)所述各頁(yè)面是否需要保存,所述各頁(yè)面的第一位圖信息和第二位圖信息與各頁(yè)面的地址--對(duì)應(yīng);
[0016]初始化模塊,用于初始化所述虛擬機(jī)中各頁(yè)面的第一位圖信息的值;
[0017]恢復(fù)模塊,用于恢復(fù)所述虛擬機(jī)的運(yùn)行;
[0018]判斷模塊,用于依次判斷所述虛擬機(jī)中各頁(yè)面的第二位圖信息的值是否為第一預(yù)設(shè)的值;
[0019]處理模塊,用于將第二位圖信息的值為第一預(yù)設(shè)的值的各頁(yè)面保存到緩存區(qū),并將保存到緩存區(qū)的各頁(yè)面的第二位圖信息的值更改為第二預(yù)設(shè)的值。
[0020]本發(fā)明提供的虛擬機(jī)連續(xù)快照方法和裝置,虛擬機(jī)連續(xù)快照裝置僅需在虛擬機(jī)停機(jī)過(guò)程中將虛擬機(jī)中各頁(yè)面的第一位圖信息的值復(fù)制到第二位圖信息中,即可恢復(fù)虛擬機(jī)的運(yùn)行,在虛擬機(jī)運(yùn)行過(guò)程中根據(jù)各頁(yè)面的第二位圖信息的值依次對(duì)需要保存的各頁(yè)面進(jìn)行快照保存,由于對(duì)各頁(yè)面位圖信息的操作所需的時(shí)間很短,使得一次快照過(guò)程中虛擬機(jī)停機(jī)時(shí)間較短,且在虛擬機(jī)連續(xù)快照時(shí)僅需保存自上次快照后被修改的頁(yè)面,使得所有的頁(yè)面僅被保存一次,保存的頁(yè)面數(shù)量少,從而大大縮短了虛擬機(jī)一次快照的時(shí)間,降低了虛擬機(jī)連續(xù)快照過(guò)程對(duì)虛擬機(jī)性能的影響。
【附圖說(shuō)明】
[0021]圖1為本發(fā)明提供的一種虛擬機(jī)連續(xù)快照方法實(shí)施例一的流程示意圖;
[0022]圖2為本發(fā)明提供的一種虛擬機(jī)連續(xù)快照方法實(shí)施例二的流程示意圖;
[0023]圖3為本發(fā)明提供的一種虛擬機(jī)連續(xù)快照方法實(shí)施例三的流程示意圖;
[0024]圖4為本發(fā)明提供的一種虛擬機(jī)連續(xù)快照裝置實(shí)施例一的結(jié)構(gòu)示意圖;
[0025]圖5為本發(fā)明提供的一種虛擬機(jī)連續(xù)快照裝置實(shí)施例二的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0026]圖1為本發(fā)明提供的一種虛擬機(jī)連續(xù)快照方法實(shí)施例一的流程示意圖。如圖1所示,該方法包括:
[0027]S10,將虛擬機(jī)停機(jī)。
[0028]S11,根據(jù)所述虛擬機(jī)中各頁(yè)面的第一位圖信息的值更新各頁(yè)面的第二位圖信息的值。
[0029]其中,所述第一位圖信息用于標(biāo)識(shí)各頁(yè)面是否已被修改,所述第二位圖信息用于標(biāo)識(shí)所述各頁(yè)面是否需要保存,所述各頁(yè)面的第一位圖信息和第二位圖信息與各頁(yè)面的地址--對(duì)應(yīng)。
[0030]具體的,本方法實(shí)施例由虛擬機(jī)連續(xù)快照裝置執(zhí)行。本發(fā)明中虛擬機(jī)內(nèi)存的最小單位為頁(yè)面,每個(gè)頁(yè)面對(duì)應(yīng)一個(gè)頁(yè)面地址。本發(fā)明提供的虛擬機(jī)連續(xù)快照方法以對(duì)虛擬機(jī)的內(nèi)存快照為例進(jìn)行說(shuō)明,首先為虛擬機(jī)中各頁(yè)面建立位圖信息表,位圖信息表中包括虛擬機(jī)中各頁(yè)面的地址與第一位圖信息和第二位圖信息的對(duì)應(yīng)關(guān)系??梢苑謩e通過(guò)一個(gè)比特的值來(lái)表示第一位圖信息和第二位圖信息的兩種狀態(tài)。比如分別用I或O來(lái)表示第一位圖1h息和第二位圖息的兩種狀態(tài)。
[0031]為方便說(shuō)明,本發(fā)明各實(shí)施例中,第一位圖信息的值用O表示該頁(yè)面被寫保護(hù),未被修改,用I表示改頁(yè)面已被修改;第二位圖信息的值用I表示該頁(yè)面需要保存但未保存,用O表示該頁(yè)面已經(jīng)被保存或不需要保存為例進(jìn)行說(shuō)明。
[0032]本實(shí)施例中在進(jìn)行虛擬機(jī)連續(xù)快照時(shí),首先將虛擬機(jī)停機(jī),然后將位圖信息表中第一位圖信息的值拷貝到第二位圖信息中,這樣虛擬機(jī)連續(xù)快照裝置即可根據(jù)該頁(yè)面是否被修改來(lái)判斷該頁(yè)面是否需要保存了。舉例來(lái)說(shuō),若虛擬機(jī)中共包括3個(gè)頁(yè)面,虛擬機(jī)停機(jī)時(shí),第一頁(yè)面和第三頁(yè)面的第一位圖信息的值均為1,第二頁(yè)面的第一位圖信息的值為O,則說(shuō)明第一頁(yè)面和第三頁(yè)面已被修改,第二頁(yè)面未被修改,將各頁(yè)面的第一位圖信息復(fù)制到第二位圖信息后,第一頁(yè)面和第三頁(yè)面的第二位圖信息為1,第二頁(yè)面的第二位圖信息為O,則說(shuō)明第一頁(yè)面和第三頁(yè)面需要保存,而第二頁(yè)面不需要保存。
[0033]S12,初始化所述虛擬機(jī)中各頁(yè)面的第一位圖信息的值。
[0034]具體的,將虛擬機(jī)中各頁(yè)面的第一位圖信息復(fù)制到第二位圖信息后,為記錄此次快照過(guò)程中各頁(yè)面的被修改情況,將各頁(yè)面的第一位圖信息初始化,即將各頁(yè)面的第一位圖信息的值置O。在下次快照開(kāi)始前,虛擬機(jī)連續(xù)快照裝置再將各頁(yè)面的第一位圖信息值復(fù)制到第二位圖信息中,此時(shí)根據(jù)各頁(yè)面的第二位圖信息即可確定在上次快照過(guò)程中被修改的頁(yè)面,從而只保存相應(yīng)被修改過(guò)的頁(yè)面了。
[0035]S13,恢復(fù)所述虛擬機(jī)的運(yùn)行。
[0036]需要說(shuō)明的是,上述Sll和S12僅是一些簡(jiǎn)單的數(shù)據(jù)操作,所需時(shí)間很短,從而使虛擬機(jī)停機(jī)的時(shí)間很短。
[0037]S14,依次判斷所述虛擬機(jī)中各頁(yè)面的第二位圖信息的值是否為第一預(yù)設(shè)的值。
[0038]S15,將第二位圖信息的值為第一預(yù)設(shè)的值的各頁(yè)面保存到緩存區(qū),并將保存到緩存區(qū)的各頁(yè)面的第二位圖信息的值更改為第二預(yù)設(shè)的值。
[0039]具體的,本實(shí)施例中的第一預(yù)設(shè)的值即為I。虛擬機(jī)連續(xù)快照裝置在虛擬機(jī)停機(jī)后,僅將虛擬機(jī)中各頁(yè)面的第一位圖信息的值復(fù)制到第二位圖信息后,即恢復(fù)虛擬機(jī)的運(yùn)行,之后,依次判斷虛擬機(jī)中各頁(yè)面的第二位圖信息的標(biāo)識(shí),若某頁(yè)面的第二位圖信息的標(biāo)識(shí)是0,則說(shuō)明該頁(yè)面已經(jīng)被保存或無(wú)需保存,若