一種云存儲系統(tǒng)中節(jié)約型重復數(shù)據(jù)刪除方法
【技術領域】
[0001] 本發(fā)明涉及計算機數(shù)據(jù)存儲領域,尤其涉及一種云存儲系統(tǒng)中節(jié)約型重復數(shù)據(jù)刪 除方法。
【背景技術】
[0002] 近年來,云計算、移動計算、物聯(lián)網(wǎng)等技術的日益普及使得目前數(shù)據(jù)呈爆炸式 增長,云存儲技術應運而生。據(jù)國際數(shù)據(jù)公司IDC統(tǒng)計,2011年全球數(shù)據(jù)總量已達到 1. 8ZB(1ZB= 109TB),預計到2020年全球產(chǎn)生的信息總量將達到35ZB。系統(tǒng)的存儲壓力也 與日俱增。IDC調查還發(fā)現(xiàn)信息系統(tǒng)中有近75%的重復冗余數(shù)據(jù),大量的重復性冗余數(shù)據(jù) 浪費了大量的存儲資源,而重復數(shù)據(jù)刪除技術可以有效地縮減數(shù)據(jù)。
[0003] 重復數(shù)據(jù)刪除技術通過比對指紋值,保留唯一的數(shù)據(jù),并用指向唯一數(shù)據(jù) 的指針代替其它重復的數(shù)據(jù)。重復數(shù)據(jù)刪除技術現(xiàn)已廣泛應用于備份和歸檔系統(tǒng), 其中較為成熟的重復數(shù)據(jù)刪除策略有基于文件語義感知的多層源端重復數(shù)據(jù)方法 (Semantic-awareMultieredDeduplication,SAM-Dedupe)、基于因果關系的重復數(shù)據(jù)刪 除方法(Causality-BasedDeduplication,CABdedupe)、基于應用感知的重復數(shù)據(jù)刪除方 法(Application-awareDeduplication,AA_Dedupe)等。它們各有優(yōu)缺點,SAM-Dedupe通 過對文件大小,文件位置,文件類型,文件時間戳的認知不斷縮小指紋比對范圍;CABdedupe 通過捕獲與記錄備份數(shù)據(jù)集在多個時間點之間的因果關系,挖掘未修改的數(shù)據(jù)實施重刪; AA-Dedupe通過對不同類型文件應用采用不同分塊算法和指紋提取技術以獲得最佳的重刪 效果,如靜態(tài)應用數(shù)據(jù)或虛擬機鏡像采用FSC(Fixed-SizedChunking)算法分塊和MD5算 法提取指紋。這些策略以備份系統(tǒng)為環(huán)境,致使處理的數(shù)據(jù)相對比較靜態(tài),即上傳到存儲端 后,用戶不會對存儲端中的數(shù)據(jù)直接進行修改,因此簡單移植這些方法并不適用于云存儲 系統(tǒng)。目前,云存儲系統(tǒng)中也有一些研宄成果,側重于系統(tǒng)安全性,或基于代理加密的重復 數(shù)據(jù)刪除機制,或基于交互式的P〇W(ProofofOwnership)的重復數(shù)據(jù)刪除機制,或基于數(shù) 據(jù)流行度的安全重復數(shù)據(jù)刪除機制。重復數(shù)據(jù)刪除方法致使同一數(shù)據(jù)塊被多個用戶所共 享,而用戶對數(shù)據(jù)的修改呈多樣性,如何保證數(shù)據(jù)的可用性和安全性是必要的。
[0004] 現(xiàn)有技術普遍面向數(shù)據(jù)相對比較靜態(tài)的備份和歸檔系統(tǒng),從源端避免重復數(shù)據(jù)上 傳后并不考慮存儲系統(tǒng)中的數(shù)據(jù)是否會被修改,而云存儲系統(tǒng)中數(shù)據(jù)被多用戶所共享,多 用戶修改數(shù)據(jù)導致數(shù)據(jù)的動態(tài)性增強,因此并不適用云存儲系統(tǒng)。
【發(fā)明內容】
[0005] 為解決上述技術問題,本發(fā)明采用的技術方案如下:
[0006] -種云存儲系統(tǒng)中節(jié)約型重復數(shù)據(jù)刪除方法,所述云存儲系統(tǒng)由進行文件操作的 客戶端、存放文件系統(tǒng)元數(shù)據(jù)信息的元數(shù)據(jù)服務器、同步備份元數(shù)據(jù)的鏡像文件和操作日 志的二級元數(shù)據(jù)服務器、存儲數(shù)據(jù)塊的存儲節(jié)點共同構成,該方法包括如下步驟:
[0007] 步驟一:每個客戶端對本地待上傳文件進行預處理,進行文件級和數(shù)據(jù)塊級的局 部重復數(shù)據(jù)刪除操作以防重復數(shù)據(jù)的再次上傳,然后將待上傳文件的元數(shù)據(jù)信息上傳到元 數(shù)據(jù)服務器;
[0008] 步驟二:元數(shù)據(jù)服務器接收到來自不同客戶端的元數(shù)據(jù)信息,依次讀取文件指紋、 數(shù)據(jù)塊指紋,然后比對內存、硬盤和寫緩存區(qū)的指紋索引信息,最后將未上傳過的指紋值信 息返回到各個客戶端。
[0009] 步驟三:客戶端將未上傳過的新數(shù)據(jù)上傳到存儲端,存儲端對新數(shù)據(jù)進行存儲,并 更新存儲端的元數(shù)據(jù)信息表。
[0010] 步驟四:客戶端發(fā)出要修改數(shù)據(jù)的請求,通過元數(shù)據(jù)服務器獲取待修改數(shù)據(jù)所在 的存儲節(jié)點號,然后連接存儲節(jié)點并直接對存儲端的數(shù)據(jù)進行修改操作。
[0011] 步驟五:存儲端對修改后的數(shù)據(jù)塊進行檢測,當修改后的數(shù)據(jù)塊通過比對指紋值 發(fā)現(xiàn)已經(jīng)在本節(jié)點上,直接對其進行重刪;當修改后的數(shù)據(jù)塊不在本節(jié)點上,則先保存到本 節(jié)點上,再通過元數(shù)據(jù)服務器的比對發(fā)現(xiàn)在其他節(jié)點上,對該數(shù)據(jù)塊采用延遲重刪;當修改 后的數(shù)據(jù)塊通過比對本節(jié)點和元數(shù)據(jù)服務器上的指紋索引,發(fā)現(xiàn)既不在本節(jié)點上,又不在 其他節(jié)點上,除了將該數(shù)據(jù)塊保存到本節(jié)點上,元數(shù)據(jù)服務器還需要為該數(shù)據(jù)塊創(chuàng)建副本。
[0012] 所述的云存儲系統(tǒng)其特征在于:元數(shù)據(jù)服務器上還含有過濾模塊以及更新模塊, 過濾模塊用于過濾不同客戶端的重復數(shù)據(jù)信息,更新模塊用于更新存儲端全局數(shù)據(jù)元數(shù)據(jù) 信息,即直接更新重復數(shù)據(jù)塊的元數(shù)據(jù)信息,等接收到存儲節(jié)點反饋的信息后才更新非重 復數(shù)據(jù)塊的元數(shù)據(jù)信息。
[0013] 所述客戶端有文件預處理模塊、局部重刪模塊、元數(shù)據(jù)管理模塊和數(shù)據(jù)傳輸模塊, 其中文件預處理模塊依據(jù)文件的類型進行文件分類,然后交給局部重刪模塊進行文件級重 刪,經(jīng)過文件級重刪后的非重復文件再返還給文件預處理模塊進行過濾(過濾掉小于64MB 的非重復文件),最后再由局部重刪模塊進行數(shù)據(jù)塊級重刪。元數(shù)據(jù)管理模塊用于記錄客戶 端已上傳數(shù)據(jù)塊的指紋值信息,以避免本地重復數(shù)據(jù)的上傳;數(shù)據(jù)傳輸模塊則是客戶端連 接元數(shù)據(jù)服務器和存儲節(jié)點的接口,即負責將待上傳文件的元數(shù)據(jù)信息上傳到元數(shù)據(jù)服務 器,將非重復數(shù)據(jù)塊上傳到存儲節(jié)點上。
[0014] 所述存儲節(jié)點包括存儲模塊、元數(shù)據(jù)管理模塊、自檢報告模塊和延遲重刪模塊,其 中存儲模塊主要負責數(shù)據(jù)塊的存儲,分配數(shù)據(jù)塊的物理地址;元數(shù)據(jù)管理模塊記錄本節(jié)點 上的數(shù)據(jù)塊的元數(shù)據(jù)信息;自檢報告模塊主要是檢測數(shù)據(jù)塊的修改所帶來的重復數(shù)據(jù),交 給延遲重刪模塊進行熱點重復數(shù)據(jù)塊的判斷與相應的處理并將修改的元數(shù)據(jù)信息反饋給 自檢報告模塊,然后報告給元數(shù)據(jù)服務器。
[0015] 所述步驟一中文件級重復數(shù)據(jù)刪除:利用MD5算法計算文件指紋值,比對大小和 類型相等的文件指紋值,然后再與本地的元數(shù)據(jù)信息表進行比對,確定重復文件和非重復 文件;
[0016] 所述步驟一所述的數(shù)據(jù)塊級重復數(shù)據(jù)刪除如下:對于非重復文件(已過濾掉小于 64MB的文件),利用定長分塊算法進行分塊,塊長設為64MB,利用MD5算法計算數(shù)據(jù)塊的指 紋值,比對塊長相等的數(shù)據(jù)塊確定重復數(shù)據(jù)塊。
[0017] 所述步驟二中比對文件指紋時,若發(fā)現(xiàn)指紋值已存在,則不再比對數(shù)據(jù)塊的指紋, 否則還要比對構成文件的數(shù)據(jù)塊指紋。
[0018] 所述步驟三中每個存儲端都保存著其上的數(shù)據(jù)塊指紋及其存儲地址的映射關系, 通過數(shù)據(jù)塊指紋,即可確定數(shù)據(jù)塊存放的物理地址。
[0019] 所述步驟四中客戶端多個用戶對數(shù)據(jù)塊的修改可能會引入新的重復數(shù)據(jù)塊,并且 現(xiàn)有存儲系統(tǒng)暫不考慮這些重復的數(shù)據(jù)塊。備份系統(tǒng)中用戶在本地對數(shù)據(jù)修改后再進行備 份,備份的過程中過濾掉未作修改的部分;而云存儲給用戶帶來的云端體驗如同在本地,用 戶獲取到想要修改的數(shù)據(jù)的地址,直接對數(shù)據(jù)進行修改。這正是云存儲與備份系統(tǒng)的不同。
[0020] 所述步驟五中延遲重刪包含對熱點重復數(shù)據(jù)塊和非熱點重復數(shù)據(jù)塊兩方面的操 作,判斷方法采用如下公式:
[0022] 式中,節(jié)點i上某一數(shù)據(jù)塊發(fā)生修改,并確定該數(shù)據(jù)塊在節(jié)點i上不重復,在節(jié)點 j上有重復數(shù)據(jù)塊;表示在tp+1_t#間段內某一個數(shù)據(jù)塊在存儲節(jié)點端(除了節(jié)點i) 的平均訪問次數(shù);a是一個閾值,表示成為熱點數(shù)據(jù)塊單位時間內最少的訪問次數(shù);A^tp) 和~(tp+1)分別表示%和tp+1時刻節(jié)點j上某一數(shù)據(jù)塊的訪問次數(shù);Z為數(shù)據(jù)塊B所在節(jié)點 的編號集合。
[0023] 對于熱點重復數(shù)據(jù)塊則延遲重刪以降低系統(tǒng)的訪問響應時間;對于非熱點重復數(shù) 據(jù)塊,則選擇非熱點重復數(shù)據(jù)塊所在存儲節(jié)點剩余容量相對較少的節(jié)點上的刪除以實現(xiàn)負 載均衡。
[0024] 有益效果
[0025] 1.現(xiàn)有的重復數(shù)據(jù)刪除主要面向數(shù)據(jù)相對比較靜態(tài)的備份和歸檔系統(tǒng),并不適用 云存儲系統(tǒng),而云存儲系統(tǒng)中數(shù)據(jù)被多用戶所共享,多用戶修改數(shù)據(jù)導致數(shù)據(jù)的動態(tài)性增 強。本發(fā)明針對云存儲系統(tǒng)中數(shù)據(jù)的動態(tài)性,考慮數(shù)據(jù)本身的特性,將數(shù)據(jù)分為熱點數(shù)據(jù)和 非熱點數(shù)據(jù),對于不同的數(shù)據(jù)采用不同的重刪時機,以保證系統(tǒng)的性能更佳。
[0026] 2.本發(fā)明相比于云存儲中現(xiàn)有的重復數(shù)據(jù)刪除策略,結合副本管理機制,在保證 數(shù)據(jù)可用性的前提下,采用延遲刪除重復的熱點數(shù)據(jù)塊(暫將其視為副本),在一定時間內 緩解了用戶對熱點數(shù)據(jù)塊的訪問壓力,因此對于系統(tǒng)響應時間的降低效果會更好。
[0027] 3.本發(fā)明將重復的非熱點數(shù)據(jù)塊也視為一個副本,比對