本发明专利技术提供一种差异化对比分块的优化方法,该方法基于rsync的算法对数据分块进行差异化比对的优化方法,对不同大小的块进行分类比对,减少比对次数,提高比对的效率,把差异化的块合并为大块,减少文件操作次数,提高系统性能。
【技术实现步骤摘要】
一种差异化对比分块的优化方法
本专利技术涉及一种数据块对比技术,具体涉及一种差异化对比分块的优化方法。
技术介绍
云计算技术在实际中得到了广泛的应用,云存储技术也得到了快速的发展。在现有网络环境下,提出了将不同用户存储的数据快速地保存到数据中心服务器上的要求。因为数据量大,网络速度又低造成了用户存储数据到云端的体验不是很好。云盘就是由这种将云计算从概念转化为实际产品应用形势下诞生的,它是云存储的一个应用,怎样减少网络传输量是该系统需要重点处理的一个问题。Rsync是一种比较成熟的和应用很广泛的同步文件的一个高效算法,采用分块和强弱校验值进行差异化比对,但是一般它用来对完整的文件进行比对,找出差异化数据,然后根据差异化数据还原成一个完整的文件。而由于云盘系统采用了分块存储技术,对rsync算法来说就有点不适用,因为采用分块保存的数据会有很多块碎片,不是固定大小的块,而rsync算法主要是针对固定大小的块进行比对,只有最后一块的大小会比固定的大小块要小,这样就会造成rsync的比对效率低。由于分块存储,在比对中产生的块碎片也会随着时间的增加变得越来越多,这样就造成系统运行的时间越长,差异化比对的性能就越差,从而造成整个企业云盘的性能会越来越差,用户的体验也就会越来越不好。这样就会让该系统的后期的维护成本很高,用户对该产品的反响差,造成该产品不能达到预期的推广应用。
技术实现思路
为了克服上述现有技术的不足,本专利技术提供一种差异化对比分块的优化方法。该方法提出基于rsync的算法对数据分块进行差异化比对的优化算法,提高比对的效率,满足云存储的实际的数据能够被打乱并在云端的任何部分被拼接的需求。为了实现上述专利技术目的,本专利技术采取如下技术方案:一种差异化对比分块的优化方法,该方法步骤如下:(1)从服务端取得文件A的当前版本的块信息队列或所有版本的块信息队列;(2)把文件A以N0、N1、N2…Nm由小至大的顺序分块,并按块大小分类,形成N0到Nm的队列;(3)本地文件B按N0的块大小分块并计算出每个块的总和校验码和md5值得到块信息列表B0_block_list;(4)遍历B0_block_list,用rsync方法把遍历后的块信息与文件A的N0队列中的块信息作差异化对比;(5)把文件B中没有匹配的块组成临时文件B1,把文件B1按N1的块大小进行分块,并计算出每个块的总和校验码和md5值得到B1_block_list;(6)遍历B1_block_list,用rsync方法把遍历后的块信息与文件A的N1队列中的块信息作差异化对比;(7)循环步骤(3)到步骤(6)以此类推直到以Nm为大小进行比对,找出文件B和文件A没有匹配的差异化块;(8)合并差异化块;(9)计算合并后的差异化块的总和校验码和md5值,得到有差异化块信息列表。本专利技术提供的优选技术方案中,所述步骤(4)rsync方法的步骤如下:A.分别对文件A和B分割成连续不重叠的大小为S字节的数据块;B.分别对文件A和B每个数据块计算出两个校验值;C.文件B每个数据块的校验值与文件A每个数据块的校验值做比较,得出不匹配的数据块。本专利技术提供的第二优选技术方案中,所述两个检验值包括32位弱滚动检验和128位MD5校验。本专利技术提供的第三优选技术方案中,所述32位弱滚动检验使用滚动检验算法。本专利技术提供的第四优选技术方案中,所述步骤(8)合并差异化块若以Nm为大小的差异化块是相邻的块则合并大块,最大的合并块大小不能大于N0。与最接近的现有技术比,本专利技术提供的技术方案具有如下优异效果:本专利技术对不同大小的数据块进行分类比对,减少比对的次数,提高比对效率;把有差异化的块尽量合并为大块,减少文件操作次数,提高系统性能;尽可能传送大块,节省网络传送次数,提高网络利用率;只传输有差异化的块,节省数据传输的网络带宽,降低带宽成本。大大降低了系统的后期的维护成本,极高提升了用户对该产品的反响度,使产品可以达到预期的推广应用效果。附图说明图1是差异化对比分块优化方法的流程图具体实施方式下面结合附图对本专利技术作进一步详细说明。如图1所示,差异化对比分块的优化方法,具体步骤如下:(1)从服务端取得文件A的当前版本的块信息队列或所有版本的块信息队列;(2)把文件A先后以N0、N1、N2…Nm的块大小进行分块,并按块大小进行分类,形成N0到Nm的队列;(3)本地文件B按N0的块大小进行分块并计算出每个块的checksum(总和校验码)和md5值得到块信息列表B0_block_list;(4)遍历B0_block_list,把遍历后的块信息与文件A的N0队列中的块信息用rsync方法进行差异化对比;(5)把文件B中没有匹配的块组成临时文件B1,把文件B1按N1的块大小进行分块,并计算出每个块的checksum(总和校验码)和md5值得到B1_block_list;(6)遍历B1_block_list,把遍历后的块信息与文件A的N1队列中的块信息用rsync方法进行差异化对比;(7)循环步骤(3)到步骤(6)以此类推直到以Nm为大小进行比对,找出文件B和文件A没有匹配的块,这些块就是差异化块;(8)合并差异化块,合并差异化块若以Nm为大小的差异化块是相邻的块则合并大块,最大的合并块大小不能大于N0;(9)计算合并后的差异化块的checksum(总和校验码)和md5值,得到有差异化块信息列表。步骤(4)rsync方法的步骤如下:A.分别对文件A和B分割成连续不重叠的大小为S字节的数据块;B.分别对文件A和B每个数据块计算出两个校验值;C.文件B每个数据块的校验值与文件A每个数据块的校验值做比较,得出不匹配的数据块。两个检验值包括32位弱滚动检验和128位MD5校验。32位弱滚动检验使用滚动检验算法。滚动检验算法用于快速计算数据块的校验值。它是一种弱校验算法,采用的是MarkAdler的adler-32校验,它的定义如下:s(k,l)=a(k,l)+216b(k,l)上面公式中,s(k,l)表示数据块Xk,...,Xl的滚动校验值,为了简化以及计算速度考虑,M取值为216。这种校验计算公式具有一个非常关键的特性,那就是后续校验值可以通过递推关系高效地计算获得。a(k+1,l+1)=(a(k,l)-Xk+Xl+1)modMb(k+1,l+1)=(b(k,l)-(l-k+1)Xk+a(k+1,l+1))modMs(k+1,l+1)=a(k+1,l+1)+216b(k+1,l+1)因此,给定X1,...,Xn的校验值,X1以及Xn+1,我们就可以快速地计算出X2,...,Xn+1校验值。这样,利用这种性质我们就可以高效地计算数据块连续校验值,大幅减少checksum计算量。最后应当说明的是:以上实施例仅用以说明本专利技术的技术方案而非对其限制,尽管参照上述实施例对本专利技术进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本专利技术的具体实施方式进行修改或者等同替换,而未脱离本专利技术精神和范围的任何修改或者等同替换,其均应涵盖在本专利技术的权利要求范围当中。本文档来自技高网...
【技术保护点】
一种差异化对比分块的优化方法,其特征在于,该方法步骤如下:(1)从服务端取得文件A的当前版本的块信息队列或所有版本的块信息队列;(2)把文件A以N0、N1、N2…Nm由小至大的顺序分块,并按块大小分类,形成N0到Nm的队列;(3)本地文件B按N0的块大小分块并计算出每个块的总和校验码和md5值,从而得到块信息列表B0_block_list;(4)遍历B0_block_list,用rsync方法把遍历后的块信息与文件A的N0队列中的块信息作差异化对比;(5)把文件B中没有匹配的块组成临时文件B1,把文件B1按N1的块大小进行分块,并计算出每个块的总和校验码和md5值,从而得到B1_block_list;(6)遍历B1_block_list,用rsync方法把遍历后的块信息与文件A的N1队列中的块信息作差异化对比;(7)循环步骤(3)到步骤(6)以此类推直到以Nm为大小进行比对,找出文件B和文件A没有匹配的差异化块;(8)合并差异化块;(9)计算合并后的差异化块的总和校验码和md5值,得到有差异化块信息列表。
【技术特征摘要】
1.一种差异化对比分块的优化方法,其特征在于,该方法步骤如下:(1)从服务端取得文件A的当前版本的块信息队列或所有版本的块信息队列;(2)把文件A以N0、N1、N2…Nm由小至大的顺序分块,并按块大小分类,形成N0到Nm的队列;(3)本地文件B按N0的块大小分块并计算出每个块的总和校验码和md5值,从而得到块信息列表B0_block_list;(4)遍历B0_block_list,用rsync方法把遍历后的块信息与文件A的N0队列中的块信息作差异化对比;(5)把文件B中没有匹配的块组成临时文件B1,把文件B1按N1的块大小进行分块,并计算出每个块的总和校验码和md5值,从而得到B1_block_list;(6)遍历B1_block_list,用rsync方法把遍历后的块信息与文件A的N1队列中的块信息作差异化对比;(7)循环步骤(3)到步骤(6)以此类推直到以Nm为大小进行比对,找出...
【专利技术属性】
技术研发人员:周军,赵欢,张磊,赵晓杰,王亮,张晋锋,李帅,
申请(专利权)人:曙光信息产业北京有限公司,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。