一种快速差量压缩方法

文档序号:9754066阅读:1200来源:国知局
一种快速差量压缩方法
【技术领域】
[0001 ]本发明属于计算机存储的数据压缩领域,更具体地,涉及一种快速差量压缩方法。
【背景技术】
[0002] 近年来,随着计算机技术和网络的发展普及,全球的数据信息存储量呈爆炸式增 长的趋势。虽然存储设备的售价一直在不停的下降,但也远远赶不上数据扩张增长的速度。 重复数据删除(Data Deduplication)作为一种通过大规模地有效地消除冗余数据的技术, 成为近些年来存储系统研究的热点。重复数据删除不仅能够极大地节省存储空间从而提高 存储资源的利用率,而且能够通过避免冗余数据的传输提高网络带宽的传输效率。
[0003] 但是随着重复数据删除技术的发展,重复数据删除技术也面临诸多的挑战。由于 传统的重复数据删除技术是基于数据块的指纹来进行重复数据判断,所以这限制了重复数 据删除技术只能识别完全重复的数据块,而不能识别那些很相似的数据块。比如两个数据 块A1和A2仅几个字节不同的情况,虽然A1和A2接近完全相似,但是重复数据删除技术会产 生截然不同的数据指纹从而忽略了对这些相似数据的冗余处理。于是差量压缩(Delta Compression)技术就被提出来应用在这种场合,差量压缩是一项高效的数据压缩技术,它 能够根据基准数据块(或称引用数据块)A r对其相似数据块&进行高度压缩。数据块的相似 度越高,则压缩效率越高。如公式所示,把Ar和Ai输入Delta算法器,Delta算法器会输出一个 差量数据(记作An)代表文件&的压缩版本。如需要解压数据&,则读取差量数据A r>1和基 准数据块Ar即可以计算得出数据A1d
[0004]
[0005]
[0006] 所以,差量压缩与重复数据删除技术比较而言,差量压缩能够消除非重复但是相 似的冗余数据,从而获得更大的数据压缩比。
[0007] 然而,现有的差量压缩技术存在以下问题:其压缩编码慢,索引开销大,数据压缩 效率低,可扩展性差;以目前广泛采用的加州伯克利大学经典的Xdelta差量压缩算法为例, 其压缩编码速率大约仅在30-60MB/S(采用intel四核Xeon 2.6Ghz处理器),这样缓慢的差 量压缩编码速率严重地限制了该算法的推广和发展。

【发明内容】

