基于预分块及滑动窗口的重复数据消除方法

文档序号:7518650阅读:220来源:国知局
专利名称:基于预分块及滑动窗口的重复数据消除方法
技术领域
本发明涉及重复数据消除的应用领域,具体涉及一种基于预分块及滑动窗口的重 复数据消除方法。
背景技术
为了减小数据的存储空间开销及减小数据远程传输时的带宽占用,通常需要对数 据进行压缩。传统的数据压缩方法利用数据对象(Data Object,以下简写为DO)自身内部 编码的信息冗余进行压缩,这种压缩方法不考虑待压缩DO与系统中其它DO(例如系统中已 存储的待压缩DO的历史版本)之间的关系,因此获得的压缩比(Compression Ratio, CR=DO 原始大小/DO压缩后的大小)通常比较有限,平均为2 :1左右,并且CR受数据对象编码格 式的影响很大,例如对二进制文件和影音文件,传统压缩方法的效果非常有限。在很多应用环境中,系统中不同DO之间有很多相同的数据,例如备份系统中同一 文件的不同备份版本之间,同一软件的不同发布版本之间,邮件系统中群发的邮件之间等 等。重复数据消除技术利用这些DO之间的信息冗余对数据进行压缩,可以获得远高于传 统压缩方法的CR,并且受数据编码格式的影响很小。重复数据消除技术使用固定大小分块 (Fixed Size Chunking, FSC)、基于内容的变长分块(Content Defined Chunking, CDC)、 滑动窗口分块(Sliding Window Chunking, SWC)等方法将DO划分为连续的、互不交叠的分 块(Chunk),计算每个Chunk中数据的哈希值作为该Chunk的唯一标识符(ChunkID),并将 其存入到一个哈希表(HTid)中。DO以Chunk为单位进行存储,每当写入一个新DO时,以组成 该DO的各Chunk的ChunkID去匹配HTid中的记录(称为分块存在性查询,Chunk Existence Query, CEQ),对系统中已经存储了的HTid (即HTid中存在与之匹配的ChunkID)不再重复存 储,只存储新的Chunk及其ChunkID。如前所述,由于DO之间可能存在很多共同的数据,因 此该方法可以大大减小数据的物理存储量。由于重复的数据不需要再写入,在远程传送DO 时还可以大大减小网络数据传输量。FSC以距离DO头部的绝对偏移量来确定Chunk的边界,其优点是速度非常快,并 且Chunk大小一致,便于存储设备处理。但其致命缺点是对新增和删除操作非常敏感,操作 点之后的所有Chunk都会受到影响。原始的⑶C (Original⑶C)用一个窗口(通常大小为 12 Bytes 48 Bytes)在DO中逐Byte移动,寻找某种反复出现的模式(例如窗口 Rabin指 纹值与一个预设值D进行模运算的结果等于-1,Chunk大小的预期值由D值决定,这种模 式称为Marker)作为Chunk边界。由于Chunk的边界是由Marker之间的相对位置决定的, 因此对新增和删除操作不敏感,通常只会有操作点所在的Chunk受到影响,可以获得远高 于FSC的CR。Original⑶C的缺点主要是Chunk大小的波动较大。Base⑶C引入了 Chunk 大小下限Cmin和Chunk大小上限Cmax,减小了 Chunk大小波动,但Cmax的引入会产生硬分块 (Chunka)0 Chunka的边界是基于绝对偏移量划分的,因此和FSC具有相同的缺点,应尽量避 免 Chunk11 的产生。TTTD (Two Threshold Two Divisor)除了设定 Cmin、Cmax 和主模数 D 之 外,还预设了一个备用模数D’,D’ <D,因此有更大的机会找到符合D’边界条件的Marker(记为D’ -Marker,符合D边界条件的Marker相应地记为D-Marker),如果在当前Chunk大 小达到Cmax时还没有遇到D-Marker,则在此范围内如果有D’_Marker,就以其作为Chunk边 界。TTTD在减小Chunk大小波动的同时,减少了 Chimk11的数量。DO在某位置新增或删除 数据后,会使得该位置之后的Chunk相对于DO头部的偏移量发生变化,SffC通过逐Byte滑 动一个大小为K Bytes的窗口(Sliding Window, SW)找出这些偏移量的变化,并以此为依 据确定Chunk边界。SWC相对于⑶C可以获得更高的CR,并且得到的Chunk绝大部分大小 都是等于K Bytes的,波动非常小。以上几种方法都存在一个共同的问题CR和元数据开 销之间的矛盾,即越小的Chunk大小预期值,可以获得越高的CR,但这又会增加Chunk的总 数量,从而显著增加了 Chunk索引和管理的元数据开销。一般而言,基于分块的重复数据消除方法都有两大组成部分,一是将DO划分为互 不交叠的Chunk (该过程称为Chunking),二是通过CEQ,检测DO中各个Chunk是否是重复 的。对无状态的分块方法FSC和⑶C而言,Chunking和CEQ是不相关的、分离的,Chunking 结果只取决于DO本身,与系统的当前状态(即HTid中已存储Chunk的情况)无关,因此在 Chunking过程中完全不需要进行CEQ,对同一 DO而言,在任何时候对其进行Chunking,得 到的Chunking结果总是相同的。而对有状态的分块方法SWC而言,Chunking和CEQ是密 切相关并且融合在一起的,在Chunking过程中需要进行大量的CEQ,Chunking结果取决于 DO本身以及系统当前状态的共同作用,因此同一 DO可能由于系统状态的不同,得到不同的 Chunking结果。HTid通常非常庞大,不能全部装入内存,CEQ就可能会涉及到磁盘I/O操作, 因此开销较大,在网络应用环境中,HTid通常是保存在远程的元数据服务器上的,这就更加 剧了这一问题。SWC在Chunking过程中,在SW所在的每一位置,均要进行CEQ,并且CEQ返 回值为False的情况下,为了确定Chunk边界的偏移量,Sff是逐Byte移动的,这样虽然可 以有效提高CR,但又大大地增加了 CEQ的数量,因此SWC的时间开销非常大。由此可见,有 状态分块方法的主要问题是CR和CEQ数量之间的矛盾。

