新四季網

一種虛擬機內存快照生成和恢復方法、裝置及系統的製作方法

2023-05-22 14:28:06 3

專利名稱:一種虛擬機內存快照生成和恢復方法、裝置及系統的製作方法
技術領域:
本發明涉及一種內存快照技術,尤其涉及一種虛擬機內存快照生成和恢復的方法、裝置及系統。
背景技術:
通過虛擬化技術,用戶可以在一臺物理計算機上模擬出一臺或多臺虛擬機 (Virtual Machine, VM),這些虛擬機可以像真正的計算機那樣進行工作,例如用戶可以安裝作業系統、安裝應用程式、訪問網絡資源等等。虛擬機快照技術隨著虛擬化技術同時產生,由於虛擬機的計算、存儲資源都是通過虛擬機監視器(Virtual Machine Monitor, VMM)進行虛擬化,我們可以通過快照技術方便地保留虛擬機某個時間點的CPU狀態、內存狀態以及存儲數據,從而輕鬆實現物理機上繁瑣的全狀態備份,用戶可以方便地備份和恢復虛擬機。目前常見的快照應用主要有兩種一是簡單的存儲快照,僅備份存儲數據,虛擬機用戶在使用虛擬機過程中可能由於各種原因(病毒、木馬的破壞,誤刪除系統文件,誤格式化等)導致虛擬機鏡像損壞或是無法正常啟動,如果通過存儲快照在虛擬機正常時備份相關數據,可以方便地恢復備份點的頁數據;二是存儲快照和內存快照相結合,由於在某些場景下,用戶需要快速創建或恢復虛擬機(相關業務部署加載繁瑣冗長、業務恢復中斷時間要求高、批量快速部署虛擬機等),或者為了某些調試需求需要保留當前業務狀態(問題定位,測試分支選擇等),此時僅僅使用存儲快照無法滿足需求,因此內存快照的引入彌補了這方面的不足,通過VMM的能力把虛擬機的內存數據保存成外部存儲介質上的內存快照文件,方便保存和隨時恢復,同時,這也是虛擬化條件下帶來的便利。VMWare (Virtual Machine ware)是虛擬化解決方案的領導廠商,目前已經能提供虛擬機快照總體方案,包括存儲快照和內存快照,其內存快照是對內存數據的黑盒的全量拷貝,生成的快照文件大小與虛擬機內存規格保持一致,即擁有IG內存的虛擬機最終生成的內存快照文件大小為1G,與存儲快照一起存放在其分布式存儲上;快照恢復時,也是順序讀取快照文件進行1 1內存還原。因此,快照生成過程和快照恢復過程時間都比較長, 同時,生成的內存快照文件與虛擬機內存大小一致,對存儲資源也是一種浪費。

發明內容
本發明實施例提供一種虛擬機內存快照生成和恢復的方法、裝置及系統,以縮短虛擬機內存快照的處理時間且節約存儲資源。本發明實施例提供如下技術方案一方面,本發明實施例提供一種虛擬機內存快照生成方法,所述方法包括獲取所述虛擬機的當前第S內存頁;識別所述當前第S內存頁的頁類型,所述頁類型包括非有效數據頁和有效數據頁;
當所述當前第S內存頁為非有效數據頁時,在內存快照文件中記錄所述當前第S 內存頁的頁類型;當所述當前第S內存頁為有效數據頁時,在內存快照文件中記錄所述當前第S內存頁的頁類型和頁數據。另一方面,本發明實施例提供一種虛擬機內存快照恢復方法,所述方法包括獲取並解析所述虛擬機的內存快照文件;當所述內存快照文件中記錄的當前第S內存頁的頁類型為非有效數據頁時,在 VMM內存空間中中記錄所述當前第S內存頁的頁類型為非有效數據頁;當所述內存快照文件中記錄的當前第S內存頁的頁類型為有效數據頁時,在所述VMM內存空間中中記錄所述當前第S內存頁的頁類型為有效數據頁,並將所述內存快照文件中記錄的所述當前第S內存頁的頁數據對應地拷貝到所述虛擬機的第S內存頁中。另一方面,本發明實施例提供一種物理主機,所述物理主機包括硬體層,運行在所述硬體層之上的虛擬機監視器VMM,以及運行在所述虛擬機監視器VMM上的虛擬機,所述虛擬機監視器VMM中包括內存快照生成模塊和內存頁識別模塊,其中所述內存快照生成模塊用於獲取所述虛擬機的當前第S內存頁;當所述內存頁識別模塊識別所述當前第S內存頁為非有效數據頁時,在內存快照文件中記錄所述當前第 S內存頁的頁類型;當所述內存頁識別模塊識別所述當前第S內存頁為有效數據頁時,在內存快照文件中記錄所述當前第S內存頁的頁類型和頁數據;所述內存頁識別模塊用於識別所述內存快照生成模塊獲取的所述當前第S內存頁的頁類型,所述頁類型包括非有效數據頁和有效數據頁;所述硬體層包括存儲設備,所述存儲設備用於存儲所述內存快照文件。另一方面,本發明實施例提供一種計算機系統,該系統包括物理主機和網絡存儲設備,其中所述物理主機為本發明實施例提供的物理主機,用來執行虛擬機內存快照文件的生成和恢復;所述網絡存儲設備用於存儲所述物理主機的虛擬機內存快照文件。可見,本發明實施例提供的虛擬機內存快照生成和恢復的方法、裝置及系統中,通過識別不同的內存頁類型,在內存快照生成過程中,根據不同的內存頁類型執行不同的快照生成處理,包括在當前第S內存頁為非有效數據頁時,在內存快照文件中僅記錄所述當前第S內存頁的頁類型;在當前第S內存頁為有效數據頁時,在內存快照文件中記錄所述當前第S內存頁的頁類型和頁數據;以及,在內存快照恢復過程中,根據不同的內存頁類型執行不同的快照恢復處理,包括當所述內存快照文件中記錄的當前第S內存頁的頁類型為非有效數據頁時,在VMM內存空間中記錄所述當前第S內存頁的頁類型為非有效數據頁;當所述內存快照文件中記錄的當前第S內存頁的頁類型為有效數據頁時,在所述VMM內存空間中記錄所述當前第S內存頁的頁類型為有效數據頁,並將所述內存快照文件中記錄的所述當前第S內存頁的頁數據對應地拷貝到所述虛擬機的第S內存頁中,從而通過本發明實施例僅保存有效數據,減少無效數據的備份和恢復,大大縮短了內存快照的生成和恢復時間,減小了內存快照對存儲資源的佔用。