[0008] 针对现有技术的以上缺陷或改进需求,本发明提供了一种快速差量压缩方法,其 目的在于,通过将相似数据块(或文件)基于内容快速切分单词、计算单词哈希、索引查找重 复单词等操作,识别相似数据块之间的不同数据,实现最终的差量编码存储,从而节省存储 空间,并解决现有差量压缩技术中存在的压缩编码慢、索引开销大、数据压缩效率低、可扩 展性差的技术问题。
[0009] 为实现上述目的,按照本发明的一个方面,提供了一种快速差量压缩方法,包括以 下步骤:
[0010] (1)对差量压缩中的基准块B进行基于内容的快速切分,以得到多个单词,从而构 成单词库;
[0011] (2)对与基准块B相似的数据块A进行基于内容的快速切分,并且对快速切分期间 检测到的重复单词进行放大,以得到重复单词和非重复单词;
[0012] (3)对步骤(2)中得到的重复单词和非重复单词按切分顺序依次进行编码和储存, 并分别使用两种不同的数据格式来记录重复单词和非重复单词,以得到差量数据块Λβ,α;
[0013] (4)在需要对差量数据块Λβ,a进行解码操作时,依次从Λβ,a中获取两种数据格式 的记录,从而依次获得数据块A的所有单词,将这些单词顺序写入输出流,以恢复出完整的 数据块A。
[0014] 优选地,步骤(1)包括如下子步骤:
[0015] (1-1)初始化快速滑动哈希值f = 1,设置基准块B的当前滑动位置i = l;
[0016] (1-2)计算基准块B在当前滑动位置i处的快速滑动哈希值€4=(代〈1)+8^其中& 表示基准块B在当前滑动位置i处的字节内容;
[0017] (1-3)判断步骤(1-2)计算得到的快速滑动哈希值f是否满足最低p个位都为0,是 则进入步骤(1-4),否则进入步骤(1-5);
[0018] (1-4)标记位置i为一个单词的结束,并利用指纹算法对该单词计算指纹,以建立 该单词的指纹索引,设置f = l,进入步骤(1-5);
[0019] (1-5)设置i = i+l,并重复执行步骤(1-2)和(1-3),直到处理完数据块B的最后一 个字节为止。
[0020] 优选地,步骤(2)包括如下子步骤:
[0021] (2-1)初始化快速滑动哈希值g = l,设置数据块A的当前滑动位置j = l;
[0022] (2-2)计算数据块A在当前位置j处的快速滑动哈希值8^=(8〈〈1)+4」,其中41表示 数据块A在当前滑动位置j处的字节内容;
[0023] (2-3)判断步骤(2-2)计算得到的快速滑动哈希值g是否满足最低p个位都为0,是 则进入步骤(2-4);否则转入步骤(2-6);
[0024] (2-4)标记位置j为一个单词W的结束,并利用与步骤(1-4)中相同的指纹算法对该 单词W计算指纹h;
[0025] (2-5)根据指纹h查找基准块B的单词库,通过指纹索引检测W是否为重复单词,若 是则进入步骤(2-5);否则标记单词W为非重复单词,设置f = l,进入步骤(2-6);
[0026] (2-6)标记单词W为重复单词,并继续比对单词W和W在基准块B中的重复单词V后续 的字节内容是否相同,一旦遇到一个不相同的字节,就停止比对,最终得到后续相同的字节 数k,设置单词W的长度增加 k,设置」=」+1^4 = 1,并返回步骤(2-2);
[0027] (2-7)设置j = j+l,并重复执行步骤(2-2)和(2-3),直到处理完数据块A的最后一 个字节为止。
[0028] 优选地,步骤(3)具体为,使用'0'数据格式记录重复单词在基准块B中的位置和长 度信息,使用'1'数据格式记录非重复单词的长度信息和字节内容,以得到数据块A对于基 准块B的差量数据块Λβ,α。
[0029] 优选地,步骤(4)具体为,对于'0'数据格式的记录,根据位置和长度信息,从基准 块B中获取重复单词;对于'1'数据格式的记录,直接从该记录中取出非重复单词。
[0030] 总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有 益效果:
[0031] 1、本发明通过基于内容快速切分单词的方法(即步骤(1-2)、(1-3)、(2-2)和(2-3)),每次滑动只需要一次左移运算和一次加法运算,达到了快速的切分单词效果,同时也 避免了传统压缩编码产生的大量有重叠内容的单词,简化了差量压缩编码过程中的单词匹 配过程,减少了对应的内存和计算开销,并且能够保证很高的差量压缩效率。
[0032] 2、本发明通过重复单词放大策略,直接对检测到的重复单词向后比对内容是否重 复,避免了对重复单词后续部分字节的分块、哈希、检索等计算操作,加速了差量压缩编码 过程;同时由于重复单词放大减少了差量数据中的记录个数,所以也加速了解码的过程。并 且该方法可以维护重复单词的局部性,保障了较高的数据压缩效率。
[0033] 3、本发明的基于内容快速切分单词方法帮助重复单词放大方法迅速定位找了重 复单词,而重复单词放大方法则帮助差量压缩减少后续部分的分块、哈希等计算。所以这两 者的结合相得益彰,获得了很快的差量压缩编码速度。同时重复单词放大方法最大化地贪 心检测重复单词后续的更多的重复内容,保障了较高的差量压缩效率。
[0034] 4、本发明提出的合并非重复单词进行编码的过程,对于多个连续的非重复单词, 采用一次记录,加快了差量压缩编码和解码的过程。
【附图说明】
[0035] 图1是本发明快速差量压缩编码方法的流程图。
[0036] 图2是本发明采用的快速滑动哈希方法示意图。
[0037] 图3是本发明采用的基于内容分块与传统压缩方法的比较示意图。
[0038] 图4是本发明采用的单词放大方法示意图。
[0039]图5是本发明米用的编码格式不意图。
【具体实施方式】
[0040] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对 本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并 不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要 彼此之间未构成冲突就可以相互组合。
[0041] 如图1所示,本发明的差量压缩主要包括三个部分,基于内容快速切分单词、重复 单词放大方法、合并非重复单词的差量编码。
[0042] 本发明提出的基于内容快速切分单词方法,避免了传统压缩编码产生大量的有重 叠内容的单词,简化了差量压缩编码过程中的单词匹配过程。如图2所示,传统的差量压缩 方法产生了大量的重叠字符串,以希望找到更多的重复单词;本发明提出的基于内容快速 切分单词方法,产生了较少的单词,同时也能避免内容修改导致的位置偏移问题:即保证到 了相同的内容能产生同样的单词切割点。该方法的优点:每次滑动只需要一次加法和左移 运算,内存和计算开销小,同时能够保证很高的差量压缩效率。
[0043] 本发明提出的重复单词放大方法,直接对检测到的重复单词往后匹配内容,就可 以避免放大区域的分块和指纹计算、索引操作等。该方法是基于数据流的单词局部性特征 来展开的,存储系统中的单词局部性是指,当单词曾经以序列A、B、C出现时,那么下次出现 单词A时,单词B和C很有可能会紧随后面。本发明挖掘这种数据流的单词局部性来开展差量 压缩编码工作,如图4所示,对于前后两次相似数据块的单词序列: 八3、六4、心,采用基于内容快速切分单词的方法可以确定出和知重复。根据前述的局部性原理, 单词B3、B4、B5很有可能分别和单词A3、A4、A5分别重复,这样B3、B4、B5和A3、A4、A5的耗时的分 块、哈希、索引等操作就没有必要了,只需要将单词从出和如向后比对扩大到{B 2、B3、B4、B5} 和{知、知^4、心}。同时,重复单词放大的方法不局限于基于内容单词划分的边界,可能最终 停止的位置在某个单词内部的位置,这样就可以找到更多的重复内容。所以这种重复单词 放大的方法只要简单比对后续内容,从而简化并加速了差量压缩的编码操作,并保证获得 较高的数据压缩效率。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1