專利名稱:基于虛擬機(jī)快照的內(nèi)存頁去重方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種基于虛擬機(jī)快照的內(nèi)存頁去重方法及
>J-U ρ α裝直。
背景技術(shù):
虛擬機(jī)快照技術(shù)是用來實(shí)現(xiàn)對(duì)一個(gè)虛擬機(jī)運(yùn)行狀態(tài)的記錄,并在任意時(shí)刻可以將虛擬機(jī)回滾到記錄時(shí)的虛擬機(jī)運(yùn)行狀態(tài);這樣在虛擬機(jī)因故障而失效時(shí),可以從快照點(diǎn)恢 復(fù)到之前所記錄的正常運(yùn)行的狀態(tài),從而實(shí)現(xiàn)虛擬機(jī)的備份。通常,虛擬機(jī)運(yùn)行狀態(tài)包括網(wǎng)絡(luò)狀態(tài)、內(nèi)存狀態(tài)、CPU狀態(tài)、及磁盤狀態(tài)等。其中,內(nèi)存狀態(tài)需要保存的內(nèi)存頁的數(shù)據(jù)量較大,從而使得快照備份數(shù)據(jù)較大。例如,對(duì)于虛擬機(jī)集群(8臺(tái)IG內(nèi)存的虛擬機(jī))快照,需要保存的內(nèi)存狀態(tài)則為集群中虛擬機(jī)的內(nèi)存之和(8G)。進(jìn)一步,快照的時(shí)間間隔通常為幾分鐘,這種高頻度的快照又進(jìn)一步增加了快照備份數(shù)據(jù)量。例如以10分鐘的快照時(shí)間間隔計(jì)算,每天需要144次快照,需要占據(jù)IT的磁盤空間。因此,在虛擬機(jī)快照技術(shù)中,數(shù)據(jù)量較大的快照備份數(shù)據(jù)不僅占用大量的磁盤空間,而且增加快照備份時(shí)間。
發(fā)明內(nèi)容
本發(fā)明提供一種基于虛擬機(jī)快照的內(nèi)存頁去重方法及裝置,用于解決虛擬機(jī)快照技術(shù)中的快照備份數(shù)據(jù)存在占用大量磁盤空間的問題。本發(fā)明的第一個(gè)方面是提供一種基于虛擬機(jī)快照的內(nèi)存頁去重方法,包括宿主機(jī)根據(jù)各虛擬機(jī)對(duì)應(yīng)的內(nèi)存頁的內(nèi)容,將各虛擬機(jī)對(duì)應(yīng)的內(nèi)存頁中內(nèi)容相同的內(nèi)存頁進(jìn)行合并處理;將所述合并處理后的各虛擬機(jī)對(duì)應(yīng)的內(nèi)存頁發(fā)送給存儲(chǔ)系統(tǒng)。本發(fā)明的第二個(gè)方面是提供一種基于虛擬機(jī)快照的內(nèi)存頁去重方法,應(yīng)用于虛擬機(jī)快照系統(tǒng),包括存儲(chǔ)系統(tǒng)分別接收各宿主機(jī)發(fā)送的內(nèi)存頁,所述各宿主機(jī)發(fā)送的內(nèi)存頁是所述各宿主機(jī)將各虛擬機(jī)對(duì)應(yīng)的內(nèi)存頁中內(nèi)容相同的內(nèi)存頁進(jìn)行合并處理后得到的;所述存儲(chǔ)系統(tǒng)根據(jù)各宿主機(jī)發(fā)送的內(nèi)存頁的內(nèi)容,將各宿主機(jī)發(fā)送的內(nèi)存頁中內(nèi)容相同的內(nèi)存頁進(jìn)行合并處理;所述存儲(chǔ)系統(tǒng)保存所述合并處理后的內(nèi)存頁。本發(fā)明的第三個(gè)方面是提供一種宿主機(jī),運(yùn)行有多個(gè)虛擬機(jī),包括第一處理模塊,用于根據(jù)所述宿主機(jī)上運(yùn)行的多個(gè)虛擬機(jī)對(duì)應(yīng)的內(nèi)存頁的內(nèi)容,將所述多個(gè)虛擬機(jī)對(duì)應(yīng)的內(nèi)存頁中內(nèi)容相同的內(nèi)存頁進(jìn)行合并處理;發(fā)送模塊,用于將所述合并處理后的各虛擬機(jī)對(duì)應(yīng)的內(nèi)存頁發(fā)送給存儲(chǔ)系統(tǒng)。本發(fā)明的第四個(gè)方面是提供一種存儲(chǔ)系統(tǒng),應(yīng)用于虛擬機(jī)快照系統(tǒng),包括
接收模塊,用于分別接收各宿主機(jī)發(fā)送的內(nèi)存頁,所述各宿主機(jī)發(fā)送的內(nèi)存頁是所述各宿主機(jī)將各虛擬機(jī)對(duì)應(yīng)的內(nèi)存頁中內(nèi)容相同的內(nèi)存頁進(jìn)行合并處理后得到的;第二處理模塊,用于根據(jù)各宿主機(jī)發(fā)送的內(nèi)存頁的內(nèi)容,將各宿主機(jī)發(fā)送的內(nèi)存頁中內(nèi)容相同的內(nèi)存頁進(jìn)行合并處理;保存模塊,用于保存所述合并處理后的內(nèi)存頁。本發(fā)明的第五個(gè)方面是提供一種虛擬機(jī)快照系統(tǒng),包括上述宿主機(jī)和存儲(chǔ)系統(tǒng)。本發(fā)明實(shí)施例通過宿主機(jī)根據(jù)各虛擬機(jī)對(duì)應(yīng)的內(nèi)存頁的內(nèi)容,將各虛擬機(jī)對(duì)應(yīng)的內(nèi)存頁中內(nèi)容相同的內(nèi)存頁進(jìn)行合并處理;將所述合并處理后的各虛擬機(jī)對(duì)應(yīng)的內(nèi)存頁發(fā)送給存儲(chǔ)系統(tǒng),可以減小宿主機(jī)發(fā)送給存儲(chǔ)系統(tǒng)的內(nèi)存頁的數(shù)據(jù)量,從而可以改善虛擬機(jī)快照技術(shù)中的快照備份數(shù)據(jù)存在占用大量磁盤空間的問題;同時(shí)通過減小宿主機(jī)發(fā)送給存儲(chǔ)系統(tǒng)的內(nèi)存頁的數(shù)據(jù)量,可以減小宿主機(jī)和存儲(chǔ)系統(tǒng)之間的網(wǎng)絡(luò)開銷,也可以減小快照備份時(shí)間。
圖1為本發(fā)明一實(shí)施例提供的基于虛擬機(jī)快照的內(nèi)存頁去重方法的流程示意圖;圖2為本發(fā)明另一實(shí)施例提供的基于虛擬機(jī)快照的內(nèi)存頁去重方法的流程示意圖;圖3為本發(fā)明另一實(shí)施例提供的宿主機(jī)的結(jié)構(gòu)示意圖;圖4為本發(fā)明另一實(shí)施例提供的存儲(chǔ)系統(tǒng)的結(jié)構(gòu)示意圖;圖5為圖1-圖4所示實(shí)施例應(yīng)用的虛擬機(jī)快照系統(tǒng)的架構(gòu)圖;圖6為圖1-圖4所示實(shí)施例應(yīng)用的哈希結(jié)構(gòu)表示意圖;圖7為圖1-圖4所示實(shí)施例應(yīng)用的哈希結(jié)構(gòu)表建立的過程示意圖;圖8為圖1-圖4所示實(shí)施例應(yīng)用的哈希結(jié)構(gòu)表更新的過程示意圖;圖9為圖1-圖4所示實(shí)施例應(yīng)用的數(shù)據(jù)包格式的示意圖。
具體實(shí)施例方式圖1為本發(fā)明一實(shí)施例提供的基于虛擬機(jī)快照的內(nèi)存頁去重方法的流程示意圖;圖5為圖1-圖4所示實(shí)施例應(yīng)用的虛擬機(jī)快照系統(tǒng)的架構(gòu)圖,如圖1和圖5所示,本實(shí)施例的基于虛擬機(jī)快照的內(nèi)存頁去重方法具體包括101、宿主機(jī)根據(jù)各虛擬機(jī)對(duì)應(yīng)的內(nèi)存頁的內(nèi)容,將各虛擬機(jī)對(duì)應(yīng)的內(nèi)存頁中內(nèi)容相同的內(nèi)存頁進(jìn)行合并處理。通常,虛擬機(jī)集群中各虛擬機(jī)大多運(yùn)行同樣的操作系統(tǒng),承載類似的應(yīng)用,使得各虛擬機(jī)內(nèi)存中有大量的數(shù)據(jù)是相同的,圖5所示的虛擬機(jī)快照系統(tǒng)的架構(gòu)圖是針對(duì)虛擬機(jī)集群的快照,以虛擬機(jī)集群為單位進(jìn)行數(shù)據(jù)的備份,為了減少虛擬機(jī)集群的快照過程中存在的大量相同的內(nèi)存數(shù)據(jù),減少快照備份時(shí)間,本發(fā)明實(shí)施例中,每一宿主機(jī)根據(jù)該宿主機(jī)中各虛擬機(jī)對(duì)應(yīng)的內(nèi)存頁的內(nèi)容,將內(nèi)容相同的內(nèi)存頁進(jìn)行合并處理,具體實(shí)現(xiàn)時(shí)例如,圖5所示,第一宿主機(jī)中有虛擬機(jī)VMl和虛擬機(jī)VM2,假設(shè)VMl和VM2中各有4個(gè)內(nèi)存頁,第一宿主機(jī)獲取虛擬機(jī)VMl中的4個(gè)內(nèi)存頁和虛擬機(jī)VM2中的4個(gè)內(nèi)存頁;根據(jù)虛擬機(jī)VMl和虛擬機(jī)VM2中各自對(duì)應(yīng)的4個(gè)內(nèi)存頁對(duì)應(yīng)的內(nèi)容,確定VMl中的內(nèi)存頁I和內(nèi)存頁3的內(nèi)容與VM2中的內(nèi)存頁3的內(nèi)容相同,該宿主機(jī)可以將VMl中的內(nèi)存頁I和內(nèi)存頁3以及VM2中的內(nèi)存頁3進(jìn)行合并處理,即宿主機(jī)可以在VMl中的內(nèi)存頁I和內(nèi)存頁3以及VM2中的內(nèi)存頁3中任選其中的一個(gè)內(nèi)存頁發(fā)送給存儲(chǔ)系統(tǒng),不需要將VMl中的內(nèi)存頁I和內(nèi)存頁3以及VM2中的內(nèi)存頁3都發(fā)送給存儲(chǔ)系統(tǒng)。需要說明的是,在實(shí)際應(yīng)用中,各虛擬機(jī)的內(nèi)存頁數(shù)量較多,假設(shè)虛擬機(jī)內(nèi)存為1G,則該虛擬機(jī)包括256K內(nèi)存頁,其中,K是計(jì)算機(jī)中用來表達(dá)數(shù)量的單位,lK=1024bit,如果采用逐頁比較的方式比較耗時(shí)。在本發(fā)明的一個(gè)實(shí)施方式中,為了提高內(nèi)存頁內(nèi)容比較的效率,采用哈希Hash算法計(jì)算每個(gè)內(nèi)存頁面的Hash值,根據(jù)計(jì)算得到的各內(nèi)存頁對(duì)應(yīng)的哈希Hash值,構(gòu)建各內(nèi)存頁對(duì)應(yīng)的紅黑樹或鏈表;其中,將哈希Hash值相同的各內(nèi)存頁對(duì)應(yīng)的頁信息插入到所述哈希Hash值在所述紅黑樹或鏈表上對(duì)應(yīng)的哈希Hash節(jié)點(diǎn)中;具體實(shí)現(xiàn)時(shí)圖6為圖1-圖4所示實(shí)施例應(yīng)用的哈希結(jié)構(gòu)表的示意圖,如圖6所示,哈希結(jié)構(gòu)表包括桶(bucket)、哈希節(jié)點(diǎn)(hash node)、頁信息(page item);其中,bucket主要用來實(shí)現(xiàn)對(duì)內(nèi)存頁的快速索弓I, bucket包括哈希桶(hashbucket)和地址桶(addr bucket);其中,addr bucket用來對(duì)頁信息page item進(jìn)行索引,而hash bucket根據(jù)頁信息page item中的hash值來構(gòu)建紅黑樹或鏈表。其中,每個(gè)hash bucket中存儲(chǔ)了一組相似Hash值的頁,例如,一個(gè)Hash值可以用32比特來表示,假設(shè)將Hash值的前20個(gè)比特相同的Hash值作為相似Hash值,本實(shí)施例中,可以將相似Hash值插入到同一個(gè)hash bucket中,用來提高對(duì)內(nèi)存頁的索引效率;假設(shè)哈希結(jié)構(gòu)表由IM元素組成hash bucket,其中每一個(gè)hash bucket為Hash值的前20個(gè)bit值,因此,每個(gè)hash bucket最多可以表達(dá)4096 ((2~ 12)個(gè)hash值不同的hash node。 其中,hash node可以以鏈表或者紅黑樹的形式掛載在哈希結(jié)構(gòu)表上,如果每個(gè)bucket數(shù)組元素中的hash node數(shù)目小于3,則以鏈表形式掛載在哈希結(jié)構(gòu)表上;如果每個(gè)bucket數(shù)組元素中的hash node數(shù)目小大或等于3,則以紅黑樹的形式掛載在哈希結(jié)構(gòu)表上。每個(gè)Hash node維護(hù)著對(duì)應(yīng)的內(nèi)存頁的頁信息列表,將Hash值相同的各內(nèi)存頁對(duì)應(yīng)的page item插入到所述哈希Hash值在所述紅黑樹或鏈表上對(duì)應(yīng)的hash node對(duì)應(yīng)的頁信息列表中。其中,page item維護(hù)著對(duì)應(yīng)內(nèi)存頁的頁信息,具體例如包括頁的地址、所屬的虛擬機(jī)、hash值、頁更新信息等。以下對(duì)哈希結(jié)構(gòu)表的建立和更新進(jìn)行詳細(xì)的說明圖7為圖1-圖4所示實(shí)施例應(yīng)用的哈希結(jié)構(gòu)表建立的過程示意圖,宿主機(jī)獲取虛擬機(jī)的所有內(nèi)存頁,分別構(gòu)建每個(gè)內(nèi)存頁對(duì)應(yīng)的頁信息page item,將每個(gè)內(nèi)存頁的頁信息page item按照對(duì)應(yīng)的頁地址存入到addr bucket中,同時(shí)根據(jù)每個(gè)內(nèi)存頁的內(nèi)容,計(jì)算每個(gè)內(nèi)存頁的hash值,按照每個(gè)內(nèi)存頁的hash值將對(duì)應(yīng)的內(nèi)存頁的頁信息page item存儲(chǔ)到hash bucket中的對(duì)應(yīng)的hashnode的頁信息列表中;具體實(shí)現(xiàn)如圖 所示,包括1、獲取一內(nèi)存頁。
本實(shí)施例通過宿主機(jī)獲取虛擬機(jī)中的任一內(nèi)存頁的內(nèi)容和頁信息。2、計(jì)算 hash 值。具體是根據(jù)該內(nèi)存頁的內(nèi)容,計(jì)算該內(nèi)存頁的hash值。3、構(gòu)建 page item。具體地,構(gòu)建內(nèi)存頁的page item,在每個(gè)page item中記錄對(duì)應(yīng)內(nèi)存頁的hash值或頁地址信息或該內(nèi)存頁所述的虛擬機(jī)編號(hào)等信息。4、將page item按照頁地址存儲(chǔ)到addr bucket中對(duì)應(yīng)的項(xiàng)中。5、根據(jù) page item 的 hash 值找到 hash bucket 中對(duì)應(yīng)的 hash node 節(jié)點(diǎn)。例如,根據(jù)該內(nèi)存頁對(duì)應(yīng)的hash值的前20bit值在哈希結(jié)構(gòu)表中查詢對(duì)應(yīng)的hashbucket,進(jìn)一步根據(jù)每個(gè)該內(nèi)存頁的hash值的后12bit值在對(duì)應(yīng)的hash bucket中確定對(duì)應(yīng)的 hash node。6、hash node數(shù)目是否為0,若是則執(zhí)行步驟7,否則執(zhí)行步驟12。7、新建 hash node。賦值hash值為page item的hash值,即將該內(nèi)存頁的hash值確定為該新建的hash node 的 hash 值。8、將hash node插入到鏈表中。將該新建的hash node插入到鏈表中。9、將page item加入到hash node的頁信息列表中。將該內(nèi)存頁的page item插入到該新建的hash node的頁信息列表中。10、hash node數(shù)目是否小于3 ;若是則結(jié)束處理,否則執(zhí)行步驟11。具體地,查詢該新建的hash node所歸屬的hash bucket中是否還存在的其他的hash node,若確定其他的hash node的數(shù)目小于2,則確定該新建的hash node所歸屬的hash bucket 中的 hash node 數(shù)目小于 3。11、將hash node組織為紅黑樹。具體地,查詢該新建的hash node所歸屬的hash bucket中是否還存在的其他的hash node,若確定其他的hash node的數(shù)目大于等于2,則確定該新建的hash node所歸屬的hash bucket中的hash node數(shù)目大于等于3,則將hashnode組織為紅黑樹。12> hash node是否為鏈表,若是執(zhí)行13,否則執(zhí)行19。若上述步驟6確定的hash node不為O,則進(jìn)一步確定hash node是否為鏈表。13、遍歷鏈表,根據(jù) page item 的 hash 值查找 hash node。具體根據(jù)內(nèi)存頁的頁信息page item的hash值查找對(duì)應(yīng)的hash node。14、是否找到hash node,若是執(zhí)行步驟15,否則執(zhí)行步驟7。15、比較該內(nèi)存頁的內(nèi)容與hash node鏈表中其他內(nèi)存頁的內(nèi)容。16、是否找到相同頁,若是執(zhí)行17,否則執(zhí)行步驟18。17、合并該內(nèi)存頁,將該內(nèi)存頁的page item插入hash node的頁信息列表中。18、將該內(nèi)存頁的page item插入hash node的頁信息列表中。19、遍歷紅黑樹,根據(jù)page item的hash值查找hash node。上述步驟12中,若確定hash node不為鏈表,則進(jìn)一步遍歷紅黑樹,根據(jù)pageitem 的 hash 值查找 hash node。
20、是否找到hash node,若是執(zhí)行15,否則執(zhí)行21。21、新建 hash node。賦值hash值為page item的hash值,即將該內(nèi)存頁的hash值確定為該新建的hash node 的 hash 值。22、將hash node插入到紅黑樹中。具體是將該新建的hash node插入到紅黑樹中。23、將page item加入到hash node的頁信息列表中。具體是將該內(nèi)存頁的page item插入到該新建的hash node的頁信息列表中。圖8為圖1-圖4所示實(shí)施例應(yīng)用的哈希結(jié)構(gòu)表更新的過程示意圖,在虛擬機(jī)運(yùn)行過程中,假設(shè)內(nèi)存頁的內(nèi)容發(fā)生變化,根據(jù)內(nèi)存頁的地址找到該內(nèi)存頁對(duì)應(yīng)的pageitem,重新計(jì)算該內(nèi)存頁的hash值,根據(jù)重新計(jì)算的hash值,確定該hash值歸屬的hashbucket,在歸屬的hash bucket上確定對(duì)應(yīng)的hashnode,將該內(nèi)存頁對(duì)應(yīng)的page item插入確定的hash node中,具體實(shí)現(xiàn)如圖8所示,包括24、獲取一份內(nèi)存頁;本實(shí)施例通過宿主機(jī)獲取虛擬機(jī)中的任一內(nèi)存頁的內(nèi)容和頁信息pageitem。25、根據(jù)該內(nèi)存頁地址在addr bucket中索引相應(yīng)page item ;具體地,根據(jù)內(nèi)存頁的地址,在addr bucket中獲取與該內(nèi)存頁地址對(duì)應(yīng)的頁信息page item,在該對(duì)應(yīng)的頁信息page item中獲取該內(nèi)存頁的hash值。26、計(jì)算該內(nèi)存頁的hash值;27、hash值是否改變,若是執(zhí)行步驟28和33,否則執(zhí)行步驟34 ;將步驟26計(jì)算得到的內(nèi)存頁的hash值與步驟25獲取的該內(nèi)存頁的hash值進(jìn)行比較,確定該內(nèi)存頁的hash值是否發(fā)生了變化。28、從hash node的頁信息列表中刪除該page item ;若步驟27確定該內(nèi)存頁的hash值發(fā)生了變化,則根據(jù)步驟25獲取的該內(nèi)存頁的hash值確定對(duì)應(yīng)的hash node,在對(duì)應(yīng)的hash node的頁信息列表中刪除該內(nèi)存頁對(duì)應(yīng)的page item。需要說明的是,hash node列表中插入有相同hash值的內(nèi)存頁對(duì)應(yīng)的pageitem。29、hash node列表是否為空,若是執(zhí)行步驟30,否則執(zhí)行步驟33 ;30、刪除該 hash node ;31、Hash node數(shù)目是否小于3,若是執(zhí)行步驟32,否則結(jié)束處理;假設(shè)該刪除的hash node歸屬的hash bucket是紅黑樹,在步驟30刪除hashnode后,進(jìn)一步確定該刪除的hash node歸屬的hash bucket中的Hash node數(shù)目是否小于3。32、將 hash node 組成鏈表;假設(shè)步驟30刪除的hash node歸屬的hash bucket中的Hash node數(shù)目小于3,則將該刪除的hash node歸屬的hash bucket中的其他的hash node組成鏈表。33、更新該內(nèi)存頁的page item ;若步驟27確定該內(nèi)存頁的hash值發(fā)生了變化,則根據(jù)步驟26計(jì)算的內(nèi)存頁的hash值,更新該內(nèi)存頁的page item中的hash值,根據(jù)步驟26計(jì)算的內(nèi)存頁的hash值,重新確定與該hash值對(duì)應(yīng)的hash bucket,例如根據(jù)hash值的前20bit值確定對(duì)應(yīng)的hashbucket,若該對(duì)應(yīng)hash bucket中存在與該hash值匹配的hashnode,則直接將該hash值對(duì)應(yīng)的內(nèi)存頁的page item插入到對(duì)應(yīng)的hash node的頁信息列表中;若該對(duì)應(yīng)hash bucket中不存在與該hash值匹配的hash node,則構(gòu)建新的hash node,并在構(gòu)建的新的hashnode列表中插入該hash node。34、該內(nèi)存頁內(nèi)容是否改變,若是執(zhí)行步驟28,否則結(jié)束處理;若步驟27確定該內(nèi)存頁的hash值沒有發(fā)生變化,則進(jìn)一步確定該內(nèi)存頁的內(nèi)容是否發(fā)生變化。在本發(fā)明的一個(gè)實(shí)施方式中,基于上述構(gòu)建的哈希結(jié)構(gòu)表,宿主機(jī)根據(jù)各虛擬機(jī)對(duì)應(yīng)的內(nèi)存頁的內(nèi)容,將各虛擬機(jī)對(duì)應(yīng)的內(nèi)存頁中內(nèi)容相同的內(nèi)存頁進(jìn)行合并處理,具體包括所述宿主機(jī)利用如圖9所示的數(shù)據(jù)包格式,所述數(shù)據(jù)包格式包括至少一個(gè)頁內(nèi)容表項(xiàng)和與各頁內(nèi)容表項(xiàng)對(duì)應(yīng)的頁信息表項(xiàng),將所述哈希結(jié)構(gòu)表中各Hash節(jié)點(diǎn)對(duì)應(yīng)的內(nèi)存頁的內(nèi)容分別封裝到各頁內(nèi)容表項(xiàng)中,將所述哈希結(jié)構(gòu)表中各Hash節(jié)點(diǎn)對(duì)應(yīng)的內(nèi)存頁的頁信息列表中包含的各頁信息分別封裝到對(duì)應(yīng)的頁信息表項(xiàng)中。102、將所述合并處理后的各虛擬機(jī)對(duì)應(yīng)的內(nèi)存頁發(fā)送給存儲(chǔ)系統(tǒng)。具體地,宿主機(jī)分別將所述哈希結(jié)構(gòu)表中各Hash節(jié)點(diǎn)對(duì)應(yīng)的內(nèi)存頁的數(shù)據(jù)包發(fā)送給存儲(chǔ)系統(tǒng);為了減少存儲(chǔ)系統(tǒng)對(duì)接收到的數(shù)據(jù)包的解析和處理代價(jià),在本發(fā)明的一個(gè)實(shí)施方式中,宿主機(jī)和存儲(chǔ)系統(tǒng)之間協(xié)商一種數(shù)據(jù)包格式,其中,數(shù)據(jù)包格式如圖9所示,本實(shí)施例利用該預(yù)設(shè)的數(shù)據(jù)包格式封裝合并處理后的各虛擬機(jī)對(duì)應(yīng)的內(nèi)存頁的內(nèi)容及頁信息,并將所述封裝處理后的各內(nèi)存頁的內(nèi)容及頁信息發(fā)送給存儲(chǔ)系統(tǒng)。本發(fā)明實(shí)施例通過宿主機(jī)根據(jù)各虛擬機(jī)對(duì)應(yīng)的內(nèi)存頁的內(nèi)容,將各虛擬機(jī)對(duì)應(yīng)的內(nèi)存頁中內(nèi)容相同的內(nèi)存頁進(jìn)行合并處理;將所述合并處理后的各虛擬機(jī)對(duì)應(yīng)的內(nèi)存頁發(fā)送給存儲(chǔ)系統(tǒng),可以減小宿主機(jī)發(fā)送給存儲(chǔ)系統(tǒng)的內(nèi)存頁的數(shù)據(jù)量,從而可以改善虛擬機(jī)快照技術(shù)中的快照備份數(shù)據(jù)存在占用大量磁盤空間的問題;同時(shí)通過減小宿主機(jī)發(fā)送給存儲(chǔ)系統(tǒng)的內(nèi)存頁的數(shù)據(jù)量,可以減小宿主機(jī)和存儲(chǔ)系統(tǒng)之間的網(wǎng)絡(luò)開銷,也可以減小快照備份時(shí)間;同時(shí),本實(shí)施例通過宿主機(jī)與存儲(chǔ)系統(tǒng)之間協(xié)商的數(shù)據(jù)包格式來封裝需要傳輸?shù)膬?nèi)存頁的內(nèi)容及頁信息,可以減少存儲(chǔ)系統(tǒng)對(duì)接收到的數(shù)據(jù)包的解析和處理代價(jià),也可以實(shí)現(xiàn)減小快照備份時(shí)間的目的。圖2為本發(fā)明另一實(shí)施例提供的基于虛擬機(jī)快照的內(nèi)存頁去重方法的流程示意圖;如圖2所示,包括201、存儲(chǔ)系統(tǒng)分別接收各宿主機(jī)發(fā)送的內(nèi)存頁。其中,所述各宿主機(jī)發(fā)送的內(nèi)存頁是所述各宿主機(jī)將各虛擬機(jī)對(duì)應(yīng)的內(nèi)存頁中內(nèi)容相同的內(nèi)存頁進(jìn)行合并處理后得到的。為了減少存儲(chǔ)系統(tǒng)對(duì)接收到的數(shù)據(jù)包的解析和處理代價(jià),在本發(fā)明的一個(gè)實(shí)施方式中,宿主機(jī)和存儲(chǔ)系統(tǒng)之間協(xié)商一種數(shù)據(jù)包格式,其中,數(shù)據(jù)包格式例如圖9所示,本實(shí)施例中,存儲(chǔ)系統(tǒng)分別接收各宿主機(jī)發(fā)送的內(nèi)存頁之后,根據(jù)圖9所示的數(shù)據(jù)包格式解析各宿主機(jī)發(fā)送的內(nèi)存頁,分別獲取各宿主機(jī)發(fā)送的內(nèi)存頁對(duì)應(yīng)的內(nèi)容及所述內(nèi)存頁對(duì)應(yīng)的頁信息。202、所述存儲(chǔ)系統(tǒng)根據(jù)各宿主機(jī)發(fā)送的內(nèi)存頁的內(nèi)容,將各宿主機(jī)發(fā)送的內(nèi)存頁中內(nèi)容相同的內(nèi)存頁進(jìn)行合并處理。例如圖5所示,第一宿主機(jī)發(fā)送的內(nèi)存頁信息中包括5個(gè)內(nèi)存頁,第二宿主機(jī)發(fā)送的內(nèi)存頁信息中包括4個(gè)內(nèi)存頁,第三宿主機(jī)發(fā)送的內(nèi)存頁信息中包括3個(gè)內(nèi)存頁;其中,第一宿主機(jī)發(fā)送的第一內(nèi)存頁的內(nèi)容與第二宿主機(jī)發(fā)送的第三內(nèi)存頁的內(nèi)容相同,因此,存儲(chǔ)系統(tǒng)可以將該相同內(nèi)容的內(nèi)存頁進(jìn)行合并處理;第一宿主機(jī)發(fā)送的第二內(nèi)存頁的內(nèi)容與第三宿主機(jī)發(fā)送的第三內(nèi)存頁的內(nèi)容相同,因此,存儲(chǔ)系統(tǒng)可以將該相同內(nèi)容的內(nèi)存頁進(jìn)行合并處理;第一宿主機(jī)發(fā)送的第四內(nèi)存頁的內(nèi)容與第二宿主機(jī)發(fā)送的第一內(nèi)存頁的內(nèi)容相同,因此,存儲(chǔ)系統(tǒng)可以將該相同內(nèi)容的內(nèi)存頁進(jìn)行合并處理;第一宿主機(jī)發(fā)送的第五內(nèi)存頁的內(nèi)容與第三宿主機(jī)發(fā)送的第一內(nèi)存頁的內(nèi)容相同,因此,存儲(chǔ)系統(tǒng)可以將該相同內(nèi)容的內(nèi)存頁進(jìn)行合并處理;其中,存儲(chǔ)系統(tǒng)將該相同內(nèi)容的內(nèi)存頁進(jìn)行合并處理,具體是指存儲(chǔ)系統(tǒng)可以在相同內(nèi)容的內(nèi)存頁中任選一個(gè)內(nèi)存頁進(jìn)行保存即可。需要說明的是,在實(shí)際應(yīng)用中,各宿主機(jī)發(fā)送的內(nèi)存頁數(shù)量較多,如果采用逐頁比較的方式比較耗時(shí)。在本發(fā)明的一個(gè)實(shí)施方式中,為了提高內(nèi)存頁內(nèi)容比較的效率,根據(jù)每個(gè)內(nèi)存頁的內(nèi)容,采用哈希Hash算法計(jì)算每個(gè)內(nèi)存頁的Hash值,根據(jù)計(jì)算得到的各內(nèi)存頁對(duì)應(yīng)的哈希Hash值,構(gòu)建各內(nèi)存頁對(duì)應(yīng)的哈希結(jié)構(gòu)表,其中,將哈希Hash值相同的各內(nèi)存頁的頁信息插入到所述哈希Hash值在所述哈希結(jié)構(gòu)表上對(duì)應(yīng)的哈希Hash節(jié)點(diǎn)的頁信息列表中;具體實(shí)現(xiàn)可以參考圖1實(shí)施例中步驟101中的詳細(xì)內(nèi)容,不再贅述。在本發(fā)明的一個(gè)實(shí)施方式中,基于上述構(gòu)建的哈希結(jié)構(gòu)表,所述存儲(chǔ)系統(tǒng)根據(jù)各宿主機(jī)發(fā)送的內(nèi)存頁的內(nèi)容,將各宿主機(jī)發(fā)送的內(nèi)存頁中內(nèi)容相同的內(nèi)存頁進(jìn)行合并處理,包括所述存儲(chǔ)系統(tǒng)利用預(yù)設(shè)的數(shù)據(jù)包格式,所述數(shù)據(jù)包格式包括至少一個(gè)頁內(nèi)容表項(xiàng)和與各頁內(nèi)容表項(xiàng)對(duì)應(yīng)的頁信息表項(xiàng),將所述哈希結(jié)構(gòu)表中各Hash節(jié)點(diǎn)對(duì)應(yīng)的內(nèi)存頁的內(nèi)容分別封裝到各頁內(nèi)容表項(xiàng)中,將所述哈希結(jié)構(gòu)表中各Hash節(jié)點(diǎn)對(duì)應(yīng)的內(nèi)存頁的頁信息列表中包含的各頁信息分別封裝到對(duì)應(yīng)的頁信息表項(xiàng)中。203、所述存儲(chǔ)系統(tǒng)保存所述合并處理后的內(nèi)存頁。具體地,存儲(chǔ)系統(tǒng)分別將所述哈希結(jié)構(gòu)表中各Hash節(jié)點(diǎn)對(duì)應(yīng)的內(nèi)存頁的數(shù)據(jù)包進(jìn)行保存。本發(fā)明實(shí)施例通過存儲(chǔ)系統(tǒng)根據(jù)各宿主機(jī)發(fā)送的內(nèi)存頁,根據(jù)各宿主機(jī)發(fā)送的內(nèi)存頁的內(nèi)容,將各宿主機(jī)發(fā)送的內(nèi)存頁中內(nèi)容相同的內(nèi)存頁進(jìn)行合并處理,并保存所述合并處理后的內(nèi)存頁,從而可以減少磁盤開銷,節(jié)約磁盤空間;同時(shí),本實(shí)施例通過宿主機(jī)與存儲(chǔ)系統(tǒng)之間協(xié)商的數(shù)據(jù)包格式來封裝需要傳輸?shù)膬?nèi)存頁的內(nèi)容及頁信息,可以減少存儲(chǔ)系統(tǒng)對(duì)接收到的數(shù)據(jù)包的解析和處理代價(jià),也可以實(shí)現(xiàn)減小快照備份時(shí)間的目的。圖3為本發(fā)明另一實(shí)施例提供的宿主機(jī)的結(jié)構(gòu)示意圖;其中,所述宿主機(jī)上運(yùn)行的多個(gè)虛擬機(jī),如圖3所示,宿主機(jī)包括第一處理模塊301,用于根據(jù)所述宿主機(jī)上運(yùn)行的多個(gè)虛擬機(jī)對(duì)應(yīng)的內(nèi)存頁的內(nèi)容,將所述多個(gè)虛擬機(jī)對(duì)應(yīng)的內(nèi)存頁中內(nèi)容相同的內(nèi)存頁進(jìn)行合并處理;發(fā)送模塊302,用于將第一處理模塊301合并處理后的各虛擬機(jī)對(duì)應(yīng)的內(nèi)存頁發(fā)送給存儲(chǔ)系統(tǒng);在本發(fā)明一個(gè)實(shí)施方式中,宿主機(jī)還包括哈希模塊303,具體用于獲取各虛擬機(jī)對(duì)應(yīng)的內(nèi)存頁的內(nèi)容及頁信息;根據(jù)各內(nèi)存頁的內(nèi)容,利用哈希Hash算法,計(jì)算各內(nèi)存頁對(duì)應(yīng)的Hash值;根據(jù)計(jì)算得到的各內(nèi)存頁對(duì)應(yīng)的Hash值,構(gòu)建與各內(nèi)存頁對(duì)應(yīng)的哈希結(jié)構(gòu)表,所述哈希結(jié)構(gòu)表包括紅黑樹和/或鏈表;將各內(nèi)存頁的頁信息插入到所述哈希結(jié)構(gòu)表中與各內(nèi)存頁對(duì)應(yīng)的Hash值對(duì)應(yīng)的Hash節(jié)點(diǎn)中。其中,哈希模塊303構(gòu)建的哈希結(jié)構(gòu)表可以提高第一處理模塊301進(jìn)行內(nèi)存頁內(nèi)容比較的效率。在本發(fā)明一個(gè)實(shí)施方式中,宿主機(jī)還包括第一處理模塊301,具體用于利用預(yù)設(shè)的數(shù)據(jù)包格式,所述數(shù)據(jù)包格式包括至少一個(gè)頁內(nèi)容表項(xiàng)和與各頁內(nèi)容表項(xiàng)對(duì)應(yīng)的頁信息表項(xiàng),將所述哈希結(jié)構(gòu)表中各Hash節(jié)點(diǎn)對(duì)應(yīng)的內(nèi)存頁的內(nèi)容分別封裝到各頁內(nèi)容表項(xiàng)中,將所述哈希結(jié)構(gòu)表中各Hash節(jié)點(diǎn)對(duì)應(yīng)的內(nèi)存頁的頁信息列表中包含的各頁信息分別封裝到對(duì)應(yīng)的頁信息表項(xiàng)中;發(fā)送模塊302,還用于分別將第一處理模塊301處理后的與所述哈希結(jié)構(gòu)表中各Hash節(jié)點(diǎn)對(duì)應(yīng)的內(nèi)存頁的數(shù)據(jù)包發(fā)送給存儲(chǔ)系統(tǒng)。本發(fā)明實(shí)施例通過宿主機(jī)根據(jù)各虛擬機(jī)對(duì)應(yīng)的內(nèi)存頁的內(nèi)容,將各虛擬機(jī)對(duì)應(yīng)的內(nèi)存頁中內(nèi)容相同的內(nèi)存頁進(jìn)行合并處理;將所述合并處理后的各虛擬機(jī)對(duì)應(yīng)的內(nèi)存頁發(fā)送給存儲(chǔ)系統(tǒng),可以減小宿主機(jī)發(fā)送給存儲(chǔ)系統(tǒng)的內(nèi)存頁的數(shù)據(jù)量,從而可以改善虛擬機(jī)快照技術(shù)中的快照備份數(shù)據(jù)存在占用大量磁盤空間的問題;同時(shí)通過減小宿主機(jī)發(fā)送給存儲(chǔ)系統(tǒng)的內(nèi)存頁的數(shù)據(jù)量,可以減小宿主機(jī)和存儲(chǔ)系統(tǒng)之間的網(wǎng)絡(luò)開銷,也可以減小快照備份時(shí)間;同時(shí),本實(shí)施例通過宿主機(jī)與存儲(chǔ)系統(tǒng)之間協(xié)商的數(shù)據(jù)包格式來封裝需要傳輸?shù)膬?nèi)存頁的內(nèi)容及頁信息,可以減少存儲(chǔ)系統(tǒng)對(duì)接收到的數(shù)據(jù)包的解析和處理代價(jià),也可以實(shí)現(xiàn)減小快照備份時(shí)間的目的。圖4為本發(fā)明另一實(shí)施例提供的存儲(chǔ)系統(tǒng)的結(jié)構(gòu)示意圖,應(yīng)用于虛擬機(jī)快照系統(tǒng),如圖4所示,存儲(chǔ)系統(tǒng)包括接收模塊401,用于分別接收各宿主機(jī)發(fā)送的內(nèi)存頁,所述各宿主機(jī)發(fā)送的內(nèi)存頁是所述各宿主機(jī)將各虛擬機(jī)對(duì)應(yīng)的內(nèi)存頁中內(nèi)容相同的內(nèi)存頁進(jìn)行合并處理后得到的;第二處理模塊402,用于根據(jù)各宿主機(jī)發(fā)送的內(nèi)存頁的內(nèi)容,將各宿主機(jī)發(fā)送的內(nèi)存頁中內(nèi)容相同的內(nèi)存頁進(jìn)行合并處理;保存模塊403,用于保存第二處理模塊402合并處理后的內(nèi)存頁;所述存儲(chǔ)系統(tǒng)還包括解析模塊404,用于在接收模塊401分別接收各宿主機(jī)發(fā)送的內(nèi)存頁信息之后,根據(jù)預(yù)設(shè)的數(shù)據(jù)包格式解析各宿主機(jī)發(fā)送的內(nèi)存頁,分別獲取各宿主機(jī)發(fā)送的內(nèi)存頁對(duì)應(yīng)的內(nèi)容及頁信息。哈希模塊405,用于根據(jù)解析模塊404解析后的各內(nèi)存頁的內(nèi)容,利用哈希Hash算法,計(jì)算各內(nèi)存頁對(duì)應(yīng)的Hash值;根據(jù)計(jì)算得到的各內(nèi)存頁對(duì)應(yīng)的Hash值,構(gòu)建與各內(nèi)存頁對(duì)應(yīng)的哈希結(jié)構(gòu)表,所述哈希結(jié)構(gòu)表包括紅黑樹和/或鏈表;將各內(nèi)存頁的頁信息插入到所述哈希結(jié)構(gòu)表中與各內(nèi)存頁對(duì)應(yīng)的Hash值對(duì)應(yīng)的Hash節(jié)點(diǎn)中。其中,哈希模塊405構(gòu)建的哈希結(jié)構(gòu)表可以提高第二處理模塊402進(jìn)行內(nèi)存頁內(nèi)容比較的效率。第二處理模塊402,具體用于利用預(yù)設(shè)的數(shù)據(jù)包格式,所述數(shù)據(jù)包格式包括至少一個(gè)頁內(nèi)容表項(xiàng)和與各頁內(nèi)容表項(xiàng)對(duì)應(yīng)的頁信息表項(xiàng),將所述哈希結(jié)構(gòu)表中各Hash節(jié)點(diǎn)對(duì)應(yīng)的內(nèi)存頁的內(nèi)容分別封裝到各頁內(nèi)容表項(xiàng)中,將所述哈希結(jié)構(gòu)表中各Hash節(jié)點(diǎn)對(duì)應(yīng)的內(nèi)存頁的頁信息列表中包含的各頁信息分別封裝到對(duì)應(yīng)的頁信息表項(xiàng)中。其中,保存模塊403,具體用于分別保存第二處理模塊402合并處理后的與所述哈希結(jié)構(gòu)表中各Hash節(jié)點(diǎn)對(duì)應(yīng)的內(nèi)存頁的數(shù)據(jù)包。 本發(fā)明實(shí)施例通過存儲(chǔ)系統(tǒng)根據(jù)各宿主機(jī)發(fā)送的內(nèi)存頁,根據(jù)各宿主機(jī)發(fā)送的內(nèi)存頁的內(nèi)容,將各宿主機(jī)發(fā)送的內(nèi)存頁中內(nèi)容相同的內(nèi)存頁進(jìn)行合并處理,并保存所述合并處理后的內(nèi)存頁,從而可以減少磁盤開銷,節(jié)約磁盤空間;同時(shí),本實(shí)施例通過宿主機(jī)與存儲(chǔ)系統(tǒng)之間協(xié)商的數(shù)據(jù)包格式來封裝需要傳輸?shù)膬?nèi)存頁的內(nèi)容及頁信息,可以減少存儲(chǔ)系統(tǒng)對(duì)接收到的數(shù)據(jù)包的解析和處理代價(jià),也可以實(shí)現(xiàn)減小快照備份時(shí)間的目的。本發(fā)明另一實(shí)施例提供一種虛擬機(jī)快照系統(tǒng),包括如圖3所不實(shí)施例提供的宿主機(jī)和如圖4所不實(shí)施例提供的存儲(chǔ)系統(tǒng),其中,宿主機(jī)的內(nèi)容可以參考圖3所7]^實(shí)施例提供的宿主機(jī)中相關(guān)描述,存儲(chǔ)系統(tǒng)的內(nèi)容可以參考圖4所示實(shí)施例提供的存儲(chǔ)系統(tǒng)中相關(guān)描述,不再贅述。需要說明的是,當(dāng)虛擬機(jī)因故障失效時(shí),整個(gè)虛擬機(jī)集群需要回滾到上一個(gè)快照點(diǎn),具體實(shí)現(xiàn)時(shí),例如讀取存儲(chǔ)系統(tǒng)中保存的內(nèi)存頁的內(nèi)容以及該內(nèi)存頁對(duì)應(yīng)的頁信息,其中,頁信息中例如包含頁地址、虛擬機(jī)標(biāo)識(shí)、虛擬機(jī)所處的宿主機(jī)信息,然后將該內(nèi)存頁的內(nèi)容及對(duì)應(yīng)的頁信息分別發(fā)送給對(duì)應(yīng)的宿主機(jī),由各宿主機(jī)分別將該頁內(nèi)容根據(jù)對(duì)應(yīng)的頁地址寫入到對(duì)應(yīng)的虛擬機(jī)的內(nèi)存中。本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述各方法實(shí)施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成。前述的程序可以存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。該程序在執(zhí)行時(shí),執(zhí)行包括上述各方法實(shí)施例的步驟;而前述的存儲(chǔ)介質(zhì)包括R0M、RAM、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。最后應(yīng)說明的是以上各實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述各實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分或者全部技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的范圍。
權(quán)利要求
1.一種基于虛擬機(jī)快照的內(nèi)存頁去重方法,其特征在于,包括 宿主機(jī)根據(jù)各虛擬機(jī)對(duì)應(yīng)的內(nèi)存頁的內(nèi)容,將各虛擬機(jī)對(duì)應(yīng)的內(nèi)存頁中內(nèi)容相同的內(nèi)存頁進(jìn)行合并處理; 將所述合并處理后的各虛擬機(jī)對(duì)應(yīng)的內(nèi)存頁發(fā)送給存儲(chǔ)系統(tǒng)。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,宿主機(jī)根據(jù)各虛擬機(jī)對(duì)應(yīng)的內(nèi)存頁的內(nèi)容,將各虛擬機(jī)對(duì)應(yīng)的內(nèi)存頁中內(nèi)容相同的內(nèi)存頁進(jìn)行合并處理之前,具體包括 所述宿主機(jī)獲取各虛擬機(jī)對(duì)應(yīng)的內(nèi)存頁的內(nèi)容及頁信息; 根據(jù)各內(nèi)存頁的內(nèi)容,利用哈希Hash算法,計(jì)算各內(nèi)存頁對(duì)應(yīng)的Hash值; 根據(jù)計(jì)算得到的各內(nèi)存頁對(duì)應(yīng)的Hash值,構(gòu)建與各內(nèi)存頁對(duì)應(yīng)的哈希結(jié)構(gòu)表,所述哈希結(jié)構(gòu)表包括紅黑樹和/或鏈表; 將各內(nèi)存頁的頁信息插入到所述哈希結(jié)構(gòu)表中與各內(nèi)存頁的Hash值對(duì)應(yīng)的Hash節(jié)點(diǎn)的頁信息列表中。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,將各虛擬機(jī)對(duì)應(yīng)的內(nèi)存頁中內(nèi)容相同的內(nèi)存頁進(jìn)行合并處理,具體包括 根據(jù)預(yù)設(shè)的數(shù)據(jù)包格式,所述數(shù)據(jù)包格式包括至少一個(gè)頁內(nèi)容表項(xiàng)和與各頁內(nèi)容表項(xiàng)對(duì)應(yīng)的頁信息表項(xiàng),將所述哈希結(jié)構(gòu)表中各Hash節(jié)點(diǎn)對(duì)應(yīng)的內(nèi)存頁的內(nèi)容分別封裝到各頁內(nèi)容表項(xiàng)中,將所述哈希結(jié)構(gòu)表中各Hash節(jié)點(diǎn)對(duì)應(yīng)的內(nèi)存頁的頁信息列表中包含的各頁信息分別封裝到對(duì)應(yīng)的頁信息表項(xiàng)中。
4.一種基于虛擬機(jī)快照的內(nèi)存頁去重方法,其特征在于,包括 存儲(chǔ)系統(tǒng)分別接收各宿主機(jī)發(fā)送的內(nèi)存頁,所述各宿主機(jī)發(fā)送的內(nèi)存頁是所述各宿主機(jī)將各虛擬機(jī)對(duì)應(yīng)的內(nèi)存頁中內(nèi)容相同的內(nèi)存頁進(jìn)行合并處理后得到的; 所述存儲(chǔ)系統(tǒng)根據(jù)各宿主機(jī)發(fā)送的內(nèi)存頁的內(nèi)容,將各宿主機(jī)發(fā)送的內(nèi)存頁中內(nèi)容相同的內(nèi)存頁進(jìn)行合并處理; 所述存儲(chǔ)系統(tǒng)保存所述合并處理后的內(nèi)存頁。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述存儲(chǔ)系統(tǒng)根據(jù)各宿主機(jī)發(fā)送的內(nèi)存頁的內(nèi)容,將各宿主機(jī)發(fā)送的內(nèi)存頁中內(nèi)容相同的內(nèi)存頁進(jìn)行合并處理之前,包括 所述存儲(chǔ)系統(tǒng)根據(jù)預(yù)設(shè)的數(shù)據(jù)包格式解析各宿主機(jī)發(fā)送的內(nèi)存頁,分別獲取各宿主機(jī)發(fā)送的內(nèi)存頁對(duì)應(yīng)的內(nèi)容及所述內(nèi)存頁對(duì)應(yīng)的頁信息。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述存儲(chǔ)系統(tǒng)根據(jù)預(yù)設(shè)的數(shù)據(jù)包格式解析各宿主機(jī)發(fā)送的內(nèi)存頁,分別獲取各宿主機(jī)發(fā)送的內(nèi)存頁對(duì)應(yīng)的內(nèi)容及所述內(nèi)存頁對(duì)應(yīng)的頁信息之后,包括 所述存儲(chǔ)系統(tǒng)根據(jù)各內(nèi)存頁的內(nèi)容,利用哈希Hash算法,計(jì)算各內(nèi)存頁對(duì)應(yīng)的Hash值; 根據(jù)計(jì)算得到的各內(nèi)存頁對(duì)應(yīng)的Hash值,構(gòu)建與各內(nèi)存頁對(duì)應(yīng)的哈希結(jié)構(gòu)表,所述哈希結(jié)構(gòu)表包括紅黑樹和/或鏈表; 將各內(nèi)存頁的頁信息插入到所述哈希結(jié)構(gòu)表中與各內(nèi)存頁的Hash值對(duì)應(yīng)的Hash節(jié)點(diǎn)的頁信息列表中。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述存儲(chǔ)系統(tǒng)根據(jù)各宿主機(jī)發(fā)送的內(nèi)存頁的內(nèi)容,將各宿主機(jī)發(fā)送的內(nèi)存頁中內(nèi)容相同的內(nèi)存頁進(jìn)行合并處理,包括所述存儲(chǔ)系統(tǒng)利用預(yù)設(shè)的數(shù)據(jù)包格式,所述數(shù)據(jù)包格式包括至少一個(gè)頁內(nèi)容表項(xiàng)和與各頁內(nèi)容表項(xiàng)對(duì)應(yīng)的頁信息表項(xiàng),將所述哈希結(jié)構(gòu)表中各Hash節(jié)點(diǎn)對(duì)應(yīng)的內(nèi)存頁的內(nèi)容分別封裝到各頁內(nèi)容表項(xiàng)中,將所述哈希結(jié)構(gòu)表中各Hash節(jié)點(diǎn)對(duì)應(yīng)的內(nèi)存頁的頁信息列表中包含的各頁信息分別封裝到對(duì)應(yīng)的頁信息表項(xiàng)中。
8.一種宿主機(jī),運(yùn)行有多個(gè)虛擬機(jī),其特征在于,包括 第一處理模塊,用于根據(jù)所述宿主機(jī)上運(yùn)行的多個(gè)虛擬機(jī)對(duì)應(yīng)的內(nèi)存頁的內(nèi)容,將所述多個(gè)虛擬機(jī)對(duì)應(yīng)的內(nèi)存頁中內(nèi)容相同的內(nèi)存頁進(jìn)行合并處理; 發(fā)送模塊,用于將所述合并處理后的各虛擬機(jī)對(duì)應(yīng)的內(nèi)存頁發(fā)送給存儲(chǔ)系統(tǒng)。
9.一種存儲(chǔ)系統(tǒng),應(yīng)用于虛擬機(jī)快照系統(tǒng),其特征在于,包括 接收模塊,用于分別接收各宿主機(jī)發(fā)送的內(nèi)存頁,所述各宿主機(jī)發(fā)送的內(nèi)存頁是所述各宿主機(jī)將各虛擬機(jī)對(duì)應(yīng)的內(nèi)存頁中內(nèi)容相同的內(nèi)存頁進(jìn)行合并處理后得到的; 第二處理模塊,用于根據(jù)各宿主機(jī)發(fā)送的內(nèi)存頁的內(nèi)容,將各宿主機(jī)發(fā)送的內(nèi)存頁中內(nèi)容相同的內(nèi)存頁進(jìn)行合并處理; 保存模塊,用于保存所述合并處理后的內(nèi)存頁。
10.一種虛擬機(jī)快照系統(tǒng),其特征在于,包括 如權(quán)利要求8所述的宿主機(jī)和如權(quán)利要求9所述的存儲(chǔ)系統(tǒng)。
全文摘要
本發(fā)明提供一種基于虛擬機(jī)快照的內(nèi)存頁去重方法及裝置,應(yīng)用于虛擬機(jī)快照系統(tǒng),所述方法包括宿主機(jī)根據(jù)各虛擬機(jī)對(duì)應(yīng)的內(nèi)存頁的內(nèi)容,將各虛擬機(jī)對(duì)應(yīng)的內(nèi)存頁中內(nèi)容相同的內(nèi)存頁進(jìn)行合并處理;將所述合并處理后的各虛擬機(jī)對(duì)應(yīng)的內(nèi)存頁發(fā)送給存儲(chǔ)系統(tǒng)??梢愿纳铺摂M機(jī)快照技術(shù)中的快照備份數(shù)據(jù)存在占用大量磁盤空間的問題,同時(shí)可以減少快照備份時(shí)間。
文檔編號(hào)G06F12/02GK103019884SQ20121047775
公開日2013年4月3日 申請(qǐng)日期2012年11月21日 優(yōu)先權(quán)日2012年11月21日
發(fā)明者李博, 崔磊, 李建欣, 沃天宇 申請(qǐng)人:北京航空航天大學(xué)