本發(fā)明涉及信息技術(shù)領(lǐng)域,尤其涉及一種信息處理方法及虛擬化管理器。
背景技術(shù):
在云平臺等虛擬系統(tǒng)中,通常將物理資源虛擬化,構(gòu)建虛擬機。將虛擬機出租給不同的用戶使用,利用不同的虛擬機用于不同的業(yè)務(wù)。
為了防止虛擬機故障,可以通過虛擬機的切換或重啟,進行業(yè)務(wù)的轉(zhuǎn)移等處理。
為了實現(xiàn)虛擬機故障時的業(yè)務(wù)順利轉(zhuǎn)移,一般會采用以下兩種方式進行虛擬機的業(yè)務(wù)轉(zhuǎn)移。
方式一:
當一個虛擬機故障后,重啟待用的虛擬機,實現(xiàn)虛擬機業(yè)務(wù)的快速轉(zhuǎn)移。但是這樣的話,需要一直建立有待用或備用的虛擬機,而虛擬機的建立都需要消耗內(nèi)存、輸入/出接口及計算資源等系統(tǒng)資源,這樣就導(dǎo)致的資源的浪費,且在虛擬重啟的過程中需要虛擬機系統(tǒng)的管理器做很多輔助的工作,虛擬機的重啟復(fù)雜。
方式二:
虛擬機管理器通過檢測虛擬機的心跳信息,確定對應(yīng)的虛擬機是否發(fā)生故障,若一旦發(fā)生故障就重建一個虛擬機繼續(xù)執(zhí)行之前的業(yè)務(wù),但是這樣的虛擬機重啟會導(dǎo)致一方面業(yè)務(wù)出現(xiàn)上下文丟失并出現(xiàn)業(yè)務(wù)故障。
技術(shù)實現(xiàn)要素:
有鑒于此,本發(fā)明實施例期望提供一種信息處理方法及虛擬化管理器,至少部分解決虛擬機故障恢復(fù)的資源消耗大或者上下文丟失的問題。
為達到上述目的,本發(fā)明的技術(shù)方案是這樣實現(xiàn)的:
本發(fā)明實施例第一方面提供一種信息處理方法,應(yīng)用于虛擬化管理器中,包括:
在當前時刻,將待寫入第一虛擬機的第一虛擬磁盤的數(shù)據(jù)內(nèi)容寫到預(yù)定內(nèi)存空間內(nèi);
判斷所述第一虛擬機是否符合預(yù)定條件;
若所述第一虛擬機符合所述預(yù)定條件,則中止所述第一虛擬機并創(chuàng)建第二虛擬機;
讀取前一時刻寫入所述第一虛擬磁盤的數(shù)據(jù)內(nèi)容,并將讀取的數(shù)據(jù)內(nèi)容加載到所述第二虛擬機上的第二虛擬磁盤上;
若所述第一虛擬機不符合所述預(yù)定條件,則將所述預(yù)定內(nèi)存空間內(nèi)的數(shù)據(jù)內(nèi)容寫入到所述第一虛擬磁盤。
可選地,所述方法還包括:
若所述第一虛擬機不符合所述預(yù)定條件且在將所述預(yù)定內(nèi)存空間內(nèi)的數(shù)據(jù)內(nèi)容寫入所述第一虛擬機之后,丟棄所述預(yù)定內(nèi)存空間內(nèi)的數(shù)據(jù)內(nèi)容。
可選地,所述方法還包括:
記錄所述第一虛擬磁盤中各個內(nèi)存頁的存儲狀態(tài);
所述若所述第一虛擬機不符合所述預(yù)定條件,則將所述預(yù)定內(nèi)存空間內(nèi)的數(shù)據(jù)內(nèi)容寫入到所述第一虛擬磁盤,包括:
根據(jù)所述存儲狀態(tài),確定所述第一虛擬磁盤中當前需要更新的內(nèi)存頁;
將所述預(yù)定空間內(nèi)的數(shù)據(jù)內(nèi)容寫入到當前需要更新的所述內(nèi)存頁上。
可選地,所述第一虛擬磁盤的存儲容量等于所述第二虛擬機的存儲容量;
所述讀取前一時刻寫入所述虛擬磁盤的數(shù)據(jù)內(nèi)容,并將讀取的數(shù)據(jù)內(nèi)容加載到所述第二虛擬機上的虛擬磁盤上,包括:
讀取前一時刻寫入所述第一虛擬磁盤的數(shù)據(jù)內(nèi)容;
將讀取的數(shù)據(jù)內(nèi)容寫入所述第二虛擬機。
可選地,所述判斷所述第一虛擬機是否符合預(yù)定條件,包括:
監(jiān)聽所述第一虛擬機的虛擬操作系統(tǒng);
根據(jù)監(jiān)聽的結(jié)果,判斷所述第一虛擬機是否符合預(yù)定條件。
可選地,所述方法還包括以下至少之一:
當所述預(yù)定條件為表明所述第一虛擬機故障的故障條件時,丟棄所述預(yù)定內(nèi)存空間內(nèi)數(shù)據(jù)內(nèi)容;
當所述預(yù)定條件為非故障條件時,在將所述第一虛擬磁盤上的數(shù)據(jù)內(nèi)容寫入到所述第二虛擬磁盤上之后,讀取所述預(yù)定內(nèi)存空間的數(shù)據(jù)內(nèi)容寫入到所述第二虛擬磁盤上。
本發(fā)明實施例第二方面提供一種虛擬化管理器,包括:
存儲單元,用于在當前時刻,將待寫入第一虛擬機的第一虛擬磁盤的數(shù)據(jù)內(nèi)容寫到預(yù)定內(nèi)存空間內(nèi);
判斷單元,用于判斷所述第一虛擬機是否符合預(yù)定條件;
創(chuàng)建單元,用于若所述第一虛擬機符合所述預(yù)定條件,則中止所述第一虛擬機并創(chuàng)建第二虛擬機;
讀寫單元,用于讀取前一時刻寫入所述第一虛擬磁盤的數(shù)據(jù)內(nèi)容,并將讀取的數(shù)據(jù)內(nèi)容加載到所述第二虛擬機上的第二虛擬磁盤上;若所述第一虛擬機不符合所述預(yù)定條件,則將所述預(yù)定內(nèi)存空間內(nèi)的數(shù)據(jù)內(nèi)容寫入到所述第一虛擬磁盤。
可選地,所述存儲單元,還用于若所述第一虛擬機不符合所述預(yù)定條件且在將所述預(yù)定內(nèi)存空間內(nèi)的數(shù)據(jù)內(nèi)容寫入所述第一虛擬機之后,丟棄所述預(yù)定內(nèi)存空間內(nèi)的數(shù)據(jù)內(nèi)容。
可選地,所述虛擬化管理器還包括:
記錄單元,用于記錄所述第一虛擬磁盤中各個內(nèi)存頁的存儲狀態(tài);
所述讀寫單元,還用于根據(jù)所述存儲狀態(tài),確定所述第一虛擬磁盤中當前需要更新的內(nèi)存頁;將所述預(yù)定空間內(nèi)的數(shù)據(jù)內(nèi)容寫入到當前需要更新的所述內(nèi)存頁上。
本發(fā)明實施例第三方面提供一種虛擬化管理器,包括:
存儲器,用于存儲數(shù)據(jù);
處理器,與所述存儲器連接,用于通過執(zhí)行計算機程序,實現(xiàn)前述一個或多個技術(shù)方案提供的信息處理方法。
本發(fā)明實施例提供的信息處理方法及虛擬化管理器,在向虛擬機的虛擬磁盤寫入數(shù)據(jù)之前,先將待寫入的數(shù)據(jù)臨時存儲到預(yù)定內(nèi)存空間內(nèi),判斷對應(yīng)的虛擬機是否出現(xiàn)故障等符合預(yù)設(shè)條件,若符合預(yù)設(shè)條件則中止當前虛擬機并創(chuàng)建一個新的虛擬機,替代被中止的虛擬機,并該中止的虛擬機上的數(shù)據(jù)加載到新創(chuàng)建的虛擬機的虛擬磁盤上,這樣就使得新創(chuàng)建的虛擬機繼承了中止的虛擬機的數(shù)據(jù),保存了上下文;且在虛擬機中止和創(chuàng)建的過程中,僅使用了預(yù)定內(nèi)存空間的存儲資源,并沒有直接進行虛擬機的所有資源備份,從而減少了虛擬機創(chuàng)建過程中繼承上下文所消耗的資源,提升了虛擬資源的有效利用率。
附圖說明
圖1為本發(fā)明實施例提供的第一種信息處理方法的流程示意圖;
圖2為本發(fā)明實施例提供的第一種虛擬化管理器的結(jié)構(gòu)示意圖;
圖3為本發(fā)明實施例提供的第二種虛擬化管理器的結(jié)構(gòu)示意圖;
圖4為本發(fā)明實施例提供一種虛擬系統(tǒng)的結(jié)構(gòu)示意圖;
圖5為本發(fā)明實施例提供的第二種信息處理方法的流程示意圖。
具體實施方式
以下結(jié)合說明書附圖及具體實施例對本發(fā)明的技術(shù)方案做進一步的詳細闡述。
如圖1所示,本實施例提供一種信息處理方法,應(yīng)用于虛擬化管理器中,包括:
步驟s110:在當前時刻,將待寫入第一虛擬機的第一虛擬磁盤的數(shù)據(jù)內(nèi)容寫到預(yù)定內(nèi)存空間內(nèi);
步驟s120:判斷所述第一虛擬機是否符合預(yù)定條件;
步驟s130:若所述第一虛擬機符合所述預(yù)定條件,則中止所述第一虛擬機并創(chuàng)建第二虛擬機;
步驟s140:讀取前一時刻寫入所述第一虛擬磁盤的數(shù)據(jù)內(nèi)容,并將讀取的數(shù)據(jù)內(nèi)容加載到所述第二虛擬機上的第二虛擬磁盤上;
步驟s150:若所述第一虛擬機不符合所述預(yù)定條件,則將所述預(yù)定內(nèi)存空間內(nèi)的數(shù)據(jù)內(nèi)容寫入到所述第一虛擬磁盤。
所述虛擬化管理器可為虛擬化資源系統(tǒng)(例如,云平臺)中的各種類型的虛擬化管理器,例如,hypervisor等虛擬化管理器。所述虛擬化管理器用于進行物理資源的抽象,完成虛擬化資源的配置及調(diào)度,并對虛擬化資源進行管理,例如,將某一些虛擬化資源分配給對應(yīng)的虛擬機,用于虛擬機的運行等。這里的虛擬化資源可包括:存儲資源、接口資源及計算資源中的至少一種。所述存儲資源又可以非為瞬間存儲資源和非瞬間存儲資源;所述瞬間存儲資源可為內(nèi)存資源;所述非瞬間存儲資源可為硬盤資源。所述接口資源可包括:人機交互接口的接口資源和網(wǎng)絡(luò)交互接口的網(wǎng)卡資源等。所述計算資源可包括:各種處理器或處理器線程數(shù)量等。
在步驟s110中,若當前時刻接收到一個需要向第一虛擬機的第一虛擬磁盤的數(shù)據(jù)內(nèi)容時,不直接寫入所述第一虛擬磁盤,而是寫入到所述虛擬化管理器預(yù)先分配的預(yù)定內(nèi)存空間內(nèi)。
在步驟s120中,判斷所述第一虛擬機是否符合預(yù)定條件,例如,判斷所述第一虛擬機是否出現(xiàn)故障,例如,出現(xiàn)線程崩潰或卡死等各種故障。比如,當所述第一虛擬機的虛擬中央處理器出現(xiàn)故障,則可認為所述第一虛擬機負荷所述預(yù)定條件。例如,通過檢測所述第一虛擬機的虛擬中央處理器所在物理機的心跳信息,確定所述第一虛擬機是否出現(xiàn)故障。
在一些實施例中,判斷所述第一虛擬機是否符合預(yù)定條件,還可包括:判斷是否出現(xiàn)了需要中止該第一虛擬機的其他狀況。例如,由于虛擬化資源的重新配置,可能需要收回第一虛擬機的虛擬化資源等。
總之,這里的預(yù)定條件為需要中止所述第一虛擬機的條件。
在步驟s130中當確定出所述第一虛擬機符合所述預(yù)定條件時,則中止所述第一虛擬機并創(chuàng)建第二虛擬機。這里創(chuàng)建的第二虛擬機用于替代所述第一虛擬機。在本實施例中,中止所述第一虛擬機可至少分為兩個步驟:中止所述第一虛擬機的運行,讀取第一虛擬機的當前運行的一些設(shè)置參數(shù)和/或正常的運行參數(shù);該設(shè)置參數(shù)和/或運行參數(shù),可以用于創(chuàng)建所述第二虛擬機。在一些實施例中,中止所述第一虛擬機的運行之后,讀取所述第一虛擬機的第一虛擬磁盤的數(shù)據(jù);將這些數(shù)據(jù)加載到所述第二虛擬機的第二虛擬磁盤上,這樣第二虛擬機就繼承了所述第一虛擬機的數(shù)據(jù),在完成第二虛擬機的創(chuàng)建及第二虛擬機對第一虛擬機的數(shù)據(jù)繼承之后,釋放所述第一虛擬機的虛擬化資源,完成所述第一虛擬機的資源中止。
這里的數(shù)據(jù)繼承,即為所述步驟s140中的讀取前一時刻寫入第一虛擬機上的數(shù)據(jù)內(nèi)容該,加載到第二虛擬機的第二虛擬磁盤上。這樣即便第一虛擬機故障,重建的第二虛擬機也保存了第一虛擬機數(shù)據(jù)寫入的上下文,從而減少了上下文丟失的狀況。
若當前時刻第一虛擬機故障,則可能當前需要寫入到第一虛擬磁盤的數(shù)據(jù)時有問題的,故在第一虛擬機故障時,直接基于之前第一虛擬磁盤上的數(shù)據(jù)內(nèi)容寫入第二虛擬磁盤即可。
當然若當前時刻第一虛擬機未故障,即正常,則需要將預(yù)定內(nèi)存空間的數(shù)據(jù)內(nèi)容,正常寫入到所述第一虛擬機的第一虛擬磁盤上。
在本實施例中所述預(yù)定內(nèi)存空間的存儲容量,通常小于所述第一虛擬磁盤的存儲空間,利用本實施例提供的信息處理方法,對第一虛擬機進行數(shù)據(jù)寫入,不用設(shè)置專門的備用虛擬機也能夠確保在第一虛擬機因故需要中止時,保存第一虛擬機的上下文,避免上下文丟失;與此同時,沒有設(shè)置專門的備用虛擬機,從而減少了資源浪費,提升了虛擬化系統(tǒng)的資源有效利用率。
可選地,所述方法還包括:
若所述第一虛擬機不符合所述預(yù)定條件且在將所述預(yù)定內(nèi)存空間內(nèi)的數(shù)據(jù)內(nèi)容寫入所述第一虛擬機之后,則丟棄所述預(yù)定內(nèi)存空間內(nèi)的數(shù)據(jù)內(nèi)容。
在本實施例中由于第一虛擬機不符合預(yù)定條件,則不用中止該第一虛擬機,也不用創(chuàng)建第二虛擬機,則知己而將預(yù)定內(nèi)存空間內(nèi)的數(shù)據(jù),正常寫入所述第一虛擬機即可,在完成寫入之后,故可以丟棄預(yù)定內(nèi)存空間內(nèi)的數(shù)據(jù)內(nèi)容,以方便用于預(yù)定內(nèi)存空間內(nèi)的下一個時刻寫入第一虛擬磁盤內(nèi)數(shù)據(jù)的暫存。
在本實施例中所述預(yù)定內(nèi)存空間為虛擬化管理器的內(nèi)存中的一部分,內(nèi)存中的數(shù)據(jù)讀寫是直接基于二進制的,具有數(shù)據(jù)讀寫速度快的特點。故在本實施例中,將第一虛擬磁盤的待寫入數(shù)據(jù),直接寫入到預(yù)定內(nèi)存空間做暫時的臨時存儲,盡可能減少了第一虛擬磁盤數(shù)據(jù)寫入的延時。
在本實施例中丟棄所述預(yù)定內(nèi)存空間內(nèi)的數(shù)據(jù)內(nèi)容,可以包括:利用擦除操作擦除所述預(yù)定內(nèi)存空間內(nèi)的數(shù)據(jù)內(nèi)容,也可以是采用數(shù)據(jù)覆蓋的形式,直接進行下一個時刻數(shù)據(jù)寫入的覆蓋,完成當前時刻寫入的數(shù)據(jù)的丟棄?;蛘?,直接修改預(yù)定內(nèi)存空間的存儲狀態(tài)標識,例如,存儲狀態(tài)標識為有效,則該預(yù)定內(nèi)存空間暫時拒絕其他操作,若存儲狀態(tài)標識為無效,則可以對預(yù)定內(nèi)存空間內(nèi)進行寫入和擦除操作。在本實施例中,所述丟棄所述預(yù)定內(nèi)存空間內(nèi)的數(shù)據(jù),可以包括:將所述存儲狀態(tài)標識從有效更改為無效即可。
在一些實施例中,所述方法還包括:
記錄所述第一虛擬磁盤中各個內(nèi)存頁的存儲狀態(tài);
所述步驟s150可包括:
根據(jù)所述存儲狀態(tài),確定所述第一虛擬磁盤中當前需要更新的內(nèi)存頁;
將所述預(yù)定空間內(nèi)的數(shù)據(jù)內(nèi)容寫入到當前需要更新的所述內(nèi)存頁上。
在本實施例中還會記錄所述第一虛擬磁盤中各個內(nèi)存頁的存儲狀態(tài),在本實施例中,可以利用比特位圖的形式,指示第一虛擬磁盤中各個內(nèi)存頁的存儲狀態(tài)。例如,一個讀寫周期,若內(nèi)存頁a不被寫入,則所述比特位圖中指示內(nèi)存頁a的比特為第一值;若內(nèi)存頁b有寫入,則內(nèi)存頁a對應(yīng)的比特為第二值;所述第一值不同于第二值,例如,所述第一值為“0”,則所述第二值可為“1”;或者,所述第一值為“1”,則所述第二值為“0”。通常一個比特指示一個內(nèi)存頁的存儲狀態(tài)。若所述第一虛擬磁盤包括m個內(nèi)存頁,通常所述比特位圖包括m個比特。在一個讀寫周期內(nèi),完成對應(yīng)內(nèi)存頁的更新之后,對應(yīng)內(nèi)存頁的比特值恢復(fù)到默認值,在本實施例中,若所述第一值為指示不用更新的存儲狀態(tài),則恢復(fù)到所述第一值。若基于讀寫請求,確定出對應(yīng)的內(nèi)存頁需要更新,則會將對應(yīng)比特的取值更改為所述第二值,等待寫入。
這樣在步驟s150中可以根據(jù)所述存儲狀態(tài)的記錄,確定出當前預(yù)定內(nèi)存空間內(nèi)的數(shù)據(jù)內(nèi)容需要寫入到第一虛擬磁盤上的內(nèi)存頁,再利用所述預(yù)定內(nèi)存空間內(nèi)的數(shù)據(jù)內(nèi)容更新第一虛擬磁盤的對應(yīng)的頁,完成所述第一虛擬磁盤上數(shù)據(jù)的寫入。
可選地,所述第一虛擬磁盤的存儲容量等于所述第二虛擬機的存儲容量;
所述步驟s140可包括:
讀取前一時刻寫入所述第一虛擬磁盤的數(shù)據(jù)內(nèi)容;
將讀取的數(shù)據(jù)內(nèi)容寫入所述第二虛擬機。
在本實施例中,所述第二虛擬磁盤可視為所述第一虛擬磁盤的復(fù)刻,故所述第一虛擬磁盤的存儲容量可等于所述第二虛擬機的存儲容量,方便數(shù)據(jù)的直接遷移。例如,可以采用基于直接存儲器的數(shù)據(jù)直接遷移來實現(xiàn),盡可能的提升數(shù)據(jù)遷移的速率。
可選地,所述步驟s130可包括:
監(jiān)聽所述第一虛擬機的虛擬操作系統(tǒng);
根據(jù)監(jiān)聽的結(jié)果,判斷所述第一虛擬機是否符合預(yù)定條件。
在本實施例中所述虛擬化管理器設(shè)置專門的監(jiān)聽線程或進程,對第一虛擬機的虛擬操作系統(tǒng)進行監(jiān)聽,根據(jù)監(jiān)聽的結(jié)果,可以判斷出所述第一虛擬機是否符合所述預(yù)定條件,至少可以判斷所述第一虛擬機是否符合指示第一虛擬機故障的故障條件。
可選地,所述方法還包括以下至少之一:
當所述預(yù)定條件為表明所述第一虛擬機故障的故障條件時,丟棄所述預(yù)定內(nèi)存空間內(nèi)數(shù)據(jù)內(nèi)容;
當所述預(yù)定條件為非故障條件時,在將所述第一虛擬磁盤上的數(shù)據(jù)內(nèi)容寫入到所述第二虛擬磁盤上之后,讀取所述預(yù)定內(nèi)存空間的數(shù)據(jù)內(nèi)容寫入到所述第二虛擬磁盤上。
在本實施例中所述預(yù)定條件可分為:故障條件和非故障條件。滿足故障條件的虛擬機,通常是發(fā)生了故障不能在正常運行的虛擬機。而非故障條件是因虛擬機自身故障以外的其他原因?qū)е聦?yīng)的虛擬機需要中止的條件,例如,虛擬資源的回收等需求。故在本實施例中,會根據(jù)預(yù)定條件的劃分,區(qū)分對待所述預(yù)定內(nèi)存空間內(nèi)的數(shù)據(jù)內(nèi)容。
若第一虛擬機符合故障條件,則可能是由于當前操作導(dǎo)致的第一虛擬機故障,故預(yù)定內(nèi)存空間內(nèi)的數(shù)據(jù)可能是異常數(shù)據(jù),故可以直接丟棄。
若第一虛擬機符合的非故障條件,表明所述第一虛擬機正常,則次數(shù)預(yù)定內(nèi)存空間內(nèi)的數(shù)據(jù)內(nèi)容正常,可以直接將預(yù)定內(nèi)存空間內(nèi)的數(shù)據(jù)內(nèi)容寫入到第二虛擬磁盤中,從而不用進行第二虛擬機創(chuàng)建之后的操作的回滾,對于用戶而言,以實現(xiàn)第一虛擬機復(fù)刻的透明操作。
如圖2所示,本實施例提供一種虛擬化管理器,包括:
存儲單元110,用于在當前時刻,將待寫入第一虛擬機的第一虛擬磁盤的數(shù)據(jù)內(nèi)容寫到預(yù)定內(nèi)存空間內(nèi);
判斷單元120,用于判斷所述第一虛擬機是否符合預(yù)定條件;
創(chuàng)建單元130,用于若所述第一虛擬機符合所述預(yù)定條件,則中止所述第一虛擬機并創(chuàng)建第二虛擬機;
讀寫單元140,用于讀取前一時刻寫入所述第一虛擬磁盤的數(shù)據(jù)內(nèi)容,并將讀取的數(shù)據(jù)內(nèi)容加載到所述第二虛擬機上的第二虛擬磁盤上;若所述第一虛擬機不符合所述預(yù)定條件,則將所述預(yù)定內(nèi)存空間內(nèi)的數(shù)據(jù)內(nèi)容寫入到所述第一虛擬磁盤。
在本實施例中,所述存儲單元110可包括存儲介質(zhì),至少可包括內(nèi)存,該內(nèi)存的部分或全部區(qū)域可作為所述預(yù)定內(nèi)存空間,用于供待寫入第一虛擬機的數(shù)據(jù)內(nèi)容的暫存。
所述判斷單元120、創(chuàng)建單元130及讀寫單元140都可以對應(yīng)于一個或多個處理器,所述處理器可包括:中央處理器(cpu)、微處理器(mcu)、數(shù)字信號處理器(dsp)或可編程陣列(plc)等。
所述處理器通過計算機程序的執(zhí)行,可以實現(xiàn)第一虛擬機是否符合預(yù)定條件的判斷,以及第一虛擬機的中止及第二虛擬機的創(chuàng)建,以及將預(yù)定內(nèi)存空間內(nèi)的數(shù)據(jù)寫入到第一虛擬磁盤的操作。
本實施例提供的虛擬化管理器,通過預(yù)定內(nèi)存空間的設(shè)置,通過將待寫入到第一虛擬磁盤的數(shù)據(jù)內(nèi)容的暫存及第一虛擬磁盤的數(shù)據(jù)內(nèi)容寫入前的第一虛擬機是否符合預(yù)定條件的判斷,可以在第一虛擬機需要中止時不僅可以保持上下文,還可以盡可能的減少虛擬機故障等需要中止過程中因需要保持上下文所消耗的虛擬資源。
可選地,所述存儲單元110,還用于若所述第一虛擬機不符合所述預(yù)定條件且在將所述預(yù)定內(nèi)存空間內(nèi)的數(shù)據(jù)內(nèi)容寫入所述第一虛擬機之后,丟棄所述預(yù)定內(nèi)存空間內(nèi)的數(shù)據(jù)內(nèi)容。
在本實施例中,所述存儲單元110會將已經(jīng)寫入第一虛擬磁盤的數(shù)據(jù)內(nèi)容剛給丟棄掉,從而使得預(yù)定存儲空間可以存儲下一個時刻的數(shù)據(jù)內(nèi)容。
可選地,所述虛擬化管理器還包括:
記錄單元,用于記錄所述第一虛擬磁盤中各個內(nèi)存頁的存儲狀態(tài);
所述讀寫單元140,具體用于根據(jù)所述存儲狀態(tài),確定所述第一虛擬磁盤中當前需要更新的內(nèi)存頁;將所述預(yù)定空間內(nèi)的數(shù)據(jù)內(nèi)容寫入到當前需要更新的所述內(nèi)存頁上。
在本實施例中所述記錄單元,也可包括存儲介質(zhì),用于存儲第一虛擬磁盤中各個內(nèi)存頁的存儲狀態(tài),例如,所述存儲介質(zhì)可包括:一個比特位圖的存儲區(qū)域。
所述讀寫單元140具體根據(jù)記錄單元記錄的存儲狀態(tài),更新第一虛擬磁盤的各個內(nèi)存頁。
可選地,所述第一虛擬磁盤的存儲容量等于所述第二虛擬機的存儲容量;
所述讀取單元140,具體用于讀取前一時刻寫入所述第一虛擬磁盤的數(shù)據(jù)內(nèi)容;將讀取的數(shù)據(jù)內(nèi)容寫入所述第二虛擬機。
在一些實施例中,所述判斷單元120,具體用于監(jiān)聽所述第一虛擬機的虛擬操作系統(tǒng);根據(jù)監(jiān)聽的結(jié)果,判斷所述第一虛擬機是否符合預(yù)定條件。
可選地,所述存儲單元110,還可用于當所述預(yù)定條件為表明所述第一虛擬機故障的故障條件時,丟棄所述預(yù)定內(nèi)存空間內(nèi)數(shù)據(jù)內(nèi)容;和/或,所述讀寫單元140,具體用于當所述預(yù)定條件為非故障條件時,在將所述第一虛擬磁盤上的數(shù)據(jù)內(nèi)容寫入到所述第二虛擬磁盤上之后,讀取所述預(yù)定內(nèi)存空間的數(shù)據(jù)內(nèi)容寫入到所述第二虛擬磁盤上。
如圖3所示,本實施例還提供一種虛擬化管理器,包括:
存儲器210,用于存儲數(shù)據(jù);
處理器220,與所述存儲器210連接,用于通過執(zhí)行計算機程序,實現(xiàn)前述任意一個或多個技術(shù)方案提供的信息處理方法。
這里的處理器220可為cpu、mcu、dsp或plc中任意一個。所述處理器220可為單核處理器,也可以是多核處理器。
所述處理器220通過集成電路總線等總線接口230與所述存儲器210連接。所述存儲器210至少包括內(nèi)存,可以用于存儲各種數(shù)據(jù)。在一誒實施例中所述存儲器210還可包括非瞬間存儲介質(zhì),可以用于永久性存儲數(shù)據(jù)。
本實施例中提供的虛擬化管理器,能夠中止一個虛擬機后能夠以最小的資源集成中止的虛擬機的上下文,具有資源有效利用高及上下文得以維持的特點。
以下結(jié)合上述任意一個實施例提供幾個具體示例:
示例1:
如圖4所示,本示例提供一種虛擬機系統(tǒng),包括主機及存儲介質(zhì);
所述主機上配置有虛擬化管理器;所述虛擬化管理器,用于將主機及存儲機的硬件資源進行資源虛擬化,形成虛擬化資源,并對虛擬化資源進行管理。
在本示例中,在所述虛擬化管理器上配置有自動恢復(fù)組件;
所述自動恢復(fù)組件,用于在所述虛擬化管理器監(jiān)聽到虛擬機vm1的虛擬中央處理器(vcpu)虛擬操作系統(tǒng)(os)發(fā)生故障時,重新新建一個虛擬機vm2,并將vm1發(fā)生故障之前的內(nèi)存內(nèi)的數(shù)據(jù)加載到vm2的虛擬磁盤內(nèi),從而不僅可以實現(xiàn)虛擬機重建,且能夠使得重建后的虛擬機vm2可以獲得上下文。
示例2:
本示例提供一種虛擬機恢復(fù)方法,主要分為以下三個方面:
第一:對虛擬機內(nèi)存的內(nèi)存狀態(tài)的動態(tài)記錄;
第二:對虛擬機操作系統(tǒng)發(fā)生故障的及時捕捉;
第三:將每次需要保存的迅疾內(nèi)存變動與虛擬機操作系統(tǒng)故障是否發(fā)生相結(jié)合。
本示例提供的虛擬機恢復(fù)方法,具體可包括:
a)當虛擬機啟動前做初始化,由虛擬化管理器(hypervisor)對整個物理內(nèi)存(gpa)進行臟頁追蹤;
b)用迭代方式將虛擬機的物理內(nèi)存不停的寫入到虛擬機對應(yīng)的虛擬磁盤上。
c)在寫入之前,首先需要將本次新產(chǎn)生的變動內(nèi)存頁做一份拷貝,將此拷貝存放于虛擬化管理器的內(nèi)存中。然后檢查虛擬機操作系統(tǒng)是否發(fā)生了故障,如果沒有故障,則將本次新產(chǎn)生的變動內(nèi)存頁直接寫入到虛擬磁盤上。
d)當虛擬化管理器監(jiān)聽到虛擬機操作系統(tǒng)發(fā)生了故障時,立即停止虛擬機的虛擬處理器,同時停止迭代記錄變動內(nèi)存的過程,并根據(jù)c)中保留的拷貝,回滾到上一次故障還未發(fā)生時的內(nèi)存狀態(tài)。
e)此時將保存在虛擬磁盤上發(fā)生故障前的內(nèi)存導(dǎo)入到虛擬化管理器中,根據(jù)導(dǎo)入內(nèi)存恢復(fù)虛擬機。這時被恢復(fù)的虛擬機不含故障發(fā)生的內(nèi)存頁,同時因為回滾的是極小的時間片,其上的業(yè)務(wù)程序上下文都在并不受影響。
示例3:
如圖5所示,本示例提供一種虛擬機恢復(fù)方法,包括:
步驟s1:初始化虛擬機vm;
步驟s2:初始臟頁追蹤,具體可包括:初始化內(nèi)存比特位圖,比特位圖包括:多個狀態(tài)指示比特,一個狀態(tài)比特指示vm一次內(nèi)存變更是否正常的兩種狀態(tài);
步驟s3:預(yù)備迭代,具體可包括:初始化迭代階段,拷貝每一次的臟頁;這里的臟頁為需要更新的內(nèi)存頁
步驟s4:判斷一個虛擬機是否發(fā)送故障,若否則進入步驟s5,若是則進入步驟s6;
步驟s5:保持迭代,丟棄臟頁;
步驟s6:停止迭代,具體可包括:停止對應(yīng)vm的虛擬處理器(vcpu),保存虛擬機的當前狀態(tài);
步驟s7:內(nèi)存滾回,具體可包括:將虛擬機內(nèi)存滾回臟頁的前一時刻的內(nèi)存;
步驟s8:新建一個虛擬機,并將故障虛擬機的內(nèi)存加載到新建立的虛擬機的虛擬磁盤中;
步驟s9:啟動新建的虛擬機。
在本申請所提供的幾個實施例中,應(yīng)該理解到,所揭露的設(shè)備和方法,可以通過其它的方式實現(xiàn)。以上所描述的設(shè)備實施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,如:多個單元或組件可以結(jié)合,或可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另外,所顯示或討論的各組成部分相互之間的耦合、或直接耦合、或通信連接可以是通過一些接口,設(shè)備或單元的間接耦合或通信連接,可以是電性的、機械的或其它形式的。
上述作為分離部件說明的單元可以是、或也可以不是物理上分開的,作為單元顯示的部件可以是、或也可以不是物理單元,即可以位于一個地方,也可以分布到多個網(wǎng)絡(luò)單元上;可以根據(jù)實際的需要選擇其中的部分或全部單元來實現(xiàn)本實施例方案的目的。
另外,在本發(fā)明各實施例中的各功能單元可以全部集成在一個處理模塊中,也可以是各單元分別單獨作為一個單元,也可以兩個或兩個以上單元集成在一個單元中;上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用硬件加軟件功能單元的形式實現(xiàn)。
本領(lǐng)域普通技術(shù)人員可以理解:實現(xiàn)上述方法實施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成,前述的程序可以存儲于一計算機可讀取存儲介質(zhì)中,該程序在執(zhí)行時,執(zhí)行包括上述方法實施例的步驟;而前述的存儲介質(zhì)包括:移動存儲設(shè)備、只讀存儲器(rom,read-onlymemory)、隨機存取存儲器(ram,randomaccessmemory)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
以上所述,僅為本發(fā)明的具體實施方式,但本發(fā)明的保護范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護范圍之內(nèi)。因此,本發(fā)明的保護范圍應(yīng)以所述權(quán)利要求的保護范圍為準。