两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

適用于工作負(fù)載保護系統(tǒng)的重復(fù)數(shù)據(jù)刪除方法

文檔序號:6422928閱讀:212來源:國知局
專利名稱:適用于工作負(fù)載保護系統(tǒng)的重復(fù)數(shù)據(jù)刪除方法
技術(shù)領(lǐng)域
本發(fā)明涉及重復(fù)數(shù)據(jù)刪除方法,尤其涉及適用于工作負(fù)載保護系統(tǒng)的重復(fù)數(shù)據(jù)刪除方法。
背景技術(shù)
現(xiàn)有的重復(fù)數(shù)據(jù)刪除方法的刪除速度慢,影響了工作效率。

發(fā)明內(nèi)容
為了解決現(xiàn)有技術(shù)中重復(fù)數(shù)據(jù)刪慢的問題,本發(fā)明提供了一種適用于工作負(fù)載保護系統(tǒng)的重復(fù)數(shù)據(jù)刪除方法。本發(fā)明提供了一種適用于工作負(fù)載保護系統(tǒng)的重復(fù)數(shù)據(jù)刪除方法,包括如下步驟
A 對所有已存儲文件進行預(yù)處理,并建立數(shù)據(jù)結(jié)構(gòu); B 通過預(yù)處理數(shù)據(jù)結(jié)構(gòu)實現(xiàn)待存儲文件與已存儲文件進行匹配; C 判斷待存儲文件是否為重復(fù)數(shù)據(jù),如果待存儲文件是重復(fù)數(shù)據(jù),那么不必將待存儲文件保存至備份系統(tǒng),如果待存儲文件不是重復(fù)數(shù)據(jù),那么將待存儲文件保存至備份系統(tǒng)中。作為本發(fā)明的進一步改進,在所述步驟A中還包括如下步驟
Al.對已存儲文件中的字符串進行抽取,將抽取的字符串組成布爾表達式,且每個已存儲文件均對應(yīng)一個布爾表達式,所有的布爾表達式組成布爾表達式集合; A2.將所有布爾表達式所包括的字符串進行提取組成字符串集合; A3.根據(jù)布爾表達式集合和字符串集合構(gòu)建數(shù)據(jù)結(jié)構(gòu)。作為本發(fā)明的進一步改進,在所述步驟A3中包括如下步驟
A31.構(gòu)建布爾表達式集合中的布爾表達式與字符串集合中的字符串的關(guān)聯(lián)關(guān)系; A32.根據(jù)布爾表達式集合及字符串集合確定跳躍表及哈希表大小,并構(gòu)建入口哈希函數(shù)hi和h2;
A33.根據(jù)字符串集合構(gòu)建跳躍表,并確定跳躍表的跳躍距離; A34.根據(jù)字符串集合構(gòu)建哈希表;
A35.為每個布爾表達式構(gòu)建計數(shù)器,并將計數(shù)器初始化為零。作為本發(fā)明的進一步改進,在所述步驟B中包括如下步驟 Bi.讀取待存儲文件的首個等長字節(jié);
B2.判斷待存儲文件的全部字節(jié)是否讀取完畢,如果未讀取完畢那么執(zhí)行B3步驟,如果讀取完畢那么執(zhí)行Cl步驟;
B3.那么根據(jù)入口哈希函數(shù)hl,計算跳躍表入口地址,找到跳躍表對應(yīng)項;
B4.判斷跳躍值是否為0,如果不為0那么執(zhí)行步驟B5,如果為0那么執(zhí)行步驟B6 ;
B5.該步驟包括如下步驟B51.跳躍對應(yīng)值;
B52.讀取待存儲文件的下一個等長字節(jié); B53.執(zhí)行B2步驟; B6.根據(jù)入口哈希函數(shù)h2,計算哈希入口地址;
B7.判斷是否鏈接字符串,如果無鏈接,那么執(zhí)行B52步驟和B53步驟,如果有鏈接,那么執(zhí)行B8步驟;
B8.找到全部哈希表鏈接字符串,判斷是否匹配;
B9.判斷是否匹配,如果匹配,那么執(zhí)行BlO步驟,如果不匹配,那么執(zhí)行B52步驟和 B53步驟;
B10.逐個處理匹配字符串;
Bll.判斷是否第一次匹配,如果是第一次匹配,那么執(zhí)行B12步驟,如果不是第一次匹配,那么執(zhí)行BlO步驟;
B12.包含此字符串的布爾表達式的計數(shù)器加1 ; B13.執(zhí)行B52步驟和B53步驟。作為本發(fā)明的進一步改進,所以步驟C包括如下步驟
Cl.根據(jù)布爾表達式包含的字符串個數(shù)及布爾表達式的計數(shù)器值,得出匹配布爾表達式集合;
C2.判斷是否有匹配,如果有匹配,那么執(zhí)行C3步驟,如果無匹配,那么該待存儲文件是新文件,將待存儲文件存儲至備份系統(tǒng)中;
C3.判斷匹配布爾表達式集合是否處理完,如果全部處理完,那么該待存儲文件是新文件,將待存儲文件存儲至備份系統(tǒng)中,如果未處理完,那么執(zhí)行C4步驟; C4.找到該條布爾表達式代表的已存儲文件;
C5,判斷文件大小是否一致,如果一致,那么執(zhí)行C6步驟,如果不一致,那么執(zhí)行C3步
驟;
C6.判斷文件內(nèi)容是否一致,如果一致,那行執(zhí)行C7步驟,如果不一致,那么執(zhí)行C3步
驟;
C7.該待存儲文件與備份系統(tǒng)中某文件屬于重復(fù)數(shù)據(jù),不保存該待存儲文件。作為本發(fā)明的進一步改進,在所述步驟Al中,根據(jù)每個已存儲文件大小,從每個已存儲文件中抽取5至15段等長字符串。作為本發(fā)明的進一步改進,在所述步驟Al中,從每個已存儲文件的開頭、中間、結(jié)尾的隨機位置分別抽取32字節(jié)長的字符串。本發(fā)明的有益效果是本發(fā)明的方法通過對全部已存儲文件進行預(yù)處理構(gòu)建數(shù)據(jù)結(jié)構(gòu),基于此對待存儲文件與經(jīng)預(yù)處理的已存儲文件進行匹配,然后判斷待存儲文件是否為重復(fù)數(shù)據(jù),如果待存儲文件是重復(fù)數(shù)據(jù),那么不必將待存儲文件保存至備份系統(tǒng),如果待存儲文件不是重復(fù)數(shù)據(jù),那么將待存儲文件保存至備份系統(tǒng)中,可以對數(shù)十萬級規(guī)模的文件進行并發(fā)比較處理,提高了重復(fù)數(shù)據(jù)判斷速度速度,提高了系統(tǒng)保護工作效率。


