一种历史感知的数据去重碎片消除方法与系统的制作方法

文档序号:6548833阅读:202来源:国知局
一种历史感知的数据去重碎片消除方法与系统的制作方法
【专利摘要】本发明公开了一种应用于数据去重系统中的碎片消除方法,该方法利用历史信息准确地识别碎片,系统内存开销少且恢复吞吐率高。该方法首先对数据流中的文件进行分块、求指纹,查询索引找到重复数据块;然后在上次备份记录的稀疏容器集合中查找重复数据块的容器ID,判断哪些重复数据块属于稀疏容器。对于属于稀疏容器的重复数据块,将其重写到新的容器中。该方法在备份过程中,只需记录下相关容器的利用率,内存开销极小。本发明还提供了相应的历史感知的数据去重碎片消除系统。由于本方法准确地识别了碎片,重写的数据量很少,因此保持了较高的去重率和备份性能,同时显著地提升恢复性能。
【专利说明】一种历史感知的数据去重碎片消除方法与系统

【技术领域】
[0001]本发明属于计算机存储【技术领域】,更具体地,涉及一种历史感知的数据去重碎片消除方法与系统。

【背景技术】
[0002]近年来,随着互联网的普及,全球的数据信息存储量正爆炸式增长。海量数据的存储和管理称为学界和工业界面临的重大难题。研究人员发现,在各类存储系统中(如备份归档存储系统,主存储系统,和高性能数据中心)存在大量冗余数据。通过消除这些冗余数据,可以极大减少存储成本。因此,数据去重(Data Deduplicat1n)作为一种通过大规模地有效地消除冗余数据的技术,成为了近年来存储系统研究的热点。数据去重不仅能节省存储空间、提升存储系统性能,而且通过避免冗余数据传输可以节省网络带宽。数据去重技术目前已被IBM、HP、EMC等存储大公司应用到存储产品中,标志着数据去重技术已经成为存储领域的主流技术。
[0003]数据备份和归档存储系统是最早应用数据去重技术的场景。举例来说:现在某核心部门有20GB的数据需要每天备份,那么一年就需要存储7300GB。但是,由于每天修改的数据不到1GB,这7300GB的数据存在大量冗余数据,因而浪费了存储资源。随着备份次数的增多,存储系统中的冗余数据越来越多,消耗在冗余数据上的存储和管理资源会成倍增长。而数据去重技术通过发现和舍弃这些冗余数据,可以抑制数据存储的增长速度从而降低了数据存储管理开销。
[0004]但是随着数据去重技术的发展,数据去重技术也面临诸多的挑战,例如数据碎片的问题导致恢复(读)性能严重下降。这是由于用户的备份数据在经过去重后,被离散地分布在磁盘的不同位置。当用户需要恢复此次备份时,原有预取机制的效率降低了:额外预取了很多无用数据块。虽然恢复作业很少发生,但大多十分紧急。用户一旦发现丢失数据,就希望尽快将数据恢复到正常状态。过长的恢复时间窗口极大地增加了经济损失。
[0005]由此可见,研究数据去重系统的碎片问题,对于提高数据的恢复性能,提高企业经济效益具有重要意义。


【发明内容】

