基于重復(fù)數(shù)據(jù)刪除的共享方法
【專利摘要】本發(fā)明是一種基于重復(fù)數(shù)據(jù)刪除的共享方法,將重復(fù)數(shù)據(jù)刪除技術(shù)和NAS(Network Attached Storage)的共享功能進(jìn)行深度的結(jié)合。本發(fā)明對(duì)存儲(chǔ)的數(shù)據(jù)進(jìn)行分塊,為每個(gè)數(shù)據(jù)塊建立局部索引,局部索引包含根據(jù)數(shù)據(jù)塊指紋指定的數(shù)據(jù)塊的存儲(chǔ)分區(qū)和桶區(qū);當(dāng)NAS接收到客戶端發(fā)送來(lái)的寫(xiě)請(qǐng)求時(shí),對(duì)數(shù)據(jù)塊建立局部索引并存儲(chǔ);當(dāng)NAS接收到客戶端發(fā)送來(lái)的讀請(qǐng)求時(shí),獲取待讀取數(shù)據(jù)塊的指紋,根據(jù)數(shù)據(jù)塊的局部索引,讀取數(shù)據(jù)塊。本發(fā)明方法可以對(duì)windows客戶端、linux客戶端提供例如:nfs/samba(cifs)/ftp等共享方式支持,可有效地將重復(fù)數(shù)據(jù)刪除技術(shù)融合到后端存儲(chǔ)進(jìn)而實(shí)現(xiàn)在線消冗功能。
【專利說(shuō)明】基于重復(fù)數(shù)據(jù)刪除的共享方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于數(shù)據(jù)存儲(chǔ)領(lǐng)域,涉及一種支持重復(fù)數(shù)據(jù)刪除并且在NAS(NetWOrkAttached Storage,網(wǎng)絡(luò)附屬存儲(chǔ))的共享功能中應(yīng)用方法。
【背景技術(shù)】
[0002]互聯(lián)網(wǎng)時(shí)代,是數(shù)據(jù)爆炸增長(zhǎng)的時(shí)代,數(shù)據(jù)存儲(chǔ)的壓力不容小覷,重復(fù)數(shù)據(jù)刪除技術(shù)日趨成熟,應(yīng)用也越來(lái)越廣泛,在各行各業(yè)涉及存儲(chǔ)相關(guān)的行業(yè)領(lǐng)域都發(fā)揮著極大的作用。
[0003]傳統(tǒng)存儲(chǔ)當(dāng)中的NAS應(yīng)用范圍的廣泛不言而喻,為了進(jìn)一步解決前端的存儲(chǔ)壓力,重復(fù)數(shù)據(jù)刪除技術(shù)應(yīng)用面繼續(xù)擴(kuò)大。擁有大量市場(chǎng)的NAS成為了新的發(fā)展方向。
[0004]為了要做到對(duì)于各共享協(xié)議統(tǒng)一支持,將重復(fù)數(shù)據(jù)刪除技術(shù)結(jié)合到透明文件系統(tǒng)內(nèi)部支持POSix (可移植操作系統(tǒng)標(biāo)準(zhǔn)接口 ),來(lái)對(duì)各共享協(xié)議提供共享目錄,進(jìn)而做到統(tǒng)一支持。
[0005]重復(fù)數(shù)據(jù)刪除技術(shù)由于面臨著數(shù)據(jù)更新會(huì)導(dǎo)致數(shù)據(jù)變更較多而引起數(shù)據(jù)安全性問(wèn)題,因而應(yīng)用也僅限于備份、歸檔類的追加寫(xiě)操作相關(guān)的應(yīng)用。
【發(fā)明內(nèi)容】
[0006]為了提升傳統(tǒng)NAS數(shù)據(jù)存儲(chǔ)能力,本發(fā)明提供一種基于重復(fù)數(shù)據(jù)刪除的共享方法,通過(guò)將重復(fù)數(shù)據(jù)刪除技術(shù)融合到各共享協(xié)議內(nèi)部來(lái)實(shí)現(xiàn)存儲(chǔ)能力優(yōu)化的功能,應(yīng)用局部索引,最大限度地將更新所帶來(lái)的附加變更減少甚至避免,從而使系統(tǒng)適用面進(jìn)一步的擴(kuò)大。
[0007]本發(fā)明提供的一種基于重復(fù)數(shù)據(jù)刪除的共享方法,在NAS的重復(fù)數(shù)據(jù)刪除系統(tǒng)中,對(duì)數(shù)據(jù)塊建立局部索引。
[0008]當(dāng)NAS接收到客戶端發(fā)送來(lái)的寫(xiě)請(qǐng)求時(shí),執(zhí)行如下過(guò)程:申請(qǐng)內(nèi)存,對(duì)待寫(xiě)入數(shù)據(jù)分塊并計(jì)算各數(shù)據(jù)塊指紋,對(duì)每個(gè)數(shù)據(jù)塊建立局部索引,存儲(chǔ)數(shù)據(jù)塊的局部索引。一個(gè)數(shù)據(jù)塊的局部索引的存儲(chǔ)位置與該數(shù)據(jù)塊的指紋相關(guān)聯(lián)。
[0009]當(dāng)NAS接收到客戶端發(fā)送來(lái)的讀請(qǐng)求時(shí),執(zhí)行如下過(guò)程:獲取待讀取數(shù)據(jù)塊的指紋,根據(jù)數(shù)據(jù)塊的局部索引,讀取數(shù)據(jù)塊。
[0010]對(duì)數(shù)據(jù)塊建立局部索引的方法是:根據(jù)數(shù)據(jù)塊指紋,確定指紋特征值;根據(jù)指紋特征值為該數(shù)據(jù)塊分配至某個(gè)存儲(chǔ)分區(qū)的桶中存儲(chǔ);最后得到數(shù)據(jù)塊的局部索引,包括數(shù)據(jù)塊指紋、存儲(chǔ)的分區(qū)號(hào)和桶號(hào)。
[0011]所述的指紋特征值,包含8個(gè)字節(jié),其中,前四個(gè)字節(jié)與存儲(chǔ)分區(qū)數(shù)量相除取余,得到的余數(shù)為數(shù)據(jù)塊的存儲(chǔ)分區(qū)號(hào),后四個(gè)字節(jié)與存儲(chǔ)分區(qū)中的桶數(shù)量相除取余,得到的余數(shù)為數(shù)據(jù)塊在該區(qū)存儲(chǔ)的桶號(hào)。
[0012]本發(fā)明的優(yōu)點(diǎn)和積極效果在于:本發(fā)明實(shí)現(xiàn)了重復(fù)數(shù)據(jù)刪除技術(shù)的應(yīng)用領(lǐng)域的擴(kuò)大,實(shí)現(xiàn)了對(duì)傳統(tǒng)存儲(chǔ)NAS的一個(gè)技術(shù)突破,達(dá)到了優(yōu)化存儲(chǔ)設(shè)備的存儲(chǔ)能力的目的;有效提升了存儲(chǔ)介質(zhì)的價(jià)值,降低了用戶的維護(hù)成本,節(jié)約了電能。
【專利附圖】
【附圖說(shuō)明】
[0013]圖1是NAS各共享協(xié)議和重復(fù)數(shù)據(jù)刪除系統(tǒng)部署示意圖;
[0014]圖2是重復(fù)數(shù)據(jù)刪除系統(tǒng)邏輯結(jié)構(gòu)圖;
[0015]圖3是局部索引計(jì)算流程圖;
[0016]圖4是重復(fù)數(shù)據(jù)刪除系統(tǒng)局部索引結(jié)構(gòu)圖。
【具體實(shí)施方式】
[0017]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,下面結(jié)合附圖進(jìn)一步對(duì)本發(fā)明技術(shù)方案進(jìn)行詳細(xì)說(shuō)明。
[0018]本發(fā)明基于重復(fù)數(shù)據(jù)刪除的共享方法,能夠支持多種共享協(xié)議(NFS/SAMBA/FTP),在分析當(dāng)前主流重復(fù)數(shù)據(jù)刪除方法基礎(chǔ)上,實(shí)現(xiàn)采用變長(zhǎng)、定長(zhǎng)結(jié)合局部索引的方式,同時(shí)提供了標(biāo)準(zhǔn)的POSix接口對(duì)多種共享協(xié)議達(dá)到了無(wú)縫支持。本發(fā)明方法解決了支持在線刪除、更新等重復(fù)數(shù)據(jù)刪除技術(shù)的難點(diǎn),通過(guò)多級(jí)局部索引實(shí)現(xiàn)了數(shù)據(jù)更新簡(jiǎn)單化,同時(shí)安全性也能夠滿足用戶需求。
[0019]在線數(shù)據(jù)更新,會(huì)導(dǎo)致數(shù)據(jù)變更較多,此時(shí)所接收的數(shù)據(jù)是亂序的,需要將數(shù)據(jù)放入緩存中,將接收到的數(shù)據(jù)按序排列,再?gòu)木彺嬉迫氪疟P中。但是,這種方式會(huì)造成緩存的數(shù)據(jù)量大,而數(shù)據(jù)還不能寫(xiě)入磁盤,此時(shí)可能會(huì)出現(xiàn)數(shù)據(jù)丟失或者亂序,導(dǎo)致數(shù)據(jù)不安全。本發(fā)明方法通過(guò)對(duì)數(shù)據(jù)進(jìn)行分塊,然后在磁盤中設(shè)置分區(qū)分桶,根據(jù)數(shù)據(jù)塊的指紋來(lái)指定數(shù)據(jù)塊存儲(chǔ)的位置,這樣當(dāng)緩存中有部分按序的數(shù)據(jù)時(shí),就可以先將這部分?jǐn)?shù)據(jù)移入磁盤,大大減少了緩存區(qū)的數(shù)據(jù)量。這種通過(guò)分區(qū)分桶的策略再加上對(duì)內(nèi)存閾值設(shè)定就可以做到了對(duì)機(jī)器的內(nèi)存占用的控制,在降低交換分區(qū)使用的同時(shí)也有效提升了系統(tǒng)的性能。隨著內(nèi)存數(shù)據(jù)積壓降低,系統(tǒng)的資源(CPU、內(nèi)存、網(wǎng)絡(luò)、磁盤)分配情況也更加均衡,不會(huì)出現(xiàn)資源占用繁重的情況。同時(shí)也有效的保證了用戶請(qǐng)求響應(yīng)的延時(shí)較低。
[0020]本發(fā)明方法中采用的局部索引是經(jīng)過(guò)一系列計(jì)算和部分持久化信息共同得出的,通過(guò)數(shù)據(jù)塊指紋特征值提取、數(shù)據(jù)分區(qū)、指紋桶分配計(jì)算等一系列計(jì)算得出。局部索引意在將索引全局離散、局部聚集進(jìn)而做到了高效的存取操作。特征值提取意在將指紋分散在各個(gè)數(shù)據(jù)分區(qū)內(nèi),指紋桶分配又是將各分區(qū)的近似或相同指紋聚集在一起,進(jìn)而達(dá)到了全局離散局部聚集的效果。
[0021]圖1給出了整個(gè)方案的部署圖,客戶端I通過(guò)NAS設(shè)備2連接存儲(chǔ)設(shè)備3。其中客戶端I的操作系統(tǒng)為Windows或者Linux。通過(guò)共享協(xié)議NFS/SAMBA (CIFS)/FTP即可在客戶端I訪問(wèn)NAS設(shè)備2提供出來(lái)的共享空間。NAS設(shè)備2內(nèi)部包括NFS協(xié)議支持模塊21、SAMBA (CIFS)協(xié)議支持模塊22、FTP協(xié)議支持模塊23以及重復(fù)數(shù)據(jù)刪除系統(tǒng)24。重復(fù)數(shù)據(jù)刪除系統(tǒng)24為協(xié)議支持模塊21、22、23提供了后臺(tái)重復(fù)數(shù)據(jù)刪除接口。
[0022]為了使重復(fù)數(shù)據(jù)刪除系統(tǒng)做到支持共享協(xié)議NFS/SAMBA (CIFS)/FTP,需要系統(tǒng)遵守POSIX標(biāo)準(zhǔn)協(xié)議,為此將需要實(shí)現(xiàn)一個(gè)標(biāo)準(zhǔn)的Linux下的文件系統(tǒng),同時(shí)具有重復(fù)數(shù)據(jù)刪除功能。圖2給出了重復(fù)數(shù)據(jù)刪除系統(tǒng)的主要流程,整個(gè)系統(tǒng)邏輯處理方面主要是協(xié)議解析處理、讀寫(xiě)請(qǐng)求處理、局部索引計(jì)算等,具體步驟如下:
[0023]步驟201:根據(jù)收到的協(xié)議,分類解析各協(xié)議NFS/SAMBA (CIFS) /FTP,分別轉(zhuǎn)碼標(biāo)識(shí)為內(nèi)部協(xié)議;若接收到寫(xiě)請(qǐng)求,進(jìn)入步驟202執(zhí)行,若接收到讀請(qǐng)求,轉(zhuǎn)步驟205執(zhí)行;
[0024]步驟202:根據(jù)協(xié)議包標(biāo)識(shí)申請(qǐng)內(nèi)存,對(duì)待寫(xiě)入數(shù)據(jù)分塊并計(jì)算各數(shù)據(jù)塊指紋;
[0025]步驟203:根據(jù)指紋計(jì)算各數(shù)據(jù)塊的局部索引;
[0026]步驟204:為步驟203得到各數(shù)據(jù)塊的局部索引分配存儲(chǔ)位置;
[0027]對(duì)于每個(gè)數(shù)據(jù)塊,其局部索引的存儲(chǔ)位置與其指紋是相關(guān)聯(lián)的,例如可將其局部索引的存儲(chǔ)位置附加到該數(shù)據(jù)塊的指紋中;或者根據(jù)指紋利用設(shè)定計(jì)算方法來(lái)確定局部索引位置。
[0028]步驟205:獲取待讀取數(shù)據(jù)塊的指紋,根據(jù)指紋獲取對(duì)應(yīng)局部索引的存儲(chǔ)位置;
[0029]由于數(shù)據(jù)塊的指紋和局部索引的存儲(chǔ)位置是相關(guān)聯(lián)的,根據(jù)指紋可計(jì)算得到局部索引的存儲(chǔ)位置。
[0030]步驟206:根據(jù)步驟205獲取的局部索引的存儲(chǔ)位置,讀取指紋的局部索引;
[0031]步驟207:根據(jù)步驟206讀取到的局部索引讀取該指紋對(duì)應(yīng)的數(shù)據(jù)塊。根據(jù)局部索引獲取數(shù)據(jù)塊的實(shí)際存儲(chǔ)位置、長(zhǎng)度等信息。
[0032]圖3描述了獲取數(shù)據(jù)塊局部索引的方法,具體步驟如下:
[0033]步驟301:獲取數(shù)據(jù)塊的指紋特征值;根據(jù)計(jì)算出的局部索引存儲(chǔ)位置取得指紋信息,并計(jì)算出指紋特征值;本步驟可采用多種方式獲取指紋特征值,例如,最直接的方式取指紋的前8個(gè)字節(jié)作為特征值。
[0034]步驟302:根據(jù)指紋特征值,確定數(shù)據(jù)塊的存儲(chǔ)分區(qū);本步驟可預(yù)設(shè)存儲(chǔ)分區(qū)的指定方式,根據(jù)該方式來(lái)為數(shù)據(jù)塊指定存儲(chǔ)分區(qū)。本發(fā)明實(shí)施例中,根據(jù)指紋特征值中前O?3的4個(gè)字節(jié)與存儲(chǔ)分區(qū)數(shù)量相除取余,得到的余數(shù)為存儲(chǔ)區(qū)號(hào)。
[0035]例如,存儲(chǔ)分區(qū)有8個(gè),分別標(biāo)記為分區(qū)O?7,將數(shù)據(jù)塊指紋特征值前四個(gè)字節(jié)所對(duì)應(yīng)的十進(jìn)制數(shù),與存儲(chǔ)分區(qū)數(shù)量8相除取余,得到的余數(shù)就是該數(shù)據(jù)塊的存儲(chǔ)分區(qū)號(hào)。
[0036]步驟303:根據(jù)存儲(chǔ)分區(qū),確定數(shù)據(jù)塊的桶區(qū);得到存儲(chǔ)分區(qū),根據(jù)指紋特征值中4?7的4個(gè)字節(jié)與桶數(shù)量相除取余,得到的余數(shù)為數(shù)據(jù)塊在該區(qū)存儲(chǔ)的桶號(hào)。
[0037]例如,存儲(chǔ)分區(qū)I中的桶數(shù)量為8,標(biāo)記為桶O?7,將數(shù)據(jù)塊指紋特征值后四個(gè)字節(jié)所對(duì)應(yīng)的十進(jìn)制數(shù),與桶數(shù)量8相除取余,得到的余數(shù)為數(shù)據(jù)塊在該區(qū)存儲(chǔ)的桶號(hào)。
[0038]步驟304:根據(jù)步驟303得出的指紋桶區(qū),得出局部索引;將數(shù)據(jù)塊存儲(chǔ)至對(duì)應(yīng)的存儲(chǔ)分區(qū)的桶區(qū)中。
[0039]從圖4中可以看到重復(fù)數(shù)據(jù)刪除系統(tǒng)局部索引結(jié)構(gòu)是由指紋引導(dǎo)映射而形成的基本機(jī)構(gòu),該機(jī)構(gòu)具有分而聚合的思想。圖4所示示例中,devO?dev5為6個(gè)數(shù)據(jù)分區(qū),每個(gè)數(shù)據(jù)分區(qū)中存儲(chǔ)有若干數(shù)據(jù)塊指紋。該結(jié)構(gòu)既解決了元數(shù)據(jù)的訪問(wèn)瓶頸又解決了重復(fù)數(shù)據(jù)刪除技術(shù)在在線應(yīng)用中所面臨的修改數(shù)據(jù)的問(wèn)題。根據(jù)本發(fā)明提供的方法,可以對(duì)windows客戶端、Iinux客戶端提供例如:nfs/samba(cifs)/ftp等共享方式支持,同時(shí)能夠進(jìn)行在線的數(shù)據(jù)優(yōu)化功能,可有效地將重復(fù)數(shù)據(jù)刪除技術(shù)融合到后端存儲(chǔ)進(jìn)而實(shí)現(xiàn)在線消冗功能。
[0040]應(yīng)該注意到并理解,在不脫離后附的權(quán)利要求所要求的本發(fā)明的精神和范圍的情況下,能夠?qū)ι鲜鲈敿?xì)描述的本發(fā)明做出各種修改和改進(jìn)。因此,要求保護(hù)的技術(shù)方案的范圍不受所給出的任何特定示范教導(dǎo)的限制。
【權(quán)利要求】
1.一種基于重復(fù)數(shù)據(jù)刪除的共享方法,應(yīng)用在網(wǎng)絡(luò)附屬存儲(chǔ)NAS的重復(fù)數(shù)據(jù)刪除系統(tǒng)中,其特征在于, 當(dāng)NAS接收到客戶端發(fā)送來(lái)的寫(xiě)請(qǐng)求時(shí),執(zhí)行如下過(guò)程:申請(qǐng)內(nèi)存,對(duì)待寫(xiě)入數(shù)據(jù)分塊并計(jì)算各數(shù)據(jù)塊指紋,對(duì)每個(gè)數(shù)據(jù)塊建立局部索引,存儲(chǔ)數(shù)據(jù)塊的局部索引;一個(gè)數(shù)據(jù)塊的局部索引的存儲(chǔ)位置與該數(shù)據(jù)塊的指紋相關(guān)聯(lián); 當(dāng)NAS接收到客戶端發(fā)送來(lái)的讀請(qǐng)求時(shí),執(zhí)行如下過(guò)程:獲取待讀取數(shù)據(jù)塊的指紋,根據(jù)數(shù)據(jù)塊的局部索引,讀取數(shù)據(jù)塊; 其中,對(duì)數(shù)據(jù)塊建立局部索引的方法是:根據(jù)數(shù)據(jù)塊指紋,確定指紋特征值;根據(jù)指紋特征值將該數(shù)據(jù)塊分配至某個(gè)存儲(chǔ)分區(qū)的桶中存儲(chǔ);最后得到數(shù)據(jù)塊的局部索引,包括數(shù)據(jù)塊指紋、存儲(chǔ)的分區(qū)號(hào)和桶號(hào)。
2.根據(jù)權(quán)利要求1所述的一種基于重復(fù)數(shù)據(jù)刪除的共享方法,其特征在于,所述的指紋特征值,包含8個(gè)字節(jié),其中,前四個(gè)字節(jié)與存儲(chǔ)分區(qū)數(shù)量相除取余,得到的余數(shù)為數(shù)據(jù)塊的存儲(chǔ)分區(qū)號(hào),后四個(gè)字節(jié)與存儲(chǔ)分區(qū)中的桶數(shù)量相除取余,得到的余數(shù)為數(shù)據(jù)塊在該區(qū)存儲(chǔ)的桶號(hào)。
3.根據(jù)權(quán)利要求1所述的一種基于重復(fù)數(shù)據(jù)刪除的共享方法,其特征在于,所述的數(shù)據(jù)塊的局部索引的存儲(chǔ)位置,添加到數(shù)據(jù)塊的指紋中,當(dāng)?shù)玫綌?shù)據(jù)塊指紋時(shí),也獲取到了局部索引的存儲(chǔ)位置。
【文檔編號(hào)】G06F17/30GK104331525SQ201410717338
【公開(kāi)日】2015年2月4日 申請(qǐng)日期:2014年12月1日 優(yōu)先權(quán)日:2014年12月1日
【發(fā)明者】吳震, 陳訓(xùn)遜, 王洋, 謝銘, 孫憲武, 王博 申請(qǐng)人:國(guó)家計(jì)算機(jī)網(wǎng)絡(luò)與信息安全管理中心, 北京賽思信安技術(shù)有限公司