圖1是本發(fā)明的方法流程圖。
圖2是本發(fā)明的一實施例的流程圖。圖3是本發(fā)明的另一實施例的流程圖。圖4是本發(fā)明的又一實施例的流程圖。
具體實施例方式如圖1所示,本發(fā)明公開了一種適用于工作負(fù)載保護系統(tǒng)的重復(fù)數(shù)據(jù)刪除方法, 包括如下步驟步驟W1,對所有已存儲文件進行預(yù)處理,并建立數(shù)據(jù)結(jié)構(gòu)。步驟W2,通過預(yù)處理數(shù)據(jù)結(jié)構(gòu)實現(xiàn)待存儲文件與已存儲文件進行匹配。步驟W3,判斷待存儲文件是否為重復(fù)數(shù)據(jù),如果待存儲文件是重復(fù)數(shù)據(jù),那么不必將待存儲文件保存至備份系統(tǒng),如果待存儲文件不是重復(fù)數(shù)據(jù),那么將待存儲文件保存至備份系統(tǒng)中。如圖2所示,作為本發(fā)明的一個實施例,該步驟W3包括如下步驟步驟K1,對已存儲文件中的字符串進行抽取,將抽取的字符串組成布爾表達式,且每個已存儲文件均對應(yīng)一個布爾表達式,所有的布爾表達式組成布爾表達式集合。步驟K2,將所有布爾表達式所包括的字符串進行提取組成字符串集合。步驟K3,根據(jù)布爾表達式集合和字符串集合構(gòu)建數(shù)據(jù)結(jié)構(gòu)。因為每個已存儲文件均對應(yīng)一個布爾表達式,該布爾表達式可以代表所對應(yīng)的已存儲文件。如圖3所示,作為本發(fā)明的另一個實施例,在所述步驟K3中包括如下步驟步驟 Y1,構(gòu)建布爾表達式集合中的布爾表達式與字符串集合中的字符串的關(guān)聯(lián)關(guān)系,即某字符串包含在哪些布爾表達式中。步驟Y2,根據(jù)布爾表達式集合及字符串集合確定跳躍表及哈希表大小,并構(gòu)建入口哈希函數(shù)hi和h2。步驟^,根據(jù)字符串集合構(gòu)建跳躍表,并確定跳躍表的跳躍距離。步驟W,根據(jù)字符串集合構(gòu)建哈希表。步驟TO,為每個布爾表達式構(gòu)建計數(shù)器,并將計數(shù)器初始化為零。如圖4所示,作為本發(fā)明的又一個實施例,在所述步驟W2中包括如下步驟步驟 Si,讀取待存儲文件的首個等長字節(jié)。步驟S2,判斷待存儲文件的全部字節(jié)是否讀取完畢, 如果未讀取完畢那么執(zhí)行S3步驟,如果讀取完畢那么執(zhí)行Ql步驟。步驟S3,那么根據(jù)入口哈希函數(shù)hl,計算跳躍表入口地址,找到跳躍表對應(yīng)項。步驟S4,判斷跳躍值是否為0,如果不為0那么執(zhí)行步驟S5,如果為0那么執(zhí)行步驟S6。步驟S5,該步驟包括如下步驟步驟S51,跳躍對應(yīng)值;步驟S52,讀取待存儲文件的下一個等長字節(jié);步驟S53,執(zhí)行S2步驟。 步驟S6,根據(jù)入口哈希函數(shù)h2,計算哈希入口地址。步驟S7,判斷是否鏈接字符串,如果無鏈接,那么執(zhí)行S52步驟和S53步驟,如果有鏈接,那么執(zhí)行S8步驟。步驟S7中的判斷是否鏈接字符串是指判斷哈希表中是否鏈接字符串。步驟S8,找到全部哈希表鏈接字符串, 判斷是否匹配。步驟S9,判斷是否匹配,如果匹配,那么執(zhí)行SlO步驟,如果不匹配,那么執(zhí)行S52步驟和S53步驟。步驟S8和步驟S9中所稱判斷是否匹配是指判斷哈希表鏈接字符串與待存儲文件的字符串是否匹配。步驟S10,逐個處理匹配字符串。在步驟SlO中,因為哈希表中可能有多個字符串與待存儲文件中的字符串匹配,所以要逐個處理匹配字符串。 步驟Sll,判斷是否第一次匹配,如果是第一次匹配,那么執(zhí)行S12步驟,如果不是第一次匹配,那么執(zhí)行SlO步驟。在步驟Sll中,所稱是否第一次匹配是指是否第一次對存儲文件中的字符串進行匹配。步驟S12,包含此字符串的布爾表達式的計數(shù)器加1。步驟S13,執(zhí)行S52步驟和S53步驟。該等長字節(jié)可以為四個字節(jié)數(shù)據(jù)。對待存儲文件每次處理4字節(jié)字符塊,從文本串頭開始匹配,使用哈希函數(shù)hi進行運算,用得到的哈希值檢索Shift表,若對應(yīng)的跳躍表表項跳躍值不為零,則根據(jù)該跳躍值移動窗口并重復(fù)以上匹配過程;如果跳躍值為零,則再次對該字符塊進行二次哈希運算h2,用得到的哈希值檢索Hash表,如果該表項鏈接有一個或者多個可能匹配的字符串,則依次將這些字符串和文本中相應(yīng)的字段進行匹配驗證。如果確實存在匹配,則報告匹配。其中字符串匹配驗證時要先根據(jù)字符串偏移值移動字符串,使之與文本對應(yīng)位置對齊,再采用整數(shù)比較技術(shù)進行字符比較。不論是否發(fā)生匹配,文本窗口都按照Hash表的跳躍值移動,重復(fù)以上匹配過程,直到文本末端,匹配過程結(jié)束。然后再利用字符串匹配算法進行判斷,匹配時報告其字符串號。針對布爾表達式,當(dāng)某個字符串匹配成功時,首先判斷是否是此字符串特征第一次匹配,若不是則表示已經(jīng)處理過此字符串,直接忽略,若是第一次則查找到包含此字符串的布爾表達式,更新計數(shù)器信息,當(dāng)計數(shù)器計數(shù)到此表達式包含的字符串個數(shù)時,即表示此布爾表達式匹配成功。如圖4所示,作為本發(fā)明的又一個實施例,所以步驟W3包括如下步驟步驟Q1,根據(jù)布爾表達式包含的字符串個數(shù)及布爾表達式的計數(shù)器值,得出匹配布爾表達式集合;即, 如某個布爾表達式有8段字符串,該布爾表達式的計數(shù)器值也是8,那么該布爾表達式就為匹配布爾表達式,將所有匹配布爾表達式集合起來組成匹配布爾表達式集合。步驟Q2,判斷是否有匹配,如果有匹配,那么執(zhí)行C3步驟,如果無匹配,那么該待存儲文件是新文件,將待存儲文件存儲至備份系統(tǒng);該步驟中所稱是否有匹配是指待存儲字符串與每個布爾表達式進行匹配。步驟Q3,判斷匹配布爾表達式集合是否處理完,如果全部處理完,那么該待存儲文件是新文件,將待存儲文件存儲至備份系統(tǒng)中,如果未處理完,那么執(zhí)行Q4步驟;在步驟Q3中所述的判斷匹配布爾表達式集合是否處理完是指因為匹配布爾表達式集合中多個匹配布爾表達式,每次要對一個匹配布爾表達式進行處理,當(dāng)將最后一個匹配布爾表達式處理完成后才認(rèn)為是全部處理完,否則認(rèn)為未處理完。步驟Q4,找到該條布爾表達式代表的已存儲文件。步驟Q5,判斷文件大小是否一致,如果一致,那么執(zhí)行Q6步驟,如果不一致, 那么執(zhí)行Q3步驟;判斷文件大小是指對待存儲文件和已存儲文件的大小進行比較。步驟 Q6,判斷文件內(nèi)容是否一致,如果一致,那行執(zhí)行Q7步驟,如果不一致,那么執(zhí)行Q3步驟;判斷文件內(nèi)容是指對待存儲文件和已存儲文件的內(nèi)容進行比較。步驟Q7,該待存儲文件與備份系統(tǒng)中某文件屬于重復(fù)數(shù)據(jù),不保存該待存儲文件。當(dāng)布爾表達式匹配成功時,表示要存儲的文件和存儲系統(tǒng)已經(jīng)存在的某文件可能一樣,此時,根據(jù)布爾表達式索引到存儲系統(tǒng)中已經(jīng)存在的文件,進一步判斷文件大小是否相等,若相等再進一步進行文件內(nèi)容匹配, 若相等說明該文件屬于重復(fù)數(shù)據(jù)。在所述步驟Kl中,根據(jù)每個已存儲文件大小,從每個已存儲文件中抽取5至15段
等長字符串。在所述步驟Kl中,從每個已存儲文件的開頭、中間、結(jié)尾的隨機位置分別抽取32 字節(jié)長的字符串。之所以采用32字節(jié)是根據(jù)多字符串匹配算法WM來確定的,WM算法針對等長的較長特征處理是最簡單的,性能也是最好的,取出的若干個字符串構(gòu)成一條布爾表達式來代表此文件。逐個文件進行特征提取,獲得布爾表達式特征集合和其中包含的字符串特征集合。已存儲文件是指備份系統(tǒng)中已經(jīng)存儲的文件,待存儲文件是指準(zhǔn)備存入備份系統(tǒng)的文件。本方法涉及一種適用于工作負(fù)載保護系統(tǒng)的重復(fù)數(shù)據(jù)刪除方法,屬于計算機數(shù)據(jù)備份的重復(fù)數(shù)據(jù)刪除方法,適用于基于磁盤的工作負(fù)載保護、備份、歸檔系統(tǒng),解決現(xiàn)有重復(fù)數(shù)據(jù)刪除方法存在的針對大規(guī)模小文件檢測性能慢的問題。工作負(fù)載保護系統(tǒng)容災(zāi)備份系統(tǒng)可以只保護數(shù)據(jù),也可以保護系統(tǒng),本文主要針對的不是單純的數(shù)據(jù),而是集操作系統(tǒng)、應(yīng)用軟件、數(shù)據(jù)為一體的服務(wù)器工作單元,本文將其稱為工作負(fù)載(Workload)。隨著云計算、虛擬化技術(shù)的快速發(fā)展,大量的應(yīng)用也可在虛擬機上運行,本文所提到的工作負(fù)載不僅僅指一臺物理服務(wù)器,也可以是任意一臺虛擬機。簡言之,服務(wù)器工作負(fù)載是指駐留在物理或虛擬主機上的操作系統(tǒng)、應(yīng)用程序和數(shù)據(jù)。它是業(yè)界約定俗成的數(shù)據(jù)中心業(yè)務(wù)值的基本單位。工作負(fù)載保護指的是針對工作負(fù)載進行容災(zāi)備份的保護系統(tǒng),它與單純的數(shù)據(jù)備份系統(tǒng)保護的對象不同,主要區(qū)別是操作系統(tǒng)和應(yīng)用軟件中有極大數(shù)量的小文件需要備份保護?,F(xiàn)有的重復(fù)數(shù)據(jù)刪除原理基本都是對每一個文件或每一個數(shù)據(jù)塊逐個進行判斷, 在處理數(shù)量小的數(shù)據(jù)文件時是較為合適的,但是針對大規(guī)模(十萬級別)小文件,該技術(shù)方案的性能下降很快,如一臺普通window服務(wù)器,c盤下的windows目錄有約5萬左右數(shù)量的文件,總大小在5G左右,平均每個文件小于IOOk(這是由于里面尚存在少量較大文件,其余文件都比較小),c盤下的program file目錄也大概符合這個比例,如安裝了 70個常用軟件后,約有7萬左右數(shù)量文件,總大小在7G左右,平均每個文件小于100k。按照傳統(tǒng)方法進行逐個文件判斷非常消耗性能,在保護系統(tǒng)軟件和應(yīng)用軟件時不太實用,需要進一步改進。工作負(fù)載保護系統(tǒng)同樣存在大量的重復(fù)數(shù)據(jù)問題,其更突出的特點是要保護大量的小文件,采用布爾表達式特征匹配的方法可以同時判斷十萬級規(guī)模的文件是否存在重復(fù)數(shù)據(jù),基于此基礎(chǔ),本文提出一種針對工作負(fù)載保護系統(tǒng)的重復(fù)數(shù)據(jù)刪除方法。布爾表達式(BoolExpression),形式為 S1&S2&S3&......&Sk_l&Sk,其中 Si,
S2,……Sk-1,Sk都是字符串,&表示的是字符串之間的邏輯與操作,字符串順序無關(guān)緊要。布爾表達式匹配(Be-Match)算法,給定一個長度為η的文本Τ,和一個布爾表達式SMS2&S;3&……&Sk4&Sk,算法從文本T中找到k個位置,其中每一個位置匹配一個字符串,且k個字符串都匹配,同時每兩個位置間隔大于匹配字符串長度,即任意兩個字符串之間存在若干其它字符。直觀地說,布爾表達式匹配當(dāng)且僅當(dāng)其中特定的幾個字符串特征都匹配時,才表示此條布爾表達式發(fā)生了匹配。即一個字符串特征(String)如果出現(xiàn)在輸入數(shù)據(jù)流中,則表示這個特征匹配了(match);而一個布爾表達式(Expression)包含多個字符串特征,必須當(dāng)其中所有特征都匹配時,才表示此條布爾表達式匹配。布爾表達式集匹配(BeIet-Match)算法,給定一個長度為η的文本Τ,和一個布爾表達式集合Bel,Be2,……Bem,算法從文本T中找到所有χ組有序的k個位置,其中,每一組k個位置與某條布爾表達式匹配。本發(fā)明中字符串特征匹配采用多模式匹配算法wm算法為基礎(chǔ),通過本發(fā)明辦法, 可以直接將已經(jīng)存儲的數(shù)十萬級規(guī)模的文件統(tǒng)一處理,只需將待保存的文件掃描一遍,即可判斷是否與系統(tǒng)內(nèi)哪些文件屬于重復(fù)數(shù)據(jù),不是重復(fù)數(shù)據(jù)的再進行實際的存儲操作。WM字符串匹配算法原理WM算法分為預(yù)處理和匹配兩個階段。如果字符串集中的最短字符串長度為m,那么算法在預(yù)處理階段會先統(tǒng)一考慮所有字符串的前m個字符,以此建立三張表格,跳躍表(下稱Shift表),字符串表(下稱Hash表)和前綴表(下稱I^refix 表)。如圖1所示,以字符串集{she,hers, his, kiss}為例,構(gòu)造三個表,其中,Shift表存儲后綴字符塊對應(yīng)的窗口偏移量(即跳躍值),Hash表和ft~efiX表用來索引字符串,以便在后綴字符塊命中時驗證是否出現(xiàn)匹配。算法預(yù)處理過程中構(gòu)建Shift表、Hash表和I^refix表。設(shè)字符塊大小為B,一般是2,將Shift表所有表項跳躍值初始化為m-B+1,然后將所有字符串的前m個字符中所有大小為B的字符塊的跳躍值依次填入Shift表。字符塊跳躍值計算方法是如果字符塊在前m字符中的偏移量為j (字符塊頭字符離字符串開始處的位移量),其跳躍值為m-B-j,而 Shift表中某表項的跳躍值,則是所有該表項字符塊跳躍值的最小值,因為這是一個安全的跳躍值,不會漏過任何匹配;如果字符塊為前m個字符的后綴字符塊,即j=m-B,則該字符塊所在的Siift表項跳躍值為零,此時將該后綴字符塊所在的字符串鏈接在對應(yīng)的Hash表的表項中(Hash表和Shift表采用的是同一個哈希函數(shù)索引hl^refix表的建立則是為了快速區(qū)分鏈接在同一個Hash表表項下的字符串。匹配過程中,將一個大小為B的文本窗口從文本串的開始位置滑動,對于文本窗口中大小為B的字符塊,首先用哈希函數(shù)求得哈希值,利用哈希值索引Shift表得到跳躍值,不為零則根據(jù)這個值移動文本窗口,若為零,則利用哈希值索引Hash表,并驗證其鏈接的所有字符串,驗證中通過I^refix表快速排除不符合條件的字符串,若匹配則觸發(fā)相應(yīng)處理。驗證完畢,不論是否出現(xiàn)匹配,均將文本窗口向末端移動一位,重復(fù)上述操作。因此在一般情況下,WM算法經(jīng)常能用一次字符讀取和比較,就產(chǎn)生比較大的跳躍值,從而很快地跳過不需要匹配的字符,這也是WM算法性能優(yōu)越的主要因素。從WM算法的原理上看,其性能的提升源于跳躍的發(fā)生,也就是在某些情況下不必每個字符都檢驗,基于初始化階段建立的Shift表可以避開無謂的比較操作,提升算法性能。針對大規(guī)模字符串集時,比如幾萬至幾十萬字符串,假設(shè)分布均勻,傳統(tǒng)WM算法每次讀入2字節(jié),Shift表項最多為216約為6萬多項,此時大部分表項跳躍值為0,即在很大概率上無法跳躍,且需經(jīng)常中斷文本窗口移動去匹配鏈接在Hash表中的字符串,導(dǎo)致算法性能迅速下降。基于跳躍的算法都是盡可能利用跳躍來避免不必要的匹配操作,一旦無法跳躍, 則進行逐個字節(jié)匹配,性能立刻下降。因此,要想獲得高性能,算法必須保持較高跳躍概率, 通過對算法原理、實現(xiàn)和運行等的研究,本發(fā)明提供了支持大規(guī)模字符串匹配算法LAPM,在預(yù)處理過程中充分挖掘算法和字符串特征集的潛在信息,增加跳躍概率,并基于算法運行平臺設(shè)計優(yōu)化策略,以提高算法性能。首先,它將每周期讀入字符數(shù)由2字節(jié)提高到4字節(jié),這樣Shift表可以最大有232約為4G項,可以保證很高的跳躍概率,但同時帶來了不可接受的存儲消耗;為了減少存儲,用哈希函數(shù)處理每4字節(jié)數(shù)據(jù),得出結(jié)果作為地址訪問 Shift表和Hash表,這樣既可以保證較高的跳躍概率,又提高了存儲效率;但哈希函數(shù)又帶來哈希沖突問題,為了減少沖突,采用兩個不同的哈希函數(shù)來分別索引Siift表和Hash表。 由此可以看到讀入字符數(shù)、存儲消耗、哈希沖突幾個因素互相制約,本發(fā)明提出一個動態(tài)調(diào)整算法來尋找最優(yōu)或較優(yōu)平衡點。布爾表達式匹配算法原理首先利用LAPM匹配算法進行判斷,匹配時報告其字符串號。針對布爾表達式,當(dāng)某個字符串匹配成功時,首先判斷是否是此字符串特征第一次匹配,若不是則表示已經(jīng)處理過此字符串,直接忽略,若是第一次則查找到包含此字符串的布爾表達式,更新計數(shù)器信息,當(dāng)計數(shù)器計數(shù)到此表達式包含的字符串個數(shù)時,即表示此布爾表達式匹配成功。重復(fù)數(shù)據(jù)判斷原理當(dāng)布爾表達式匹配成功時,表示存儲中已經(jīng)存在的某文件可能和要保存的文件一樣,此時,根據(jù)布爾表達式索引到要存儲的文件,進一步判斷文件大小是否相等,若相等再進一步進行文件內(nèi)容匹配,若相等說明該文件屬于重復(fù)數(shù)據(jù),不需要重新保存,做好鏈接即可。在預(yù)處理過程中,首先建立相關(guān)字符串特征數(shù)據(jù)結(jié)構(gòu)和布爾表達式數(shù)據(jù)結(jié)構(gòu),PAT 結(jié)構(gòu)中增加了布爾表達式鏈表,表示包含此字符串的布爾表達式。在構(gòu)建Shift表和Hash 表過程中,初始化Shift表和Hash表,將所有表項的初始跳躍值置為m-B+1,將Hash表中鏈表字符串個數(shù)num置零,將字符串鏈表置為空。構(gòu)建Shift表和Hash表,針對每一個字符串,對最優(yōu)窗口內(nèi)每4字節(jié)字符塊做哈希,保存對應(yīng)的跳躍值到Shift表中,保存對應(yīng)跳躍值到Hash表,并將字符串加到跳躍值為零的Hash表鏈表中。預(yù)處理時,建立布爾表達式集中布爾表達式與字符串的關(guān)聯(lián)關(guān)系,布爾表達式的 pat_list鏈接其包含的字符串號,字符串的be_list鏈接其所在的布爾表達式號。為了判斷布爾表達式匹配,需要額外添加的是stream數(shù)據(jù)結(jié)構(gòu),見圖4,它記錄字符串是否匹配和布爾表達式的匹配位置。以上內(nèi)容是結(jié)合具體的優(yōu)選實施方式對本發(fā)明所作的進一步詳細(xì)說明,不能認(rèn)定本發(fā)明的具體實施只局限于這些說明。對于本發(fā)明所屬技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干簡單推演或替換,都應(yīng)當(dāng)視為屬于本發(fā)明的保護范圍。
權(quán)利要求
1.一種適用于工作負(fù)載保護系統(tǒng)的重復(fù)數(shù)據(jù)刪除方法,其特征在于,包括如下步驟A.對所有已存儲文件進行預(yù)處理,并建立數(shù)據(jù)結(jié)構(gòu);B.通過預(yù)處理數(shù)據(jù)結(jié)構(gòu)實現(xiàn)待存儲文件與已存儲文件進行匹配;C.判斷待存儲文件是否為重復(fù)數(shù)據(jù),如果待存儲文件是重復(fù)數(shù)據(jù),那么不必將待存儲文件保存至備份系統(tǒng),如果待存儲文件不是重復(fù)數(shù)據(jù),那么將待存儲文件保存至備份系統(tǒng)中。
2.根據(jù)權(quán)利要求1所述的重復(fù)數(shù)據(jù)刪除方法,其特征在于,在所述步驟A中還包括如下步驟Al.對已存儲文件中的字符串進行抽取,將抽取的字符串組成布爾表達式,且每個已存儲文件均對應(yīng)一個布爾表達式,所有的布爾表達式組成布爾表達式集合; A2.將所有布爾表達式所包括的字符串進行提取組成字符串集合; A3.根據(jù)布爾表達式集合和字符串集合構(gòu)建數(shù)據(jù)結(jié)構(gòu)。
3.根據(jù)權(quán)利要求2所述的重復(fù)數(shù)據(jù)刪除方法,其特征在于,在所述步驟A3中包括如下步驟A31.構(gòu)建布爾表達式集合中的布爾表達式與字符串集合中的字符串的關(guān)聯(lián)關(guān)系; A32.根據(jù)布爾表達式集合及字符串集合確定跳躍表及哈希表大小,并構(gòu)建入口哈希函數(shù)hi和h2;A33.根據(jù)字符串集合構(gòu)建跳躍表,并確定跳躍表的跳躍距離; A34.根據(jù)字符串集合構(gòu)建哈希表;A35.為每個布爾表達式構(gòu)建計數(shù)器,并將計數(shù)器初始化為零。
4.根據(jù)權(quán)利要求3所述的重復(fù)數(shù)據(jù)刪除方法,其特征在于,在所述步驟B中包括如下步驟Bi.讀取待存儲文件的首個等長字節(jié);B2.判斷待存儲文件的全部字節(jié)是否讀取完畢,如果未讀取完畢那么執(zhí)行B3步驟,如果讀取完畢那么執(zhí)行Cl步驟;B3.那么根據(jù)入口哈希函數(shù)hl,計算跳躍表入口地址,找到跳躍表對應(yīng)項; B4.判斷跳躍值是否為0,如果不為0那么執(zhí)行步驟B5,如果為0那么執(zhí)行步驟B6 ; B5.該步驟包括如下步驟 B51.跳躍對應(yīng)值;B52.讀取待存儲文件的下一個等長字節(jié); B53.執(zhí)行B2步驟; B6.根據(jù)入口哈希函數(shù)h2,計算哈希入口地址;B7.判斷是否鏈接字符串,如果無鏈接,那么執(zhí)行B52步驟和B53步驟,如果有鏈接,那么執(zhí)行B8步驟;B8.找到全部哈希表鏈接字符串,判斷是否匹配;B9.判斷是否匹配,如果匹配,那么執(zhí)行BlO步驟,如果不匹配,那么執(zhí)行B52步驟和 B53步驟;B10.逐個處理匹配字符串;Bll.判斷是否第一次匹配,如果是第一次匹配,那么執(zhí)行B12步驟,如果不是第一次匹配,那么BlO步驟;B12.包含此字符串的布爾表達式的計數(shù)器加1 ; B13.執(zhí)行B52步驟和B53步驟。
5.根據(jù)權(quán)利要求4所述的重復(fù)數(shù)據(jù)刪除方法,其特征在于,所以步驟C包括如下步驟 Cl.根據(jù)布爾表達式包含的字符串個數(shù)及布爾表達式的計數(shù)器值,得出匹配布爾表達式集合;C2.判斷是否有匹配,如果有匹配,那么執(zhí)行C3步驟,如果無匹配,那么該待存儲文件是新文件,將待存儲文件存儲至備份系統(tǒng)中;C3.判斷匹配布爾表達式集合是否處理完,如果全部處理完,那么該待存儲文件是新文件,將待存儲文件存儲至備份系統(tǒng)中,如果未處理完,那么執(zhí)行C4步驟; C4.找到該條布爾表達式代表的已存儲文件;C5,判斷文件大小是否一致,如果一致,那么執(zhí)行C6步驟,如果不一致,那么執(zhí)行C3步驟;C6.判斷文件內(nèi)容是否一致,如果一致,那行執(zhí)行C7步驟,如果不一致,那么執(zhí)行C3步驟;C7.該待存儲文件與備份系統(tǒng)中某文件屬于重復(fù)數(shù)據(jù),不保存該待存儲文件。
6.根據(jù)權(quán)利要求2所述的重復(fù)數(shù)據(jù)刪除方法,其特征在于,在所述步驟Al中,根據(jù)每個已存儲文件大小,從每個已存儲文件中抽取5至15段等長字符串。
7.根據(jù)權(quán)利要求6所述的重復(fù)數(shù)據(jù)刪除方法,其特征在于,在所述步驟Al中,從每個已存儲文件的開頭、中間、結(jié)尾的隨機位置分別抽取32字節(jié)長的字符串。
全文摘要
本發(fā)明提供了一種適用于工作負(fù)載保護系統(tǒng)的重復(fù)數(shù)據(jù)刪除方法,包括如下步驟A.對所有已存儲文件進行預(yù)處理,并建立數(shù)據(jù)結(jié)構(gòu);B.通過預(yù)處理數(shù)據(jù)結(jié)構(gòu)實現(xiàn)待存儲文件與已存儲文件進行匹配;C.判斷待存儲文件是否為重復(fù)數(shù)據(jù),如果待存儲文件是重復(fù)數(shù)據(jù),那么不必將待存儲文件保存至備份系統(tǒng),如果待存儲文件不是重復(fù)數(shù)據(jù),那么將待存儲文件保存至備份系統(tǒng)中。本發(fā)明的有益效果是本發(fā)明的方法通過將待存儲文件與經(jīng)預(yù)處理的已存儲文件進行匹配,然后判斷待存儲文件是否為重復(fù)數(shù)據(jù),如果待存儲文件是重復(fù)數(shù)據(jù),那么不必將待存儲文件保存至備份系統(tǒng),如果待存儲文件不是重復(fù)數(shù)據(jù),那么將待存儲文件保存至備份系統(tǒng)中,使得提高了備份速度。
文檔編號G06F17/30GK102184198SQ20111010218
公開日2011年9月14日 申請日期2011年4月22日 優(yōu)先權(quán)日2011年4月22日
發(fā)明者張偉, 徐濤 申請人:深圳市廣道高新技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
龙门县| 衡阳市| 临桂县| 牙克石市| 江口县| 东辽县| 玉林市| 嘉黎县| 多伦县| 沂水县| 宾阳县| 天台县| 南澳县| 荔波县| 湘西| 白玉县| 彭阳县| 井冈山市| 德清县| 泰州市| 嘉兴市| 邢台县| 藁城市| 东台市| 交城县| 黄梅县| 连云港市| 化德县| 东兰县| 启东市| 弥渡县| 长子县| 辽中县| 大化| 靖安县| 彩票| 镇原县| 青岛市| 仁布县| 阳谷县| 石嘴山市|