一種歷史感知的數據去重碎片消除方法與系統的制作方法
【專利摘要】本發明公開了一種應用于數據去重系統中的碎片消除方法,該方法利用歷史信息準確地識別碎片,系統內存開銷少且恢復吞吐率高。該方法首先對數據流中的文件進行分塊、求指紋,查詢索引找到重復數據塊;然后在上次備份記錄的稀疏容器集合中查找重復數據塊的容器ID,判斷哪些重復數據塊屬于稀疏容器。對于屬于稀疏容器的重復數據塊,將其重寫到新的容器中。該方法在備份過程中,只需記錄下相關容器的利用率,內存開銷極小。本發明還提供了相應的歷史感知的數據去重碎片消除系統。由于本方法準確地識別了碎片,重寫的數據量很少,因此保持了較高的去重率和備份性能,同時顯著地提升恢復性能。
【專利說明】一種歷史感知的數據去重碎片消除方法與系統
【技術領域】
[0001]本發明屬于計算機存儲【技術領域】,更具體地,涉及一種歷史感知的數據去重碎片消除方法與系統。
【背景技術】
[0002]近年來,隨著互聯網的普及,全球的數據信息存儲量正爆炸式增長。海量數據的存儲和管理稱為學界和工業界面臨的重大難題。研究人員發現,在各類存儲系統中(如備份歸檔存儲系統,主存儲系統,和高性能數據中心)存在大量冗余數據。通過消除這些冗余數據,可以極大減少存儲成本。因此,數據去重(Data Deduplicat1n)作為一種通過大規模地有效地消除冗余數據的技術,成為了近年來存儲系統研究的熱點。數據去重不僅能節省存儲空間、提升存儲系統性能,而且通過避免冗余數據傳輸可以節省網絡帶寬。數據去重技術目前已被IBM、HP、EMC等存儲大公司應用到存儲產品中,標志著數據去重技術已經成為存儲領域的主流技術。
[0003]數據備份和歸檔存儲系統是最早應用數據去重技術的場景。舉例來說:現在某核心部門有20GB的數據需要每天備份,那么一年就需要存儲7300GB。但是,由于每天修改的數據不到1GB,這7300GB的數據存在大量冗余數據,因而浪費了存儲資源。隨著備份次數的增多,存儲系統中的冗余數據越來越多,消耗在冗余數據上的存儲和管理資源會成倍增長。而數據去重技術通過發現和舍棄這些冗余數據,可以抑制數據存儲的增長速度從而降低了數據存儲管理開銷。
[0004]但是隨著數據去重技術的發展,數據去重技術也面臨諸多的挑戰,例如數據碎片的問題導致恢復(讀)性能嚴重下降。這是由于用戶的備份數據在經過去重后,被離散地分布在磁盤的不同位置。當用戶需要恢復此次備份時,原有預取機制的效率降低了:額外預取了很多無用數據塊。雖然恢復作業很少發生,但大多十分緊急。用戶一旦發現丟失數據,就希望盡快將數據恢復到正常狀態。過長的恢復時間窗口極大地增加了經濟損失。
[0005]由此可見,研究數據去重系統的碎片問題,對于提高數據的恢復性能,提高企業經濟效益具有重要意義。
【發明內容】
[0006]本發明的目的在于提供一種歷史感知的數據去重碎片消除方法與系統,能夠在備份的過程中利用歷史信息精確地定位并消除碎片數據,極大地提升恢復性能。
[0007]為實現上述目的,按照本發明的一個方面,提供了一種歷史感知的數據去重碎片消除方法,所述方法包括如下步驟:
[0008](I)讀取上次備份過程所記錄的歷史信息記錄,所述歷史信息記錄中包括稀疏容器的ID ;
[0009](2)對備份數據流中的文件進行分塊,得到多個數據塊,數據塊的數量為η ;
[0010](3)在備份開始時,設計數器i = I ;
[0011](4)計算第i個數據塊的數據塊指紋;
[0012](5)在指紋索引中查找第i個數據塊的數據塊指紋,判斷第i個數據塊是否已經被存儲;如果第i個數據塊未被存儲過,則第i個數據塊為新數據塊,將第i個數據塊寫入容器緩沖區,待容器滿時一次性寫入磁盤,并轉到步驟(7);如果第i個數據塊已被存儲過,則第i個數據塊為重復數據塊,獲得第i個數據塊所屬的容器ID,并轉步驟(6);
[0013](6)查找歷史信息記錄,根據第i個數據塊所屬的容器ID判斷第i個數據塊所屬的容器是否屬于稀疏容器;如果是,則第i個數據塊為碎片,將第i個數據塊重新寫到容器緩沖區,待容器滿時一次性寫入磁盤;如果不是,則第i個數據塊不是碎片,將第i個數據塊去重;
[0014](7)記錄第i個數據塊所屬容器的ID,以及該容器對應的有效數據長度;判斷i是否大于n,如果否,則備份未結束,將計數器i加I,返回步驟(4);否則進入步驟(8);
[0015](8)備份結束時,計算每個容器的利用率,將利用率低于閾值的容器標記為稀疏容器,所有稀疏容器的ID將被寫入歷史信息記錄,供下次備份使用。
[0016]具體地,所述步驟(8)中每個容器的利用率為:每個容器對應的有效數據長度除以該容器的大小。
[0017]進一步地,所述步驟(7)中每個容器對應的有效數據長度為:該容器內與此次備份相關的數據塊的總長度。
[0018]優選地,所述步驟(8)中的閾值為50 %。
[0019]按照本發明的另一方面,提供了一種歷史感知的數據去重碎片消除系統,所述系統包括如下模塊:
[0020]歷史信息記錄讀取模塊,用于讀取上次備份過程所記錄的歷史信息記錄,所述歷史信息記錄中包括稀疏容器的ID ;
[0021]數據流分塊模塊,用于對備份數據流中的文件進行分塊,得到多個數據塊,數據塊的數量為η ;
[0022]計數器模塊,用于在備份開始時,設計數器i = I ;
[0023]數據塊指紋計算模塊,用于計算第i個數據塊的數據塊指紋;
[0024]數據塊指紋查找模塊,用于在指紋索引中查找第i個數據塊的數據塊指紋,判斷第i個數據塊是否已經被存儲;如果第i個數據塊未被存儲過,則第i個數據塊為新數據塊,將第i個數據塊寫入容器緩沖區,待容器滿時一次性寫入磁盤,并轉稀疏容器ID記錄模塊;如果第i個數據塊已被存儲過,則第i個數據塊為重復數據塊,獲得第i個數據塊所屬的容器ID,并轉歷史信息記錄查找模塊;
[0025]歷史信息記錄查找模塊,用于根據第i個數據塊所屬的容器ID判斷第i個數據塊所屬的容器是否屬于稀疏容器;如果是,則第i個數據塊為碎片,將第i個數據塊重新寫到容器緩沖區,待容器滿時一次性寫入磁盤;如果不是,則第i個數據塊不是碎片,將第i個數據塊去重;
[0026]稀疏容器ID記錄模塊,用于記錄第i個數據塊所屬容器的ID,以及該容器對應的有效數據長度;判斷i是否大于n,如果否,則備份未結束,將計數器i加1,轉所述數據塊指紋計算模塊;否則轉歷史信息記錄生成模塊;
[0027]歷史信息記錄生成模塊,用于在備份結束時,計算每個容器的利用率,將利用率低于閾值的容器標記為稀疏容器,所有稀疏容器的ID將被寫入歷史信息記錄,供下次備份使用。
[0028]具體地,所述歷史信息記錄生成模塊計算每個容器的利用率具體為:將每個容器對應的有效數據長度除以該容器的大小得到利用率。
[0029]總體而言,通過本發明所構思的以上技術方案與現有技術相比,具有以下有益效果:
[0030]1、本發明提出的碎片消除方法,利用了數據備份的增量特性,即連續的備份數據流十分相似,且數據碎片具有遺傳的特點:一個數據塊在此次備份是碎片,則對于下次備份也是碎片。利用歷史信息,可以更加準確地識別碎片,避免將不是碎片的數據塊當成碎片,這是現有其它方法的主要缺點,因此,本發明重寫的數據量極少,但獲得的恢復性能極大;
[0031]2、本發明通過在備份過程中,記錄每個數據塊所屬容器的ID以及該容器的有效數據長度,通過每個容器的利用率判斷該容器是否是稀疏容器;在下次備份過程中,如果需要備份的重復數據塊所屬的容器是稀疏容器,則判定該數據塊為碎片,將該數據塊重新寫到容器緩存區中,待容器滿時一次性寫入磁盤;而如果需要備份的重復數據塊所屬的容器是不稀疏容器,則判定該數據塊不為碎片,作為普通重復數據塊進行去重;從而能夠準確地識別數據碎片,在重寫數據量較小的情況下,獲得較大的恢復性能;
[0032]3、本發明提出的碎片消除方法,占用的內存資源極少。一次備份的內存開銷與相關的容器數量成正比,而每個容器只需占用大約12個字節(8個字節的容器ID,和4個字節的有效數據長度)。假設備份作業是1TB,容器長度是4MB,容器的平均利用率是50%,那么該備份的內存開銷是6MB ;
[0033]4、本發明提出的碎片消除方法,不涉及額外的磁盤讀寫操作,因此備份吞吐率很聞。
【專利附圖】
【附圖說明】
[0034]圖1為本發明碎片消除方法的體系結構圖;
[0035]圖2為本發明一實施例中歷史信息記錄的數據結構示意圖;
[0036]圖3為本發明一實施例中碎片消除方法的流程圖。
【具體實施方式】
[0037]為了使本發明的目的、技術方案及優點更加清楚明白,以下結合附圖及實施例,對本發明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發明,并不用于限定本發明。此外,下面所描述的本發明各個實施方式中所涉及到的技術特征只要彼此之間未構成沖突就可以相互組合。
[0038]如圖1所示為本發明的體系結構。本發明在磁盤上有指紋索引模塊,存儲有系統中的數據塊的指紋,用于判斷重復數據塊;容器池是容器存儲模塊,提供讀取和寫入容器的操作;歷史信息文件記錄了上次備份產生的歷史信息,主要包括稀疏容器ID。在內存中包括指紋索引和容器的緩存;稀疏容器集合里包括從上次備份繼承的稀疏容器ID ;新的歷史信息統計當前備份的容器利用率,用于產生新的歷史信息。
[0039]如圖2所示為本發明運行時的內存數據結構。上次備份記錄的歷史信息包括一個稀疏容器ID的集合;當前收集的歷史信息包括兩個集合,分別為候選稀疏容器集合,即利用率低于閾值的容器ID集合,以及非稀疏容器集合,即利用率超過閾值的容器ID集合。
[0040]如圖3所示,本發明提供了一種歷史感知的數據去重碎片消除方法,所述方法包括如下步驟:
[0041](I)讀取上次備份過程所記錄的歷史信息記錄,所述歷史信息記錄中包括稀疏容器的ID ;
[0042](2)對備份數據流中的文件進行分塊,得到多個數據塊,數據塊的數量為η ;
[0043](3)在備份開始時,設計數器i = I ;
[0044](4)計算第i個數據塊的數據塊指紋;
[0045](5)在指紋索引中查找第i個數據塊的數據塊指紋,判斷第i個數據塊是否已經被存儲;如果第i個數據塊未被存儲過,則第i個數據塊為新數據塊,將第i個數據塊寫入容器緩沖區,待容器滿時一次性寫入磁盤,并轉到步驟(7);如果第i個數據塊已被存儲過,則第i個數據塊為重復數據塊,獲得第i個數據塊所屬的容器ID,并轉步驟(6);
[0046](6)查找歷史信息記錄,根據第i個數據塊所屬的容器ID判斷第i個數據塊所屬的容器是否屬于稀疏容器;如果是,則第i個數據塊為碎片,將第i個數據塊重新寫到容器緩沖區,待容器滿時一次性寫入磁盤;如果不是,則第i個數據塊不是碎片,將第i個數據塊去重;
[0047](7)記錄第i個數據塊所屬容器的ID,以及該容器對應的有效數據長度;判斷i是否大于n,如果否,則備份未結束,將計數器i加1,返回步驟(4);否則進入步驟(8);其中,容器對應的有效數據長度為該容器內與此次備份相關的數據塊的總長度,例如可以在每次處理完一個數據塊后,將其對應的容器的有效數據長度加上該數據塊的塊長。
[0048](8)備份結束時,計算每個容器的利用率,將利用率低于閾值的容器標記為稀疏容器,所有稀疏容器的ID將被寫入歷史信息記錄,供下次備份使用。
[0049]具體地,所述步驟(8)中每個容器的利用率為:每個容器對應的有效數據長度除以該容器的大小。所述閾值可以根據需要確定,例如所述閾值為50%。
[0050]進一步地,本發明還提供了一種歷史感知的數據去重碎片消除系統,所述系統包括如下模塊:
[0051]歷史信息記錄讀取模塊,用于讀取上次備份過程所記錄的歷史信息記錄,所述歷史信息記錄中包括稀疏容器的ID ;
[0052]數據流分塊模塊,用于對備份數據流中的文件進行分塊,得到多個數據塊,數據塊的數量為η ;
[0053]計數器模塊,用于在備份開始時,設計數器i = I ;
[0054]數據塊指紋計算模塊,用于計算第i個數據塊的數據塊指紋;
[0055]數據塊指紋查找模塊,用于在指紋索引中查找第i個數據塊的數據塊指紋,判斷第i個數據塊是否已經被存儲;如果第i個數據塊未被存儲過,則第i個數據塊為新數據塊,將第i個數據塊寫入容器緩沖區,待容器滿時一次性寫入磁盤,并轉稀疏容器ID記錄模塊;如果第i個數據塊已被存儲過,則第i個數據塊為重復數據塊,獲得第i個數據塊所屬的容器ID,并轉歷史信息記錄查找模塊;
[0056]歷史信息記錄查找模塊,用于根據第i個數據塊所屬的容器ID判斷第i個數據塊所屬的容器是否屬于稀疏容器;如果是,則第i個數據塊為碎片,將第i個數據塊重新寫到容器緩沖區,待容器滿時一次性寫入磁盤;如果不是,則第i個數據塊不是碎片,將第i個數據塊去重;
[0057]稀疏容器ID記錄模塊,用于記錄第i個數據塊所屬容器的ID,以及該容器對應的有效數據長度;判斷i是否大于n,如果否,則備份未結束,將計數器i加1,轉所述數據塊指紋計算模塊;否則轉歷史信息記錄生成模塊;
[0058]歷史信息記錄生成模塊,用于在備份結束時,計算每個容器的利用率,將利用率低于閾值的容器標記為稀疏容器,所有稀疏容器的ID將被寫入歷史信息記錄,供下次備份使用。
[0059]具體地,所述歷史信息記錄生成模塊計算每個容器的利用率具體為:將每個容器對應的有效數據長度除以該容器的大小得到利用率。
[0060]本領域的技術人員容易理解,以上所述僅為本發明的較佳實施例而已,并不用以限制本發明,凡在本發明的精神和原則之內所作的任何修改、等同替換和改進等,均應包含在本發明的保護范圍之內。
【權利要求】
1.一種歷史感知的數據去重碎片消除方法,其特征在于,所述方法包括如下步驟: (1)讀取上次備份過程所記錄的歷史信息記錄,所述歷史信息記錄中包括稀疏容器的ID ; (2)對備份數據流中的文件進行分塊,得到多個數據塊,數據塊的數量為η; (3)在備份開始時,設計數器i= I ; (4)計算第i個數據塊的數據塊指紋; (5)在指紋索引中查找第i個數據塊的數據塊指紋,判斷第i個數據塊是否已經被存儲;如果第i個數據塊未被存儲過,則第i個數據塊為新數據塊,將第i個數據塊寫入容器緩沖區,待容器滿時一次性寫入磁盤,并轉到步驟(7);如果第i個數據塊已被存儲過,則第i個數據塊為重復數據塊,獲得第i個數據塊所屬的容器ID,并轉步驟(6); (6)查找歷史信息記錄,根據第i個數據塊所屬的容器ID判斷第i個數據塊所屬的容器是否屬于稀疏容器;如果是,則第i個數據塊為碎片,將第i個數據塊重新寫到容器緩沖區,待容器滿時一次性寫入磁盤;如果不是,則第i個數據塊不是碎片,將第i個數據塊去重; (7)記錄第i個數據塊所屬容器的ID,以及該容器對應的有效數據長度;判斷i是否大于n,如果否,則備份未結束,將計數器i加1,返回步驟(4);否則進入步驟(8); (8)備份結束時,計算每個容器的利用率,將利用率低于閾值的容器標記為稀疏容器,所有稀疏容器的ID將被寫入歷史信息記錄,供下次備份使用。
2.如權利要求1所述的方法,其特征在于,所述步驟(8)中每個容器的利用率為:每個容器對應的有效數據長度除以該容器的大小。
3.如權利要求1或2所述的方法,其特征在于,所述步驟(7)中每個容器對應的有效數據長度為:該容器內與此次備份相關的數據塊的總長度。
4.如權利要求3所述的方法,其特征在于,所述步驟(8)中的閾值為50%。
5.一種歷史感知的數據去重碎片消除系統,其特征在于,所述系統包括如下模塊: 歷史信息記錄讀取模塊,用于讀取上次備份過程所記錄的歷史信息記錄,所述歷史信息記錄中包括稀疏容器的ID ; 數據流分塊模塊,用于對備份數據流中的文件進行分塊,得到多個數據塊,數據塊的數量為η ; 計數器模塊,用于在備份開始時,設計數器i = I ; 數據塊指紋計算模塊,用于計算第i個數據塊的數據塊指紋; 數據塊指紋查找模塊,用于在指紋索引中查找第i個數據塊的數據塊指紋,判斷第i個數據塊是否已經被存儲;如果第i個數據塊未被存儲過,則第i個數據塊為新數據塊,將第i個數據塊寫入容器緩沖區,待容器滿時一次性寫入磁盤,并轉稀疏容器ID記錄模塊;如果第i個數據塊已被存儲過,則第i個數據塊為重復數據塊,獲得第i個數據塊所屬的容器ID,并轉歷史信息記錄查找模塊; 歷史信息記錄查找模塊,用于根據第i個數據塊所屬的容器ID判斷第i個數據塊所屬的容器是否屬于稀疏容器;如果是,則第i個數據塊為碎片,將第i個數據塊重新寫到容器緩沖區,待容器滿時一次性寫入磁盤;如果不是,則第i個數據塊不是碎片,將第i個數據塊去重;稀疏容器ID記錄模塊,用于記錄第i個數據塊所屬容器的ID,以及該容器對應的有效數據長度;判斷i是否大于n,如果否,則備份未結束,將計數器i加1,轉所述數據塊指紋計算模塊;否則轉歷史信息記錄生成模塊; 歷史信息記錄生成模塊,用于在備份結束時,計算每個容器的利用率,將利用率低于閾值的容器標記為稀疏容器,所有稀疏容器的ID將被寫入歷史信息記錄,供下次備份使用。
6.如權利要求5所述的方法,其特征在于,所述歷史信息記錄生成模塊計算每個容器的利用率具體為 :將每個容器對應的有效數據長度除以該容器的大小得到利用率。
【文檔編號】G06F11/14GK104050057SQ201410249865
【公開日】2014年9月17日 申請日期:2014年6月6日 優先權日:2014年6月6日
【發明者】馮丹, 付忞, 華宇, 夏文, 黃方亭, 柳青 申請人:華中科技大學