專利名稱:重復(fù)數(shù)據(jù)刪除系統(tǒng)及其刪除方法
技術(shù)領(lǐng)域:
本發(fā)明屬于重復(fù)數(shù)據(jù)刪除技術(shù)領(lǐng)域,涉及分布式存儲技術(shù)領(lǐng)域,特別涉及一種基于數(shù)據(jù)壓縮與糾刪碼技術(shù)的重復(fù)數(shù)據(jù)刪除系統(tǒng);本發(fā)明還涉及這種重復(fù)數(shù)據(jù)刪除系統(tǒng)的刪除方法。
背景技術(shù):
隨著全球信息化的高速發(fā)展,公司、企業(yè)和組織中的數(shù)據(jù)中心正面臨著越來越大的數(shù)據(jù)量和高速數(shù)據(jù)增長的挑戰(zhàn),研究表明大數(shù)據(jù)時代已經(jīng)來臨,大數(shù)據(jù)有四個特點,其中最顯著的特點是數(shù)據(jù)體量巨大,有報告指出,2011年全世界創(chuàng)建和復(fù)制的數(shù)據(jù)量超過了1.8ZB (1.8萬億GB),在五年之間增長了 9倍。研究發(fā)現(xiàn)企業(yè)中保存的數(shù)據(jù)中有高達60%是重復(fù)的,而且隨著時間的推移將會越來越多,大量重復(fù)數(shù)據(jù)的存在不僅浪費了存儲空間,而且給數(shù)據(jù)的處理速度和計算的準確性帶來很大挑戰(zhàn)。為了減少存儲系統(tǒng)中的大量重復(fù)數(shù)據(jù),近年來重復(fù)數(shù)據(jù)刪除技術(shù)已經(jīng)成為研究的熱點。重復(fù)數(shù)據(jù)刪除技術(shù)是一種可將重復(fù)數(shù)據(jù)標準化為單個共享數(shù)據(jù)對象以提高存儲容量效率的技術(shù)。它是一種數(shù)據(jù)縮減技術(shù),主要應(yīng)用于基于磁盤的備份、容災(zāi)和歸檔存儲系統(tǒng)中,可對存儲容量進行有效優(yōu)化?,F(xiàn)有的重復(fù)數(shù)據(jù)刪除系統(tǒng),其流程參見圖1:首先將要存儲的文件用切分算法分割成一組數(shù)據(jù)塊,對切分出的每個數(shù)據(jù)塊進行指紋計算,然后以指紋值為關(guān)鍵字在指紋庫中查找,如果找到匹配的指紋值說明此數(shù)據(jù)塊為重復(fù)數(shù)據(jù)塊,僅存儲此數(shù)據(jù)塊的索引號,否則表示此數(shù)據(jù)塊是一個新數(shù)據(jù)塊,對此數(shù)據(jù)塊進行存儲并創(chuàng)建相應(yīng)元信息。在上述現(xiàn)有的重復(fù)數(shù)據(jù)刪除系統(tǒng)中,數(shù)據(jù)塊被系統(tǒng)中多個文件共享,甚至是被所有文件共同使用,如果某個數(shù)據(jù)塊丟失或發(fā)生錯誤會影響到多個文件還原,這樣就降低了重復(fù)數(shù)據(jù)刪除系統(tǒng)的可靠性,雖然可以將數(shù)據(jù)塊進行冗余備份,將每個數(shù)據(jù)塊復(fù)制到多個存儲節(jié)點中,一旦其中某個存儲節(jié)點出現(xiàn)問題,可以利用其余存儲節(jié)點中的數(shù)據(jù)塊,但是這樣對存儲空間是一種嚴重浪費。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種重復(fù)數(shù)據(jù)刪除系統(tǒng),解決現(xiàn)有技術(shù)存在的如果某個數(shù)據(jù)塊丟失或發(fā)生錯誤會影響到多個文件還原,可靠性較差的問題。本發(fā)明的另一個目的在于提供上述重復(fù)數(shù)據(jù)刪除系統(tǒng)的刪除方法。本發(fā)明的目的是這樣實現(xiàn)的,重復(fù)數(shù)據(jù)刪除系統(tǒng),為分布式架構(gòu),主要由客戶端、管理服務(wù)器和存儲節(jié)點服務(wù)器組成;客戶端主要用于接收用戶保存文件/還原文件請求、切分文件/組合文件;管理服務(wù)器的主要功能有指紋值比對、維護指紋庫、糾刪碼編碼和數(shù)據(jù)壓縮;存儲節(jié)點服務(wù)器主要負責(zé)存儲壓縮后的數(shù)據(jù)塊;客戶端與管理服務(wù)器端、管理服務(wù)器與存儲節(jié)點服務(wù)器端均通過局域網(wǎng)相連。本發(fā)明的特點還在于:
管理服務(wù)器主要由指紋庫、文件索引庫和壓縮數(shù)據(jù)塊索引庫三部分組成;指紋庫用來記錄系統(tǒng)中所有數(shù)據(jù)塊的指紋值,其結(jié)構(gòu)由FingerPrint、ReferenceCount組成,其中FingerPrint為指紋值,ReferenceCount記錄此指紋值的數(shù)據(jù)塊被共享的次數(shù),初始值為I ;文件索引庫記錄組成文件的數(shù)據(jù)塊指紋值,以及數(shù)據(jù)塊的順序;壓縮數(shù)據(jù)塊索引庫用來記錄每個壓縮數(shù)據(jù)塊的信息,其結(jié)構(gòu)由Datablock Name、IpAddress、SavePath> DataBlockLength、FingerPrint、ReferenceCount 組成;其中Datablock Name表示數(shù)據(jù)塊名稱,IpAddress表示保存數(shù)據(jù)塊服務(wù)器的IP地址,SavePath表示保存數(shù)據(jù)塊的目錄,DataBlockLength表示數(shù)據(jù)塊的長度,F(xiàn)ingerPrint為數(shù)據(jù)塊的指紋值,ReferenceCount記錄此數(shù)據(jù)塊被共享的次數(shù),初始值為I,其與指紋庫中相同指紋值的ReferenceCount字段值相等??蛻舳税惭b于用戶的個人電腦上。本發(fā)明的另一個目的是這樣實現(xiàn)的,上述重復(fù)數(shù)據(jù)刪除系統(tǒng)的刪除方法,用戶通過客戶端保存和還原文件。其特點還在于:保存文件時,客戶端對用戶輸入的文件進行數(shù)據(jù)切分產(chǎn)生切分數(shù)據(jù)塊,對每個切分數(shù)據(jù)塊進行指紋計算,將計算出的指紋值發(fā)送到管理服務(wù)器;管理服務(wù)器接收到指紋值后,首先到指紋庫中查找是否存在相同指紋值,如果存在相同指紋值,說明此數(shù)據(jù)塊已經(jīng)保存,通知客戶端不需要發(fā)送數(shù)據(jù)塊,否則說明此數(shù)據(jù)塊是一個新數(shù)據(jù)塊,通知客戶端將數(shù)據(jù)塊發(fā)送到管理服務(wù)器,管理服務(wù)器收到數(shù)據(jù)塊后,對數(shù)據(jù)塊進行糾刪碼編碼,事先根據(jù)存儲節(jié)點服務(wù)器的個數(shù)設(shè)置好糾刪碼需要的基本數(shù)據(jù)塊個數(shù)和校驗數(shù)據(jù)塊個數(shù),糾刪碼編碼完成后對每個糾刪碼數(shù)據(jù)塊進行數(shù)據(jù)壓縮,將壓縮后的糾刪碼數(shù)據(jù)塊發(fā)送到存儲節(jié)點服務(wù)器保存。還原文件時,通過客戶端將欲還原的文件名發(fā)送到管理服務(wù)器,管理服務(wù)器到文件數(shù)據(jù)塊索引庫中查找保存數(shù)據(jù)塊索引的文件,根據(jù)文件中記錄的索引位置,到數(shù)據(jù)塊糾刪碼索引庫中查找保存糾刪碼索引的文件,根據(jù)索引文件中記錄的糾刪碼數(shù)據(jù)塊保存位置,到各個存儲節(jié)點服務(wù)器提取壓縮后的糾刪碼數(shù)據(jù)塊,對其進行解壓縮,根據(jù)糾刪碼算法重構(gòu)出切分數(shù)據(jù)塊,最后將切分數(shù)據(jù)塊還原為原始的文件。保存文件的流程如下:步驟1:文件切分,將欲保存的文件上傳到客戶端,客戶端用固定尺寸分塊算法切分文件,產(chǎn)生臨時切分數(shù)據(jù)塊;步驟2:計算指紋值,客戶端利用MD5算法計算切分數(shù)據(jù)塊的指紋值;步驟3:HASH查找,把計算出的指紋值發(fā)送到管理服務(wù)器,管理服務(wù)器以指紋值為關(guān)鍵字用HASH函數(shù)到指紋庫中進行查找,如果找到相同指紋值說明此數(shù)據(jù)塊已經(jīng)保存,更新指紋庫中的ReferenceCount字段,將其值加I,保存其索引到切分索引文件,通知客戶端不用發(fā)送數(shù)據(jù)塊,否則說明此數(shù)據(jù)塊為一個新數(shù)據(jù)塊,保存其索引,并通知客戶端發(fā)送數(shù)據(jù)塊,對其進行后續(xù)計算;步驟3:糾刪碼編碼,用Reed Solomon糾刪碼編碼對新切分數(shù)據(jù)塊進行編碼,產(chǎn)生糾刪碼數(shù)據(jù)塊和糾刪碼索引文件;
步驟4:壓縮數(shù)據(jù),用Huffman壓縮算法對糾刪碼數(shù)據(jù)塊進行壓縮;步驟5:保存,將壓縮數(shù)據(jù)塊發(fā)送到存儲節(jié)點服務(wù)器保存;重復(fù)步驟I到步驟5,直到文件處理完畢;還原文件的流程如下:步驟1:提取數(shù)據(jù)塊索引,用客戶端將還原文件請求發(fā)送到管理服務(wù)器,管理服務(wù)器到文件索引庫中查找保存文件切分數(shù)據(jù)塊索引的文件;如果沒有找到提示無法還原文件,否則繼續(xù);步驟2:提取糾刪碼索引,管理服務(wù)器根據(jù)切分數(shù)據(jù)塊索引文件中記錄的索引位置,到糾刪碼數(shù)據(jù)塊索引庫中查找糾刪碼索引文件;如果沒有找到則提示糾刪碼數(shù)據(jù)塊丟失,無法還原文件,否則繼續(xù);步驟3:提取糾刪碼數(shù)據(jù)塊,根據(jù)糾刪碼索引文件中記錄的IpAddress、SavePath兩個字段到存儲節(jié)點服務(wù)器中提取壓縮后的糾刪碼數(shù)據(jù)塊;步驟4:解壓縮,對提取出的壓縮數(shù)據(jù)塊解壓縮,產(chǎn)生糾刪碼數(shù)據(jù)塊;步驟5:判斷是否滿足重構(gòu)條件,根據(jù)Reed Solomon糾刪碼解碼原理判斷解壓出的糾刪碼數(shù)據(jù)塊是否滿足重構(gòu)條件,如果不滿足,提示糾刪碼數(shù)據(jù)塊丟失過多,無法重構(gòu),否則繼續(xù)進行;步驟6:重構(gòu)數(shù)據(jù)塊,利用Reed Solomon糾刪碼解碼原理將解壓后的糾刪碼數(shù)據(jù)塊重構(gòu)為切分數(shù)據(jù)塊;步驟7:還原文件,將切分數(shù)據(jù)塊中的數(shù)據(jù)發(fā)送給客戶端,客戶端將其保存到文件中;重復(fù)步驟I到步驟6,直到數(shù)據(jù)塊索引文件中的數(shù)據(jù)處理完畢,最后客戶端將還原的文件呈現(xiàn)給用戶。本發(fā)明具有如下有益效果:1、本發(fā)明重復(fù)數(shù)據(jù)刪除系統(tǒng)可靠性高。本發(fā)明用糾刪碼技術(shù)對切分數(shù)據(jù)塊進行編碼,將編碼后的糾刪碼數(shù)據(jù)塊分散存儲到不同的存儲節(jié)點,如果部分存儲節(jié)點出現(xiàn)故障,可以用剩余的存儲節(jié)點中的糾刪碼數(shù)據(jù)塊重構(gòu)出原始切分數(shù)據(jù)塊。相比于將所有數(shù)據(jù)塊都保存在某一存儲節(jié)點,本發(fā)明提高了重復(fù)數(shù)據(jù)刪除系統(tǒng)的可靠性。2、本發(fā)明重復(fù)數(shù)據(jù)刪除系統(tǒng)減少了存儲空間的浪費。本發(fā)明糾刪碼編碼時為了數(shù)據(jù)塊重構(gòu)會新增幾個校驗塊,編碼完成后的糾刪碼數(shù)據(jù)塊總存儲容量相對于原始的切分數(shù)據(jù)塊增加了一部分存儲空間,在此基礎(chǔ)上對糾刪碼數(shù)據(jù)塊進行數(shù)據(jù)壓縮,從一定程度上降低了存儲空間的浪費。3、本發(fā)明將糾刪碼與數(shù)據(jù)壓縮技術(shù)引入重復(fù)數(shù)據(jù)刪除系統(tǒng)中,不僅提高了重復(fù)數(shù)據(jù)刪除系統(tǒng)的可靠性,而且減少了存儲空間的浪費。4、本發(fā)明重復(fù)數(shù)據(jù)刪除系統(tǒng)刪除方法,對切分數(shù)據(jù)塊進行糾刪碼編碼和數(shù)據(jù)壓縮,將壓縮后的數(shù)據(jù)塊分散存儲到不同的存儲節(jié)點服務(wù)器,一旦部分存儲節(jié)點發(fā)生故障,可利用剩余存儲節(jié)點中保存的數(shù)據(jù)進行文件還原,相比于現(xiàn)有技術(shù),本發(fā)明不僅提高了重復(fù)數(shù)據(jù)刪除的可靠性,而且減少了存儲空間的浪費。
圖1是現(xiàn)有的重復(fù)數(shù)據(jù)刪除系統(tǒng)流程圖;圖2是本發(fā)明重復(fù)數(shù)據(jù)刪除系統(tǒng)結(jié)構(gòu)示意圖;圖3是糾刪碼原理圖;圖4是本發(fā)明 的重復(fù)數(shù)據(jù)刪除系統(tǒng)刪除方法流程圖。
具體實施例方式下面結(jié)合具體實施方式
和附圖對本發(fā)明作進一步詳細的說明。重復(fù)數(shù)據(jù)刪除技術(shù)的核心功能是在存儲數(shù)據(jù)時,比較欲存儲數(shù)據(jù)和存儲系統(tǒng)中已經(jīng)保存的數(shù)據(jù),如果存在相同數(shù)據(jù),說明此數(shù)據(jù)已經(jīng)保存,過濾掉這部分數(shù)據(jù),通過指針引用這部分數(shù)據(jù),反之,保存數(shù)據(jù)。按照消重粒度重復(fù)數(shù)據(jù)刪除技術(shù)可分為文件級和數(shù)據(jù)塊級,數(shù)據(jù)塊級別消重粒度更小,提供更高的數(shù)據(jù)消重率。本發(fā)明采用數(shù)據(jù)塊級別消重算法。數(shù)據(jù)分塊算法主要有三種:固定大小分塊算法、變長切分算法和滑動塊切分算法。固定大小分塊算法是用預(yù)先定義好的塊大小進行文件切分。變長切分算法是一種基于文件內(nèi)容的切分算法,切分出的數(shù)據(jù)塊大小是變化的,使用一個固定大小的滑動窗口對文件數(shù)據(jù)塊計算指紋值,如果指紋值滿足某個條件,比如其對某個特定的數(shù)值取模計算等于預(yù)先設(shè)定的數(shù)時,把窗口位置做為塊的邊界?;瑒訅K切分算法結(jié)合了固定大小塊切分算法和變長切分算法的優(yōu)點,其數(shù)據(jù)塊大小確定,對定長數(shù)據(jù)塊先計算弱校驗值,如果匹配再計算強校驗值,兩者都匹配認為這是一個數(shù)據(jù)塊邊界。本發(fā)明使用固定大小分塊算法。在重復(fù)數(shù)據(jù)刪除系統(tǒng)中,數(shù)據(jù)塊被存儲系統(tǒng)中所有文件共享,如果某個數(shù)據(jù)塊丟失或發(fā)生錯誤會導(dǎo)致多個文件無法還原,基于此引入糾刪碼技術(shù),糾刪碼是一種前向糾錯(Forward Error Correcting, FEC)技術(shù),近年來廣泛應(yīng)用于信息處理的各個領(lǐng)域。一個(m,n)糾刪碼是把m個數(shù)據(jù)源片段編碼為n(n>m)個數(shù)據(jù)片段,用這n個數(shù)據(jù)片段中的任意X (x^m)個即可重構(gòu)出原來的m個源數(shù)據(jù)片段,糾刪碼原理如圖3所示,糾刪碼主要分為4類:Reed Solomon Codes, Parity Array Codes, Parity-check Codes, LDPC Codes。本發(fā)明使用的是Reed Solomon Codes技術(shù)。在本發(fā)明中保存切分數(shù)據(jù)塊時,先對數(shù)據(jù)塊進行糾刪碼編碼,將編碼后的數(shù)據(jù)塊保存到不同的存儲節(jié)點。文件還原時,如果部分存儲節(jié)點出現(xiàn)故障或發(fā)生錯誤,可以用剩余存儲節(jié)點中的糾刪碼數(shù)據(jù)塊重構(gòu)出原始數(shù)據(jù)塊,進而還原出原始文件。在對數(shù)據(jù)塊進行(m,n)糾刪碼編碼時,首先將數(shù)據(jù)塊平均切分成m個數(shù)據(jù)塊,然后將m個數(shù)據(jù)塊編碼為n(n>m)個數(shù)據(jù)塊,增加了(n_m)個校驗數(shù)據(jù)塊,則編碼后的數(shù)據(jù)塊存儲容量是初始數(shù)據(jù)塊容量的n/m(n/m>l)倍,增加了一部分存儲空間。為了解決此問題本文在糾刪碼技術(shù)的基礎(chǔ)上將數(shù)據(jù)壓縮技術(shù)引入重復(fù)數(shù)據(jù)刪除系統(tǒng)中。數(shù)據(jù)壓縮(Data Compression)是在數(shù)據(jù)處理時采用壓縮一定數(shù)據(jù)的存儲空間或在一定空間內(nèi)增加數(shù)據(jù)存儲量的技術(shù)。通常采用消除數(shù)據(jù)間隙、空字段、冗余信息以及不必要數(shù)據(jù)的方法縮短記錄或塊的長度,目的是提高計算機存儲空間的利用率。數(shù)據(jù)壓縮分為無損壓縮和有損壓縮兩種。常用的無損壓縮方法有=HufTman編碼、算術(shù)編碼、游程長度編碼和Fano-Shannon編碼等。常用的有損壓縮方法有:預(yù)測編碼、變換編碼和混合編碼等。本發(fā)明使用無損壓縮中的Huffman壓縮。Huffman壓縮是比較流行的一種無損壓縮方法,其理論基礎(chǔ)是Huffman編碼,Huffman編碼依據(jù)信息出現(xiàn)的頻率構(gòu)造前綴編碼Huffman樹,達到編碼長度最短的目標?;诖?,Huffman壓縮文件的流程為:I)讀取文件各字節(jié),統(tǒng)計各字節(jié)出現(xiàn)的頻率;2)為每個字節(jié)指定一個只包含一個節(jié)點的二叉樹,并以該字節(jié)的頻率作為二叉樹的權(quán);3)選取兩棵權(quán)最小的樹合并成一棵帶有新的根節(jié)點的樹,其左右子樹分別是選取的兩棵樹,新樹的權(quán)為左右子樹的權(quán)重之和;4)重復(fù)上面的步驟,直到只剩下最后一棵樹;5)樹中每個非葉節(jié)點的左指針分配“0”,右指針分配“1”,由此,從根出發(fā)可得各
字節(jié)的哈夫曼編碼;6)將Huffman樹信息和各字節(jié)的編碼信息保存到壓縮文件中。保存文件時,糾刪碼編碼完成后,利用Huffman壓縮算法壓縮糾刪碼數(shù)據(jù)塊,然后將壓縮后的數(shù)據(jù)塊分別發(fā)送到不同的存儲節(jié)點保存。還原文件時,將數(shù)據(jù)塊從存儲節(jié)點中提取出來,用Huffman解壓縮算法解壓出糾刪碼數(shù)據(jù)塊。圖2所示為本發(fā)明基于數(shù)據(jù)壓縮與糾刪碼技術(shù)的重復(fù)數(shù)據(jù)刪除系統(tǒng)組成結(jié)構(gòu)圖,系統(tǒng)主要包括客戶端、管理服務(wù)器和存儲節(jié)點服務(wù)器,系統(tǒng)主要的功能集中于管理服務(wù)器上。管理服務(wù)器主要有三部分組成:指紋庫、文件索引庫和壓縮數(shù)據(jù)塊索引庫。指紋庫用來記錄系統(tǒng)中所有數(shù)據(jù)塊的指紋值,其結(jié)構(gòu)由〈FingerPrint、ReferenceCount)組成,其中FingerPrint為指紋值,ReferenceCount記錄此指紋值的數(shù)據(jù)塊被共享的次數(shù),初始值為I。指紋庫查找采用Hash查找算法,以指紋值字符串為關(guān)鍵字計算其存儲位置,沖突解決方法采用線性探測法。文件索引庫記錄組成文件的數(shù)據(jù)塊指紋值,以及數(shù)據(jù)塊的順序。壓縮數(shù)據(jù)塊索引庫用來記錄每個壓縮數(shù)據(jù)塊的信息,其結(jié)構(gòu)由〈Datablock Name、IpAddress、SavePath> DataBlockLength、FingerPrint、ReferenceCount> 組成。其中Datablock Name表示數(shù)據(jù)塊名稱,IpAddress表示保存數(shù)據(jù)塊服務(wù)器的IP地址,SavePath表示保存數(shù)據(jù)塊的目錄,DataBlockLength表示數(shù)據(jù)塊的長度,F(xiàn)ingerPrint為數(shù)據(jù)塊的指紋值,ReferenceCount字段記錄此數(shù)據(jù)塊被共享的次數(shù),初始值為I,其與指紋庫中相同指紋值的ReferenceCount字段值相等。上述壓縮數(shù)據(jù)塊索引庫中的ReferenceCount字段用于文件刪除時判斷數(shù)據(jù)塊被共享的次數(shù)。當(dāng)用戶刪除系統(tǒng)中保存的某個文件時,需要刪除組成此文件的數(shù)據(jù)塊。但是由于數(shù)據(jù)塊并不是被一個文件私有,如果不加判斷直接刪除數(shù)據(jù)塊,可能會造成某些文件無法還原。為了避免這種情況發(fā)生,刪除數(shù)據(jù)塊時需要查看數(shù)據(jù)塊索引庫中的ReferenceCount字段,如果此字段的值為I說明此數(shù)據(jù)塊只被此文件使用,可以刪除,如果此字段的值大于1,不能刪除此數(shù)據(jù)塊,將此字段值減I。這樣就保證了不會因為某個數(shù)據(jù)塊被刪除而使其他文件無法還原。圖4為基于數(shù)據(jù)壓縮與糾刪碼技術(shù)的重復(fù)數(shù)據(jù)刪除系統(tǒng)流程圖。為便于講解其流程首先定義幾個詞語:定義I切分數(shù)據(jù)塊:對文件應(yīng)用一定的切分算法后產(chǎn)生的數(shù)據(jù)塊。定義2糾刪碼數(shù)據(jù)塊:對切分數(shù)據(jù)塊進行糾刪碼編碼后產(chǎn)生的數(shù)據(jù)塊。
定義3壓縮數(shù)據(jù)塊:對糾刪碼數(shù)據(jù)塊應(yīng)用壓縮算法后產(chǎn)生的數(shù)據(jù)塊。定義4切分索引文件:文件切分時產(chǎn)生的索引文件,用來記錄文件包含的所有數(shù)據(jù)塊索引。定義5糾刪碼索引文件:糾刪碼編碼時產(chǎn)生的索引文件,用來記錄切分數(shù)據(jù)塊編碼后所有數(shù)據(jù)塊的索引。保存文件的流程如下:步驟1:文件切分。將欲保存的文件上傳到客戶端,客戶端用固定尺寸分塊算法切分文件,產(chǎn)生臨時切分數(shù)據(jù)塊。步驟2:計算指紋值??蛻舳死肕D5算法計算切分數(shù)據(jù)塊的指紋值。步驟3:HASH查找。把計算出的指紋值發(fā)送到管理服務(wù)器,管理服務(wù)器以指紋值為關(guān)鍵字用HASH函數(shù)到指紋庫中進行查找,如果找到相同指紋值說明此數(shù)據(jù)塊已經(jīng)保存,更新指紋庫中的ReferenceCount字段,將其值加I,保存其索引到切分索引文件,通知客戶端不用發(fā)送數(shù)據(jù)塊,否則說明此數(shù)據(jù)塊為一個新數(shù)據(jù)塊,保存其索引,并通知客戶端發(fā)送數(shù)據(jù)塊,對其進行后續(xù)計算。步驟4:糾刪碼編碼。用Reed Solomon糾刪碼編碼對新切分數(shù)據(jù)塊進行編碼,產(chǎn)生糾刪碼數(shù)據(jù)塊和糾刪碼索引文件。步驟5:壓縮數(shù)據(jù)。用Huffman壓縮算法對糾刪碼數(shù)據(jù)塊進行壓縮。步驟6:保存。將壓縮數(shù)據(jù)塊發(fā)送到存儲節(jié)點服務(wù)器保存,重復(fù)步驟I到步驟5,直到文件處理完畢。還原文件的流程如下:步驟1:提取數(shù)據(jù)塊索引。用客戶端將還原文件請求發(fā)送到管理服務(wù)器,管理服務(wù)器到文件索引庫中查找保存文件切分數(shù)據(jù)塊索引的文件。如果沒有找到提示無法還原文件,否則繼續(xù)。步驟2:提取糾刪碼索引。管理服務(wù)器根據(jù)切分數(shù)據(jù)塊索引文件中記錄的索引位置,到糾刪碼數(shù)據(jù)塊索引庫中查找糾刪碼索引文件。如果沒有找到則提示糾刪碼數(shù)據(jù)塊丟失,無法還原文件,否則繼續(xù)。步驟3:提取糾刪碼數(shù)據(jù)塊。根據(jù)糾刪碼索引文件中記錄的IpAddreSS、SaVePath兩個字段到存儲節(jié)點服務(wù)器中提取壓縮后的糾刪碼數(shù)據(jù)塊。步驟4:解壓縮。對提取出的壓縮數(shù)據(jù)塊解壓縮,產(chǎn)生糾刪碼數(shù)據(jù)塊。步驟5:判斷是否滿足重構(gòu)條件。根據(jù)Reed Solomon糾刪碼解碼原理判斷解壓出的糾刪碼數(shù)據(jù)塊是否滿足重構(gòu)條件,如果不滿足,提示糾刪碼數(shù)據(jù)塊丟失過多,無法重構(gòu),否則繼續(xù)進行。步驟6:重構(gòu)數(shù)據(jù)塊。利用Reed Solomon糾刪碼解碼原理將解壓后的糾刪碼數(shù)據(jù)塊重構(gòu)為切分數(shù)據(jù)塊。步驟7:還原文件。將切分數(shù)據(jù)塊中的數(shù)據(jù)發(fā)送給客戶端,客戶端將其保存到文件中,重復(fù)步驟I到步驟6,直到數(shù)據(jù)塊索引文件中的數(shù)據(jù)處理完畢。最后客戶端將還原的文件呈現(xiàn)給用戶。本發(fā)明提出的基于數(shù)據(jù)壓縮和糾刪碼技術(shù)的重復(fù)數(shù)據(jù)刪除系統(tǒng)架構(gòu),對切分數(shù)據(jù)塊進行糾刪碼編碼和數(shù)據(jù)壓縮,將壓縮后的數(shù)據(jù)塊分散存儲到不同的存儲節(jié)點服務(wù)器,一旦部分存儲節(jié)點發(fā)生故障,可利用剩余存儲節(jié)點中保存的數(shù)據(jù)進行文件還原,本發(fā)明提出的架構(gòu)不僅提高了重復(fù)數(shù)據(jù)刪除系統(tǒng)的可靠性,而且減少了存儲空間的浪費。當(dāng)然,本發(fā)明還可有其它多種實施例,在不背離本發(fā)明精神及其實質(zhì)的情況下,熟悉本領(lǐng)域的技術(shù)人員可以根據(jù)本發(fā)明作出各種相應(yīng)的改變和變形,但這些相應(yīng)的改變和變形都應(yīng)屬于本發(fā)明所附的權(quán)利要求的保護范圍。
權(quán)利要求
1.重復(fù)數(shù)據(jù)刪除系統(tǒng),其特征在于:為分布式架構(gòu),主要由客戶端、管理服務(wù)器和存儲節(jié)點服務(wù)器組成;客戶端主要用于接收用戶保存文件/還原文件請求、切分文件/組合文件;管理服務(wù)器的主要功能有指紋值比對、維護指紋庫、糾刪碼編碼和數(shù)據(jù)壓縮;存儲節(jié)點服務(wù)器主要負責(zé)存儲壓縮后的數(shù)據(jù)塊;客戶端與管理服務(wù)器端、管理服務(wù)器與存儲節(jié)點服務(wù)器端均通過局域網(wǎng)相連。
2.如權(quán)利要求1所述的重復(fù)數(shù)據(jù)刪除系統(tǒng),其特征在于:管理服務(wù)器主要由指紋庫、文件索引庫和壓縮數(shù)據(jù)塊索引庫三部分組成; 指紋庫用來記錄系統(tǒng)中所有數(shù)據(jù)塊的指紋值,其結(jié)構(gòu)由FingerPrint、ReferenceCount組成,其中FingerPrint為指紋值,ReferenceCount記錄此指紋值的數(shù)據(jù)塊被共享的次數(shù),初始值為I ; 文件索引庫記錄組成文件的數(shù)據(jù)塊指紋值,以及數(shù)據(jù)塊的順序; 壓縮數(shù)據(jù)塊索引庫用來記錄每個壓縮數(shù)據(jù)塊的信息,其結(jié)構(gòu)由Datablock Name、IpAddress、SavePath> DataBlockLength、FingerPrint、ReferenceCount 組成;其中Datablock Name表示數(shù)據(jù)塊名稱,IpAddress表示保存數(shù)據(jù)塊服務(wù)器的IP地址,SavePath表示保存數(shù)據(jù)塊的目錄,DataBlockLength表示數(shù)據(jù)塊的長度,F(xiàn)ingerPrint為數(shù)據(jù)塊的指紋值,ReferenceCount記錄此數(shù)據(jù)塊被共享的次數(shù),初始值為I,其與指紋庫中相同指紋值的ReferenceCount字段值相等。
3.如權(quán)利要求1或2所述的重復(fù)數(shù)據(jù)刪除系統(tǒng),其特征在于:客戶端安裝于用戶的個人電腦上。
4.如權(quán)利要求1-3任一項所述的重復(fù)數(shù)據(jù)刪除系統(tǒng)的刪除方法,其特征在于:用戶通過客戶端保存和還原文件。
5.如權(quán)利要求4所述的重復(fù) 數(shù)據(jù)刪除系統(tǒng)的刪除方法,其特征在于:保存文件時,客戶端對用戶輸入的文件進行數(shù)據(jù)切 分產(chǎn)生切分數(shù)據(jù)塊,對每個切分數(shù)據(jù)塊進行指紋計算,將計算出的指紋值發(fā)送到管理服務(wù)器;管理服務(wù)器接收到指紋值后,首先到指紋庫中查找是否存在相同指紋值,如果存在相同指紋值,說明此數(shù)據(jù)塊已經(jīng)保存,通知客戶端不需要發(fā)送數(shù)據(jù)塊,否則說明此數(shù)據(jù)塊是一個新數(shù)據(jù)塊,通知客戶端將數(shù)據(jù)塊發(fā)送到管理服務(wù)器,管理服務(wù)器收到數(shù)據(jù)塊后,對數(shù)據(jù)塊進行糾刪碼編碼,事先根據(jù)存儲節(jié)點服務(wù)器的個數(shù)設(shè)置好糾刪碼需要的基本數(shù)據(jù)塊個數(shù)和校驗數(shù)據(jù)塊個數(shù),糾刪碼編碼完成后對每個糾刪碼數(shù)據(jù)塊進行數(shù)據(jù)壓縮,將壓縮后的糾刪碼數(shù)據(jù)塊發(fā)送到存儲節(jié)點服務(wù)器保存。
6.如權(quán)利要求4或5所述的重復(fù)數(shù)據(jù)刪除系統(tǒng)的刪除方法,其特征在于:還原文件時,通過客戶端將欲還原的文件名發(fā)送到管理服務(wù)器,管理服務(wù)器到文件數(shù)據(jù)塊索引庫中查找保存數(shù)據(jù)塊索引的文件,根據(jù)文件中記錄的索引位置,到數(shù)據(jù)塊糾刪碼索引庫中查找保存糾刪碼索引的文件,根據(jù)索引文件中記錄的糾刪碼數(shù)據(jù)塊保存位置,到各個存儲節(jié)點服務(wù)器提取壓縮后的糾刪碼數(shù)據(jù)塊,對其進行解壓縮,根據(jù)糾刪碼算法重構(gòu)出切分數(shù)據(jù)塊,最后將切分數(shù)據(jù)塊還原為原始的文件。
7.如權(quán)利要求6所述的重復(fù)數(shù)據(jù)刪除系統(tǒng)的刪除方法,其特征在于:保存文件的流程如下: 步驟1:文件切分,將欲保存的文件上傳到客戶端,客戶端用固定尺寸分塊算法切分文件,產(chǎn)生臨時切分數(shù)據(jù)塊;步驟2:計算指紋值,客戶端利用MD5算法計算切分數(shù)據(jù)塊的指紋值; 步驟3:HASH查找,把計算出的指紋值發(fā)送到管理服務(wù)器,管理服務(wù)器以指紋值為關(guān)鍵字用HASH函數(shù)到指紋庫中進行查找,如果找到相同指紋值說明此數(shù)據(jù)塊已經(jīng)保存,更新指紋庫中的ReferenceCount字段,將其值加1,保存其索引到切分索引文件,通知客戶端不用發(fā)送數(shù)據(jù)塊,否則說明此數(shù)據(jù)塊為一個新數(shù)據(jù)塊,保存其索引,并通知客戶端發(fā)送數(shù)據(jù)塊,對其進行后續(xù)計算; 步驟3:糾刪碼編碼,用Reed Solomon糾刪碼編碼對新切分數(shù)據(jù)塊進行編碼,產(chǎn)生糾刪碼數(shù)據(jù)塊和糾刪碼索引文件; 步驟4:壓縮數(shù)據(jù),用Huffman壓縮算法對糾刪碼數(shù)據(jù)塊進行壓縮; 步驟5:保存,將壓縮數(shù)據(jù)塊發(fā)送到存儲節(jié)點服務(wù)器保存; 重復(fù)步驟I到步驟5,直到文件處理完畢; 還原文件的流程如下: 步驟1:提取數(shù)據(jù)塊索引,用客戶端將還原文件請求發(fā)送到管理服務(wù)器,管理服務(wù)器到文件索引庫中查找保存文件切分數(shù)據(jù)塊索引的文件;如果沒有找到提示無法還原文件,否則繼續(xù); 步驟2:提取糾刪碼索引,管理服務(wù)器根據(jù)切分數(shù)據(jù)塊索引文件中記錄的索引位置,到糾刪碼數(shù)據(jù)塊索引庫中查找糾刪碼索引文件;如果沒有找到則提示糾刪碼數(shù)據(jù)塊丟失,無法還原文件,否則繼續(xù); 步驟3:提取糾刪碼數(shù)據(jù)塊,根據(jù)糾刪碼索引文件中記錄的IpAddress、SavePath兩個字段到存儲節(jié)點服務(wù)器中提取壓縮后的糾刪碼數(shù)據(jù)塊; 步驟4:解壓縮,對提取出的壓縮數(shù)據(jù)塊解壓縮,產(chǎn)生糾刪碼數(shù)據(jù)塊; 步驟5:判斷是否滿足重構(gòu)條件,根據(jù)Reed Solomon糾刪碼解碼原理判斷解壓出的糾刪碼數(shù)據(jù)塊是否滿足重構(gòu)條件,如果不滿足,提示糾刪碼數(shù)據(jù)塊丟失過多,無法重構(gòu),否則繼續(xù)進行; 步驟6:重構(gòu)數(shù)據(jù)塊,利用Reed Solomon糾刪碼解碼原理將解壓后的糾刪碼數(shù)據(jù)塊重構(gòu)為切分數(shù)據(jù)塊; 步驟7:還原文件,將切分數(shù)據(jù)塊中的數(shù)據(jù)發(fā)送給客戶端,客戶端將其保存到文件中;重復(fù)步驟I到步驟6,直到數(shù)據(jù)塊索引文件中的數(shù)據(jù)處理完畢,最后客戶端將還原的文件呈現(xiàn)給用戶。
全文摘要
重復(fù)數(shù)據(jù)刪除系統(tǒng)及其刪除方法,為分布式架構(gòu),主要由客戶端、管理服務(wù)器和存儲節(jié)點服務(wù)器組成;客戶端主要用于接收用戶保存文件/還原文件請求、切分文件/組合文件;管理服務(wù)器的主要功能有指紋值比對、維護指紋庫、糾刪碼編碼和數(shù)據(jù)壓縮;存儲節(jié)點服務(wù)器主要負責(zé)存儲壓縮后的數(shù)據(jù)塊;客戶端與管理服務(wù)器端、管理服務(wù)器與存儲節(jié)點服務(wù)器端均通過局域網(wǎng)相連。用戶通過客戶端保存和還原文件。本發(fā)明對切分數(shù)據(jù)塊進行糾刪碼編碼和數(shù)據(jù)壓縮,將壓縮后的數(shù)據(jù)塊分散存儲到不同的存儲節(jié)點服務(wù)器,一旦部分存儲節(jié)點發(fā)生故障,可利用剩余存儲節(jié)點中保存的數(shù)據(jù)進行文件還原,不僅提高了重復(fù)數(shù)據(jù)刪除系統(tǒng)的可靠性,而且減少了存儲空間的浪費。
文檔編號G06F17/30GK103177111SQ20131010923
公開日2013年6月26日 申請日期2013年3月29日 優(yōu)先權(quán)日2013年3月29日
發(fā)明者王磊, 任振剛, 黑新宏, 高闊, 費蓉 申請人:西安理工大學(xué)