一種實現重復數據刪除的方法及裝置的制造方法
【技術領域】
[0001]本申請涉及數據存儲技術,尤指一種實現數據刪除的方法及裝置。
【背景技術】
[0002]隨著計算機信息化程度的提高,人類已經進入了信息時代。計算機以及互聯網已經深入各行各業,這也使得信息數據量呈幾個級數增長。而在這海量的數據中,存在大量的冗余數據。為了保證數據的安全,需要不斷對數據進行備份,而在備份過程中,大量的冗余數據會隨之產生。
[0003]針對冗余數據進行處理的方法被稱為重復數據刪除。根據對數據的處理時機不同,重復數據刪除分為帶內和帶外兩種;其中,帶內是一種嵌入在整個輸入/輸出(I/o)流程中的處理方式,也稱為實時重復數據刪除。實時重復數據刪除是數據在寫入存儲介質時分析是否有重復,并對重復的數據直接進行刪除處理,以實現在第一時間減少空間占用,不過其更耗資源,但這有可能會影響寫入的性能。帶外是先正常寫入數據,之后再在某個時刻對磁盤上的數據進行重刪,也稱為后處理重復數據刪除。后處理重復數據刪除是在數據寫入磁盤后再進行重復數據刪除操作,其技術優勢在于其不會影響寫入性能,但要求有足夠的磁盤空間來存儲所有數據,直到業務非高峰時刻時進行的重復數據刪除操作。
[0004]無論是帶內方式還是帶外方式的重復數據刪除,首先都要找到重復數據,由于需要處理的數據量可能是非常大的,從大量的數據中找到相同內容的數據塊是非常費時的。盡管現有技術中通過對數據塊內容的數據指紋(哈希值),在被稱為數據重刪表的重刪信息索引表中實現重復數據查找,但是,記錄重復數據信息數據重刪表的數據量也非常的大,基于數據重刪表的數據量大,因此其信息不能被全部放入內存,內存只能作為磁盤上數據重刪表的緩沖(cache),所以在通過數據指紋進行查找時,需要在內存和磁盤中混合查找,因此,對數據重刪表的檢索成為重復數據重刪系統的主要性能瓶頸。目前,對數據重刪表的檢索也提出了許多優化方法,例如散列表、分級索引和機制等,但通常對于一個數據存儲節點,數據重刪表仍然同時保存在內存和磁盤中,實時重刪系統在檢索到磁盤部分的數據重刪表時,需要完整的數據重刪表的查找,比較費時,對I/O性能造成影響。
【發明內容】
[0005]為了解決上述問題,本發明提供一種實現重復數據刪除的方法及裝置,無需進行完整數據重刪表的查找,減少進行數據重刪的時間消耗,降低對I/o性能的影響。
[0006]為了達到本發明的目的,本申請提供一種實現數據重刪的方法;包括:
[0007]在執行實時數據重刪過程中,在對內存的數據重刪表完成存儲數據塊的重刪查找后;或,在預設時長內,對磁盤的數據重刪表未完成存儲數據塊的重刪查找時,將存儲數據塊寫入磁盤;
[0008]根據存儲數據塊的寫入建立臨時數據重刪表,通過預設的策略對臨時數據重刪表中記錄的存儲數據塊進行后處理重刪。
[0009]進一步地,在執行實時數據重刪之前,該方法還包括:
[0010]獲取所述存儲數據塊的哈希值指紋,作為刪除重復數據的關鍵字KEY ;
[0011]通過布魯姆過濾器判斷KEY是否記錄在所述數據重刪表中,當未記錄在所述數據重刪表中時,進行所述存儲數據塊的存儲并將KEY和存儲地址更新到所述數據重刪表中;否則,執行實時數據重刪。
[0012]進一步地,通過預設的策略對所述臨時數據重刪表中記錄的存儲數據塊進行后處理重刪具體包括:
[0013]設置所述臨時數據重刪表的處理時長閾值,在處理時長到達閾值時,啟用獨立線程,對所述臨時數據重刪表中記錄的存儲數據塊進行后處理重刪;或者,
[0014]設置所述臨時數據重刪表的存儲量閾值,當臨時數據重刪表達到存儲量閾值時,啟用獨立線程,對所述臨時數據重刪表中記錄的存儲數據塊進行后處理重刪;或者,
[0015]查詢到系統空閑時,啟用獨立線程,對所述臨時數據重刪表中記錄的存儲數據塊進行后處理重刪。
[0016]進一步地,該方法還包括:將完成后處理重刪的所述臨時數據重刪表并入到數據重刪表中;具體包括:
[0017]對后處理重刪過程中,對非重復的寫入磁盤的所述存儲數據塊,將其在所述臨時數據重刪表的信息加入到數據重刪表;對重復的存儲數據塊,將其在臨時數據重刪表的信息刪除后,修改數據重刪表中重復的存儲數據塊對應的引用次數信息。
[0018]另一方面,本申請還提供一種實現重復數據刪除的裝置,包括:寫入單元和臨時數據重刪處理單元;其中,
[0019]寫入單元,用于在執行實時數據重刪過程中,在對內存的數據重刪表完成存儲數據塊的重刪查找后;或,在預設時長內,對磁盤的數據重刪表未完成存儲數據塊的重刪查找時,將存儲數據塊寫入磁盤;
[0020]臨時數據重刪處理單元,用于根據存儲數據塊的寫入建立臨時數據重刪表,通過預設的策略對臨時數據重刪表中記錄的存儲數據塊進行后處理重刪。
[0021]進一步地,該裝置還包括獲取單元和查找處理單元;其中,
[0022]獲取單元,用于在寫入單元執行實時數據重刪之前,從存儲數據塊中獲取存儲數據塊的哈希值指紋,作為刪除重復數據的關鍵字KEY ;
[0023]查找處理單元,用于通過布魯姆過濾器判斷KEY是否記錄在數據重刪表中,當未記錄在數據重刪表中時,進行存儲數據塊的存儲并將KEY和存儲地址更新到數據重刪表中;否則,執行實時數據重刪。
[0024]進一步地,臨時數據重刪處理單元具體用于,根據存儲數據塊的寫入建立臨時數據重刪表;
[0025]設置所述臨時數據重刪表的處理時長閾值,在處理時長到達閾值時,啟用獨立線程,對臨時數據重刪表中記錄的存儲數據塊進行后處理重刪;或者,
[0026]設置臨時數據重刪表的存儲量閾值,當臨時數據重刪表達到存儲量閾值時,啟用獨立線程,對所述臨時數據重刪表中記錄的存儲數據塊進行后處理重刪;或者,
[0027]查詢到系統空閑時,啟用獨立線程,對所述臨時數據重刪表中記錄的存儲數據塊進行后處理重刪。
[0028]進一步地,臨時數據重刪處理單元還用于,在后處理重刪后,將臨時數據重刪表并入到數據重刪表中;具體的,
[0029]對后處理重刪過程中,對非重復的寫入磁盤的所述存儲數據塊,將其在所述臨時數據重刪表的信息加入到數據重刪表;對重復的存儲數據塊,將其在臨時數據重刪表的信息刪除后,修改數據重刪表中重復的存儲數據塊對應的引用次數信息,以實現將后處理重刪的臨時數據重刪表并入到數據重刪表中。
[0030]與現有技術相比,本發明提供的技術方案,包括:在執行實時數據重刪過程中,在對內存的數據重刪表完成存儲數據塊的重刪查找后;或,在預設時長內,對內存的數據重刪表完成存儲數據塊的重刪完成查找和對磁盤的數據重刪表未完成存儲數據塊的重刪查找時,將存儲數據塊寫入磁盤,并根據存儲數據塊的寫入建立臨時數據重刪表,根據預設的策略對臨時數據重刪表中記錄的存儲數據塊進行后處理重刪。本發明通過在完成內存中數據重刪表的重刪查找后,或預設時長內未完成完整的數據重刪表的查找時、建立臨時數據重刪表,進行后處理重刪,避免了數據重刪表的全盤查找,減少了實時I/o時延,提高了數據重刪的工作效率。進一步的,通過布魯姆過濾器進行數據重刪表的快速判斷,減少了實時數據重刪所要處理的存儲數據塊。
【附圖說明】
[0031]附圖用來提供對本申請技術方案的進一步理解,并且構成說明書的一部分,與本申請的實施例一起用于解釋本申請的技術方案,并不構成對本申請技術方案的限制。
[0032]圖1為本發明實現重復數據刪除的方法的流程圖;
[0033]圖2為本發明實現重復數據刪除的裝置的結構框圖;
[0034]圖3為本發明第一實施例的方法的流程圖。
【具體實施方式】
[0035]為使本申請的目的、技術方案和優點更加清楚明白,下文中將結合附圖對本申請的實施例進行詳細說明。需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互任意組合。
[0036]為了清楚的陳述本發明的內容,對布魯姆過濾器(Bloom filter)做簡要介紹,布魯姆過濾器是一種空間效率很高的隨機數據結構,它利用位數組很簡潔地表示一個集合