本發明屬于云計算技術領域,特別是涉及一種支持內存快照重復數據刪除的存儲方法和裝置。
背景技術:
目前的技術方案中,從數據去重的位置上來說,分為源端去重和目的端去重,服務端與客戶端進行交互,由客戶端確認數據的重復,相同的數據不再上傳,以節約網絡帶寬;從數據去重的范圍上來說,數據去重可以在客戶端進行,可采取在云服務端進行統一全局處理;從數據劃分的方法上講,分為全文件劃分、靜態劃分和基于數據內容的劃分,重復內容只保留一份,副本內容使用鏈接的形式取代。在虛擬化環境中,數據去重也得到一定支持,一方面借助存儲設備原生的去重機制,一方面在上層對于磁盤內容的存儲和鏈接克隆已經支持較完善,其中的冗余數據得到一定的優化。
目前云環境下關注的焦點往往在于虛擬機的鏡像文件存儲的優化,但在大規模的場景下,尤其是在線快照較頻繁的場景,對內存的快照并未做特別的優化。而目前云環境中,虛擬機操作系統往往被限定在有限的范圍內,其內存結構布局相似,內存快照相似性較高,內存快照過多,會導致存儲中有大量重復的內存快照數據存在。
技術實現要素:
為解決上述問題,本發明提供了一種支持內存快照重復數據刪除的存儲方法和裝置,能夠只保存一份相同內容的內存快照區域,達到優化內存快照的存儲和傳輸帶寬的目的。
本發明提供的一種支持內存快照重復數據刪除的存儲方法,包括:
識別虛擬機操作系統的類型,構造內存布局模板;
根據所述內存布局模板,對虛擬機的內存分段進行快照,得到內存快照;
計算每個所述內存快照的指紋值;
查詢所述內存快照的指紋值是否在過濾器中,如果在,則不上傳該內存快照,如果不在,則上傳該內存快照。
優選的,在上述支持內存快照重復數據刪除的存儲方法中,所述查詢內存快照的指紋值是否在過濾器中之后還包括:
對于所述過濾器無法正確過濾的內存快照,在存儲端進行所述內存快照的指紋值的二次校驗,如果所述存儲端存在所述內存快照,則不保存所述內存快照。
優選的,在上述支持內存快照重復數據刪除的存儲方法中,在所述查詢所述內存快照的指紋值是否在過濾器中之前,還包括:
將所述過濾器保存在運行所述虛擬機的宿主機上。
優選的,在上述支持內存快照重復數據刪除的存儲方法中,所述計算每個所述內存快照的指紋值為:
利用sha1算法計算每個所述內存快照的指紋值。
優選的,在上述支持內存快照重復數據刪除的存儲方法中,所述過濾器為bloomfilter。
本發明提供的一種支持內存快照重復數據刪除的存儲裝置,包括:
構造單元,用于識別虛擬機操作系統的類型,構造內存布局模板;
快照單元,用于根據所述內存布局模板,對虛擬機的內存分段進行快照,得到內存快照;
計算單元,用于計算每個所述內存快照的指紋值;
查詢單元,用于查詢所述內存快照的指紋值是否在過濾器中,如果在,則不上傳該內存快照,如果不在,則上傳該內存快照。
優選的,在上述支持內存快照重復數據刪除的存儲裝置中,還包括:
校驗單元,用于對于所述過濾器無法正確過濾的內存快照,在存儲端進行所述內存快照的指紋值的二次校驗,如果所述存儲端存在所述內存快照,則不保存所述內存快照。
優選的,在上述支持內存快照重復數據刪除的存儲裝置中,還包括:
保存單元,用于將所述過濾器保存在運行所述虛擬機的宿主機上。
優選的,在上述支持內存快照重復數據刪除的存儲裝置中,所述計算單元具體用于利用sha1算法計算每個所述內存快照的指紋值。
優選的,在上述支持內存快照重復數據刪除的存儲裝置中,所述查詢單元具體用于查詢所述內存快照的指紋值是否在bloomfilter中,如果在,則不上傳該內存快照,如果不在,則上傳該內存快照。
通過上述描述可知,本發明提供的上述支持內存快照重復數據刪除的存儲方法和裝置,由于該方法包括識別虛擬機操作系統的類型,構造內存布局模板;根據所述內存布局模板,對虛擬機的內存分段進行快照,得到內存快照;計算每個所述內存快照的指紋值;查詢所述內存快照的指紋值是否在過濾器中,如果在,則不上傳該內存快照,如果不在,則上傳該內存快照,因此能夠只保存一份相同內容的內存快照區域,達到優化內存快照的存儲和傳輸帶寬的目的。
附圖說明
為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據提供的附圖獲得其他的附圖。
圖1為本申請實施例提供的第一種支持內存快照重復數據刪除的存儲方法的示意圖;
圖2為本申請實施例提供的第一種支持內存快照重復數據刪除的存儲裝置的示意圖。
具體實施方式
本發明的核心思想在于提供一種支持內存快照重復數據刪除的存儲方法和裝置,能夠只保存一份相同內容的內存快照區域,達到優化內存快照的存儲和傳輸帶寬的目的。
下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
本申請實施例提供的第一種支持內存快照重復數據刪除的存儲方法如圖1所示,圖1為本申請實施例提供的第一種支持內存快照重復數據刪除的存儲方法的示意圖,該方法包括如下步驟:
s1:識別虛擬機操作系統的類型,構造內存布局模板;
以linux系統為例,其虛擬機內存空間布局類似,對于相同的linux內核,其內核地址空間內核代碼段完全相同,其共享庫映射空間也有一定重復率,部分進程的代碼段頁面,也有一定重復率。
s2:根據所述內存布局模板,對虛擬機的內存分段進行快照,得到內存快照;
s3:計算每個所述內存快照的指紋值;
需要說明的是,使用指紋值索引是數據刪重技術中的最常用方法,易于實現,且效率高。
s4:查詢所述內存快照的指紋值是否在過濾器中,如果在,則不上傳該內存快照,如果不在,則上傳該內存快照。
需要說明的是,可以但不限于利用bloomfilter協同源端和目的端去重的方式,以對相同內容的內存快照區域只保存一份,最終優化內存快照的存儲和傳輸帶寬。
通過上述描述可知,本申請實施例提供的第一種支持內存快照重復數據刪除的存儲方法,由于包括識別虛擬機操作系統的類型,構造內存布局模板;根據所述內存布局模板,對虛擬機的內存分段進行快照,得到內存快照;計算每個所述內存快照的指紋值;查詢所述內存快照的指紋值是否在過濾器中,如果在,則不上傳該內存快照,如果不在,則上傳該內存快照,因此能夠只保存一份相同內容的內存快照區域,達到優化內存快照的存儲和傳輸帶寬的目的。
本申請實施例提供的第二種支持內存快照重復數據刪除的存儲方法,是在上述第一種支持內存快照重復數據刪除的存儲方法的基礎上,還包括如下技術特征:
所述查詢內存快照的指紋值是否在過濾器中之后還包括:
對于所述過濾器無法正確過濾的內存快照,在存儲端進行所述內存快照的指紋值的二次校驗,如果所述存儲端存在所述內存快照,則不保存所述內存快照。
需要說明的是,該步驟是為了消除過濾器必然存在的誤差,從而更好的保證過濾的準確性。
本申請實施例提供的第三種支持內存快照重復數據刪除的存儲方法,是在上述第一種支持內存快照重復數據刪除的存儲方法的基礎上,還包括如下技術特征:
在所述查詢所述內存快照的指紋值是否在過濾器中之前,還包括:
將所述過濾器保存在運行所述虛擬機的宿主機上。
需要說明的是,虛擬機運行在宿主機上,因此這里講過濾器保存在該宿主機上。
本申請實施例提供的第四種支持內存快照重復數據刪除的存儲方法,是在上述第一種支持內存快照重復數據刪除的存儲方法的基礎上,還包括如下技術特征:所述計算每個所述內存快照的指紋值為:
利用sha1算法計算每個所述內存快照的指紋值。
需要說明的是,該sha1算法(安全哈希算法,securehashalgorithm)主要適用于數字簽名標準(digitalsignaturestandarddss)里面定義的數字簽名算法(digitalsignaturealgorithmdsa)。對于長度小于2^64位的消息,sha1會產生一個160位的消息摘要。當接收到消息的時候,這個消息摘要可以用來驗證數據的完整性。
本申請實施例提供的第五種支持內存快照重復數據刪除的存儲方法,是在上述第一種至第四種支持內存快照重復數據刪除的存儲方法中任一種的基礎上,還包括如下技術特征:
所述過濾器為bloomfilter。
這種過濾器具有很好的空間和時間效率,被用來檢測一個元素是不是集合中的一個成員。如果檢測結果為是,該元素不一定在集合中;但如果檢測結果為否,該元素一定不在集合中。因此bloomfilter具有100%的召回率。這樣每個檢測請求返回有“在集合內(可能錯誤)”和“不在集合內(絕對不在集合內)”兩種情況,可見bloomfilter是犧牲了正確率和時間以節省空間。
本申請實施例提供的第一種支持內存快照重復數據刪除的存儲裝置如圖2所示,圖2為本申請實施例提供的第一種支持內存快照重復數據刪除的存儲裝置的示意圖,該裝置包括:
構造單元201,用于識別虛擬機操作系統的類型,構造內存布局模板,以linux系統為例,其虛擬機內存空間布局類似,對于相同的linux內核,其內核地址空間內核代碼段完全相同,其共享庫映射空間也有一定重復率,部分進程的代碼段頁面,也有一定重復率;
快照單元202,用于根據所述內存布局模板,對虛擬機的內存分段進行快照,得到內存快照;
計算單元203,用于計算每個所述內存快照的指紋值;
查詢單元204,用于查詢所述內存快照的指紋值是否在過濾器中,如果在,則不上傳該內存快照,如果不在,則上傳該內存快照,可以但不限于利用bloomfilter協同源端和目的端去重的方式,以對相同內容的內存快照區域只保存一份,最終優化內存快照的存儲和傳輸帶寬。
本申請實施例提供的第二種支持內存快照重復數據刪除的存儲裝置,是在上述第一種支持內存快照重復數據刪除的存儲裝置的基礎上,還包括如下技術特征:
校驗單元,用于對于所述過濾器無法正確過濾的內存快照,在存儲端進行所述內存快照的指紋值的二次校驗,如果所述存儲端存在所述內存快照,則不保存所述內存快照,這是為了消除過濾器必然存在的誤差,從而更好的保證過濾的準確性。
本申請實施例提供的第三種支持內存快照重復數據刪除的存儲裝置,是在上述第一種支持內存快照重復數據刪除的存儲裝置的基礎上,還包括如下技術特征:
保存單元,用于將所述過濾器保存在運行所述虛擬機的宿主機上。
本申請實施例提供的第四種支持內存快照重復數據刪除的存儲裝置,是在上述第一種支持內存快照重復數據刪除的存儲裝置的基礎上,還包括如下技術特征:
所述計算單元具體用于利用sha1算法計算每個所述內存快照的指紋值。
需要說明的是,該sha1算法(安全哈希算法,securehashalgorithm)主要適用于數字簽名標準(digitalsignaturestandarddss)里面定義的數字簽名算法(digitalsignaturealgorithmdsa)。對于長度小于2^64位的消息,sha1會產生一個160位的消息摘要。當接收到消息的時候,這個消息摘要可以用來驗證數據的完整性。
本申請實施例提供的第五種支持內存快照重復數據刪除的存儲裝置,是在上述第一種至第四種支持內存快照重復數據刪除的存儲裝置中任一種的基礎上,還包括如下技術特征:
所述查詢單元具體用于查詢所述內存快照的指紋值是否在bloomfilter中,如果在,則不上傳該內存快照,如果不在,則上傳該內存快照。
這種過濾器具有很好的空間和時間效率,被用來檢測一個元素是不是集合中的一個成員。如果檢測結果為是,該元素不一定在集合中;但如果檢測結果為否,該元素一定不在集合中。因此bloomfilter具有100%的召回率。這樣每個檢測請求返回有“在集合內(可能錯誤)”和“不在集合內(絕對不在集合內)”兩種情況,可見bloomfilter是犧牲了正確率和時間以節省空間。
綜上所述,上述方案對每個虛擬機的內存進行分段指紋計算,利用源端去重優化了內存快照時宿主機與存儲間的傳輸帶寬,利用目的端去重,降低了后端數據存儲的空間占用,最終以達到對相同內容的內存快照區域只保存一份,優化內存快照的存儲和傳輸帶寬的目的,適用于大規模的云環境場景。
對所公開的實施例的上述說明,使本領域專業技術人員能夠實現或使用本發明。對這些實施例的多種修改對本領域的專業技術人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發明的精神或范圍的情況下,在其它實施例中實現。因此,本發明將不會被限制于本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一致的最寬的范圍。