當前位置:
首頁 > 科技 > 深度分析重刪和壓縮在數據存儲的應用

深度分析重刪和壓縮在數據存儲的應用

重刪和壓縮技術是最有效節約存儲空間的熱門技術,目前普遍應用在主存、快閃記憶體、備份軟體和數據傳輸軟體中,但數據重刪和壓縮技術區別是什麼,在主存儲和快閃記憶體中是如何實現的?這就是今天需要我們一起探討、解答的問題。

對於經常感覺 硬碟空間不足 ,在更新小電影之前先要做碎片整理或通過小電影生命周期管理刪除數據的同學,今天的內容需要打起十二分精神來學習了。下面的內容將會 革命性和創造性的改變你原來為了騰出多餘空間,而費盡周折手工操作的方式 ,進而可釋放你的右手,讓你去做更多有意義的事。

重刪壓縮技術區別和聯繫

數據重刪一般採用Hash演算法,根據塊計算出Hash值,根據Hash值得重複情況判斷是否有重複數據。而數據壓縮是一種位元組級的數據縮減技術,其思想是採用編碼技術,常用的如Huffman編碼等,將較長的數據用較短的、經過編碼的格式來表示,以此達到減少數據大小的目。

從效果上來看,可以認為重複數據刪除是一種基於「數據塊」的壓縮,而數據壓縮是一種基於「位元組」的重複數據刪除。從應用上來看,重刪和壓縮通常會配合起來一起使用。如在備份場景中,為了提高數據的縮減效率,在數據經過重刪之後會對唯一數據塊再執行一次壓縮。這樣, 數據的縮減效果就是重刪和壓縮效果的疊加 。

主存儲重刪和壓縮技術

為了更好的討論主存儲系統的重刪和壓縮技術,我們 引入備份存儲為參照來進行分析 。重刪和壓縮功能在備份場景上的應用中首先取得了成功,這個需求就被自然而然地遷移到了主存儲場景上。

但因為主存儲場景中的IO模型與備份場景中的IO模型存在非常明顯的差異,這就導致了主存儲場景和備份場景中,重刪在架構上存在比較大的區別。下面將從幾個不同的方面來說明這些差異對重刪架構帶來的影響。

IO大小不同

在備份場景中,備份任務通常都是以備份流的形式進入系統,這是的IO都是比較大的, 一般都是MB級別 ;但在主存儲場景中,以虛擬桌面(Virtual Desktop Infrasture, VDI)為例, IO大小通常都是幾十KB,以8~32KB的IO為主 。

IO模式不同

在備份場景中, 備份任務都是以順序寫、順序讀為主 ;但在主存儲場景中, 存在較大比例的隨機讀寫,VDI場景中就存在大概約30%的隨機讀寫 。此外,備份場景中,對已經備份的數據,基本上沒有覆蓋寫操作,但在主存儲場景中,覆蓋寫比例比較大,筆者所在團隊曾經做過針對VDI場景下的覆蓋寫統計,在VDI場景下,運行時大約90%的IO存在覆蓋寫。

性能要求不同

在備份場景中, 系統追求的是高帶寬,需要在更短的時間窗口內完成備份任務,對時延的要求相對不高 ;但在主存儲場景, 系統追求高IOPS和低時延,如果在IO的下盤路徑中增加重刪的處理,則可能會增大IO的響應時延 。

特性要求不同

在備份場景中,重刪是一個必備特性;但在主存儲場景中,重刪,包括壓縮是一個可選特性。相應的,定位不同,系統分配給重刪的計算資源、內存資源等也就會不同。在備份場景中, 絕大部分的計算資源都分配給重刪進行分塊和壓縮 ,但在主存儲場景中, 重刪會更多的讓渡於其他特性,這樣分配給重刪的資源註定很有限 。

基於以上的差異,發現主存儲場景和備份場景中重刪方案存在如下明顯差異,下面我們站在重刪技術上,來分析下重刪技術在不同場景的差異。

重刪時刻的不同

為了避免對生產環境的性能產生影響,大部分廠商都會採用後處理的方式進行重刪,這和備份場景中的在線重刪方式明顯不同。

分塊方式不同

由於在主存儲場景中,IO通常較小,並且所操作的邏輯塊地址LBA比較離散,不是嚴格連續的,所以不適合進行變長分塊。變長分塊在這種較大數據量、連續的數據時可以發

揮較好的分塊效果,能將兩次備份之間不同數據產生的影響降到最低,但這種效果的前提是可以用來切分的數據較多,並且需要較多的計算資源。