发明内容
发明目的本发明为了解决现有方法所存在的CR和元数据开销之间的矛盾以及 CR和CEQ数量之间的矛盾,提出了一种基于预分块及滑动窗口的重复数据消除方法(以下 简称 CDSWC )。技术方案为了实现以上目的,本发明所述的一种基于预分块及滑动窗口的重复 数据消除方法,该方法的具体步骤如下;
(1)对数据对象DO进行预分块,将其划分为互不交叠的小分块MC,
(2)再以小分块MC为单位,使用滑动窗口方法检测连续的新的小分块MC并将其融合为 大分块SC ;同时在新旧数据交界部分保留小分块MC。所述步骤(1)中对数据对象DO采用基于数据对象内容的变长分块方法CDC进行 分块。所述滑动窗口方法为
(a)设定滑动窗口SSW;设定滑动窗口 SSW由X个小分块MC组成,并从数据对象DO的 头部开始滑动所述滑动窗口 SSW ;
(b)将数据对象DO中剩下未处理小分块RMC个数L与X进行比较;如果L=X,计算滑动窗口 SSW中数据的SHA-I哈希值,并对滑动窗口 SSW进行分块存在 性查询CEQ;如果分块存在性查询CEQ查询显示结果为真,保留未处理小分块RMC的边界, 输出X个小分块MC,对新的小分块MC进行保存;
如果L<X,若对滑动窗口 SSW进行分块存在性查询CEQ,查询显示结果为真,将未处理小 分块RMC输出为当前R个MC,对各小分块MC进行分块存在性查询CEQ后保存,并将组成滑 动窗口 SSW的X个小分块MC合并为一个重复的大分块SC输出,然后将滑动窗口 SSW向后 滑动X个小分块MC的距离后再进行判断查询;
若对滑动窗口 SSW进行分块存在性查询CEQ,查询显示结果为假,则将滑动窗口 SSW向 后滑动一个小分块MC的距离后在对L和X进比较判断。(C)除了(b)所述情况外,其余情况下均将所述滑动窗口 SSW内的数据保留原有边 界,输出为数个小分块MC。本发明所述的基于预分块及滑动窗口的重复数据消除方法在融合小分块MC时采 用了以下两条准则i .把经常一起出现的连续数据划分为大分块SC ;ii . 在新数据 和旧数据的交界处采用小分块MC。在很多应用环境中,数据对象DO的连续版本之间通常具 有一个重要的关系特征相对整个数据对象DO的大小而言,数据对象DO的绝大部分改动, 往往集中在相对较小的区域内。例如,在很多文件系统中,大部分文件很少发生变化,经常 改变的文件只占整个文件集合的小部分,因此文件系统的连续多个备份映像中,发生改变 的数据通常集中在备份映像较小的区域内。因此很多落在数据变化区域之外的、较长的连 续数据在以后的数据对象DO版本中也常常会重复出现。由于这些较长的连续数据没有处 在数据变化区域中,因此,即使将这些数据划分为大分块SC保存也不会产生过大的边界开 销。这里边界开销是指由于分块边界和实际新数据边界之间的偏差,而造成的新分块大小 与实际新数据大小之间的差值。一般而言,新数据所在分块的大小越小,边界开销就越小。 在新旧数据的交界处采用小分块MC,也可以达到减小边界开销、增大压缩比的目的。有益效果本发明与现有技术相比具有以下优点
本发明由于在数据变动区域和非变动区域采用了不同的分块策略,因此在较大的分块 预期值情况下,仍能获得较好的压缩比,并且由于滑动窗口 SSW是以小分块MC为单位滑动 的,因此可以大幅度地减小CEQ数量,从而减小时间开销。


