一種結(jié)合指紋抽樣和減少數(shù)據(jù)碎片的數(shù)據(jù)塊路由方法
【專利摘要】本發(fā)明提出一種結(jié)合指紋抽樣和減少數(shù)據(jù)碎片的用于分布式重復(fù)數(shù)據(jù)刪除系統(tǒng)的數(shù)據(jù)塊路由方法。該方法提出對(duì)數(shù)據(jù)塊指紋進(jìn)行抽樣,對(duì)抽樣后的數(shù)據(jù)塊指紋采用布隆過(guò)濾器快速地查找重復(fù)數(shù)據(jù),估算數(shù)據(jù)重復(fù)率,其采用的路由算法結(jié)合了數(shù)據(jù)的重刪率、數(shù)據(jù)節(jié)點(diǎn)服務(wù)器的碎片量以及存儲(chǔ)空間使用率來(lái)確定路由節(jié)點(diǎn)。與已有的路由方法相比,該方法能提高整個(gè)系統(tǒng)的重刪率,系統(tǒng)的吞吐率以及數(shù)據(jù)恢復(fù)速度。
【專利說(shuō)明】
一種結(jié)合指紋抽樣和減少數(shù)據(jù)碎片的數(shù)據(jù)塊路由方法
技術(shù)領(lǐng)域
[0001]本發(fā)明屬于計(jì)算機(jī)信息存儲(chǔ)技術(shù)領(lǐng)域,具體涉及一種分布式的重復(fù)數(shù)據(jù)刪除系統(tǒng)內(nèi)的,結(jié)合指紋抽樣和減少數(shù)據(jù)碎片的數(shù)據(jù)塊路由方法。
【背景技術(shù)】
[0002]隨著大數(shù)據(jù)時(shí)代的來(lái)臨,數(shù)據(jù)量的爆炸性增長(zhǎng)對(duì)數(shù)據(jù)備份性能的要求越來(lái)越高。現(xiàn)有的單服務(wù)器重復(fù)數(shù)據(jù)刪除備份系統(tǒng)在應(yīng)對(duì)海量數(shù)據(jù)時(shí),能存儲(chǔ)的數(shù)據(jù)量有限,可擴(kuò)展性差,系統(tǒng)的吞吐量低,系統(tǒng)整體性能比較差。采用分布式的重復(fù)數(shù)據(jù)刪除備份系統(tǒng),可以有效解決單服務(wù)器備份系統(tǒng)存在的問(wèn)題。
[0003]分布式重復(fù)數(shù)據(jù)刪除系統(tǒng)中,數(shù)據(jù)路由是實(shí)現(xiàn)全局去重的關(guān)鍵。數(shù)據(jù)路由主要解決數(shù)據(jù)塊如何路由到各個(gè)數(shù)據(jù)節(jié)點(diǎn)服務(wù)器的問(wèn)題。目前分布式重復(fù)數(shù)據(jù)刪除系統(tǒng)的數(shù)據(jù)塊路由算法分為無(wú)狀態(tài)數(shù)據(jù)塊路由算法和有狀態(tài)數(shù)據(jù)塊路由算法。無(wú)狀態(tài)數(shù)據(jù)塊路由算法的本質(zhì)是以分布式哈希表的方式,將數(shù)據(jù)塊路由到各個(gè)數(shù)據(jù)節(jié)點(diǎn)服務(wù)器上。此算法不考慮每個(gè)數(shù)據(jù)節(jié)點(diǎn)已存儲(chǔ)的數(shù)據(jù)塊,即不考慮待路由的數(shù)據(jù)塊與數(shù)據(jù)節(jié)點(diǎn)服務(wù)器上已存儲(chǔ)的數(shù)據(jù)塊是否重復(fù),以及每個(gè)數(shù)據(jù)塊節(jié)點(diǎn)服務(wù)器的有效剩余存儲(chǔ)空間,因此該路由方法能獲得的重刪率比較低;同時(shí)數(shù)據(jù)分布不均勻,數(shù)據(jù)負(fù)載不均衡。為了克服無(wú)狀態(tài)數(shù)據(jù)塊路由的缺點(diǎn),有狀態(tài)數(shù)據(jù)塊路由算法,則根據(jù)各個(gè)數(shù)據(jù)節(jié)點(diǎn)服務(wù)器已存儲(chǔ)的數(shù)據(jù)塊以及對(duì)應(yīng)的存儲(chǔ)空間使用率來(lái)進(jìn)行數(shù)據(jù)路由,能獲得較高的重刪率以及數(shù)據(jù)的均衡存儲(chǔ)。但是目前的有狀態(tài)數(shù)據(jù)路由算法獲得的系統(tǒng)吞吐量較低,當(dāng)面對(duì)TB級(jí)的備份數(shù)據(jù)時(shí),利用布隆過(guò)濾器(Bloom Filter)查找重復(fù)數(shù)據(jù)塊的時(shí)間需要以小時(shí)為單位來(lái)計(jì)算,同時(shí)這兩種路由算法均沒(méi)有考慮各個(gè)數(shù)據(jù)節(jié)點(diǎn)服務(wù)器上的數(shù)據(jù)碎片情況,導(dǎo)致系統(tǒng)的數(shù)據(jù)恢復(fù)性能較差。
[0004]針對(duì)目前分布式重復(fù)數(shù)據(jù)刪除系統(tǒng)中數(shù)據(jù)塊路由算法已存在的問(wèn)題,本發(fā)明提出一種結(jié)合指紋抽樣和減少數(shù)據(jù)碎片的數(shù)據(jù)塊路由方法,該方法對(duì)數(shù)據(jù)塊指紋進(jìn)行抽樣,在每個(gè)數(shù)據(jù)塊節(jié)點(diǎn)服務(wù)器上對(duì)抽樣后的數(shù)據(jù)塊指紋采用布隆過(guò)濾器快速查找重復(fù)數(shù)據(jù),得到數(shù)據(jù)重復(fù)率,同時(shí)結(jié)合每個(gè)數(shù)據(jù)塊節(jié)點(diǎn)服務(wù)器的存儲(chǔ)空間使用率和數(shù)據(jù)碎片來(lái)確定路由節(jié)點(diǎn)。與已有的路由算法相比,該算法能提高整個(gè)系統(tǒng)的重刪率,系統(tǒng)吞吐率以及數(shù)據(jù)恢復(fù)速度。
【發(fā)明內(nèi)容】
[0005]本發(fā)明提出一種結(jié)合指紋抽樣和減少數(shù)據(jù)碎片的用于分布式重復(fù)數(shù)據(jù)刪除系統(tǒng)的數(shù)據(jù)塊路由方法。該方法提出對(duì)數(shù)據(jù)塊指紋進(jìn)行抽樣,對(duì)抽樣后的數(shù)據(jù)塊指紋采用布隆過(guò)濾器快速地查找重復(fù)數(shù)據(jù),估算數(shù)據(jù)重復(fù)率,其采用的路由算法結(jié)合了數(shù)據(jù)的重刪率、數(shù)據(jù)節(jié)點(diǎn)服務(wù)器的碎片量以及存儲(chǔ)空間使用率來(lái)確定路由節(jié)點(diǎn)。與已有的路由方法相比,該方法能提高整個(gè)系統(tǒng)的重刪率,系統(tǒng)的吞吐率以及數(shù)據(jù)恢復(fù)速度。
[0006]本發(fā)明涉及到客戶端和數(shù)據(jù)節(jié)點(diǎn)服務(wù)器??蛻舳税讣y處理模塊;數(shù)據(jù)節(jié)點(diǎn)服務(wù)器包含布隆過(guò)濾器查找模塊、碎片查找模塊、去重模塊。數(shù)據(jù)節(jié)點(diǎn)服務(wù)器維護(hù)了布隆過(guò)濾器、數(shù)據(jù)指紋索引表。
[0007]指紋處理模塊:使用數(shù)據(jù)塊變長(zhǎng)算法對(duì)備份數(shù)據(jù)流進(jìn)行分塊,得到一定平均長(zhǎng)度(如平均長(zhǎng)度4KB)的數(shù)據(jù)塊,使用哈希算法(如SHA-1哈希算法)對(duì)每個(gè)數(shù)據(jù)塊計(jì)算指紋,按照備份數(shù)據(jù)流中數(shù)據(jù)塊出現(xiàn)的順序,指紋處理模塊將連續(xù)數(shù)據(jù)塊依次合并為較大的塊,生成一定平均長(zhǎng)度(如平均長(zhǎng)度為1MB)的合并塊,將合并塊對(duì)應(yīng)的指紋按固定的采樣率(如I/2B)進(jìn)行等距采樣,將采樣后的指紋發(fā)送給數(shù)據(jù)節(jié)點(diǎn)服務(wù)器。
[0008]布隆過(guò)濾器查找模塊:布隆過(guò)濾器是由一個(gè)很長(zhǎng)的二進(jìn)制向量和一系列隨機(jī)映射函數(shù)組成,是一種空間效率很高的隨機(jī)數(shù)據(jù)結(jié)構(gòu),它利用位數(shù)組簡(jiǎn)潔地表示一個(gè)集合,并能判斷一個(gè)元素是否屬于這個(gè)集合,在每個(gè)數(shù)據(jù)節(jié)點(diǎn)服務(wù)器上,已存儲(chǔ)的數(shù)據(jù)塊的指紋全部映射到布隆過(guò)濾器結(jié)構(gòu)中。對(duì)于客戶端發(fā)送的數(shù)據(jù)塊指紋,布隆過(guò)濾器查找模塊在布隆過(guò)濾器中查找是否存在相同的數(shù)據(jù)塊指紋,得到相同數(shù)據(jù)塊指紋的數(shù)量,即重復(fù)數(shù)據(jù)塊指紋的數(shù)量。并計(jì)算指紋重復(fù)率Dn(即指紋序列中重復(fù)的指紋數(shù)量與指紋序列所有的指紋數(shù)量的比值)和數(shù)據(jù)節(jié)點(diǎn)服務(wù)器的存儲(chǔ)空間使用率Un(即數(shù)據(jù)節(jié)點(diǎn)服務(wù)器已使用的存儲(chǔ)空間和節(jié)點(diǎn)最大可使用的存儲(chǔ)空間的比值)的比值Rn,Rn = Dn/Un,將得到的Rn值發(fā)送給客戶端。
[0009]碎片查找模塊:數(shù)據(jù)在備份時(shí),刪除重復(fù)數(shù)據(jù)塊后使邏輯上連續(xù)的數(shù)據(jù)塊在物理地址上不連續(xù),導(dǎo)致數(shù)據(jù)恢復(fù)時(shí),需要多次的磁盤(pán)隨機(jī)讀取操作和磁盤(pán)尋道操作,數(shù)據(jù)恢復(fù)性能很低。這些邏輯上連續(xù)但是物理地址上不連續(xù)的數(shù)據(jù)塊被稱為碎片。碎片查找模塊即在數(shù)據(jù)節(jié)點(diǎn)服務(wù)器上查找對(duì)應(yīng)的碎片數(shù)量,并將查找結(jié)果返回給客戶端。
[0010]去重模塊:去重模塊對(duì)接收的指紋在數(shù)據(jù)指紋索引表(數(shù)據(jù)指紋索引表維護(hù)數(shù)據(jù)節(jié)點(diǎn)服務(wù)器的全部指紋、對(duì)應(yīng)的數(shù)據(jù)塊存儲(chǔ)地址和數(shù)據(jù)塊引數(shù))中查找是否存在重復(fù)的數(shù)據(jù)塊指紋,若存在,則刪除指紋對(duì)應(yīng)的數(shù)據(jù)塊,更新數(shù)據(jù)指紋索引表的塊引用數(shù);若不存在,則向客戶端索取對(duì)應(yīng)的數(shù)據(jù)塊,將對(duì)應(yīng)的數(shù)據(jù)塊存放在數(shù)據(jù)節(jié)點(diǎn)服務(wù)器的數(shù)據(jù)區(qū)域,并將該數(shù)據(jù)塊的指紋,存儲(chǔ)地址,以及塊引用數(shù)添加至數(shù)據(jù)指紋索引表中。
[0011 ]分布式重復(fù)數(shù)據(jù)刪除系統(tǒng)備份的主要流程為:
[0012](I)客戶端接收用戶需要備份的數(shù)據(jù)流。
[0013](2)客戶端的指紋處理模塊對(duì)接收到的數(shù)據(jù)流進(jìn)行預(yù)處理,具體步驟為:
[00M] (2.1)指紋處理模塊使用數(shù)據(jù)塊變長(zhǎng)算法(如Rabin Fingerprint)對(duì)備份數(shù)據(jù)流進(jìn)行分塊,得到一定平均長(zhǎng)度(如平均長(zhǎng)度4KB)的數(shù)據(jù)塊;指紋處理模塊使用哈希算法(SHA-1)計(jì)算每個(gè)數(shù)據(jù)塊的指紋。
[0015](2.2)按照備份數(shù)據(jù)流中數(shù)據(jù)塊出現(xiàn)的順序,指紋處理模塊將連續(xù)的數(shù)據(jù)塊依次合并為較大的塊,生成一定平均長(zhǎng)度(如平均長(zhǎng)度1MB)的合并塊。
[0016](2.3)將合并塊對(duì)應(yīng)的指紋序列,按固定的采樣率(如1/2B)進(jìn)行等距抽樣,生成新的指紋序列,將新的指紋序列發(fā)送給各個(gè)數(shù)據(jù)節(jié)點(diǎn)服務(wù)器。
[0017](3)數(shù)據(jù)節(jié)點(diǎn)服務(wù)器接收指紋序列,數(shù)據(jù)節(jié)點(diǎn)服務(wù)器的布隆過(guò)濾器查找模塊和碎片查找模塊對(duì)接收到的指紋序列進(jìn)行處理并確定最終路由的數(shù)據(jù)節(jié)點(diǎn)服務(wù)器,具體步驟為:
[0018](3.1)數(shù)據(jù)節(jié)點(diǎn)服務(wù)器的布隆過(guò)濾器查找模塊對(duì)接收到的指紋序列進(jìn)行布隆過(guò)濾器查詢,得到重復(fù)數(shù)據(jù)塊指紋的數(shù)量,并計(jì)算指紋重復(fù)率Dn(即指紋序列中重復(fù)的指紋數(shù)量與指紋序列所有的指紋數(shù)量的比值),存儲(chǔ)空間使用率Un (即數(shù)據(jù)節(jié)點(diǎn)服務(wù)器已使用的存儲(chǔ)大小和節(jié)點(diǎn)最大存儲(chǔ)空間大小的比值),以及重復(fù)率Dn和存儲(chǔ)空間使用率Un的比值Rn,Rn= Dn/Un,數(shù)據(jù)節(jié)點(diǎn)服務(wù)器將得到的Rn值發(fā)送給客戶端。
[0019](3.2)客戶端接收每個(gè)數(shù)據(jù)節(jié)點(diǎn)服務(wù)器的Rn值,將步驟(2.2)中得到的合并塊的所有指紋發(fā)送給Rn值最高的K個(gè)數(shù)據(jù)節(jié)點(diǎn)服務(wù)器。
[0020](3.3)數(shù)據(jù)節(jié)點(diǎn)服務(wù)器接收到客戶端發(fā)送的所有數(shù)據(jù)塊指紋之后,采用碎片查找模塊進(jìn)行數(shù)據(jù)碎片的查找,并將對(duì)應(yīng)的數(shù)據(jù)碎片量返回給客戶端。
[0021](3.4)客戶端接收到步驟(3.3)所述的K個(gè)數(shù)據(jù)節(jié)點(diǎn)服務(wù)器的碎片量之后,選擇碎片量最少的一個(gè)數(shù)據(jù)節(jié)點(diǎn)服務(wù)器,作為最終路由的數(shù)據(jù)節(jié)點(diǎn)服務(wù)器。
[0022](4)客戶端將步驟(2.2)中得到的合并塊的所有數(shù)據(jù)塊指紋序列,發(fā)送給步驟
(3.4)得出的數(shù)據(jù)節(jié)點(diǎn)服務(wù)器,去重模塊對(duì)接收的指紋在數(shù)據(jù)指紋索引表中查找是否存在重復(fù)的數(shù)據(jù)塊指紋,若存在,則僅更新數(shù)據(jù)指紋索引表的塊引用數(shù);若不存在,則向客戶端索取對(duì)應(yīng)的數(shù)據(jù)塊,將對(duì)應(yīng)的數(shù)據(jù)塊存放在數(shù)據(jù)節(jié)點(diǎn)服務(wù)器的數(shù)據(jù)區(qū)域,并將該數(shù)據(jù)塊的指紋,存儲(chǔ)地址,以及塊引用數(shù)添加至數(shù)據(jù)指紋索引表中。
[0023]本發(fā)明具有如下的特點(diǎn):
[0024](I)客戶端的指紋處理模塊對(duì)用戶數(shù)據(jù)處理時(shí),進(jìn)行了數(shù)據(jù)塊的合并和指紋的抽樣處理。由于數(shù)據(jù)節(jié)點(diǎn)服務(wù)器只對(duì)從客戶端發(fā)來(lái)的部分指紋采用布隆過(guò)濾器進(jìn)行查詢,因此提升了系統(tǒng)的吞吐量,避免指紋查詢所需的計(jì)算和內(nèi)存瓶頸。
[0025](2)在確定數(shù)據(jù)塊路由節(jié)點(diǎn)時(shí),本發(fā)明優(yōu)先考慮重刪率,但同時(shí)也考慮到了各個(gè)節(jié)點(diǎn)的存儲(chǔ)空間利用率和磁盤(pán)碎片情況,使系統(tǒng)在獲得較高的重刪率的同時(shí),能進(jìn)行負(fù)載均衡以及獲得較好的數(shù)據(jù)恢復(fù)性能。
【附圖說(shuō)明】
[0026]圖1為本分布式重復(fù)數(shù)據(jù)刪除系統(tǒng)的模塊結(jié)構(gòu)示意圖;
[0027]圖2為本分布式重復(fù)數(shù)據(jù)刪除系統(tǒng)備份的流程示意圖;
【具體實(shí)施方式】
[0028]本發(fā)明涉及的主體有客戶端,數(shù)據(jù)節(jié)點(diǎn)服務(wù)器。客戶端為備份數(shù)據(jù)流的接收方,數(shù)據(jù)節(jié)點(diǎn)服務(wù)器用來(lái)存儲(chǔ)備份數(shù)據(jù)流的所有數(shù)據(jù)塊。
[0029]圖1為本分布式重復(fù)數(shù)據(jù)刪除系統(tǒng)的結(jié)構(gòu)示意圖。分布式重復(fù)數(shù)據(jù)刪除系統(tǒng)包括客戶端100、數(shù)據(jù)節(jié)點(diǎn)服務(wù)器200;客戶端100的模塊為指紋處理模塊110,數(shù)據(jù)節(jié)點(diǎn)服務(wù)器200的模塊為布隆過(guò)濾器查找模塊210、碎片查找模塊220、去重模塊230。數(shù)據(jù)節(jié)點(diǎn)服務(wù)器200維護(hù)了布隆過(guò)濾器、數(shù)據(jù)指紋索引表。指紋處理模塊110:使用數(shù)據(jù)塊變長(zhǎng)算法對(duì)備份數(shù)據(jù)流進(jìn)行分塊,得到一定平均長(zhǎng)度(如平均長(zhǎng)度4KB)的數(shù)據(jù)塊,使用哈希算法(如SHA-1哈希算法)對(duì)每個(gè)數(shù)據(jù)塊計(jì)算指紋,按照備份數(shù)據(jù)流中數(shù)據(jù)塊出現(xiàn)的順序,指紋處理模塊110將連續(xù)數(shù)據(jù)塊依次合并為較大的塊,生成一定平均長(zhǎng)度(如平均長(zhǎng)度為1MB)的合并塊,將合并塊對(duì)應(yīng)的指紋按固定的采樣率(如1/2B)進(jìn)行等距采樣,生成新的指紋序列,將新的指紋序列發(fā)送給數(shù)據(jù)節(jié)點(diǎn)服務(wù)器200。布隆過(guò)濾器查找模塊210:布隆過(guò)濾器是由一個(gè)很長(zhǎng)的二進(jìn)制向量和一系列隨機(jī)映射函數(shù)組成,是一種空間效率很高的隨機(jī)數(shù)據(jù)結(jié)構(gòu),它利用位數(shù)組簡(jiǎn)潔地表示一個(gè)集合,并能判斷一個(gè)元素是否屬于這個(gè)集合,在每個(gè)數(shù)據(jù)節(jié)點(diǎn)服務(wù)器上,已存儲(chǔ)的數(shù)據(jù)塊的指紋全部映射到布隆過(guò)濾器結(jié)構(gòu)中。對(duì)于客戶端發(fā)送的數(shù)據(jù)塊指紋,布隆過(guò)濾器查找模塊210在布隆過(guò)濾器中查找是否存在相同的數(shù)據(jù)塊指紋,得到相同數(shù)據(jù)塊指紋的數(shù)量,即重復(fù)數(shù)據(jù)塊指紋的數(shù)量。并計(jì)算指紋重復(fù)率Dn(即指紋序列中重復(fù)的指紋數(shù)量與指紋序列所有的指紋數(shù)量的比值)和數(shù)據(jù)節(jié)點(diǎn)服務(wù)器200的存儲(chǔ)空間使用率Un(即數(shù)據(jù)節(jié)點(diǎn)服務(wù)器已使用的存儲(chǔ)空間和節(jié)點(diǎn)最大可使用的存儲(chǔ)空間的比值)的比值RN,RN = Dn/Un,數(shù)據(jù)節(jié)點(diǎn)服務(wù)器200將得到的Rn值發(fā)送給客戶端100。碎片查找模塊220:數(shù)據(jù)在備份時(shí),刪除重復(fù)數(shù)據(jù)塊后使邏輯上連續(xù)的數(shù)據(jù)塊在物理地址上不連續(xù),導(dǎo)致數(shù)據(jù)恢復(fù)時(shí),需要多次的磁盤(pán)隨機(jī)讀取操作和磁盤(pán)尋道操作,數(shù)據(jù)恢復(fù)性能很低。這些邏輯上連續(xù)但是物理地址上不連續(xù)的數(shù)據(jù)塊被稱為碎片。碎片查找模塊220即在數(shù)據(jù)節(jié)點(diǎn)服務(wù)器上查找對(duì)應(yīng)的碎片數(shù)量,并將查找結(jié)果返回給客戶端。去重模塊230:去重模塊230對(duì)接收的指紋在數(shù)據(jù)指紋索引表(數(shù)據(jù)指紋索引表維護(hù)數(shù)據(jù)節(jié)點(diǎn)服務(wù)器200的全部指紋、對(duì)應(yīng)的數(shù)據(jù)塊存儲(chǔ)地址和數(shù)據(jù)塊引數(shù))中查找是否存在重復(fù)的數(shù)據(jù)塊指紋,若存在,則刪除指紋對(duì)應(yīng)的數(shù)據(jù)塊,更新數(shù)據(jù)指紋索引表的塊引用數(shù);若不存在,則向客戶端索取對(duì)應(yīng)的數(shù)據(jù)塊,將對(duì)應(yīng)的數(shù)據(jù)塊存放在數(shù)據(jù)節(jié)點(diǎn)服務(wù)器的數(shù)據(jù)區(qū)域,并將該數(shù)據(jù)塊的指紋,存儲(chǔ)地址,以及塊引用數(shù)添加至數(shù)據(jù)指紋索引表中。
[0030]圖2為本發(fā)明中數(shù)據(jù)備份的流程示意圖,具體為
[0031](I)客戶端100接收用戶需要備份的數(shù)據(jù)流。
[0032](2)客戶端100的指紋處理模塊110對(duì)接收到的數(shù)據(jù)流進(jìn)行預(yù)處理,具體步驟為:
[0033](2.1)指紋處理模塊110使用數(shù)據(jù)塊變長(zhǎng)算法(如Rabin Fingerprint)對(duì)備份數(shù)據(jù)流進(jìn)行分塊,得到一定平均長(zhǎng)度(如平均長(zhǎng)度4KB)的數(shù)據(jù)塊;指紋處理模塊110使用哈希算法(SHA-1)計(jì)算每個(gè)數(shù)據(jù)塊的指紋。
[0034](2.2)按照備份數(shù)據(jù)流中數(shù)據(jù)塊出現(xiàn)的順序,指紋處理模塊110將連續(xù)的數(shù)據(jù)塊依次合并為較大的塊,生成一定平均長(zhǎng)度(如平均長(zhǎng)度1MB)的合并塊。
[0035](2.3)將合并塊對(duì)應(yīng)的指紋序列,按固定的采樣率(如1/2B)進(jìn)行等距抽樣,生成新的指紋序列,將新的指紋序列發(fā)送給各個(gè)數(shù)據(jù)節(jié)點(diǎn)服務(wù)器。
[0036](3)數(shù)據(jù)節(jié)點(diǎn)服務(wù)器200接收指紋序列,數(shù)據(jù)節(jié)點(diǎn)服務(wù)器200的布隆過(guò)濾器查找模塊210和碎片查找模塊220對(duì)接收到的指紋序列進(jìn)行處理并確定最終路由的數(shù)據(jù)節(jié)點(diǎn)服務(wù)器,具體步驟為:
[0037](3.1)數(shù)據(jù)節(jié)點(diǎn)服務(wù)器200的布隆過(guò)濾器查找模塊210對(duì)接收到的指紋序列進(jìn)行布隆過(guò)濾器查詢,得到重復(fù)數(shù)據(jù)塊指紋的數(shù)量,并計(jì)算指紋重復(fù)率Dn(即指紋序列中重復(fù)的指紋數(shù)量與指紋序列所有的指紋數(shù)量的比值),存儲(chǔ)空間使用率Un(即數(shù)據(jù)節(jié)點(diǎn)服務(wù)器200已使用的存儲(chǔ)大小和節(jié)點(diǎn)最大存儲(chǔ)空間大小的比值),以及重復(fù)率Dn和存儲(chǔ)空間使用率Un的比值Rn,Rn = Dn/Un,數(shù)據(jù)節(jié)點(diǎn)服務(wù)器200將得到的Rn值發(fā)送給客戶端。
[0038](3.2)客戶端100接收每個(gè)數(shù)據(jù)節(jié)點(diǎn)服務(wù)器200的Rn值,將步驟(2.2)中得到的合并塊的所有指紋發(fā)送給Rn值最高的K個(gè)數(shù)據(jù)節(jié)點(diǎn)服務(wù)器200。
[0039](3.3)數(shù)據(jù)節(jié)點(diǎn)服務(wù)器200接收到客戶端100發(fā)送的所有數(shù)據(jù)塊指紋之后,采用碎片查找模塊220進(jìn)行數(shù)據(jù)碎片的查找,并將對(duì)應(yīng)的數(shù)據(jù)碎片量返回給客戶端100。
[0040](3.4)客戶端100接收到步驟(3.3)所述的K個(gè)數(shù)據(jù)節(jié)點(diǎn)服務(wù)器200的碎片量之后,選擇碎片量最少的一個(gè)數(shù)據(jù)節(jié)點(diǎn)服務(wù)器200,作為最終路由的數(shù)據(jù)節(jié)點(diǎn)服務(wù)器200。
[0041](4)客戶端將步驟(2.2)中得到的合并塊的所有數(shù)據(jù)塊指紋序列,發(fā)送給步驟
(3.4)得出的數(shù)據(jù)節(jié)點(diǎn)服務(wù)器,去重模塊230對(duì)接收的指紋在數(shù)據(jù)指紋索引表中查找是否存在重復(fù)的數(shù)據(jù)塊指紋,若存在,則僅更新數(shù)據(jù)指紋索引表的塊引用數(shù);若不存在,則將向客戶端索取對(duì)應(yīng)的數(shù)據(jù)塊,將對(duì)應(yīng)的數(shù)據(jù)塊存放在數(shù)據(jù)節(jié)點(diǎn)服務(wù)器的數(shù)據(jù)區(qū)域,并將該數(shù)據(jù)塊的指紋,存儲(chǔ)地址,以及塊引用數(shù)添加至數(shù)據(jù)指紋索引表中。
【主權(quán)項(xiàng)】
1.本發(fā)明提出一種結(jié)合指紋抽樣和減少數(shù)據(jù)碎片的用于分布式重復(fù)數(shù)據(jù)刪除系統(tǒng)的數(shù)據(jù)塊路由方法,具體為: (1)客戶端接收用戶需要備份的數(shù)據(jù)流。 (2)客戶端對(duì)接收到的數(shù)據(jù)流進(jìn)行預(yù)處理,具體步驟為: (2.1)使用數(shù)據(jù)塊變長(zhǎng)算法(如RabinFingerprint)對(duì)備份數(shù)據(jù)流進(jìn)行分塊,得到一定平均長(zhǎng)度(如平均長(zhǎng)度4KB)的數(shù)據(jù)塊,并使用哈希算法(SHA-1)計(jì)算每個(gè)數(shù)據(jù)塊的指紋。 (2.2)按照備份數(shù)據(jù)流中數(shù)據(jù)塊出現(xiàn)的順序,將連續(xù)的數(shù)據(jù)塊依次合并為較大的塊,生成一定平均長(zhǎng)度(如平均長(zhǎng)度1MB)的合并塊。 (2.3)將合并塊對(duì)應(yīng)的指紋序列,按固定的采樣率(如1/2B)進(jìn)行等距抽樣,生成新的指紋序列,將新的指紋序列發(fā)送給各個(gè)數(shù)據(jù)節(jié)點(diǎn)服務(wù)器。 (3)數(shù)據(jù)節(jié)點(diǎn)服務(wù)器對(duì)接收到的指紋序列進(jìn)行處理并確定最終路由的數(shù)據(jù)節(jié)點(diǎn)服務(wù)器,具體步驟為: (3.1)數(shù)據(jù)節(jié)點(diǎn)服務(wù)器對(duì)接收到的指紋序列進(jìn)行布隆過(guò)濾器查詢,得到重復(fù)數(shù)據(jù)塊指紋的數(shù)量,并計(jì)算指紋重復(fù)率Dn(即指紋序列中重復(fù)的指紋數(shù)量與指紋序列所有的指紋數(shù)量的比值),存儲(chǔ)空間使用率Un(即數(shù)據(jù)節(jié)點(diǎn)服務(wù)器已使用的存儲(chǔ)大小和節(jié)點(diǎn)最大存儲(chǔ)空間大小的比值),以及重復(fù)率Dn和存儲(chǔ)空間使用率Un的比值Rn,Rn = Dn/Un,數(shù)據(jù)節(jié)點(diǎn)服務(wù)器將得到的Rn值發(fā)送給客戶端。 (3.2)客戶端接收每個(gè)數(shù)據(jù)節(jié)點(diǎn)服務(wù)器的Rn值,將步驟(2.2)中得到的合并塊的所有指紋發(fā)送給Rn值最高的K個(gè)數(shù)據(jù)節(jié)點(diǎn)服務(wù)器。 (3.3)數(shù)據(jù)節(jié)點(diǎn)服務(wù)器接收到客戶端發(fā)送的所有數(shù)據(jù)塊指紋之后,查找這些數(shù)據(jù)塊對(duì)應(yīng)的數(shù)據(jù)碎片,并將數(shù)據(jù)碎片量返回給客戶端。 (3.4)客戶端接收到對(duì)應(yīng)的數(shù)據(jù)碎片量之后,選擇碎片量最少的一個(gè)數(shù)據(jù)節(jié)點(diǎn)服務(wù)器,作為最終路由的數(shù)據(jù)節(jié)點(diǎn)服務(wù)器。 (4)客戶端將步驟(2.2)中得到的合并塊的所有數(shù)據(jù)塊指紋序列,發(fā)送給步驟(3.4)得出的數(shù)據(jù)節(jié)點(diǎn)服務(wù)器,對(duì)應(yīng)的數(shù)據(jù)節(jié)點(diǎn)服務(wù)器在數(shù)據(jù)指紋索引表中查找是否存在重復(fù)的數(shù)據(jù)塊指紋,若存在,則僅更新數(shù)據(jù)指紋索引表的塊引用數(shù);若不存在,則向客戶端索取對(duì)應(yīng)的數(shù)據(jù)塊,將對(duì)應(yīng)的數(shù)據(jù)塊存放在數(shù)據(jù)節(jié)點(diǎn)服務(wù)器的數(shù)據(jù)區(qū)域,并將該數(shù)據(jù)塊的指紋,存儲(chǔ)地址,以及塊引用數(shù)添加至數(shù)據(jù)指紋索引表中。
【文檔編號(hào)】H04L29/08GK105897921SQ201610368325
【公開(kāi)日】2016年8月24日
【申請(qǐng)日】2016年5月27日
【發(fā)明人】譚玉娟, 王奏鳴, 晏志超
【申請(qǐng)人】重慶大學(xué)