在主存儲場景中, I O比較小,並且比較離散,如果為了實現變長重刪,就需要將這些離散IO周圍的數據補齊 ,如果這些待補齊的地址上沒有被寫過數據,則可以直接補0;如果是寫過數據,則需要把這些數據讀上來,補充完整之後再執行變長分塊。同時,這些操作都要發生在寫的IO流程中,將顯著增加系統的讀寫壓力。此外,由於主存儲中,IO的覆蓋寫比例較高,如果都採用這樣的方式,每次覆蓋寫都需要經歷這些複雜的流程,同時還涉及到對原來已經寫入的系統元數據的修改(如LUN的元數據),這些操作在主存儲設備中,代價都是很大的,自然對系統性能影響可能也會比較明顯。

查重方式不同

在備份設備中,因為數據具有較強的局部性,一般會採用抽樣的方式,用少量甚至一個分塊的指紋代表一個大塊,通常這些大塊都是MB規模。但在主存儲場景中, I O的連續性不是很強,通常不會採用抽樣,或者採用很少塊組織起來進行抽樣的方式 。

主存儲重刪實現方式

EMC的VNX/VNX2以及Netapp的FAS系列都支持重刪( 後處理的定長 )功能,這裡以Netapp的FAS系列中的重刪壓縮為例進行簡單的介紹。

數據按照4KB進行實時分塊並計算指紋,並將指紋保存到更改日誌文件中,數據同時寫入磁碟中。如果用戶配置了在線壓縮功能,則數據在下盤之前將會被先壓縮。

根據後處理設置的系統空閑時間,當到達指定的時刻時,系統啟動重刪功能,此時將對更改日誌文件中的指紋進行排序,並根據更改日誌文件生成指紋資料庫。

根據指紋庫進行比對查重。

對指紋相同的數據塊執行逐位元組比對,如果數據塊完全相同,則執行後續的操作,否則不做處理。

對於重複的塊依次執行如下操作。更改數據塊指針、更改數據塊引用計數、釋放數據塊存儲空間,對重複塊不做任何處理。

Netapp的FAS 既可以支持配置成在線壓縮,也可以配置成後處理壓縮,也可以配置成在線壓縮和後處理壓縮同時開啟 。

快閃記憶體的重刪和壓縮技術

在全快閃記憶體領域,重刪和壓縮的使用呈現出一片欣欣向榮的景象。 重刪從傳統陣列中的一個可選特性,變成全快閃記憶體陣列中的一個必備和門檻特性 。 在全快閃記憶體陣列中,SSD磁碟中的Flash顆粒有壽命的限制,而重刪特性的加入正好可以減少主機需要寫入的次數和數據量,以此達到延長SSD的使用時間,保護用戶投入價值。

既然快閃記憶體場景中,重刪變的尤為重要,我們下面以EMC的XtremIO中的重刪為基礎,介紹重刪在全快閃記憶體陣列中的實現方法。

主機數據在進入存儲系統時將被按照固定大小8KB進行分塊,同時利用強Hash函數SHA1計算數據塊的指紋。

指紋按照對應的規則打散,在查重時,按照相同的規則,將指紋發送到對應的節點上進行查重,如果為新塊,則將該新塊發送到對應的節點上,操作成功之後返回主機寫成功;如果是重複塊,則增加引用計數。

目標節點接收到數據之後寫入Cache中並進行壓縮,當Cache中緩存的數據達到刷盤水位要求時,將數據按照指紋的分布規則寫入對應的存儲空間中。

XtremIO重刪技術有幾個 主要特點 :

主機數據是在寫入Cache之前完成重刪壓縮操作,為先重刪後壓縮。

採用強Hash計算指紋。

重刪後的新數據按照數據的指紋,直接打散到對應的存儲空間的單盤上進行保存,沒有中間的全局的映射層。

不進行全局的垃圾回收,依賴單盤自身的垃圾回收功能。

下面將以XtremIO和Purestorage為基礎,介紹重刪在全快閃記憶體陣列中的幾類重要技術和常用方法。

在線重刪

在全快閃記憶體中一定會採用在線的方式實現重刪功能,包括壓縮功能。主要的因為

還是SSD盤存在壽命限制。在第一部分介紹重刪基礎時已經說過,如果後處理,數據需要先寫到磁碟上,在空閑時再將數據讀上來進行重刪,之後再寫入存儲空間中,這樣相比在線處理增加了一次寫操作,也就增加了SSD盤的磨損,縮短了其使用壽命。所以, 全快閃記憶體陣列中採用在線的方式實現重刪壓縮,在這一點上,所有的友商都是一致的 。

分塊大小

