小文件處理方法及裝置制造方法
【專利摘要】本發(fā)明所提供的小文件處理方法,針對海量小文件的重復數(shù)據(jù)刪除的處理,將小文件整合為一個大文件后,對整合后的大文件整體進行分塊后,在分塊的過程中,如果當前正在劃分的數(shù)據(jù)塊中,包括了任一個小文件的尾部時,需要以這個小文件的尾部作為當前數(shù)據(jù)分塊的結束位置,對整合后的大文件分塊完成后再作重復數(shù)據(jù)查找等操作,提高了小文件的重復數(shù)據(jù)刪除效率。
【專利說明】小文件處理方法及裝置【技術領域】[0001]本發(fā)明涉及文件處理技術,尤其涉及小文件處理方法及裝置?!颈尘凹夹g】[0002]重復數(shù)據(jù)刪除技術是存儲系統(tǒng)中的一種新型應用。通過刪除存儲系統(tǒng)中重復的數(shù) 據(jù),只保留其中的一份,從而消除冗余數(shù)據(jù)。重刪文件需要對文件進行分塊、相似性分析、查 詢重復塊等操作,那么,在對一個小文件進行重刪時,都會耗費很多時間在消除小塊冗余數(shù) 據(jù)上,不僅耗時,而且占用系統(tǒng)資源。[0003]現(xiàn)有技術中,在重刪過程中,在對大量小文件的處理,通常采用如下方式:將多個 小文件按照一定方式合并為一個大文件,這個大文件頭中記錄小文件信息,用于大量小文 件的存放與讀取。[0004]由于上述方法只是將小文件整合在一個大文件中,不對大文件進行重復數(shù)據(jù)刪 除,增加文件頭記錄小文件信息,增加了小文件的空間占用,對大文件的存放與讀取操作速 度較慢;而且只是減少了小文件的占用空間,對大于最小讀寫塊的小文件沒有作用。
【發(fā)明內容】
[0005]本發(fā)明實施例提供小文件處理方法,應用在重復數(shù)據(jù)刪除操作中,能夠加快大量 小文件重復數(shù)據(jù)刪除速度、減少大量小文件占用空間。[0006]本發(fā)明實施例所提供的一種小文件處理方法,包括:[0007]讀取N個小文件,其中,所述小文件為小于預置大小的小文件;[0008]將所述讀取的N個小文件整合為一個大文件,利用滑動窗口對所述整合后的大文 件進行分塊;所述利用滑動窗口對所述整合后的大文件進行分塊,包括:[0009]判斷所述滑動窗口的結束位置是否是所述任一小文件的尾部,如果是,則將從上 一個分塊的結束位置到當前滑動窗口的結束位置之間的數(shù)據(jù)作為一個數(shù)據(jù)分塊;如果否, 則判斷滑動窗口當前覆蓋的數(shù)據(jù),是否滿足數(shù)據(jù)分塊條件;[0010]如果滿足所述分塊條件,則將從上一個分塊的結束位置到當前滑動窗口的結束位 置之間的數(shù)據(jù)作為一個數(shù)據(jù)分塊;如果不滿足所述分塊條件,則將所述滑動窗口移動一個 字節(jié),繼續(xù)利用滑動窗口對所述整合后的大文件進行分塊,直到完成對所述整合后大文件 的數(shù)據(jù)分塊;[0011]根據(jù)預先設置的數(shù)據(jù)塊元據(jù)數(shù)信息庫,在得到的數(shù)據(jù)分塊中確定重復塊和新塊;[0012]將確定得到的新塊的元數(shù)據(jù)信息添加到所述的元數(shù)據(jù)信息庫中,并將新塊的數(shù)據(jù) 添加到記錄文件中,在所述元數(shù)據(jù)信息庫中更新重復塊的引用次數(shù)。[0013]本發(fā)明實施例還提供一種小文件處理裝置,包括:[0014]讀取單元,用于讀取N個小文件,其中,所述小文件為小于預置大小的小文件;[0015]拆分單元,用于將所述讀取的N個小文件整合為一個大文件,對整合后的大文件 進行數(shù)據(jù)分塊;[0016]確定單元,用于根據(jù)預先設置的數(shù)據(jù)塊元數(shù)據(jù)信息庫,在得到的數(shù)據(jù)分塊中確定 重復塊和新塊;[0017]處理單元,將確定得到的新塊的元數(shù)據(jù)信息添加到所述的元數(shù)據(jù)信息庫中,并將 新塊的數(shù)據(jù)添加到記錄文件中,在所述元數(shù)據(jù)信息庫中更新重復塊的引用次數(shù);[0018]其中,所述拆分單元,包括:[0019]整合單元,用于將所述讀取的小文件整合為一個大文件;[0020]第一判斷單元,用于判斷所述滑動窗口的結束位置是否是所述任一小文件的尾 部,如果是,將判斷結果發(fā)送給拆分處理單元;如果否,將判斷結果發(fā)送給第二判斷單元;[0021]第二判斷單元,用于判斷滑動窗口當前覆蓋的數(shù)據(jù),是否滿足數(shù)據(jù)分塊條件,如果 是,將判斷結果發(fā)送給拆分處理單元,如果否,將滑動窗口移動一個字節(jié)后,返回執(zhí)行所述 第一判斷單元功能以繼續(xù)利用滑動窗口對所述整合后的大文件進行分塊,直到完成對所述 整合后大文件的數(shù)據(jù)分塊;[0022]拆分處理單元,用于當判斷所述滑動窗口的結束位置是所述任一小文件的尾部或 者判斷滑動窗口當前覆蓋的數(shù)據(jù)滿足數(shù)據(jù)分塊條件時,將從上一個分塊的結束位置到當前 滑動窗口的結束位置之間的數(shù)據(jù)作為一個數(shù)據(jù)分塊,并將滑動窗口移動一個字節(jié)后,返回 執(zhí)行所述第一判斷單元功能以繼續(xù)利用滑動窗口對所述整合后的大文件進行分塊,直到完 成對所述整合后大文件的數(shù)據(jù)分塊。[0023]本發(fā)明實施例提供小文件處理方法及裝置,可針對海量小文件的重復數(shù)據(jù)刪除的 處理,將小文件整合為一個大文件后,對整合后的大文件整體進行數(shù)據(jù)分塊后,再作重復數(shù) 據(jù)查找等操作,提高了小文件的重復數(shù)據(jù)刪除效率;減少磁盤空間的占用?!緦@綀D】
【附圖說明】[0024]圖1為本發(fā)明實施例提供的一種小文件處理方法的流程圖;[0025]圖2為本發(fā)明實施例提供的一種利用滑動窗口對整合得到的大文件進行分塊的 流程圖;[0026]圖3為本發(fā)明實施例提供的另一種小文件處理方法的流程圖;[0027]圖4為本發(fā)明實施例所提供的小文件處理方法的應用示意圖;[0028]圖5為本發(fā)明實施例所提供的一種小文件處理裝置的結構示意圖;[0029]圖6為本發(fā)明實施例提供的另一種小文件處理裝置的結構示意圖;[0030]圖7為本發(fā)明實施例提供的另一種小文件處理裝置的結構示意圖。【具體實施方式】[0031]圖1為本發(fā)明實施例一提供的小文件處理方法流程圖,如圖1所示,該方法包括:[0032]步驟101、讀取N個小文件,其中小文件為小于MkB的文件。[0033]步驟101的動作可以由重刪管理進程(Management,MGT)來執(zhí)行,可以采用的方式 為:MGT讀取磁盤的同一目錄下的N個文件,這樣做的優(yōu)點在于讀取速度快并且管理方便。 而M是一個可以根據(jù)需要人為定義的一個數(shù)值。N表示小文件的個數(shù),顯然,N可以是大于 O的自然數(shù)。[0034]步驟103、將N個小文件整合為一個大文件,利用滑動窗口對所述整合后的大文件進行分塊;[0035]其中,將所述讀取的N個小文件邏輯組合成一個大文件,也就是將N個小文件看出 是邏輯組合成大文件的N部分,而這N個小文件物理上分散的,只是在虛擬上看成一個文 件,同時每個小文件的末尾是已知的。顯然,整合后的大文件也就是對小文件整合后得到的 大文件。[0036]其中,參見圖2,利用滑動窗口對所述整合后的大文件進行分塊,包括:[0037]步驟1031,判斷所述滑動窗口的結束位置是否是所述任一小文件的尾部,如果是, 則進入步驟1034 ;如果否,則進入步驟1033 ;[0038]步驟1033,判斷滑動窗口當前覆蓋的數(shù)據(jù),是否滿足數(shù)據(jù)分塊條件;如果滿足所 述分塊條件,則進入步驟1034 ;如果不滿足所述分塊條件,則進入步驟1035 ;[0039]步驟1034,將從上一個分塊的結束位置到當前滑動窗口的結束位置之間的數(shù)據(jù)作 為一個數(shù)據(jù)分塊,并進入步驟1035 ;[0040]步驟1035,將所述滑動窗口移動一個字節(jié),返回步驟1031繼續(xù)利用滑動窗口對所 述整合后的大文件進行分塊,直到完成對所述整合后大文件的數(shù)據(jù)分塊。[0041]其中,所述的將滑動窗口移動一個字節(jié),是向數(shù)據(jù)的尾部方向滑動一個字節(jié);所述 的滿足數(shù)據(jù)分塊條件,包括對滑動窗口所覆蓋的數(shù)據(jù)進行哈希值運算,判斷哈希值是否滿 足進行分塊的條件,或者是,通過判斷滑動窗口所滑動的數(shù)據(jù)長度是否滿足分塊條件等等, 方法很多,在此不再贅述。顯然,所述的滿足數(shù)據(jù)分塊的條件中,不再包括判斷所述滑動窗 口的結束位置是否是所述任一小文件的尾部,判斷是否將從上一個分塊的結束位置到當前 滑動窗口的結束位置之間的數(shù)據(jù)作為一個數(shù)據(jù)分塊的情況。[0042]本發(fā)明實施例中,對整合后的大文件進行數(shù)據(jù)分塊,得到多個分塊,其中,在分塊 的過程中,如果當前正在劃分的數(shù)據(jù)塊中,包括了任一個小文件的尾部時,需要以這個小文 件的尾部作為當前數(shù)據(jù)分塊的結束位置,以使可以對得到的數(shù)據(jù)分塊通過組合后得到完整 的小文件;例如,對兩個小文件filel和file2整合為的一個大文件進行數(shù)據(jù)分塊,得到分 塊A, B, A三個數(shù)據(jù)分塊,其中filel被劃分為第一個數(shù)據(jù)分塊A, file2被劃分為第二個數(shù) 據(jù)分塊B和第三個數(shù)據(jù)分塊A,A組成filel,BA組成file2。[0043]其中,對于文件進行分塊可以采用現(xiàn)有技術中提供的各種分塊算法,這里不做限 定,分塊的主要目的在于后續(xù)找到文件中相同的塊。對于每個分塊的大小有上限和下限,也 即最大分塊和最小分塊。其中,最大分塊為MkB,也即不超過一個小文件的大小。分塊可以 是等長的也可以是不等長的,此處不做限定。[0044]步驟105、根據(jù)預先設置的數(shù)據(jù)分塊元數(shù)據(jù)信息庫,在得到的數(shù)據(jù)分塊中確定重復 塊和新塊;[0045]本發(fā)明實施例所述的重復塊,指對大文件進行拆分得到的某一個數(shù)據(jù)塊,判斷預 先設置的數(shù)據(jù)分塊元數(shù)據(jù)信息庫中的元數(shù)據(jù)信息,是否已經包含有該數(shù)據(jù)分塊的元數(shù)據(jù)信 息,若是,則判斷得到在記錄文件(存儲真實有效地數(shù)據(jù))中,已經包含了該數(shù)據(jù)塊的信息, 那么,該數(shù)據(jù)塊就被認為是重復塊;反之,則判斷得到記錄文件中沒有包含該數(shù)據(jù)塊的信 息,則該數(shù)據(jù)塊為新塊。[0046]其中,對拆分得到的數(shù)據(jù)分塊,如何判斷是新塊還是重復塊,可通過如下方式:根 據(jù)將整合后大文件進行拆分得到的數(shù)據(jù)分塊的特征信息,在元數(shù)據(jù)信息庫中查詢是否已經存儲有相同的特征信息,如果有,說明與元數(shù)據(jù)信息庫對應的記錄文件中已經存儲了該數(shù) 據(jù)分塊,則確定該數(shù)據(jù)分塊為重復塊;反之,則說明記錄文件中沒有存儲該數(shù)據(jù)分塊,則確 定該數(shù)據(jù)分塊為新塊。新塊和重復塊的判斷方式,還可以依賴其他現(xiàn)有技術,在此不再贅 述。[0047]步驟107、將確定得到的新塊的元數(shù)據(jù)信息添加到所述的元數(shù)據(jù)信息庫中,并將新 塊的數(shù)據(jù)添加到記錄文件中,在所述元數(shù)據(jù)信息庫中更新重復塊的引用次數(shù)。[0048]本發(fā)明實施例中,當判斷得到N個數(shù)據(jù)塊中的新塊后,將新塊的元數(shù)據(jù)信息添加 到元數(shù)據(jù)信息庫中,并將新塊的數(shù)據(jù)添加到記錄文件中;另外,對重復塊可以記錄被引用的 次數(shù)。對新塊和重復塊的處理方式,類似現(xiàn)有技術,在此不再贅述。[0049]本發(fā)明實施例還可以包括:[0050]步驟109、根據(jù)組成所述讀取的小文件所需的數(shù)據(jù)塊在記錄文件中的地址,建立組 成所述讀取的小文件的數(shù)據(jù)塊地址和小文件標識之間的對應關系。[0051]這里,所述讀取的小文件,也就是前面所讀取的用于整合為大文件的N個小文件; 其中,步驟109,本發(fā)明實施例可以通過以下方式:[0052]步驟1091:將所述得到的數(shù)據(jù)分塊在記錄文件中的地址信息存儲到索引文件中。[0053]其中,索引文件可以但不限于被命名為索引文件,該索引文件是用來保存N個小 文件整合后的大文件進行劃分后得到的每個數(shù)據(jù)分塊在記錄文件中的地址信息,因此,索 弓I文件中保存的都是指向記錄文件中相應塊的地址。[0054]步驟1092、根據(jù)索引文件中組成所述讀取的小文件所需的數(shù)據(jù)塊在記錄文件中的 地址,建立組成所讀取的小文件的數(shù)據(jù)塊地址和小文件標識之間的對應關系。[0055]建立組成所讀取的小文件的數(shù)據(jù)塊地址和小文件標識之間的對應關系的具體方 式,本發(fā)明實施例采用以下方式但并不限于此:[0056]根據(jù)整合前一個小文件的不同數(shù)據(jù)塊在記錄文件中的地址,建立一個鏈接,每個 鏈接對應一個所讀取的小文件,按照每個鏈接對應的小文件的標識,將建立的鏈接分別重 命名。[0057]本實施例中建立的鏈接,可以是硬鏈接,使得實際存在的索引文件中的不同小文 件只有一份,占用的物理空間也只有一份,但是卻具有多個鏡像。這樣可以更為有效地節(jié)約 磁盤空間。[0058]本發(fā)明實施例對步驟109的實現(xiàn)方式,僅舉例說明,并不限于此。根據(jù)本發(fā)明實施 例所提供的方式的啟示,所提出的其他方式在此不再贅述。[0059]本發(fā)明實施例所提供的小文件處理方法,針對海量小文件的重復數(shù)據(jù)刪除的處 理,將小文件整合為一個大文件后,對整合后的大文件整體進行分塊后,再作重復數(shù)據(jù)查找 等操作,提高了小文件的重復數(shù)據(jù)刪除效率。[0060]參見附圖3,本發(fā)明實施例還提供一種小文件處理方法,和附圖1對應的實施例不 同之處在于,在得到的數(shù)據(jù)分塊中確定重復塊和新塊,還可以包括:[0061]步驟104、將得到的數(shù)據(jù)分塊進行相互比較,將得到的數(shù)據(jù)分塊中相同的數(shù)據(jù)塊刪 除至一份;[0062]本實施例中,通過步驟104,對整合后的大文件進行拆分得到的數(shù)據(jù)分塊,先進行 相互比較,確定N個數(shù)據(jù)分塊中的相同的數(shù)據(jù)塊,并將相同的數(shù)據(jù)塊刪除。由此,可以進一步提高重復數(shù)據(jù)的查詢效率。當然,將拆分得到的數(shù)據(jù)塊進行相互之間的比較,可以在步驟 105之前完成,也可以在步驟105之后完成,本發(fā)明實施例為了提高查詢效率,以在步驟105 之前完成步驟104為例。[0063]另外,本發(fā)明實施例在步驟109之后,還可以包括:[0064]步驟110,接收讀請求,讀請求中包括欲讀取的小文件標識,根據(jù)組成所讀取的小 文件的數(shù)據(jù)塊地址和小文件標識之間的對應關系,從記錄文件中讀取組成小文件的數(shù)據(jù) 塊。[0065]本發(fā)明實施例所提供的小文件處理方法,針對海量小文件的重復數(shù)據(jù)刪除的處 理,將小文件整合為一個大文件后,對整合后的大文件整體進行分塊后,再作重復數(shù)據(jù)查 詢、刪除等操作,提高了小文件的重復數(shù)據(jù)刪除效率,尤其是在進行重復塊查詢時,在所得 的分塊之間進行比較,提高了重復塊的查詢效率。[0066]下面結合一個實例對本發(fā)明提供的文件重刪的方法進行說明,如圖4所示的方法 示意圖,假設N為5,也即5個小文件,如圖5第一行所示的filel、file2、file3、file4以 及file5。本實施例中以每個小文件為單位對5個小文件進行了一次性的分塊處理,采用 的是變長分塊的方法,將5個小文件分成為:A、B、A、B、C、E、E、D這8個分塊。其中,A組成 filel, BA組成file2,BC組成file3,E組成file4,ED組成file5。采用隨機方式對上述 幾個分塊進行采樣,得到采樣分塊A、B、C、E、D,根據(jù)采樣分塊的元數(shù)據(jù)信息對采樣分塊與預 置的數(shù)據(jù)分塊元數(shù)據(jù)信息庫中已知的數(shù)據(jù)塊元數(shù)據(jù)信息分組進行相似性分析,得到相似度 最高的分組:groupi。對上述8個分塊與相似度最高的分組之間進行重復塊、新塊的查詢。 得到重復塊為A、B和C,新塊為E和D。將新塊E和D寫入相似度最高的分組中,并記錄A、 B、C的引用次數(shù)。將新塊ED的真實數(shù)據(jù)添加到記錄文件中。將組成整合前小文件的數(shù)據(jù) 塊地址存放到索引文件中,按照組成上述5個小文件的數(shù)據(jù)塊地址,也即A組成filel,BA 組成file2,BC組成file3,E組成file4,ED組成file5,將A在記錄文件中的地址信息、B 和A在記錄文件中的地址信息、B和C在記錄文件中的地址信息,E在記錄文件中的地址信 息、E和D在記錄文件中的地址信息記錄存放在一個索引文件的文件頭當中。根據(jù)整合前 一個小文件不同數(shù)據(jù)塊在記錄文件中的地址,建立一個統(tǒng)一硬鏈接,從而從索引文件中做N 個硬鏈接,分別按照每個鏈接和小文件的標識之間的對應關系,將N個鏈接分別重命名。用 戶讀取小文件時,由讀寫驅動讀出相應的文件數(shù)據(jù)即可。[0067]本發(fā)明實施例提供的方案,將多個小文件作為一個整體進行分塊、重復塊查詢、刪 除等動作,加快了小文件重刪速率的同時,減少磁盤空間的占用。[0068]參見圖5,本發(fā)明實施例還提供一種小文件處理裝置,包括:[0069]讀取單元41,用于讀取N個小文件,其中,所述小文件為小于預置大小小文件;[0070]拆分單元42,用于將所述讀取的N個小文件整合為一個大文件,對整合后的大文 件進行數(shù)據(jù)分塊;[0071]確定單元43,用于根據(jù)預先設置的數(shù)據(jù)塊元數(shù)據(jù)信息庫,在得到的數(shù)據(jù)分塊中確 定重復塊和新塊;[0072]處理單元44,將確定得到的新塊的元數(shù)據(jù)信息添加到所述的元數(shù)據(jù)信息庫中,并 將新塊的數(shù)據(jù)添加到記錄文件中,在所述元數(shù)據(jù)信息庫中更新重復塊的引用次數(shù);[0073]本發(fā)明實施例中的裝置和圖1對應的方法實施例的特征相對應,具體分塊過程可參見附圖1對應的實施例中的描述。[0074]參見圖6為另一種小文件處理裝置的示意圖,其中,拆分單元42可以包括:[0075]整合單元420,用于將所述讀取小文件整合為一個大文件;[0076]第一判斷單元421,用于判斷所述滑動窗口的結束位置是否是所述任一小文件 的尾部,如果是,將判斷結果發(fā)送給拆分處理單元;如果否,將判斷結果發(fā)送給第二判斷單 元;[0077]第二判斷單元422,用于判斷滑動窗口當前覆蓋的數(shù)據(jù),是否滿足數(shù)據(jù)分塊條件, 如果是,將判斷結果發(fā)送給拆分處理單元,如果否,將滑動窗口移動一個字節(jié)后,返回執(zhí)行 所述第一判斷單元功能以繼續(xù)利用滑動窗口對所述整合后的大文件進行分塊,直到完成對 所述整合后大文件的數(shù)據(jù)分塊;[0078]拆分處理單元423,用于當判斷所述滑動窗口的結束位置是所述任一小文件的尾 部或者判斷滑動窗口當前覆蓋的數(shù)據(jù)滿足數(shù)據(jù)分塊條件時,將從上一個分塊的結束位置到 當前滑動窗口的結束位置之間的數(shù)據(jù)作為一個數(shù)據(jù)分塊,并將滑動窗口移動一個字節(jié)后, 返回執(zhí)行所述第一判斷單元功能以繼續(xù)利用滑動窗口對所述整合后的大文件進行分塊,直 到完成對所述整合后大文件的數(shù)據(jù)分塊。[0079]本發(fā)明實施例所提供的小文件處理裝置,針對海量小文件的重復數(shù)據(jù)刪除的處 理,將小文件整合為一個大文件后,對整合后的大文件整體進行分塊后,再坐重復數(shù)據(jù)查找 等操作,有效提供了小文件的重復數(shù)據(jù)刪除效率。[0080]參見圖7,本發(fā)明實施例還提供另一種小文件處理裝置,其結構和圖6對應的實施 例中裝置的結構大致相同,與之相同的部分不再贅述。不同之處在于,還包括:[0081]映射單元55,用于根據(jù)組成所述讀取的每個小文件所需的數(shù)據(jù)塊在記錄文件中的 地址,建立組成所述讀取的每個小文件的數(shù)據(jù)塊地址和小文件標識之間的對應關系。[0082]其中,映射單元55,可以包括:[0083]索引單元551,用于存儲至少N個數(shù)據(jù)分塊在記錄文件中的地址信息;[0084]映射子單元552,用于根據(jù)索引文件中組成所述讀取的每個小文件所需的數(shù)據(jù)塊 在記錄文件中的地址,建立組成所述讀取的每個小文件的數(shù)據(jù)塊地址和小文件標識之間的 對應關系。[0085]其中,映射子單元552,可具體用于根據(jù)所述讀取的每個一個小文件的不同數(shù)據(jù)塊 在記錄文件中的地址,建立一個的鏈接,從而得到N個鏈接且每個鏈接對應一個統(tǒng)一的小 文件,按照每個鏈接對應的小文件的標識,將N個鏈接分別重命名。[0086]本發(fā)明實施例所提供的小文件處理裝置,還可以包括:[0087]請求處理單元56,用于接收讀取N個小文件中至少一個小文件的請求,讀取請求 中包括欲讀取的小文件標識,根據(jù)組成統(tǒng)一小文件的數(shù)據(jù)塊地址和小文件標識之間的對應 關系,從記錄文件中讀取組成小文件的數(shù)據(jù)塊。[0088]利用本發(fā)明實施例所提供的小文件處理方法和裝置,對讀取的小文件整合為一個 大文件后,對整合后的大文件進行整體進行分塊后,再進行重復數(shù)據(jù)查找等操作,提高了小 文件的重復數(shù)據(jù)刪除效率。[0089]本領域普通技術人員可以理解:實現(xiàn)上述各方法實施例的全部或部分步驟可以通 過程序指令相關的硬件來完成。前述的程序可以存儲于一計算機可讀取存儲介質中。該程序在執(zhí)行時,執(zhí)行包括上述各方法實施例的步驟;而前述的存儲介質包括:ROM、RAM、磁碟 或者光盤等各種可以存儲程序代碼的介質。[0090]最后應說明的是:以上各實施例僅用以說明本發(fā)明的技術方案,而非對其限制; 盡管參照前述各實施例對本發(fā)明進行了詳細的說明,本領域的普通技術人員應當理解:其 依然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分或者全部技術特征 進行等同替換;而這些修改或者替換,并不使相應技術方案的本質脫離本發(fā)明各實施例技 術方案的范圍。
【權利要求】
1.一種小文件處理方法,其特征在于:讀取N個小文件,其中,所述小文件為小于預置大小的小文件;將所述讀取的N個小文件整合為一個大文件,利用滑動窗口對所述整合后的大文件進行分塊;所述利用滑動窗口對所述整合后的大文件進行分塊,包括:判斷所述滑動窗口的結束位置是否是所述任一小文件的尾部,如果是,則將從上一個分塊的結束位置到當前滑動窗口的結束位置之間的數(shù)據(jù)作為一個數(shù)據(jù)分塊;如果否,則判斷滑動窗口當前覆蓋的數(shù)據(jù),是否滿足數(shù)據(jù)分塊條件;如果滿足所述分塊條件,則將從上一個分塊的結束位置到當前滑動窗口的結束位置之間的數(shù)據(jù)作為一個數(shù)據(jù)分塊;如果不滿足所述分塊條件,則將所述滑動窗口移動一個字節(jié), 繼續(xù)利用滑動窗口對所述整合后的大文件進行分塊,直到完成對所述整合后大文件的數(shù)據(jù)分塊;根據(jù)預先設置的數(shù)據(jù)塊元據(jù)數(shù)信息庫,在得到的數(shù)據(jù)分塊中確定重復塊和新塊;將確定得到的新塊的元數(shù)據(jù)信息添加到所述的元數(shù)據(jù)信息庫中,并將新塊的數(shù)據(jù)添加到記錄文件中,在所述元數(shù)據(jù)信息庫中更新重復塊的引用次數(shù)。
2.根據(jù)權利要求1所述的方法,其特征在于,還包括:根據(jù)組成所述讀取的每個小文件所需的數(shù)據(jù)塊在所述記錄文件中的地址,建立組成所述讀取的每個小文件的數(shù)據(jù)塊地址和小文件標識之間的對應關系。
3.根據(jù)權利要求2所述的方法,其特征在于,所述根據(jù)組成所述讀取的每個小文件所需的數(shù)據(jù)塊在記錄文件中的地址,建立組成所述讀取的每個小文件的數(shù)據(jù)塊地址和小文件標識之間的對應關系,包括:將所述得到的數(shù)據(jù)分塊在記錄文件中的地址信息存儲到索引文件中;根據(jù)索引文件中組成所述讀取的小文件所需的數(shù)據(jù)塊在所述記錄文件中的地址,建立組成所述讀取的小文件的數(shù)據(jù)塊地址和小文件標識之間的對應關系。
4.根據(jù)權利要求2所述的方法,其特征在于,所述根據(jù)組成所述讀取的每個小文件所需的數(shù)據(jù)塊在記錄文件中的地址,建立組成所述讀取的每個小文件的數(shù)據(jù)塊地址和小文件標識之間的對應關系,包括:根據(jù)組成所述讀取的一個小文件的所有數(shù)據(jù)塊在記錄文件中的地址,建立一個鏈接, 每個鏈接對應一個所述讀取的小文件,按照每個鏈接對應的小文件的標識,將建立的鏈接分別重命名。
5.根據(jù)權利要求1-4任一所述的方法,其特征在于,所述根據(jù)預先設置的數(shù)據(jù)塊元數(shù)據(jù)信息庫,在得到的數(shù)據(jù)分塊中確定重復塊和新塊,之前還包括:將得到的數(shù)據(jù)分塊,進行相互比較,將得到的數(shù)據(jù)分塊中相同的數(shù)據(jù)塊刪除至一份。
6.根據(jù)權利要求1-4任一所述的方法,其特征在于,所述讀取的N個小文件為存儲器中同一目錄下的N個小文件。
7.根據(jù)權利要求2所述的方法,其特征在于,還包括:接收讀請求,所述讀請求中包括欲讀取的小`文件標識,根據(jù)組成所述讀取的小文件的數(shù)據(jù)塊地址和小文件標識之間的所述對應關系,從記錄文件中讀取組成小文件的數(shù)據(jù)塊。
8.一種小文件處理裝置,其特征在于,包括:讀取單元,用于讀取N個小文件,其中,所述小文件為小于預置大小的小文件;拆分單元,用于將所述讀取的N個小文件整合為一個大文件,對整合后的大文件進行數(shù)據(jù)分塊;確定單元,用于根據(jù)預先設置的數(shù)據(jù)塊元數(shù)據(jù)信息庫,在得到的數(shù)據(jù)分塊中確定重復塊和新塊;處理單元,將確定得到的新塊的元數(shù)據(jù)信息添加到所述的元數(shù)據(jù)信息庫中,并將新塊的數(shù)據(jù)添加到記錄文件中,在所述元數(shù)據(jù)信息庫中更新重復塊的引用次數(shù);其中,所述拆分單元,包括:整合單元,用于將所述讀取的小文件整合為一個大文件;第一判斷單元,用于判斷所述滑動窗口的結束位置是否是所述任一小文件的尾部,如果是,將判斷結果發(fā)送給拆分處理單元;如果否,將判斷結果發(fā)送給第二判斷單元;第二判斷單元,用于判斷滑動窗口當前覆蓋的數(shù)據(jù),是否滿足數(shù)據(jù)分塊條件,如果是, 將判斷結果發(fā)送給拆分處理單元,如果否,將滑動窗口移動一個字節(jié)后,返回執(zhí)行所述第一判斷單元功能以繼續(xù)利用滑動窗口對所述整合后的大文件進行分塊,直到完成對所述整合后大文件的數(shù)據(jù)分塊;拆分處理單元,用于當判斷所述滑動窗口的結束位置是所述任一小文件的尾部或者判斷滑動窗口當前覆蓋的數(shù)據(jù)滿足數(shù)據(jù)分塊條件時,將從上一個分塊的結束位置到當前滑動窗口的結束位置之間的數(shù)據(jù)作為一個數(shù)據(jù)分塊,并將滑動窗口移動一個字節(jié)后,返回執(zhí)行所述第一判斷單元功能以繼續(xù)利用滑動窗口對所述整合后的大文件進行分塊,直到完成對所述整合后大文件的數(shù)據(jù)分塊。
9.根據(jù)權利要求8所述的裝置,其特征在于,還包括:映射單元,用于根據(jù)組成所述讀取的每個小文件所需的數(shù)據(jù)塊在所述記錄文件中的地址,建立組成所述讀取的每個小文件的數(shù)據(jù)塊地址和小文件標識之間的對應關系。
10.根據(jù)權利要求9所述的裝置,其特征在于,還包括:請求處理單元,用于接收讀取所述N個小文件中至少一個小文件的請求,讀取請求中包括欲讀取的小文件標識,根據(jù)組成統(tǒng)一小文件的數(shù)據(jù)塊地址和小文件標識之間的對應關系,從所述記錄文件中讀取組成小文件的數(shù)據(jù)塊。
11.根據(jù)權利要求9所述的裝置,其特征在于,所述映射單元,包括:索引單元,用于存儲所述拆分得到的數(shù)據(jù)分塊在所述記錄文件中的地址信息;映射子單元,用于根據(jù)索引文件中組成所讀取的小文件所需的數(shù)據(jù)塊在所述記錄文件中的地址,建立組成所讀取的小文件的數(shù)據(jù)塊地址和小文件標識之間的對應關系。`
【文檔編號】G06F17/30GK103514210SQ201210217046
【公開日】2014年1月15日 申請日期:2012年6月28日 優(yōu)先權日:2012年6月28日
【發(fā)明者】葉林睿, 張宗全, 鐘延輝 申請人:華為技術有限公司