图1是本发明中新旧数据交界处采用小分块的示意图。图2是本发明的一个实例示意图。
具体实施例方式下面结合具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明 而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价 形式的修改均落于本申请所附权利要求所限定的范围。本发明提出的⑶SWC方法的主要过程如下。i .使用基于数据对象内容的变长分块方法CDC (如TTTD)对数据对象DO进行预 分块(Pre-Chunking),将数据对象DO划分为互不交叠的小分块MC,记录各小分块MC的边
ii .初始化标志,设定滑动窗口 SSW,由X个小分块MC组成,并从DO的头部开始滑 动 SSW。iii .判断数据对象DO中剩下未处理的小分块MC个数L是否已经小于X,如果是则 转到步骤viii。iv .判断滑动窗口 SSW滑过的未处理小分块RMC (Residue Mini Chunk, RMC)的 数量R是否已经等于X,如果是则计算SSW中数据的SHA-I哈希值,并对滑动窗口 SSW进行 分块存在性查询CEQ(SSW)若CEQ (SSW) =True,转到步骤ν ;若CEQ (SSW) =False,则转到步 骤vi。如果R小于X,则转到步骤vii。 ν .将未处理小分块RMC保留原有边界,输出为X个MC,对各小分块MC进行分块 存在性查询CEQ后保存(只有新的小分块MC才保存),并将组成滑动窗口 SSW的X个小分块 MC合并为一个重复的大分块SC输出,将IdreDupSC标志(用于标识RMC的前一 Chunk是否 是重复的SC)设置为True,然后将滑动窗口 SSW向后滑动X个小分块MC的距离,转到步骤 iii。vi.检查IsPreDupSC标志若IsPreDupSC=True,将未处理小分块RMC输出为X个 小分块MC,对各小分块MC进行分块存在性查询CEQ后保存;若Isft~eDupSC=False,将各小 分块RMC合并为一个新的大分块SC输出并保存。然后将IdreDupSC标志设置为i^alse,并 将滑动窗口 SSW向后滑动一个小分块MC的距离,转到步骤iii。vii .对滑动窗口 SSW进行分块存在性查询CEQ (SSff)若CEQ (SSff) =True,设置 IsPreDupSC标志为iTrue,将RMC输出为R个小分块MC(当R>0时),对各小分块MC进行分块 存在性查询CEQ后保存,并将组成滑动窗口 SSW的X个小分块MC合并为一个重复的大分块 SC输出,然后将滑动窗口 SSW向后滑动X个小分块MC的距离后转到步骤iii ;若分块存在性 查询CEQ (SSff) =False,则将滑动窗口 SSW向后滑动一个小分块MC的距离后转到步骤iii。viii.如果L>0,则对数据对象DO末尾的L个小分块MC (Last Mini Chunk, LMC) 进行分块存在性查询CEQ (LMC)并检查I Sl^reDupSC标志仅当CEQ (LMC) =Fal se并且 IsPreDupSC=True时,将LMC输出为L个小分块MC,对各小分块MC进行分块存在性查询 CEQ(MC)后保存;否则将LMC合并为一个大分块SC输出,如果该大分块SC是新的,则保存。 然后结束运算。图2给出了一个⑶SWC方法的实例,Pre-Chunking后得到MC的边界如图中虚线所 示。设定X=3,从DO的头部开始滑动SSW,当SSW位于A位置时,CEQ(SSffA) =True,将MCa、 MCb和MCc合并为SCl输出(SCl是重复的SC),并设置IsI^eDupSC=True,然后将SSW向后 滑动3个MC的距离,到达B位置。CEQ(SSWA)=False,将SSW向后滑动1个MC的距离,在 C位置和D位置,CEQ(SSff)均为False。当SSW滑动到E位置时,R=3, CEQ(SSffE) =False, IsPreDupSC=True,即当前RMC (由MCcUMCe和MCf组成)中的数据作为一个整体是一个新的 SC(之前的CEQ(SSWB) =False保证了这一点),而它的前一 Chunk是重复的SC,说明该RMC是 新旧数据的交界部分。因此将其输出为MC2、MC3和MC4,对这3个MC进行CEQ (MC)后保存 (图中假设这3个MC都是新的),然后设置ISl^reDupSC=FaIse,并将SSW向后滑动一个MC的 距离继续执行。当SSW滑动到H位置时,R=3,CEQ(SSWH) =False,IsPreDupSC=False,因此将 当前RMC(由MCg、MCh和MCi组成)合并为SC5输出(SC5是新的SC),设置I SPreDupSC=Fal se,并将SSW向后滑动一个MC的距离继续执行。同理,MCj、MCk和MCl被合并为SC6 (SC6是 新的SC)。当SSW滑动到位置M时,R=2, CEQ(SSWM)=iTrue,因此将当前RMC (由MCm和MCn 组成)输出为MC7和MC8,并将MCo、MCp和MCq合并为SC9输出(SC9是重复的SC),然后设 置IsI^eDupSC=True,将SSW向后滑动3个MC的距离到达N位置。在N位置,L=2<3, CEQ (LMC) =True,因此将MCr和MCs合并为SClO输出(SC10是重复的SC),运算结束。
权利要求
1.一种基于预分块及滑动窗口的重复数据消除方法,其特征在于该方法的具体步骤 如下;(1)对数据对象DO进行预分块,将其划分为互不交叠的小分块MC,(2)再以小分块MC为单位,使用滑动窗口方法检测连续的新的小分块MC并将其融合为 大分块SC ;同时在新旧数据交界部分保留小分块MC。
2.根据权利要求1所述的基于预分块及滑动窗口的重复数据消除方法,其特征在于 所述步骤(1)中对数据对象DO采用基于数据对象内容的变长分块方法CDC进行分块。
3.根据权利要求1所述的基于预分块及滑动窗口的重复数据消除方法,其特征在于 所述滑动窗口方法为(a)设定滑动窗口SSW;设定滑动窗口 SSW由X个小分块MC组成,并从数据对象DO的 头部开始滑动所述滑动窗口 SSW,(b)将数据对象DO中剩下未处理小分块RMC个数L与X进行比较;如果L=X,计算滑动窗口 SSW中数据的SHA-I哈希值,并对滑动窗口 SSW进行分块存在 性查询CEQ;如果分块存在性查询CEQ查询显示结果为真,保留未处理小分块RMC的边界, 输出X个小分块MC,对新的小分块MC进行保存;如果L<X,若对滑动窗口 SSW进行分块存在性查询CEQ,查询显示结果为真,将未处理小 分块RMC输出为当前R个MC,对各小分块MC进行分块存在性查询CEQ后保存,并将组成滑 动窗口 SSW的X个小分块MC合并为一个重复的大分块SC输出,然后将滑动窗口 SSW向后 滑动X个小分块MC的距离后再进行判断查询;若对滑动窗口 SSW进行分块存在性查询CEQ,查询显示结果为假,则将滑动窗口 SSW向 后滑动一个小分块MC的距离后在对L和X进比较判断;(c)除了(b)所述情况外,其余情况下均将所述滑动窗口SSW内的数据保留原有边界, 输出为数个小分块MC。
全文摘要
本发明所述的一种基于预分块及滑动窗口的重复数据消除方法,该方法的具体步骤如下;对数据对象DO进行预分块,将其划分为互不交叠的小分块MC;再以小分块MC为单位,使用滑动窗口方法检测连续的新的小分块MC并将其融合为大分块SC;同时在新旧数据交界部分保留小分块MC。本发明在此基础上对数据变动区域和非变动区域采用不同的分块策略,从而在分块大小预期值较大的情况下,仍能获得较高的压缩比并降低了元数据开销。
文档编号H03M7/30GK102082575SQ20101058586
公开日2011年6月1日 申请日期2010年12月14日 优先权日2010年12月14日
发明者匡平, 王亦德, 秦志光, 高嵘 申请人:江苏格物信息科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1