XtremIO在推出的初期,使用的分塊大小為4KB,當其下一代產品推出時,XtremIO頂著被人詬病的壓力,採用破壞性升級的方式將分塊大小強行升級為8KB,也反映出Xtremio在分塊大小上的演變過程。同時,Purestoarge也號稱支持512B~32KB的「變長」重刪,但實質上這裡的變長重刪並不是備份領域中的位元組級的變長,而是4KB整數倍的變長。另外,HP在其3PAR中提出使用16KB的分塊。可見,在重刪分塊大小上各個廠商都有自己的想法。

元數據的管理

在XtremIO中,系統采 用兩階段元數據的方式實現重刪 ,第一階段是LBA到指紋的映射關係;第二階段是指紋到物理塊地址之間的映射關係。

弱Hash加逐位元組對比

XtremIO的重刪採用了強Hash函數計算指紋,查重的過程中只比較指紋而不進行逐位元組對比;但在Purestorage的實現中,它使用了 弱Hash並採用了逐位元組對比的方式實現重刪 。

這裡簡單解釋一下強Hash和弱Hash的區別。強弱Hash是一個相對的概念,強Hash是指發生Hash衝突的概率非常低(Hash衝突是指數據不同但計算出的Hash值相同),弱Hash是指發生Hash衝突的概率相對要高一些,但也不是絕對的高。

在Purestorage中, 數據先經過弱Hash進行比較,如果弱Hash不同,則數據一定不同;弱Hash相同,則需要將對應的數據讀上來進行逐位元組對比 ,以此來確認數據是否真的是相同的。 除Purestorage之外,HP的3PAR也使用了弱Hash加逐位元組對比的方法實現重刪。

Scale-out與Scale-up

在全快閃記憶體陣列中,XtremIO可以實現雙控級的Scale-out,並宣稱能達到線性的性能提升,目前最多支持8個雙控也就是16控的擴展,並實現全局的重刪。但與XtremIO不同,Purestorage依然在雙控的方向上耕耘,只支持Scale-up。

加速卡或加速晶元

在眾多的全快閃記憶體廠商中,目前看到的只有HP 3PAR及Skyera在重刪過程中使用加速功能。HP 3PAR將重刪查找及逐位元組對比的功能放到了ASIC上。

不好意思插錯圖了,但換個角度來說,這麼多美女你不可能全部像悠悠美那樣掌握在手中(選出屬於你的那個就夠了),按照婚姻法(特指我國),充其量僅且只有一個你可以天天捧在手中(也可能一個都沒有)。 這與重刪技術的單實例思想是驚人一致的 。法律之外情況如何,那就應另當別論(大家理解的可能比我透徹,再此不做解釋),言歸正傳。

以前,在存儲系統中存放了很多重複數據,以至佔用了大量硬碟空間。現在,利用重複數據刪除只需要存儲一份數據(文件或塊)。而數據壓縮技術在比較小的範圍內,以幾個比特到幾個位元組查找並消除重複數據,而重複數據刪除是在比較大的範圍內查找重複數據。 通過這篇文章,你可以大膽地告訴媽媽,她老人家可以不用再擔心我們的磁碟空間不夠用了 。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 中國存儲 的精彩文章:

有利於企業的快閃記憶體數據存儲的新用例
技術分析:雲化的主存儲功能是否已就緒?
十分鐘看懂時序資料庫-分級存儲
Veeam和微軟擴展存儲聯盟提供前所未有的可用性
歷史文化名城與現代科技將再次碰撞出火花

TAG:中國存儲 |

您可能感興趣

比擴容盤還妖 希捷用數據壓縮讓固態硬碟耐久度翻倍
壓縮機細分應用市場銷售前景分析
被壓縮的彈簧放入濃酸中瞬間溶解,被壓縮彈簧的能量去哪了!
硬碟的速度會影響我們壓縮、解壓文件的速度嗎?
IBM存儲重刪壓縮技術之四回歸硬體
無需解壓如何查看一個歸檔或壓縮文件的內容
圖像數據壓縮原理
清華&斯坦福提出深度梯度壓縮DGC,大幅降低分散式訓練網路帶寬需求
新「壓縮光」理論,有望破解量子技術的應用難題
面向神經機器翻譯的模型存儲壓縮方法分析
阿里巴巴提出極限低比特神經網路,用於深度模型壓縮和加速
宜人貸獲客效率降低 壓縮規模或是最好選擇
如何在Hive中進行數據壓縮以實現高效存儲?
深入解析數據壓縮演算法
無印良品推出的「壓縮餅乾」,解了無數人的燃眉之急
子彈發射時需要的能量可以用壓縮氣體代替嗎?
淺談除灰壓縮空氣系統節能優化應用
教你一招破解壓縮包密碼,很實用很強悍!
壓縮解壓縮介紹以及運用
壓縮面膜的是與非丨可以用什麼泡?