一種差異化對比分塊的優(yōu)化方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及一種數(shù)據(jù)塊對比技術(shù),具體涉及一種差異化對比分塊的優(yōu)化方法。
【背景技術(shù)】
[0002] 云計算技術(shù)在實際中得到了廣泛的應(yīng)用,云存儲技術(shù)也得到了快速的發(fā)展。在現(xiàn) 有網(wǎng)絡(luò)環(huán)境下,提出了將不同用戶存儲的數(shù)據(jù)快速地保存到數(shù)據(jù)中心服務(wù)器上的要求。因 為數(shù)據(jù)量大,網(wǎng)絡(luò)速度又低造成了用戶存儲數(shù)據(jù)到云端的體驗不是很好。
[0003] 云盤就是由這種將云計算從概念轉(zhuǎn)化為實際產(chǎn)品應(yīng)用形勢下誕生的,它是云存儲 的一個應(yīng)用,怎樣減少網(wǎng)絡(luò)傳輸量是該系統(tǒng)需要重點處理的一個問題。
[0004] Rsync是一種比較成熟的和應(yīng)用很廣泛的同步文件的一個高效算法,采用分塊和 強弱校驗值進行差異化比對,但是一般它用來對完整的文件進行比對,找出差異化數(shù)據(jù),然 后根據(jù)差異化數(shù)據(jù)還原成一個完整的文件。而由于云盤系統(tǒng)采用了分塊存儲技術(shù),對rsync 算法來說就有點不適用,因為采用分塊保存的數(shù)據(jù)會有很多塊碎片,不是固定大小的塊,而 rsync算法主要是針對固定大小的塊進行比對,只有最后一塊的大小會比固定的大小塊要 小,這樣就會造成rsync的比對效率低。
[0005] 由于分塊存儲,在比對中產(chǎn)生的塊碎片也會隨著時間的增加變得越來越多,這樣 就造成系統(tǒng)運行的時間越長,差異化比對的性能就越差,從而造成整個企業(yè)云盤的性能會 越來越差,用戶的體驗也就會越來越不好。這樣就會讓該系統(tǒng)的后期的維護成本很高,用戶 對該產(chǎn)品的反響差,造成該產(chǎn)品不能達到預(yù)期的推廣應(yīng)用。
【發(fā)明內(nèi)容】
[0006] 為了克服上述現(xiàn)有技術(shù)的不足,本發(fā)明提供一種差異化對比分塊的優(yōu)化方法。該 方法提出基于rsync的算法對數(shù)據(jù)分塊進行差異化比對的優(yōu)化算法,提高比對的效率,滿 足云存儲的實際的數(shù)據(jù)能夠被打亂并在云端的任何部分被拼接的需求。
[0007] 為了實現(xiàn)上述發(fā)明目的,本發(fā)明采取如下技術(shù)方案:
[0008] 一種差異化對比分塊的優(yōu)化方法,該方法步驟如下:
[0009] (1)從服務(wù)端取得文件A的當(dāng)前版本的塊信息隊列或所有版本的塊信息隊列;
[0010] (2)把文件A以N0、N1、N2…Nm由小至大的順序分塊,并按塊大小分類,形成N0到 Nm的隊列;
[0011] (3)本地文件B按N0的塊大小分塊并計算出每個塊的總和校驗碼和md5值得到塊 信息列表B0_block_list;
[0012] (4)遍歷B0_block_list,用rsync方法把遍歷后的塊信息與文件A的NO隊列中 的塊信息作差異化對比;
[0013] (5)把文件B中沒有匹配的塊組成臨時文件B1,把文件B1按N1的塊大小進行分 塊,并計算出每個塊的總和校驗碼和md5值得到Bl_block_list;
[0014] (6)遍歷Bl_block_list,用rsync方法把遍歷后的塊信息與文件A的N1隊列中 的塊信息作差異化對比;
[0015] (7)循環(huán)步驟(3)到步驟(6)以此類推直到以Nm為大小進行比對,找出文件B和 文件A沒有匹配的差異化塊;
[0016] (8)合并差異化塊;
[0017] (9)計算合并后的差異化塊的總和校驗碼和md5值,得到有差異化塊彳目息列表。
[0018] 本發(fā)明提供的優(yōu)選技術(shù)方案中,所述步驟(4)rsync方法的步驟如下:
[0019] A.分別對文件A和B分割成連續(xù)不重疊的大小為S字節(jié)的數(shù)據(jù)塊;
[0020]B.分別對文件A和B每個數(shù)據(jù)塊計算出兩個校驗值;
[0021] C.文件B每個數(shù)據(jù)塊的校驗值與文件A每個數(shù)據(jù)塊的校驗值做比較,得出不匹配 的數(shù)據(jù)塊。
[0022] 本發(fā)明提供的第二優(yōu)選技術(shù)方案中,所述兩個檢驗值包括32位弱滾動檢驗和128 位MD5校驗。
[0023] 本發(fā)明提供的第三優(yōu)選技術(shù)方案中,所述32位弱滾動檢驗使用滾動檢驗算法。
[0024] 本發(fā)明提供的第四優(yōu)選技術(shù)方案中,所述步驟(8)合并差異化塊若以Nm為大小的 差異化塊是相鄰的塊則合并大塊,最大的合并塊大小不能大于N0。
[0025] 與最接近的現(xiàn)有技術(shù)比,本發(fā)明提供的技術(shù)方案具有如下優(yōu)異效果:
[0026] 本發(fā)明對不同大小的數(shù)據(jù)塊進行分類比對,減少比對的次數(shù),提高比對效率;把有 差異化的塊盡量合并為大塊,減少文件操作次數(shù),提高系統(tǒng)性能;盡可能傳送大塊,節(jié)省網(wǎng) 絡(luò)傳送次數(shù),提高網(wǎng)絡(luò)利用率;只傳輸有差異化的塊,節(jié)省數(shù)據(jù)傳輸?shù)木W(wǎng)絡(luò)帶寬,降低帶寬 成本。大大降低了系統(tǒng)的后期的維護成本,極高提升了用戶對該產(chǎn)品的反響度,使產(chǎn)品可以 達到預(yù)期的推廣應(yīng)用效果。
【附圖說明】
[0027] 圖1是差異化對比分塊優(yōu)化方法的流程圖
【具體實施方式】
[0028] 下面結(jié)合附圖對本發(fā)明作進一步詳細說明。
[0029] 如圖1所示,差異化對比分塊的優(yōu)化方法,具體步驟如下:
[0030] (1)從服務(wù)端取得文件A的當(dāng)前版本的塊信息隊列或所有版本的塊信息隊列;
[0031] (2)把文件A先后以NO、Nl、N2…Nm的塊大小進行分塊,并按塊大小進行分類,形 成N0到Nm的隊列;
[0032] (3)本地文件B按N0的塊大小進行分塊并計算出每個塊的checksum(總和校驗 碼)和md5值得到塊信息列表B0_block_list;
[0033] (4)遍歷B0_block_list,把遍歷后的塊信息與文件A的NO隊列中的塊信息用 rsync方法進行差異化對比;
[0034] (5)把文件B中沒有匹配的塊組成臨時文件B1,把文件B1按N1的塊大小進行分 塊,并計算出每個塊的checksum(總和校驗碼)和md5值得到Bl_block_list;
[0035] (6)遍歷Bl_block_list,把遍歷后的塊信息與文件A的N1隊列中的塊信息用 rsync方法進行差異化對比;
[0036] (7)循環(huán)步驟(3)到步驟(6)以此類推直到以Nm為大小進行比對,找出文件B和 文件A沒有匹配的塊,這些塊就是差異化塊;
[0037] (8)合并差異化塊,合并差異化塊若以Nm為大小的差異化塊是相鄰的塊則合并大 塊,最大的合并塊大小不能大于N0 ;
[0038] (9)計算合并后的差異化塊的checksum(總和校驗碼)和md5值,得到有差異化塊 信息列表。
[0039] 步驟(4)rsync方法的步驟如下:
[0040]A.分別對文件A和B分割成連續(xù)不重疊的大小為S字節(jié)的數(shù)據(jù)塊;
[0041]B.分別對文件A和B每個數(shù)據(jù)塊計算出兩個校驗值;
[0042] C.文件B每個數(shù)據(jù)塊的校驗值與文件A每個數(shù)據(jù)塊的校驗值做比較,得出不匹配 的數(shù)據(jù)塊。
[0043] 兩個檢驗值包括32位弱滾動檢驗和128位MD5校驗。
[0044] 32位弱滾動檢驗使用滾動檢驗算法。
[0045] 滾動檢驗算法用于快速計算數(shù)據(jù)塊的校驗值。它是一種弱校驗算法,采用的是 MarkAdler的adler-32校驗,它的定義如下:
【主權(quán)項】
1. 一種差異化對比分塊的優(yōu)化方法,其特征在于,該方法步驟如下: (1) 從服務(wù)端取得文件A的當(dāng)前版本的塊信息隊列或所有版本的塊信息隊列; (2) 把文件A W NO、N1、N2…Nm由小至大的順序分塊,并按塊大小分類,形成NO到Nm 的隊列; (3) 本地文件B按NO的塊大小分塊并計算出每個塊的總和校驗碼和md5值,從而得到 塊信息列表BO_block_list ; (4) 遍歷BO_block_list,用rsync方法把遍歷后的塊信息與文件A的NO隊列中的塊 信息作差異化對比; (5) 把文件B中沒有匹配的塊組成臨時文件B1,把文件B1按N1的塊大小進行分塊,并 計算出每個塊的總和校驗碼和md5值,從而得到Bl_block_list ; (6) 遍歷Bl_block_list,用rsync方法把遍歷后的塊信息與文件A的N1隊列中的塊 信息作差異化對比; (7) 循環(huán)步驟做到步驟做W此類推直到WNm為大小進行比化找出文件B和文件 A沒有匹配的差異化塊; (8) 合并差異化塊; (9) 計算合并后的差異化塊的總和校驗碼和md5值,得到有差異化塊信息列表。
2. 根據(jù)權(quán)利要求1所述差異化對比分塊的優(yōu)化方法,其特征在于,所述步驟(4)rsync 方法的步驟如下: A. 分別對文件A和B分割成連續(xù)不重疊的大小為S字節(jié)的數(shù)據(jù)塊; B. 分別對文件A和B每個數(shù)據(jù)塊計算出兩個校驗值; C. 文件B每個數(shù)據(jù)塊的校驗值與文件A每個數(shù)據(jù)塊的校驗值做比較,得出不匹配的數(shù) 據(jù)塊。
3. 根據(jù)權(quán)利要求2所述差異化對比分塊的優(yōu)化方法,其特征在于,所述兩個檢驗值包 括32位弱滾動檢驗和128位MD5校驗。
4. 根據(jù)權(quán)利要求3所述差異化對比分塊的優(yōu)化方法,其特征在于,所述32位弱滾動檢 驗使用滾動檢驗算法。
5. 根據(jù)權(quán)利要求1所述差異化對比分塊的優(yōu)化方法,其特征在于,所述步驟(8)合并差 異化塊若W Nm為大小的差異化塊是相鄰的塊則合并大塊,最大的合并塊大小不能大于NO。
【專利摘要】本發(fā)明提供一種差異化對比分塊的優(yōu)化方法,該方法基于rsync的算法對數(shù)據(jù)分塊進行差異化比對的優(yōu)化方法,對不同大小的塊進行分類比對,減少比對次數(shù),提高比對的效率,把差異化的塊合并為大塊,減少文件操作次數(shù),提高系統(tǒng)性能。
【IPC分類】H04L29-08
【公開號】CN104639606
【申請?zhí)枴緾N201410849426
【發(fā)明人】周軍, 趙歡, 張磊, 趙曉杰, 王亮, 張晉鋒, 李帥
【申請人】曙光信息產(chǎn)業(yè)(北京)有限公司
【公開日】2015年5月20日
【申請日】2014年12月29日