[0006]本发明的目的在于提供一种历史感知的数据去重碎片消除方法与系统,能够在备份的过程中利用历史信息精确地定位并消除碎片数据,极大地提升恢复性能。
[0007]为实现上述目的,按照本发明的一个方面,提供了一种历史感知的数据去重碎片消除方法,所述方法包括如下步骤:
[0008](I)读取上次备份过程所记录的历史信息记录,所述历史信息记录中包括稀疏容器的ID ;
[0009](2)对备份数据流中的文件进行分块,得到多个数据块,数据块的数量为η ;
[0010](3)在备份开始时,设计数器i = I ;
[0011](4)计算第i个数据块的数据块指纹;
[0012](5)在指纹索引中查找第i个数据块的数据块指纹,判断第i个数据块是否已经被存储;如果第i个数据块未被存储过,则第i个数据块为新数据块,将第i个数据块写入容器缓冲区,待容器满时一次性写入磁盘,并转到步骤(7);如果第i个数据块已被存储过,则第i个数据块为重复数据块,获得第i个数据块所属的容器ID,并转步骤(6);
[0013](6)查找历史信息记录,根据第i个数据块所属的容器ID判断第i个数据块所属的容器是否属于稀疏容器;如果是,则第i个数据块为碎片,将第i个数据块重新写到容器缓冲区,待容器满时一次性写入磁盘;如果不是,则第i个数据块不是碎片,将第i个数据块去重;
[0014](7)记录第i个数据块所属容器的ID,以及该容器对应的有效数据长度;判断i是否大于n,如果否,则备份未结束,将计数器i加I,返回步骤(4);否则进入步骤(8);
[0015](8)备份结束时,计算每个容器的利用率,将利用率低于阈值的容器标记为稀疏容器,所有稀疏容器的ID将被写入历史信息记录,供下次备份使用。
[0016]具体地,所述步骤(8)中每个容器的利用率为:每个容器对应的有效数据长度除以该容器的大小。
[0017]进一步地,所述步骤(7)中每个容器对应的有效数据长度为:该容器内与此次备份相关的数据块的总长度。
[0018]优选地,所述步骤(8)中的阈值为50 %。
[0019]按照本发明的另一方面,提供了一种历史感知的数据去重碎片消除系统,所述系统包括如下模块:
[0020]历史信息记录读取模块,用于读取上次备份过程所记录的历史信息记录,所述历史信息记录中包括稀疏容器的ID ;
[0021]数据流分块模块,用于对备份数据流中的文件进行分块,得到多个数据块,数据块的数量为η ;
[0022]计数器模块,用于在备份开始时,设计数器i = I ;
[0023]数据块指纹计算模块,用于计算第i个数据块的数据块指纹;
[0024]数据块指纹查找模块,用于在指纹索引中查找第i个数据块的数据块指纹,判断第i个数据块是否已经被存储;如果第i个数据块未被存储过,则第i个数据块为新数据块,将第i个数据块写入容器缓冲区,待容器满时一次性写入磁盘,并转稀疏容器ID记录模块;如果第i个数据块已被存储过,则第i个数据块为重复数据块,获得第i个数据块所属的容器ID,并转历史信息记录查找模块;
[0025]历史信息记录查找模块,用于根据第i个数据块所属的容器ID判断第i个数据块所属的容器是否属于稀疏容器;如果是,则第i个数据块为碎片,将第i个数据块重新写到容器缓冲区,待容器满时一次性写入磁盘;如果不是,则第i个数据块不是碎片,将第i个数据块去重;
[0026]稀疏容器ID记录模块,用于记录第i个数据块所属容器的ID,以及该容器对应的有效数据长度;判断i是否大于n,如果否,则备份未结束,将计数器i加1,转所述数据块指纹计算模块;否则转历史信息记录生成模块;
[0027]历史信息记录生成模块,用于在备份结束时,计算每个容器的利用率,将利用率低于阈值的容器标记为稀疏容器,所有稀疏容器的ID将被写入历史信息记录,供下次备份使用。
[0028]具体地,所述历史信息记录生成模块计算每个容器的利用率具体为:将每个容器对应的有效数据长度除以该容器的大小得到利用率。
[0029]总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下有益效果:
[0030]1、本发明提出的碎片消除方法,利用了数据备份的增量特性,即连续的备份数据流十分相似,且数据碎片具有遗传的特点:一个数据块在此次备份是碎片,则对于下次备份也是碎片。利用历史信息,可以更加准确地识别碎片,避免将不是碎片的数据块当成碎片,这是现有其它方法的主要缺点,因此,本发明重写的数据量极少,但获得的恢复性能极大;
[0031]2、本发明通过在备份过程中,记录每个数据块所属容器的ID以及该容器的有效数据长度,通过每个容器的利用率判断该容器是否是稀疏容器;在下次备份过程中,如果需要备份的重复数据块所属的容器是稀疏容器,则判定该数据块为碎片,将该数据块重新写到容器缓存区中,待容器满时一次性写入磁盘;而如果需要备份的重复数据块所属的容器是不稀疏容器,则判定该数据块不为碎片,作为普通重复数据块进行去重;从而能够准确地识别数据碎片,在重写数据量较小的情况下,获得较大的恢复性能;
[0032]3、本发明提出的碎片消除方法,占用的内存资源极少。一次备份的内存开销与相关的容器数量成正比,而每个容器只需占用大约12个字节(8个字节的容器ID,和4个字节的有效数据长度)。假设备份作业是1TB,容器长度是4MB,容器的平均利用率是50%,那么该备份的内存开销是6MB ;
[0033]4、本发明提出的碎片消除方法,不涉及额外的磁盘读写操作,因此备份吞吐率很闻。

【专利附图】

【附图说明】
[0034]图1为本发明碎片消除方法的体系结构图;
[0035]图2为本发明一实施例中历史信息记录的数据结构示意图;
[0036]图3为本发明一实施例中碎片消除方法的流程图。