為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對於本領域普通技術人員來講,在不付出創造性勞動性的前提下,還可以根據這些附圖獲得其他的附圖。圖1為本發明實施例的一種虛擬機內存快照生成方法的流程示意圖;圖2為本發明實施例的另一種虛擬機內存快照生成方法的流程示意圖;圖3為本發明實施例的再一種虛擬機內存快照生成方法的流程示意圖;圖4為本發明實施例的一種內存快照文件的邏輯結構示意圖;圖5為本發明實施例的另一種內存快照文件的邏輯結構示意圖;圖6為本發明實施例的一種虛擬機內存快照恢復方法的流程示意圖;圖7為本發明實施例的另一種虛擬機內存快照恢復方法的流程示意圖;圖8為本發明實施例的再一種虛擬機內存快照恢復方法的流程示意圖;圖9為本發明實施例的一種物理主機的邏輯結構示意圖;圖10為本發明實施例的一種計算機系統的邏輯結構示意圖;圖11為本發明實施例的一種計算機系統的物理部署示意圖。
具體實施例方式下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基於本發明中的實施例,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬於本發明保護的範圍。本發明實施例一提供一種虛擬機內存快照生成方法,如圖1所示,該方法可以包括步驟S101、獲取該虛擬機的當前第S內存頁。需要說明的是,本發明實施例中引入「第S內存頁」只是為了便於描述,並非限定具體哪一個內存頁,應當理解的是,這裡的S可以是1,2,. . . N(N =該虛擬機實際的頁數量),當S為1時,表示本步驟中獲取的當前內存頁是所述虛擬機的第一個內存頁;本步驟可以是順序獲取內存頁,也可以倒序獲取內存頁,不做限定。步驟S102、識別所述當前第S內存頁的頁類型,所述頁類型包括非有效數據頁和有效數據頁。步驟S102可以是,至少根據VMM內存空間中保存的頁類型信息,識別該當前第S 內存頁的頁類型,所述頁類型包括非有效數據頁和有效數據頁。具體的,在一種實現方式下,步驟S102具體為根據虛擬機監視器VMM內存空間中保存的頁類型信息,確定這個當前第S內存頁的頁類型,所述頁類型包括氣球頁 (Balloon)、需時分配頁(populate on demand, Pod)、共享頁(share)、交換頁(swap)禾口普通頁;其中,氣球頁和需時分配頁為非有效數據頁,共享頁、交換頁和普通頁為有效數據頁。 在一種具體實現方式下,在VMM內存空間中維護了內存頁類型的結構體變量,其中普通頁是默認值,出現其它類型頁時會改變其類型並進行標記。在開源虛擬機Xen中,可以通過調用系統接口從VMM內存中獲取虛擬機內存頁的結構體變量p2m_type_t來判斷其類型,其中 p2m_invalid = 0 為氣球頁,p2m_populate_on_demand = 6 為需時分配頁,p2m_ram_paged =10為交換頁,p2m_ram_共享d = 13為共享頁,p2m_ram_rw = 1為普通頁。
在另一種實現方式下,詳見圖2,步驟S102可以包括步驟S201和步驟S202,其中步驟S201、根據所述VMM內存空間中保存的頁類型信息,確定所述當前第S內存頁的頁類型,所述頁類型包括氣球頁、需時分配頁、共享頁、交換頁和普通頁;步驟S202、當所述當前第S內存頁的頁類型為普通頁時,遍歷所述當前第S內存頁的內容,確定所述當前第S內存頁的頁類型為零頁或非零頁;其中,氣球頁、需時分配頁和零頁為非有效數據頁,非零頁、共享頁和交換頁為有效數據頁。需要說明的是,本發明實施例所列舉的內存頁類型是目前虛擬機中可能出現的一些內存頁類型,有的應用比較多,例如氣球頁、零頁和非零頁;有的應用比較少;例如共享頁和交換頁;需時分配頁目前通用性不高,但在Xen開源虛擬機中也有應用。本發明實施例以這些頁類型為例,無意局限於這些頁類型的識別。無論目前應用的其它內存頁類型,還是以後可能出現的內存頁類型,只要應用本發明實施例公開的內存快照生成和恢復方法都應在本發明保護範圍之內。步驟S103、當所述當前第S內存頁為非有效數據頁時,在內存快照文件中記錄所述當前第S內存頁的頁類型;當所述當前第S內存頁為有效數據頁時,在內存快照文件中記錄所述當前第S內存頁的頁類型和頁數據。相應的,在一種實現方式下,其中,氣球頁和需時分配頁為非有效數據頁,共享頁、 交換頁和普通頁為有效數據頁;步驟S103具體可以包括在當前第S內存頁為氣球頁時,在內存快照文件中記錄當前第S內存頁的頁類型為氣球頁;在當前第S內存頁為需時分配頁時,在內存快照文件中記錄當前第S內存頁的頁類型為需時分配頁;在當前第S內存頁為交換頁時,在內存快照文件中記錄當前第S內存頁的頁類型為交換頁,從內存交換文件中拷貝該交換頁的頁數據到該內存快照文件中;在當前第S內存頁為共享頁時,在內存快照文件中記錄當前第S內存頁的頁類型為共享頁,拷貝該共享頁的頁數據到該內存快照文件中,並記錄與當前第S內存頁共享內存數據的其它內存頁的頁號;在當前第S內存頁為普通頁時,在內存快照文件中記錄當前第S內存頁的頁類型為普通頁,拷貝該普通頁的頁數據到所述內存快照文件中。相應的,在另一種實現方式下,其中,氣球頁、需時分配頁和零頁為非有效數據頁, 非零頁、共享頁和交換頁為有效數據頁;步驟S103具體可以包括在當前第S內存頁為氣球頁時,在內存快照文件中記錄當前第S內存頁的頁類型為氣球頁;在當前第S內存頁為需時分配頁時,在內存快照文件中記錄當前第S內存頁的頁類型為需時分配頁;在當前第S內存頁為零頁時,在內存快照文件記錄當前第S內存頁的頁類型為零頁;在當前第S內存頁為非零頁時,在內存快照文件中記錄當前第S內存頁的頁類型為非零頁,拷貝當前第S內存頁的頁數據到該內存快照文件中;在當前第S內存頁為交換頁時,在內存快照文件中記錄當前第S內存頁的頁類型為交換頁,從內存交換文件中拷貝該交換頁的頁數據到前述內存快照文件中;在當前第S內存頁為共享頁時,在內存快照文件中記錄當前第S內存頁的頁類型為共享頁,拷貝該共享頁的頁數據到前述內存快照文件中,並記錄與當前第S內存頁共享內存數據的其它內存頁的頁號。綜上所述,本發明實施例提供的虛擬機內存快照生成方法,通過識別不同的內存頁類型,在內存快照生成過程中,根據不同的內存頁類型執行不同的快照生成處理,包括 在當前第S內存頁為非有效數據頁時,在內存快照文件中僅記錄該當前第S內存頁的頁類型;在當前第S內存頁為有效數據頁時,在內存快照文件中記錄該當前第S內存頁的頁類型和頁數據,從而通過本發明實施例僅保存有效數據,減少無效數據的備份,大大縮短了內存快照的生成時間,並減小了內存快照文件的大小,節約了存儲資源。本發明實施例二提供一種虛擬機內存快照的生成方法,下面結合圖3來詳細介紹該虛擬機內存快照生成方法的流程,包括如下步驟步驟300、流程開始;該流程的開始可以是由用戶觸發內存快照操作,物理主機提供用戶接口給最終用戶,以便於觸發內存快照操作;也可以是虛擬機自動觸發的,可以是定時觸發,也可以根據虛擬機的運行狀況等自動觸發。步驟301、確定虛擬機實際內存大小、內存頁大小(亦可稱為頁大小,一般為4KB或 2MB)等信息,這些信息用來初始化內存快照文件,且在虛擬機內存快照恢復時用來判斷內存快照文件的完整性;需要說明的是,這裡的虛擬機可以是用戶通過用戶接口所指定的虛擬機,也可以是定時觸發的虛擬機。步驟302、初始化內存快照文件,包括預申請內存快照文件的存儲空間和初始化內存快照文件的結構及初始信息。所述初始信息指虛擬機內存大小、內存頁大小、內存頁數量 (具體的,根據虛擬機實際內存大小、內存頁大小可以計算出虛擬機實際的內存頁數量)、 以及有效數據起始地址等信息;優選地,本發明實施例中提供的內存快照文件結構如圖4所示,包括信息段41和數據段42,其中信息段41包括全局信息411和內存頁的位圖結構體BITMAP,所述位圖結構體BITMAP是一種通用的順序數據存儲結構,在本發明實施例中利用該結構體存儲內存頁的頁號4121、頁類型4122以及數據偏移量4123。數據段42順序存儲有效數據頁中的有效數據,並與信息段41中的數據偏移量4123—一對應。全局信息411可以用來記錄虛擬機內存大小、內存頁數量、內存頁大小以及有效數據起始地址等全局類的信息,這些信息可以在初始化內存快照文件302時寫入內存快照,也可以在內存頁處理完成之後再寫入內存快照;頁號4121記錄每個內存頁的頁號;頁類型4122記錄對應頁號的內存頁的頁類型標識; 數據偏移量4123記錄其對應的內存頁的有效數據在數據段42中的偏移量,即數據段42中記錄的有效數據按照信息段41中的數據偏移量4123來索引,通過把數據偏移量與所述有效數據起始地址相加後可以在數據段42中找到對應的內存數據。需要說明的是,圖4提供的內存快照文件結構並無限定僅為此種結構的意思,只是舉例說明。在另一種實現方式下,內存快照文件也可以如圖5所示包含頁類型51和有效數據52兩個欄位。其中頁類型51存儲識別出的內存頁的類型標識,所述類型標識唯一標識一種頁類型,可以自主定義,例如000代表零頁、001代表氣球頁等。有效數據52存儲有效數據頁的頁數據,所述有效數據頁包括非零頁、共享頁和交換頁。值得一提的是,共享頁的共享頁號可以根據內存快照文件各個部分存儲的信息、 各個部分的容量或其它因素決定其存儲位置,例如如圖5中有效數據52或頁類型51中留出部分空間存儲所述共享頁號,當然也可以在內存快照中單獨劃分一個部分存儲共享頁號。需要說明的是,根據以上提到的內存快照文件結構,本領域技術人員可以很容易想到其它等同替代方式或明顯變型方式。例如圖4中全局信息精簡,僅保存頁數量和頁大小;頁號信息也可以不保存等;或者改變內存快照的存儲順序等,這些等同替代方式或明顯變型方式也應視為本發明的保護範圍。步驟303、順序選取一個內存頁;可以是,從第一個內存頁開始一一執行內存頁識別。步驟304、根據VMM內存空間中保存的內存頁類型信息判斷當前內存頁是否為普通頁,當判斷出選取的內存頁不是普通頁,則執行步驟305 ;當判斷出選取的內存頁是普通頁,則執行步驟306;在一種實現方式下,所述內存頁類型信息保存在一個頁類型結構體中,該頁類型結構體存儲在物理主機的硬體層的內存memory中,具體的,該頁類型結構體存儲在VMM內存空間中,可以通過系統調用獲得。所述VMM內存空間是VMM為完成正常工作而在物理內存上劃分一塊特定區域,存放了 VMM在完成虛擬設備模擬、內存管理以及內存快照生成和恢復等各項功能所用到的數據結構等相關關鍵信息,例如虛擬機內存頁類型的結構體變量, 內存共享哈希表以及虛擬機內存與物理內存的一一映射關係等。當VMM管理的虛擬機VM 是多個時,這個VMM內存空間分別劃分出獨立的部分來存儲不同虛擬機VM的信息。VMM可以通過調用系統接口訪問所述VMM內存空間。步驟305、在內存快照文件中,根據該內存頁具體的頁類型執行相應的內存快照生成處理。這裡的頁類型包括氣球頁、需時分配頁、共享頁和交換頁。具體的,當內存頁為氣球頁時,在前述內存快照文件(參照圖4)的頁類型4122欄位中記錄該內存頁的頁類型為氣球頁;當內存頁為需時分配頁時,在前述內存快照文件的頁類型4122欄位中記錄該內存頁的頁類型為需時分配頁;當內存頁為交換頁時,在前述內存快照文件的頁類型4122欄位中記錄該內存頁的頁類型為交換頁,從內存交換文件中拷貝該交換頁的有效數據到前述內存快照文件的數據段42中,並在數據偏移量4123欄位中記錄下這些有效數據在數據段42中的偏移量;當內存頁為共享頁時,在前述內存快照文件的頁類型4122欄位中記錄該內存頁的頁類型為共享頁,拷貝該共享頁的共享數據到前述內存快照文件的數據段42中,並在數據偏移量4123欄位中記錄下這些共享數據在數據段 42中的偏移量和與該共享頁共享內存數據的其它內存頁的頁號,這裡的共享頁號可以通過調用系統接口查詢VMM內存中保存的內存共享哈希表獲得。步驟306、通過遍歷內存頁內容判斷內存頁內容是否全為0。如果為零,該頁即為零頁,轉步驟307 ;如果不為零,該頁即為非零頁,轉步驟308 ;步驟307、在內存快照文件中執行零頁的相應處理,即在所述內存快照文件的頁類型4122中記錄當前第S內存頁的頁類型為零頁,不拷貝內存數據;
步驟308、在內存快照文件中執行非零頁的相應處理,即在所述內存快照文件的頁類型4122中記錄當前第S內存頁的頁類型為非零頁,並拷貝所述當前第S內存頁的頁數據到所述內存快照文件的數據段42中,並在數據偏移量4123中記錄下數據在數據段42中的
偏移量。步驟309、判斷是否所有內存頁都已處理完;若步驟309判斷結果為是,則執行步驟310 ;若步驟309若判斷結構為否,則返回到步驟303選取下一個內存頁繼續該內存快照生成流程。可以是,每執行完一個內存頁的內存快照處理都要執行步驟309的判斷,可以通過頁號來判斷;當內存快照文件中未保存頁號等信息時,可以通過標記內存頁為已讀或已處理來判斷。步驟310、輸出內存快照文件;輸出的內存快照文件可以存儲在硬碟(Disk)中步驟311、停止內存快照生成操作。可選的,在本發明實施例中,當識別內存頁為共享頁時,記錄所有共享數據的內存頁號,並拷貝它們共享的內存數據到內存快照文件中,此時為了提高內存頁識別效率,可以標記所有共享數據的內存頁為已讀,進行內存頁識別的時候可以跳過這些標記為已讀的共
享頁面。綜上所述,本發明實施例提供的虛擬機內存快照生成方法,通過初始化一個內存快照文件,內存快照文件裡具體包括信息段(全局信息、頁號、頁類型、數據偏移量)和數據段;然後順序獲取並識別虛擬機的內存頁的頁類型,針對不同的頁類型在這個內存快照文件中執行不同的內存快照生成處理,具體包括當獲取的內存頁識別為氣球頁時,在這個內存快照文件的頁類型欄位中記錄該內存頁的頁類型為氣球頁;當獲取的內存頁識別為需時分配頁時,在這個內存快照文件的頁類型欄位中記錄該內存頁的頁類型為需時分配頁; 當獲取的內存頁識別為交換頁時,在這個內存快照文件的頁類型欄位中記錄該內存頁的頁類型為交換頁,並從內存交換文件中拷貝交換頁的有效數據到該內存快照文件的數據段中,並在數據偏移量欄位中記錄下數據在數據段中的偏移量;當獲取的內存頁識別為共享頁時,在該內存快照文件的頁類型欄位中記錄該內存頁的頁類型為共享頁,拷貝這個共享頁的共享數據到該內存快照文件的數據段中,並在數據偏移量欄位中記錄下數據在數據段中的偏移量和與之共享內存數據的其它內存頁的頁號,從而通過本發明實施例僅保存有效數據,減少無效數據的備份,大大縮短了內存快照的生成時間,並減小了內存快照文件的大小,節約了存儲資源。本發明實施例三提供一種虛擬機內存快照恢復方法,如圖6所示,該方法可以包括步驟S401、獲取並解析虛擬機的內存快照文件。在一種實現方式下,本發明實施例提供的內存快照文件結構如圖4所示,S401可以是,從該內存快照文件中讀取並解析如圖4所示的結構中存儲的信息。在另一種實現方式下,本發明實施例提供的內存快照文件也可以如圖5所示包含頁類型51和有效數據52兩個欄位,S401可以是,從該內存快照文件中讀取並解析如圖5所示的結構中存儲的信息。步驟S402、當這個內存快照文件中記錄的當前第S內存頁的頁類型為非有效數據頁時,在VMM內存空間中記錄當前第S內存頁的頁類型為非有效數據頁;當內存快照文件中記錄的當前第S內存頁的頁類型為有效數據頁時,在VMM內存空間中記錄當前第S內存頁的頁類型為有效數據頁,並將內存快照文件中記錄的當前第S內存頁的頁數據對應地拷貝到所述虛擬機的第S內存頁中。具體的,在一種實現方式下,非有效數據頁包括氣球頁和需時分配頁,所述有效數據頁包括共享頁、交換頁和普通頁;相應的,步驟S402具體可以包括當內存快照文件中記錄的當前第S內存頁的頁類型為氣球頁時,在VMM內存空間中記錄當前第S內存頁的頁類型為氣球頁;當內存快照文件中記錄的當前第S內存頁的頁類型為需時分配頁時,在VMM內存空間中記錄當前第S內存頁的頁類型為需時分配頁;當內存快照文件中記錄的當前第S內存頁的頁類型為共享頁時,在VMM內存空間中記錄當前第S內存頁的頁類型為共享頁,將該內存快照文件中記錄的當前第S內存頁的頁數據拷貝到虛擬機的第S內存頁中,或者,拷貝到任一與當前第S內存頁共享數據的內存頁中,並基於該內存快照文件中記錄的頁號,在VMM內存空間中建立當前第S內存頁與前述頁號對應的內存頁之間的共享關係;當內存快照文件中記錄的當前第S內存頁的頁類型為交換頁時,在VMM內存空間中記錄當前第S內存頁的頁類型為交換頁,並將該內存快照文件中記錄的當前第S內存頁的頁數據拷貝到新的內存交換文件中;或者,在VMM內存空間中記錄當前第S內存頁的頁類型為普通頁,並將該內存快照文件中記錄的當前第S內存頁的頁數據對應地拷貝到虛擬機的第S內存頁中;當內存快照文件中記錄的當前第S內存頁的頁類型為普通頁時,在VMM內存空間中記錄當前第S內存頁的頁類型為普通頁,並將該內存快照文件中記錄的當前第S內存頁的頁數據對應地拷貝到虛擬機的第S內存頁中。或者,在另一種實現方式下,所述非有效數據頁包括氣球頁、需時分配頁和零頁; 所述有效數據頁包括非零頁、共享頁和交換頁,還有以下兩種情況(與上述相同的內容,這裡不再贅述)當內存快照文件中記錄的當前第S內存頁的頁類型為零頁時,在VMM內存空間中記錄當前第S內存頁的頁類型為零頁,並將虛擬機的第S內存頁內容置為0 ;當內存快照文件中記錄的當前第S內存頁的頁類型為非零頁時,在VMM內存空間中記錄當前第S內存頁的頁類型為非零頁,並將該內存快照文件中記錄的當前第S內存頁的頁數據對應地拷貝到虛擬機的第S內存頁中;綜上所述,本發明實施例提供的虛擬機內存快照恢復的方法,通過獲取並解析虛擬機的內存文件,然後根據內存快照文件中記錄的內存頁的不同頁類型執行不同的快照恢復處理,包括當內存快照文件中記錄的當前第S內存頁的頁類型為非有效數據頁時,在 VMM內存空間中記錄當前第S內存頁的頁類型為非有效數據頁;當內存快照文件中記錄的當前第S內存頁的頁類型為有效數據頁時,在VMM內存空間中記錄當前第S內存頁的頁類型為有效數據頁,並將該內存快照文件中記錄的當前第S內存頁的頁數據對應地拷貝到虛擬機的第S內存頁中,從而通過本發明實施例僅恢復有效數據,避免了無效數據的恢復過程,大大縮短了內存快照的恢復時間。圖7為本發明實施例四提供的一種虛擬機內存快照恢復方法,該方法步驟S501和步驟S503分別與實施例三和四中步驟S401和步驟S402相同,只是在步驟S501之後加入了步驟S502判斷內存快照文件是否完整若否,停止內存恢復操作;若是,執行步驟S503,即當所述內存快照文件中記錄的當前第S內存頁的頁類型為非有效數據頁時,在所述VMM內存空間中記錄所述當前第S內存頁的頁類型為非有效數據頁;當所述內存快照文件中記錄的當前第S內存頁的頁類型為有效數據頁時,在所述VMM內存空間中記錄所述當前第S內存頁的頁類型為有效數據頁,並將所述內存快照文件中記錄的所述當前第S內存頁的頁數據對應地拷貝到所述虛擬機的第S內存頁中。具體的,步驟S502判斷內存快照文件是否完整的方法主要有方法一如果內存快照中保存了虛擬機內存的全局信息,包括虛擬機內存大小、內存頁數量,內存頁大小等,例如本發明實施例二圖4所示內存快照文件結構,在這種情況下為判斷內存快照完整性,可以判斷內存快照中的內存頁數量與全局信息的保存的內存頁數量是否一致;或通過內存頁數量與內存頁大小推算出內存大小(內存頁數量與內存頁大小相乘即可得內存大小),再判斷推算出的內存大小與全局信息中保存的內存大小是否一致; 或數據偏移量指向的有效數據段內容是否存在,即保存的有效數據是否丟失。如果存在不一致或不存在的情況,說明內存快照不完整,停止內存快照恢復。方法二如果內存快照中沒有保存虛擬機內存的全局信息,例如本發明實施例二中圖5所示內存快照文件結構,在這種情況下為判斷內存快照完整性,可以在推算出內存大小後判斷推算的內存大小與虛擬機配置文件中的保存的內存大小是否一致,如果存在不一致,說明內存快照不完整,停止內存快照恢復。需要說明的是,前述兩種判斷內存快照完整性的方法是舉例說明,沒有限制方法僅為這兩種的意思。內存快照完整性判斷依據的是虛擬機內存信息在快照中是否保存完整,所有的內存信息都可以進行判斷,只要一種信息不完整,就停止內存恢復;也可以根據實際情況只判斷重要信息的完整性,例如可能造成內存恢復後虛擬機異常的信息。本領域技術人員根據本發明實施例容易推斷出其它信息的等同判斷方式或組合等同判斷方式,本發明實施例在此不再贅述。如果不進行內存快照完整性判斷,在目前的虛擬機內存快照恢復機制下內存快照是可能恢復的,但由於數據的丟失可能會在內存恢復後出現虛擬機異常。綜上所述,本發明實施例提供的虛擬機內存快照恢復的方法,通過獲取並解析虛擬機的內存文件;然後根據內存快照文件中記錄的內存頁的不同頁類型執行不同的快照恢復處理,包括當內存快照文件中記錄的當前第S內存頁的頁類型為非有效數據頁時,在 VMM內存空間中記錄當前第S內存頁的頁類型為非有效數據頁;當內存快照文件中記錄的當前第S內存頁的頁類型為有效數據頁時,在VMM內存空間中記錄當前第S內存頁的頁類型為有效數據頁,並將該內存快照文件中記錄的當前第S內存頁的頁數據對應地拷貝到虛擬機的第S內存頁中,從而通過本發明實施例僅恢復有效數據,避免了無效數據的恢復過程,大大縮短了內存快照的恢復時間。進一步的,在內存快照恢復之前進行內存快照文件完整性的判斷,避免了無謂的內存恢復操作,提高了內存快照恢復操作的可靠性。
圖8為本發明實施例五提供的虛擬機內存快照恢復方法的具體流程圖。該方法包括步驟600、流程開始;步驟601、讀取並解析內存快照文件;步驟602、判斷該內存快照文件是否完整,若該內存快照文件不完整,則轉步驟 607 ;若該內存快照文件完整,則轉步驟603。步驟603、順序選取內存快照文件中存儲的一條內存頁信息,所述內存頁信息包括內存頁類型、有效數據或有效數據偏移量等(參照圖4或圖5所示的內存快照文件結構);步驟604、根據該內存頁信息中的頁類型識別當前內存頁的頁類型;步驟605、根據所述頁類型執行相應的內存快照恢復處理,具體可以包括如果頁類型為氣球頁時,在VMM內存空間中記錄該內存頁的頁類型為氣球頁;如果頁類型為需時分配頁時,在VMM內存空間中記錄該內存頁的頁類型為需時分配頁;如果頁類型為零頁時,在VMM內存空間中記錄該內存頁的頁類型為零頁,並將虛擬機的對應內存頁內容置為0 ;如果頁類型為非零頁時,在VMM內存空間中記錄該內存頁的頁類型為非零頁,並根據內存快照文件中直接存儲的有效數據,或者根據數據偏移量計算而獲得的有效數據地址,將該內存的有效數據拷貝到對應的虛擬機內存頁中;如果頁類型為共享頁時,在VMM內存空間中記錄該內存頁的頁類型為共享頁,根據內存快照文件中直接存儲的有效數據,或者根據數據偏移量計算而獲得的有效數據地址,將該內存的有效數據拷貝到對應的虛擬機內存頁中,並在VMM內存空間記錄的內存共享哈希表中建立各個共享數據的內存頁之間的共享關係;如果頁類型為交換頁時,在VMM內存空間中記錄該內存頁的頁類型為交換頁,根據內存快照文件中直接存儲的有效數據,或者根據數據偏移量計算而獲得的有效數據地址,將該內存的有效數據拷貝到一個新的交換文件中;或者,在VMM保存的頁類型結構體中記錄該內存頁的頁類型為零頁或非零頁,並將有效數據拷貝到對應的虛擬機內存頁中。可選的,步驟605在VMM內存空間中記錄內存頁的類型,可以是在內存快照生成時從中獲取內存頁類型的那個頁類型結構體中恢復內存頁的頁類型標識;也可以在VMM內存空間中重新建立一個頁類型結構體,在其中記錄內存頁的類型,此時原先的頁類型結構體不再使用。步驟606、每執行完一條內存快照恢復操作判斷是否所有頁都處理完,若是,則執行步驟607 ;若否返回到步驟603繼續該流程。步驟607、停止內存恢復操作。值得一提的是,與本發明實施例提供的內存快照生成方法類似,內存快照恢復過程可以是由用戶觸發的,物理主機提供內存恢復接口給最終用戶,以便於觸發內存快照恢復操作;也可以是虛擬機自動觸發的,可以是定時觸發,也可以根據虛擬機的運行狀況等自動觸發。需要說明的是,當內存頁的頁類型為交換頁時,根據交換頁的特點,既可以將交換頁的頁數據拷貝到內存交換文件中,所述內存交換文件可以是新的內存交換文件,而不是內存快照生成時從中拷貝數據的那個內存交換文件,這樣交換頁仍然是交換頁;或者,也可以將交換頁的頁數據拷貝到對應的內存頁中,此時交換頁就成了一個普通頁面,依據交換頁中數據是否為零可以將其頁類型設置為零頁或非零頁,當然也可以根據本發明實施例三設置為普通頁。另外,需要說明的是,本發明實施例三、四和五中所述內存快照文件可以是本發明實施例二中圖4、圖5或其它等同替代或明顯變形的內存快照文件結構。綜上所述,本發明實施例提供的虛擬機內存快照恢復的方法,通過獲取並解析虛擬機的內存文件;然後判斷內存快照文件的完整性;對於完整的內存快照文件根據該內存快照文件中記錄的內存頁的不同頁類型執行不同的快照恢復處理,包括當該內存頁的頁類型為氣球頁時,在VMM內存空間中記錄該內存頁的頁類型為氣球頁;當該內存頁的頁類型為需時分配頁時,在VMM內存空間中記錄該內存頁的頁類型為需時分配頁;當該內存頁的頁類型為零頁時,在VMM內存空間中記錄該內存頁的頁類型為零頁,並將虛擬機的對應內存頁內容置為0 ;當該內存頁的頁類型為非零頁時,在VMM內存空間中記錄該內存頁的頁類型為非零頁,並根據內存快照文件中直接存儲的有效數據,或者根據數據偏移量計算而獲得的有效數據地址,將該內存的有效數據拷貝到對應的虛擬機內存頁中;當該內存頁的頁類型為共享頁時,在VMM內存空間中記錄該內存頁的頁類型為共享頁,根據內存快照文件中直接存儲的有效數據,或者根據數據偏移量計算而獲得的有效數據地址,將該內存的有效數據拷貝到對應的虛擬機內存頁中,並在VMM內存空間記錄的內存共享哈希表中建立各個共享數據的內存頁之間的共享關係;當該內存頁的頁類型為交換頁時,在VMM內存空間中記錄該內存頁的頁類型為交換頁,根據內存快照文件中直接存儲的有效數據,或者根據數據偏移量計算而獲得的有效數據地址,將該內存的有效數據拷貝到一個新的交換文件中;或者,在VMM保存的頁類型結構體中記錄該內存頁的頁類型為零頁或非零頁,並將有效數據拷貝到對應的虛擬機內存頁中,從而通過本發明實施例僅恢復有效數據,避免了無效數據的恢復過程,大大縮短了內存快照的恢復時間,並且在內存快照恢復之前進行內存快照文件完整性的判斷,避免了無謂的內存恢復操作,提高了內存快照恢復操作的可靠性。本發明實施例六還提供一種物理主機,參照圖9,所述物理主機包括硬體層100, 運行在硬體層100之上的虛擬機監視器VMM200,以及運行在虛擬機監視器VMM200上的虛擬機300,虛擬機監視器VMM200中包括內存快照生成模塊210和內存頁識別模塊220,其中內存快照生成模塊210用於獲取虛擬機的當前第S內存頁;當內存頁識別模塊 220識別當前第S內存頁為非有效數據頁時,在內存快照文件中記錄當前第S內存頁的頁類型;當內存頁識別模塊220識別當前第S內存頁為有效數據頁時,在內存快照文件中記錄當前第S內存頁的頁類型和頁數據;需要說明的是,這裡的內存快照文件可以是存儲在本發明實施例的物理主機的硬體層100所包括的存儲設備上,但在本發明實施例六中,並沒有限定內存快照文件必須存儲在所述物理主機的硬體層100上的意思。內存快照文件可以存儲在硬體層100的存儲設備,如硬碟Disk 130中,也可以存儲在移動存儲設備上,如U盤或移動硬碟,也可以是存儲在與本發明實施例的物理主機具有通信連接的外部網絡存儲設備上。內存頁識別模塊210用於識別內存快照生成模塊210獲取的當前第S內存頁的頁類型,所述頁類型包括非有效數據頁和有效數據頁;
具體的,在一種實現方式下,內存頁識別模塊210具體用於根據VMM內存空間中保存的頁類型信息,識別當前第S內存頁的頁類型,所述頁類型包括氣球頁、需時分配頁、 共享頁、交換頁和普通頁;其中,氣球頁和需時分配頁為非有效數據頁,共享頁、交換頁和普通頁為有效數據頁;或者,在另一種實現方式下,內存頁識別模塊210具體用於根據VMM內存空間中保存的頁類型信息,識別當前第S內存頁的頁類型,所述頁類型包括氣球頁、需時分配頁、 共享頁、交換頁和普通頁;噹噹前第S內存頁的頁類型為普通頁時,遍歷所述當前第S內存頁的內容,根據遍歷的結果(內存頁內容全為0或不全為0)確定所述當前第S內存頁的頁類型為零頁或非零頁;其中,氣球頁、需時分配頁和零頁為非有效數據頁,非零頁、共享頁和交換頁為有效數據頁。進一步的,本發明實施例提供的物理主機中,硬體層100包括存儲設備,如硬碟 130,所述存儲設備用於存儲所述內存快照文件。此外,本發明實施例也不對硬體層100的組成作任何限定,硬體層100可以包括存儲設備,如硬碟130,也可以不包括硬碟130,在一種較優實現方式下,該物理主機硬體層 100可以包括處理器110、物理內存120、硬碟130以及網絡接口設備140,其中處理器110 可以是一個,也可以是多個;網絡接口設備140可以是網絡適配器或網卡,用於跟任何可連接的網絡做連接,例如網際網路anternet)、企業網等。在另一種實現方式下,硬體層可以不包括硬碟130 (參見系統實施例)。虛擬機VM300可以包括虛擬處理器310、虛擬內存320、 虛擬硬碟330以及客戶作業系統340,其中虛擬內存320的邏輯內存頁與物理內存120的物理內存頁之間存在一一映射關係,本發明實施例要生成的內存快照即是針對與該虛擬內存對應的物理內存;客戶作業系統(Guest Operation System, Guest OS) 340是運行在虛擬處理器310、虛擬內存320、虛擬硬碟330等虛擬設備之上的作業系統。需要說明的是,圖9所示虛擬機監視器VMM200運行在硬體層100之上,並無限定的意思,實際上虛擬機監視器VMM可以直接運行在硬體層之上;虛擬機監視器VMM也可以直接運行在宿主作業系統(Host Operation System,Host OS)之上,相應的,宿主作業系統可以運行在硬體層之上,換言之,虛擬機監視器VMM可以間接地運行在硬體層之上。需要說明的是,本發明實施例提供的物理主機可以是物理計算機,具體可以是個人計算機PC、筆記本電腦laptop、工作站Workstation、伺服器Server、大型機Mainframe 或者超級計算機Supercomputer等等。另外,本發明實施例七還提供一種物理主機,參照圖9,該物理主機除前述組成設備之外,在虛擬機監視器VMM200中還可以包括內存快照恢復模塊230。該內存快照恢復模塊230用於獲取並解析該虛擬機的內存快照文件;當該內存快照文件中記錄的當前第S內存頁的頁類型為非有效數據頁時,在VMM內存空間中記錄當前第S內存頁的頁類型為非有效數據頁;當該內存快照文件中記錄的當前第S內存頁的頁類型為有效數據頁時,在VMM內存空間中記錄當前第S內存頁的頁類型為有效數據頁,並將該內存快照文件中記錄的所述當前第S內存頁的頁數據對應地拷貝到虛擬機的第S內存頁中。具體的,在一種實現方式下,所述非有效數據包括氣球頁和需時分配頁,所述有效數據頁包括共享頁、交換頁和普通頁;
相應的,該內存快照恢復模塊230具體用於當內存快照文件中記錄的當前第S內存頁的頁類型為氣球頁時,在VMM內存空間中記錄當前第S內存頁的頁類型為氣球頁;當內存快照文件中記錄的當前第S內存頁的頁類型為需時分配頁時,在VMM內存空間中記錄當前第S內存頁的頁類型為需時分配頁;當內存快照文件中記錄的當前第S內存頁的頁類型為共享頁時,在VMM內存空間中記錄當前第S內存頁的頁類型為共享頁,將該內存快照文件中記錄的當前第S內存頁的頁數據拷貝到虛擬機的第S內存頁中,或者,拷貝到任一與當前第S內存頁共享數據的內存頁中,並基於該內存快照文件中記錄的頁號,在VMM內存空間中建立當前第S內存頁與前述頁號對應的內存頁之間的共享關係;當內存快照文件中記錄的當前第S內存頁的頁類型為交換頁時,在VMM內存空間中記錄當前第S內存頁的頁類型為交換頁,並將該內存快照文件中記錄的當前第S內存頁的頁數據拷貝到新的內存交換文件中;或者,在VMM內存空間中記錄當前第S內存頁的頁類型為普通頁,並將該內存快照文件中記錄的當前第S內存頁的頁數據對應地拷貝到虛擬機的第S內存頁中;當內存快照文件中記錄的當前第S內存頁的頁類型為普通頁時,在VMM內存空間中記錄當前第S內存頁的頁類型為普通頁,並將該內存快照文件中記錄的當前第S內存頁的頁數據對應地拷貝到虛擬機的第S內存頁中。或者,在另一種實現方式下,所述非有效數據頁包括氣球頁、需時分配頁和零頁; 所述有效數據頁包括非零頁、共享頁和交換頁相應的,該內存快照恢復模塊230具體用於當內存快照文件中記錄的當前第S內存頁的頁類型為氣球頁時,在VMM內存空間中記錄當前第S內存頁的頁類型為氣球頁;當內存快照文件中記錄的當前第S內存頁的頁類型為需時分配頁時,在VMM內存空間中記錄當前第S內存頁的頁類型為需時分配頁;當內存快照文件中記錄的當前第S內存頁的頁類型為共享頁時,在VMM內存空間中記錄當前第S內存頁的頁類型為共享頁,將該內存快照文件中記錄的當前第S內存頁的頁數據拷貝到虛擬機的第S內存頁中,或者,拷貝到任一與當前第S內存頁共享數據的內存頁中,並基於該內存快照文件中記錄的頁號,在VMM內存空間中建立當前第S內存頁與前述頁號對應的內存頁之間的共享關係;當內存快照文件中記錄的當前第S內存頁的頁類型為交換頁時,在VMM內存空間中記錄當前第S內存頁的頁類型為交換頁,並將該內存快照文件中記錄的當前第S內存頁的頁數據拷貝到新的內存交換文件中;或者,在VMM內存空間中記錄當前第S內存頁的頁類型為普通頁,並將該內存快照文件中記錄的當前第S內存頁的頁數據對應地拷貝到虛擬機的第S內存頁中;當內存快照文件中記錄的當前第S內存頁的頁類型為零頁時,在VMM內存空間中記錄當前第S內存頁的頁類型為零頁,並將虛擬機的第S內存頁內容置為0 ;當內存快照文件中記錄的當前第S內存頁的頁類型為非零頁時,在VMM內存空間中記錄當前第S內存頁的頁類型為非零頁,並將該內存快照文件中記錄的當前第S內存頁的頁數據對應地拷貝到虛擬機的第S內存頁中。綜上所述,以上發明實施例提供的物理主機,通過內存快照生成模塊獲取所述虛擬機的當前第S內存頁,然後通過內存頁識別模塊進行當前第S內存頁的頁類型識別,當識別出當前第S內存頁為非有效數據頁時,在內存快照文件中記錄該當前第S內存頁的頁類型;當識別出當前第S內存頁為有效數據頁時,在內存快照文件中記錄該當前第S內存頁的頁類型和頁數據,從而通過以上發明實施例僅保存有效數據,避免了無效數據的備份,大大縮短了內存快照的生成時間,減小了內存快照對存儲資源的佔用。進一步的,通過內存快照恢復模塊獲取並解析所述虛擬機的內存快照文件;當所述內存快照文件中記錄的當前第S內存頁的頁類型為非有效數據頁時,在所述VMM內存空間中記錄所述當前第S內存頁的頁類型為非有效數據頁;當所述內存快照文件中記錄的當前第S內存頁的頁類型為有效數據頁時,在所述VMM內存空間中記錄所述當前第S內存頁的頁類型為有效數據頁,並將所述內存快照文件中記錄的所述當前第S內存頁的頁數據對應地拷貝到所述虛擬機的第S內存頁中,從而通過以上發明實施例僅恢復有效數據,避免了無效數據的恢復過程,大大縮短了內存快照的恢復時間。圖10為本發明實施例八提供的一種計算機系統的邏輯結構圖,該系統包括物理主機1、物理主機2、以及一個網絡存儲設備500,其中物理主機1和物理主機2為本發明實施例六或七中所述的物理主機,包括硬體層、VMM和VMl到VMn,其中η大於或等於1,換言之,VMM上可以宿主一個或多個VM ;網絡存儲設備500用於存儲物理主機1或物理主機2 上所宿主的虛擬機的內存快照文件。物理主機1和物理主機2通過各自的網絡接口設備1和網絡接口設備2分別與網際網路400相連,然後可以通過網際網路400將虛擬機的內存快照文件存儲到網絡存儲設備500 上。需要說明的是,本發明實施例中提供的系統其中的內存快照文件可以只存儲在網絡存儲設備上,也可以同時存儲在網絡存儲設備和物理主機硬體層的存儲設備中,不做限定。圖11為本發明實施九提供的計算機系統的網絡拓撲圖,其中物理主機1和物理主機2通過網際網路400與網絡存儲設備500相連。可選的,所述網絡存儲設備可以採用中心化存儲模式,也可以採用分布式存儲模式。網絡存儲設備可以是一個,採用中心化存儲模式;也可以是多個,採用單個存儲模式或分布式存儲模式。所述中心化存儲模式指一個內存快照文件存儲在一臺網絡存儲設備裡; 所述分布式存儲模式指一個內存快照文件存儲在多臺網絡存儲設裡。後者更適用於物理主機比較多、內存快照文件產生比較多的情況下。綜上所述,本發明實施例提供的虛擬機內存快照生成和恢復的系統中,通過識別不同的內存頁類型,在內存快照生成過程中,根據不同的內存頁類型執行不同的快照生成處理,包括在當前第S內存頁為非有效數據頁時,在內存快照文件中僅記錄所述當前第S 內存頁的頁類型;在當前第S內存頁為有效數據頁時,在內存快照文件中記錄所述當前第S 內存頁的頁類型和頁數據;以及,在內存快照恢復過程中,根據不同的內存頁類型執行不同的快照恢復處理,包括當所述內存快照文件中記錄的當前第S內存頁的頁類型為非有效數據頁時,在VMM內存空間中記錄所述當前第S內存頁的頁類型為非有效數據頁;當所述內存快照文件中記錄的當前第S內存頁的頁類型為有效數據頁時,在所述VMM內存空間中記錄所述當前第S內存頁的頁類型為有效數據頁,並將所述內存快照文件中記錄的所述當前第S內存頁的頁數據對應地拷貝到所述虛擬機的第S內存頁中,從而通過本發明實施例僅保存有效數據,減少無效數據的備份和恢復,大大縮短了內存快照的生成和恢復時間,減小了內存快照對存儲資源的佔用。舉個具體例子,桌面雲環境下的典型Windows虛擬機,虛擬機全部內存為4G,在一般業務場景下零頁在虛擬機全部內存中平均佔比達到50%左右,同時氣泡頁也佔虛擬機全部內存的10%左右,此時若運用本發明實施例提供的內存快照生成和恢復技術,內存快照的生成和恢復時間能縮短為現有技術實現方式的40%左右,同時,內存快照文件的大小由原來的4G減小為1. 61G(內存快照文件中的除內存頁數據之外的其它數據大約為10M)。進一步的,通過本發明實施例提供的網絡存儲設備存儲內存快照文件,避免了存在大量內存快照文件時,本地存取空間不足的問題;如果同時採用分布式網絡存儲模式也可以解決中心化存儲模式的存取瓶頸的問題。本領域普通技術人員可以理解實現前述實施例方法中的全部或部分流程,是可以通過電腦程式來指令相關的硬體(如處理器)來完成,所述的程序可存儲於一計算機可讀取存儲介質中,該程序在執行時,可包括如前述各方法的實施例的流程。其中,所述的存儲介質可為磁碟、光碟、只讀存儲記憶體(Read-Only Memory, ROM)或隨機存儲記憶體 (Random Access Memory, RAM)等。以上所述僅是本發明的具體實施方式
,應當指出,對於本技術領域的普通技術人員來說,在不脫離本發明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應視為本發明的保護範圍。
權利要求
1.一種虛擬機內存快照生成方法,其特徵在於,所述方法包括獲取所述虛擬機的當前第S內存頁;識別所述當前第S內存頁的頁類型,所述頁類型包括非有效數據頁和有效數據頁;當所述當前第S內存頁為非有效數據頁時,在內存快照文件中記錄所述當前第S內存頁的頁類型;當所述當前第S內存頁為有效數據頁時,在內存快照文件中記錄所述當前第S 內存頁的頁類型和頁數據。
2.根據權利要求1所述的方法,其特徵在於,所述識別所述當前第S內存頁的頁類型, 具體包括根據VMM內存空間中保存的頁類型信息,確定所述當前第S內存頁的頁類型,所述頁類型包括氣球頁、需時分配頁、共享頁、交換頁和普通頁;其中,氣球頁和需時分配頁為非有效數據頁,共享頁、交換頁和普通頁為有效數據頁。
3.根據權利要求2所述的方法,其特徵在於,所述當所述當前第S內存頁為非有效數據頁時,在內存快照文件中記錄所述當前第S內存頁的頁類型;當所述當前第S內存頁為有效數據頁時,在內存快照文件中記錄所述當前第S內存頁的頁類型和頁數據,具體包括當所述當前第S內存頁為氣球頁時,在所述內存快照文件中記錄當前第S內存頁的頁類型為氣球頁;當所述當前第S內存頁為需時分配頁時,在所述內存快照文件中記錄當前第S內存頁的頁類型為需時分配頁;當所述當前第S內存頁為交換頁時,在所述內存快照文件中記錄當前第S內存頁的頁類型為交換頁,並從內存交換文件中拷貝所述交換頁的頁數據到所述內存快照文件中;當所述當前第S內存頁為共享頁時,在所述內存快照文件中記錄當前第S內存頁的頁類型為共享頁,拷貝所述共享頁的頁數據到所述內存快照文件中,並記錄與所述當前第S 內存頁共享內存數據的其它內存頁的頁號;當所述當前第S內存頁為普通頁時,在所述內存快照文件中記錄當前第S內存頁的頁類型為普通頁,拷貝所述普通頁的頁數據到所述內存快照文件中。
4.根據權利要求1所述的方法,其特徵在於,所述識別所述當前第S內存頁的頁類型, 具體包括根據VMM內存空間中保存的頁類型信息,確定所述當前第S內存頁的頁類型,所述頁類型包括氣球頁、需時分配頁、共享頁、交換頁和普通頁;當所述當前第S內存頁的頁類型為普通頁時,遍歷所述當前第S內存頁的內容,根據遍歷結果確定所述當前第S內存頁的頁類型為零頁或非零頁;其中,氣球頁、需時分配頁和零頁為非有效數據頁,非零頁、共享頁和交換頁為有效數據頁。
5.根據權利要求4所述的方法,其特徵在於,所述當所述當前第S內存頁為非有效數據頁時,在內存快照文件中記錄所述當前第S內存頁的頁類型;當所述當前第S內存頁為有效數據頁時,在內存快照文件中記錄所述當前第S內存頁的頁類型和數據,具體包括當所述當前第S內存頁為氣球頁時,在所述內存快照文件中記錄當前第S內存頁的頁類型為氣球頁;當所述當前第S內存頁為需時分配頁時,在所述內存快照文件中記錄當前第S內存頁的頁類型為需時分配頁;當所述當前第S內存頁為零頁時,在所述內存快照文件記錄當前第S內存頁的頁類型為零頁;當所述當前第S內存頁為非零頁時,在所述內存快照文件中記錄當前第S內存頁的頁類型為非零頁,拷貝所述當前第S內存頁的頁數據到所述內存快照文件中;當所述當前第S內存頁為交換頁時,在所述內存快照文件中記錄當前第S內存頁的頁類型為交換頁,從內存交換文件中拷貝所述交換頁的頁數據到所述內存快照文件中;當所述當前第S內存頁為共享頁時,在所述內存快照文件中記錄當前第S內存頁的頁類型為共享頁,拷貝所述共享頁的頁數據到所述內存快照文件中,並記錄與所述第S內存頁共享內存數據的其它內存頁的頁號。
6.一種虛擬機內存快照恢復方法,其特徵在於,所述方法包括獲取並解析所述虛擬機的內存快照文件;當所述內存快照文件中記錄的當前第S內存頁的頁類型為非有效數據頁時,在VMM內存空間中記錄所述當前第S內存頁的頁類型為非有效數據頁;當所述內存快照文件中記錄的當前第S內存頁的頁類型為有效數據頁時,在所述VMM內存空間中記錄所述當前第S內存頁的頁類型為有效數據頁,並將所述內存快照文件中記錄的所述當前第S內存頁的頁數據對應地拷貝到所述虛擬機的第S內存頁中。
7.根據權利要求6所述的方法,其特徵在於,在獲取並解析所述虛擬機的的內存快照文件之後,所述方法還包括判斷所述內存快照文件是否完整,若所述內存快照文件不完整,停止內存恢復操作;若所述內存快照文件完整,執行所述當所述內存快照文件中記錄的當前第S內存頁的頁類型為非有效數據頁時,在所述VMM內存空間中記錄所述當前第S內存頁的頁類型為非有效數據頁;當所述內存快照文件中記錄的當前第S內存頁的頁類型為有效數據頁時,在所述VMM 內存空間中記錄所述當前第S內存頁的頁類型為有效數據頁,並將所述內存快照文件中記錄的所述當前第S內存頁的頁數據對應地拷貝到所述虛擬機的第S內存頁中的步驟。
8.根據權利要求6或7所述的方法,其特徵在於,所述非有效數據頁包括氣球頁和需時分配頁;所述有效數據頁包括共享頁、交換頁和普通頁。
9.根據權利要求8所述的方法,其特徵在於,所述當所述內存快照文件中記錄的當前第S內存頁的頁類型為非有效數據頁時,在所述VMM內存空間中記錄所述當前第S內存頁的頁類型為非有效數據頁;當所述內存快照文件中記錄的當前第S內存頁的頁類型為有效數據頁時,在所述VMM內存空間中記錄所述當前第S內存頁的頁類型為有效數據頁,並將所述內存快照文件中記錄的所述當前第S內存頁的頁數據對應地拷貝到所述虛擬機的第S內存頁中,具體包括當所述內存快照文件中記錄的當前第S內存頁的頁類型為氣球頁時,在所述VMM內存空間中記錄所述當前第S內存頁的頁類型為氣球頁;當所述內存快照文件中記錄的當前第S內存頁的頁類型為需時分配頁時,在所述VMM 內存空間中記錄所述當前第S內存頁的頁類型為需時分配頁;當所述內存快照文件中記錄的當前第S內存頁的頁類型為共享頁時,在所述VMM內存空間中記錄所述當前第S內存頁的頁類型為共享頁,將所述內存快照文件中記錄的當前第 S內存頁的頁數據拷貝到所述虛擬機的第S內存頁中,或者,拷貝到任一與所述當前第S內存頁共享數據的內存頁中,並基於所述內存快照文件中記錄的頁號,在所述VMM內存空間中建立所述當前第S內存頁與所述頁號對應的內存頁之間的共享關係;當所述內存快照文件中記錄的當前第S內存頁的頁類型為交換頁時,在所述VMM內存空間中記錄所述當前第S內存頁的頁類型為交換頁,並將所述內存快照文件中記錄的當前第S內存頁的頁數據拷貝到新的內存交換文件中;或者,在所述VMM內存空間中記錄所述當前第S內存頁的頁類型為普通頁,並將所述內存快照文件中記錄的當前第S內存頁的頁數據對應地拷貝到所述虛擬機的第S內存頁中;當所述內存快照文件中記錄的當前第S內存頁的頁類型為普通頁時,在所述VMM內存空間中記錄所述當前第S內存頁的頁類型為普通頁,並將所述內存快照文件中記錄的當前第S內存頁的頁數據對應地拷貝到所述虛擬機的第S內存頁中。
10.根據權利要求6或7所述的方法,其特徵在於,所述非有效數據頁包括氣球頁、需時分配頁和零頁;所述有效數據頁包括非零頁、共享頁和交換頁。
11.根據權利要求11所述的方法,其特徵在於,所述當所述內存快照文件中記錄的當前第S內存頁的頁類型為非有效數據頁時,在所述VMM內存空間中記錄所述當前第S內存頁的頁類型為非有效數據頁;當所述內存快照文件中記錄的當前第S內存頁的頁類型為有效數據頁時,在所述VMM內存空間中記錄所述當前第S內存頁的頁類型為有效數據頁,並將所述內存快照文件中記錄的所述當前第S內存頁的頁數據對應地拷貝到所述虛擬機的第S 內存頁中,具體包括當所述內存快照文件中記錄的當前第S內存頁的頁類型為氣球頁時,在所述VMM內存空間中記錄所述當前第S內存頁的頁類型為氣球頁;當所述內存快照文件中記錄的當前第S內存頁的頁類型為需時分配頁時,在VMM內存空間中記錄所述當前第S內存頁的頁類型為需時分配頁;當所述內存快照文件中記錄的當前第S內存頁的頁類型為零頁時,在所述VMM內存空間中記錄所述當前第S內存頁的頁類型為零頁,並將所述虛擬機的第S內存頁內容置為0 ; 當所述內存快照文件中記錄的當前第S內存頁的頁類型為非零頁時,在所述VMM內存空間中記錄所述當前第S內存頁的頁類型為非零頁,並將所述內存快照文件中記錄的所述當前第S內存頁的頁數據對應地拷貝到所述虛擬機的第S內存頁中;當所述內存快照文件中記錄的當前第S內存頁的頁類型為共享頁時,在所述VMM內存空間中記錄所述當前第S內存頁的頁類型為共享頁,將所述內存快照文件中記錄的當前第 S內存頁的頁數據拷貝到所述虛擬機的第S內存頁中,或者,拷貝到任一與所述當前第S內存頁共享數據的內存頁中,並基於所述內存快照文件中記錄的頁號,在所述VMM內存空間中建立所述當前第S內存頁與所述頁號對應的內存頁之間的共享關係;當所述內存快照文件中記錄的當前第S內存頁的頁類型為交換頁時,在所述VMM內存空間中記錄所述當前第S內存頁的頁類型為交換頁,並將所述內存快照文件中記錄的當前第S內存頁的頁數據拷貝到內存交換文件中;或者,在所述VMM內存空間中記錄所述當前第 S內存頁的頁類型為零頁或非零頁,並將所述內存快照文件中記錄的當前第S內存頁的頁數據對應地拷貝到所述虛擬機的第S內存頁中。
12.—種物理主機,其特徵在於,所述物理主機包括硬體層,運行在所述硬體層之上的虛擬機監視器VMM,以及運行在所述虛擬機監視器VMM上的虛擬機,所述虛擬機監視器VMM包括內存快照生成模塊和內存頁識別模塊,其中所述內存快照生成模塊用於獲取所述虛擬機的當前第S內存頁;當所述內存頁識別模塊識別所述當前第S內存頁為非有效數據頁時,在內存快照文件中記錄所述當前第S內存頁的頁類型;當所述內存頁識別模塊識別所述當前第S內存頁為有效數據頁時,在內存快照文件中記錄所述當前第S內存頁的頁類型和頁數據;所述內存頁識別模塊用於識別所述內存快照生成模塊獲取的所述當前第S內存頁的頁類型,所述頁類型包括非有效數據頁和有效數據頁。
13.根據權利要求12所述的物理主機,其特徵在於,所述硬體層包括存儲設備,所述存儲設備用於存儲所述內存快照文件。
14.根據權利要求12所述的物理主機,其特徵在於,所述內存頁識別模塊具體用於根據VMM內存空間中保存的頁類型信息,確定所述當前第S內存頁的頁類型,所述頁類型包括氣球頁、需時分配頁、共享頁、交換頁和普通頁;其中,氣球頁和需時分配頁為非有效數據頁,共享頁、交換頁和普通頁為有效數據頁。
15.根據權利要求12所述的物理主機,其特徵在於,所述內存頁識別模塊具體用於根據VMM內存空間中保存的頁類型信息,確定所述當前第S內存頁的頁類型,所述頁類型包括氣球頁、需時分配頁、共享頁、交換頁和普通頁;當所述當前第S內存頁的頁類型為普通頁時,遍歷所述當前第S內存頁的內容,根據遍歷結果確定所述當前第S內存頁的頁類型為零頁或非零頁;其中,氣球頁、需時分配頁和零頁為非有效數據頁,非零頁、共享頁和交換頁為有效數據頁。
16.根據權利要求12至15任一項所述的物理主機,其特徵在於,所述虛擬機監視器 VMM中還包括內存快照恢復模塊,其中所述內存快照恢復模塊用於從所述硬體層中的存儲設備中獲取並解析所述虛擬機的內存快照文件;當所述內存快照文件中記錄的當前第S內存頁的頁類型為非有效數據頁時,在所述VMM內存空間中中記錄所述當前第S內存頁的頁類型為非有效數據頁;當所述內存快照文件中記錄的當前第S內存頁的頁類型為有效數據頁時,在所述VMM內存空間中中記錄所述當前第S內存頁的頁類型為有效數據頁,並將所述內存快照文件中記錄的所述當前第S內存頁的頁數據對應地拷貝到所述虛擬機的第S內存頁中。
17.一種計算機系統,其特徵在於,所述系統包括物理主機和網絡存儲設備,其中所述物理主機為權利要求12至16任一項所述的物理主機;所述網絡存儲設備用於存儲所述物理主機上所宿主的虛擬機的內存快照文件。
全文摘要
本發明實施例公開一種虛擬機內存快照生成和恢復的方法、裝置及系統,其中,該內存快照生成方法包括獲取所述虛擬機的當前第S內存頁;識別所述當前第S內存頁的頁類型,所述頁類型包括非有效數據頁和有效數據頁;當所述當前第S內存頁為非有效數據頁時,在內存快照文件中記錄所述當前第S內存頁的頁類型;當所述當前第S內存頁為有效數據頁時,在內存快照文件中記錄所述當前第S內存頁的頁類型和頁數據;從而通過本發明實施例僅保存有效數據,減少無效數據的備份,大大縮短了內存快照的生成時間,並減小了內存快照文件的大小,節約了存儲資源。
文檔編號G06F11/14GK102331949SQ201110307790
公開日2012年1月25日 申請日期2011年10月12日 優先權日2011年10月12日
發明者葉川 申請人:華為技術有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