數據重刪壓縮

一、 重複數據刪除的概念
1. 重複數據刪除的定義
重複數據刪除(簡稱重刪)是一種節約數據存儲空間的技術。在計算機中存儲了很多重複數據,這些數據佔用了大量硬盤空間,利用重複數據刪除技術,可以只存儲一份數據。另外一項節約存儲空間的技術是數據壓縮,數據壓縮技術在比較小的範圍內以比較小的粒度查找重複數據,粒度一般爲幾個比特到幾個字節。而重複數據刪除是在比較大的範圍內查找大塊的重複數據,一般重複數據塊尺寸在1KB以上。(摘自維基百科)
2. 重複數據刪除的分類
按照重刪執行的時間,重刪可以分爲在線重刪和後處理重刪:
在線重刪:指數據在寫入磁盤之前進行重刪。
後處理重刪:數據先寫入磁盤,然後再讀出來進行重刪,重刪之後的數據再寫入磁盤中。通常在實際操作時,用戶會根據所承載業務的負載,指定系統相對空閒的時間讓重刪包括壓縮功能運行起來。
對於在線重刪和後處理重刪的定義,業界也存在不同的理解。如先將數據寫入緩存,然後從緩存刷到磁盤上,數據在刷盤過程中被重刪。對於這種實現方式,有廠商認爲也是一種後處理重刪。
按照數據分塊的方式,重刪可以分爲定長重刪和變長重刪:
定長重刪:數據按照固定長度進行分塊,之後進行重刪;
變長重刪:數據被劃分成不同大小的塊進行重刪。變長重刪一般使用在備份場景中,這種分塊重刪方式一般可以獲得比較好的重刪效果。
按照重刪的粒度,也可以分爲塊級重刪和文件級重刪:
塊級重刪:以數據塊爲粒度進行指紋計算,之後重刪。
文件級重刪:以整個文件爲粒度計算指紋,然後重刪。文件級重刪又稱爲單一實例庫重刪。
關於數據塊級重刪和文件級重刪,普遍存在一些誤區,以爲在文件系統中的重刪就是文件級重刪。其實在文件系統中,也可以將文件按照粒度分割成單個的數據塊,實現數據塊級的重刪,這種方法也是統一存儲中,友商實現重刪功能的普遍做法。
按照重刪發生的地方,重刪可以分爲源端重刪和目標端重刪:
源端重刪:數據在源端經過分塊並計算指紋,之後發送到目標端進行查重,如果是新的數據塊,則通知源端將該數據塊發送到目標端進行保存;如果是重複塊,則不發送。源端重刪的目主要是爲了節省兩端之間的傳輸帶寬。
目標端重刪:直接將數據傳輸到目標端,在目標端進行分塊、計算指紋並查重下盤。
需要說明的是,在一套存儲設備中,上述重刪方式不是孤立的存在,通常都是幾種方式的組合。如在備份場景中,一般都採用在線、變長、塊級、目標端(或者源端)重刪的方法。
3. 重複數據刪除與數據壓縮的區別與聯繫
數據壓縮是一種字節級的數據縮減技術,其思想是採用編碼技術,常用的如Huffman編碼,將較長的數據用較短的、經過編碼的格式來表示,以此達到減少數據大小的目的。
從效果上來看,可以認爲重複數據刪除是一種基於“數據塊”的壓縮,而數據壓縮是一種基於“字節”的重複數據刪除。
從應用上來看,重刪和壓縮通常會配合起來一起使用。如在備份場景中,爲了提高數據的縮減效率,在數據經過重刪之後會對唯一數據塊再執行一次壓縮。這樣,數據的縮減效果就是重刪和壓縮效果的疊加。

發佈了29 篇原創文章 · 獲贊 12 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章