【具体实施方式】
[0037]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
[0038]如图1所示为本发明的体系结构。本发明在磁盘上有指纹索引模块,存储有系统中的数据块的指纹,用于判断重复数据块;容器池是容器存储模块,提供读取和写入容器的操作;历史信息文件记录了上次备份产生的历史信息,主要包括稀疏容器ID。在内存中包括指纹索引和容器的缓存;稀疏容器集合里包括从上次备份继承的稀疏容器ID ;新的历史信息统计当前备份的容器利用率,用于产生新的历史信息。
[0039]如图2所示为本发明运行时的内存数据结构。上次备份记录的历史信息包括一个稀疏容器ID的集合;当前收集的历史信息包括两个集合,分别为候选稀疏容器集合,即利用率低于阈值的容器ID集合,以及非稀疏容器集合,即利用率超过阈值的容器ID集合。
[0040]如图3所示,本发明提供了一种历史感知的数据去重碎片消除方法,所述方法包括如下步骤:
[0041](I)读取上次备份过程所记录的历史信息记录,所述历史信息记录中包括稀疏容器的ID ;
[0042](2)对备份数据流中的文件进行分块,得到多个数据块,数据块的数量为η ;
[0043](3)在备份开始时,设计数器i = I ;
[0044](4)计算第i个数据块的数据块指纹;
[0045](5)在指纹索引中查找第i个数据块的数据块指纹,判断第i个数据块是否已经被存储;如果第i个数据块未被存储过,则第i个数据块为新数据块,将第i个数据块写入容器缓冲区,待容器满时一次性写入磁盘,并转到步骤(7);如果第i个数据块已被存储过,则第i个数据块为重复数据块,获得第i个数据块所属的容器ID,并转步骤(6);
[0046](6)查找历史信息记录,根据第i个数据块所属的容器ID判断第i个数据块所属的容器是否属于稀疏容器;如果是,则第i个数据块为碎片,将第i个数据块重新写到容器缓冲区,待容器满时一次性写入磁盘;如果不是,则第i个数据块不是碎片,将第i个数据块去重;
[0047](7)记录第i个数据块所属容器的ID,以及该容器对应的有效数据长度;判断i是否大于n,如果否,则备份未结束,将计数器i加1,返回步骤(4);否则进入步骤(8);其中,容器对应的有效数据长度为该容器内与此次备份相关的数据块的总长度,例如可以在每次处理完一个数据块后,将其对应的容器的有效数据长度加上该数据块的块长。
[0048](8)备份结束时,计算每个容器的利用率,将利用率低于阈值的容器标记为稀疏容器,所有稀疏容器的ID将被写入历史信息记录,供下次备份使用。
[0049]具体地,所述步骤(8)中每个容器的利用率为:每个容器对应的有效数据长度除以该容器的大小。所述阈值可以根据需要确定,例如所述阈值为50%。
[0050]进一步地,本发明还提供了一种历史感知的数据去重碎片消除系统,所述系统包括如下模块:
[0051]历史信息记录读取模块,用于读取上次备份过程所记录的历史信息记录,所述历史信息记录中包括稀疏容器的ID ;
[0052]数据流分块模块,用于对备份数据流中的文件进行分块,得到多个数据块,数据块的数量为η ;
[0053]计数器模块,用于在备份开始时,设计数器i = I ;
[0054]数据块指纹计算模块,用于计算第i个数据块的数据块指纹;
[0055]数据块指纹查找模块,用于在指纹索引中查找第i个数据块的数据块指纹,判断第i个数据块是否已经被存储;如果第i个数据块未被存储过,则第i个数据块为新数据块,将第i个数据块写入容器缓冲区,待容器满时一次性写入磁盘,并转稀疏容器ID记录模块;如果第i个数据块已被存储过,则第i个数据块为重复数据块,获得第i个数据块所属的容器ID,并转历史信息记录查找模块;
[0056]历史信息记录查找模块,用于根据第i个数据块所属的容器ID判断第i个数据块所属的容器是否属于稀疏容器;如果是,则第i个数据块为碎片,将第i个数据块重新写到容器缓冲区,待容器满时一次性写入磁盘;如果不是,则第i个数据块不是碎片,将第i个数据块去重;
[0057]稀疏容器ID记录模块,用于记录第i个数据块所属容器的ID,以及该容器对应的有效数据长度;判断i是否大于n,如果否,则备份未结束,将计数器i加1,转所述数据块指纹计算模块;否则转历史信息记录生成模块;
[0058]历史信息记录生成模块,用于在备份结束时,计算每个容器的利用率,将利用率低于阈值的容器标记为稀疏容器,所有稀疏容器的ID将被写入历史信息记录,供下次备份使用。
[0059]具体地,所述历史信息记录生成模块计算每个容器的利用率具体为:将每个容器对应的有效数据长度除以该容器的大小得到利用率。
[0060]本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种历史感知的数据去重碎片消除方法,其特征在于,所述方法包括如下步骤: (1)读取上次备份过程所记录的历史信息记录,所述历史信息记录中包括稀疏容器的ID ; (2)对备份数据流中的文件进行分块,得到多个数据块,数据块的数量为η; (3)在备份开始时,设计数器i= I ; (4)计算第i个数据块的数据块指纹; (5)在指纹索引中查找第i个数据块的数据块指纹,判断第i个数据块是否已经被存储;如果第i个数据块未被存储过,则第i个数据块为新数据块,将第i个数据块写入容器缓冲区,待容器满时一次性写入磁盘,并转到步骤(7);如果第i个数据块已被存储过,则第i个数据块为重复数据块,获得第i个数据块所属的容器ID,并转步骤(6); (6)查找历史信息记录,根据第i个数据块所属的容器ID判断第i个数据块所属的容器是否属于稀疏容器;如果是,则第i个数据块为碎片,将第i个数据块重新写到容器缓冲区,待容器满时一次性写入磁盘;如果不是,则第i个数据块不是碎片,将第i个数据块去重; (7)记录第i个数据块所属容器的ID,以及该容器对应的有效数据长度;判断i是否大于n,如果否,则备份未结束,将计数器i加1,返回步骤(4);否则进入步骤(8); (8)备份结束时,计算每个容器的利用率,将利用率低于阈值的容器标记为稀疏容器,所有稀疏容器的ID将被写入历史信息记录,供下次备份使用。
2.如权利要求1所述的方法,其特征在于,所述步骤(8)中每个容器的利用率为:每个容器对应的有效数据长度除以该容器的大小。
3.如权利要求1或2所述的方法,其特征在于,所述步骤(7)中每个容器对应的有效数据长度为:该容器内与此次备份相关的数据块的总长度。
4.如权利要求3所述的方法,其特征在于,所述步骤(8)中的阈值为50%。
5.一种历史感知的数据去重碎片消除系统,其特征在于,所述系统包括如下模块: 历史信息记录读取模块,用于读取上次备份过程所记录的历史信息记录,所述历史信息记录中包括稀疏容器的ID ; 数据流分块模块,用于对备份数据流中的文件进行分块,得到多个数据块,数据块的数量为η ; 计数器模块,用于在备份开始时,设计数器i = I ; 数据块指纹计算模块,用于计算第i个数据块的数据块指纹; 数据块指纹查找模块,用于在指纹索引中查找第i个数据块的数据块指纹,判断第i个数据块是否已经被存储;如果第i个数据块未被存储过,则第i个数据块为新数据块,将第i个数据块写入容器缓冲区,待容器满时一次性写入磁盘,并转稀疏容器ID记录模块;如果第i个数据块已被存储过,则第i个数据块为重复数据块,获得第i个数据块所属的容器ID,并转历史信息记录查找模块; 历史信息记录查找模块,用于根据第i个数据块所属的容器ID判断第i个数据块所属的容器是否属于稀疏容器;如果是,则第i个数据块为碎片,将第i个数据块重新写到容器缓冲区,待容器满时一次性写入磁盘;如果不是,则第i个数据块不是碎片,将第i个数据块去重;稀疏容器ID记录模块,用于记录第i个数据块所属容器的ID,以及该容器对应的有效数据长度;判断i是否大于n,如果否,则备份未结束,将计数器i加1,转所述数据块指纹计算模块;否则转历史信息记录生成模块; 历史信息记录生成模块,用于在备份结束时,计算每个容器的利用率,将利用率低于阈值的容器标记为稀疏容器,所有稀疏容器的ID将被写入历史信息记录,供下次备份使用。
6.如权利要求5所述的方法,其特征在于,所述历史信息记录生成模块计算每个容器的利用率具体为 :将每个容器对应的有效数据长度除以该容器的大小得到利用率。
【文档编号】G06F11/14GK104050057SQ201410249865
【公开日】2014年9月17日 申请日期:2014年6月6日 优先权日:2014年6月6日
【发明者】冯丹, 付忞, 华宇, 夏文, 黄方亭, 柳青 申请人:华中科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1