专利名称:重复数据删除的数据区块切分方法与新增方法
技术领域:
本发明公开了一种重复数据删除的处理方法特别有关于一种重复数据删除的数据区块切分方法与新增方法。
背景技术:
重复数据删除是一种数据缩减技术,通常用于基于磁盘的备份系统,主要目的在于减少存储系统中使用的存储容量。它的工作方式是在某个时间周期内查找不同文件中不同位置的重复可变大小数据块。重复的数据块用指示符取代。由于存储系统中总是充斥着大量的冗余数据。为了解决这个问题,节省更多空间,“重复删除”技术便顺理成章地成了人们关注的焦点。采用“重复删除”技术可以将存储的数据缩减为原来的1/20,从而让出更多的备份空间,不仅可以使存储系统上的备份数据保存更长的时间,而且还可以节约离线存储时所需的大量的带宽。为能判断存除系统中数据区块是否重复,因此现有技术中以定长切分 (fixed-size partition)或内容定义切分(content-defined chunking,CDC)作为判断的依据。定长切分算法采用预先定义好的数据区块110大小对输入文件100进行切分。定长分块算法的优点是简单、性能高,但它对数据插入和删除非常敏感,处理十分低效,不能根据内容变化作调整和优化。请参考图IA所示,其为现有技术的定长切分示意图。内容定义切分算法是一种变长分块算法它应用指纹数据(如Rabin指纹)将文件分割成长度大小不等的分块策略。与定长切分算法不同,内容定义切分算法是基于文件内容进行数据区块110切分的,因此数据区块110大小是可变化的。在算法执行过程中,内容定义切分算法是使用一个固定大小(如48字节)的滑动窗口对文件数据计算数据指纹。如果指纹满足特定条件(例如当值模特定的整数等于预先设定的数时)则把窗口位置作为数据区块110的边界。但是内容定义切分算法可能会出现错误切分的情况。换言之,当指纹条件不能满足,数据区块110的边界就不能确定,这样将导致数据区块110的容量过大。请参考图IB所示,其为现有技术的内容定义切分示意图。
发明内容
鉴于以上的问题,本发明的主要目的在于提供一种重复数据删除的数据区块切分方法,应用在文件备份程序中,用以将输入文件进行文件切割为多个数据区块。为达上述目的,本发明所公开的重复数据删除的数据区块切分方法包括以下步骤载入输入文件;利用固定长度的滑动窗口在输入文件中循序移动,并记录滑动窗口于输入文件的起始位置,且同时记录当前滑动窗口位于输入文件的尾端位置,将起始位置与尾端位置间的长度定义为分块长度;根据滑动窗口对输入文件的固定长度的所涵盖范围进行指纹特征程序,用以产生指纹特征值;重复滑动窗口的移动,直至滑动窗口符合切分条件时,则停止滑动窗口的移动,再根据输入文件的分块长度产生相应的数据区块;依据滑动窗口在前一数据区块的尾端位置作为新的滑动窗口的起始位置,并重复执行产生数据区块的步骤,直至完成输入文件中的所有数据区块为止,且产生指纹特征值的索引文件。其中,切分条件中更包括判断指纹特征值符合切分数值;若指纹特征符合切分数值,则停止滑动窗的滑动;若指纹特征不符合切分数值,则判断分块长度是否符合预设长度;若分块长度符合预设长度,则停止滑动窗口的滑动;若分块长度不符合预设长度,移动滑动窗口并重复判断切分条件。透过上述的数据区块切分方法的处理后,本发明另提出一种应用上述切分方法的重复数据删除的数据区块新增方法。为达上述目的,本发明所公开的一种重复数据删除的数据区块新增方法包括以下步骤载入新增过数据区块的该输入文件;对输入文件进行数据区块切分程序,产生多组数据区块;对每一数据区块进行哈希程序,计算每一数据区块所相应的哈希值;依序比对每一哈希值是否与这些指纹特征值相同;当哈希值与指纹特征值不相同时,则在索引文件中将哈希值插入前一相同数据区块的指纹特征值之后;重复比对哈希值与这些指纹特征值,直至完成所有的哈希值的比对为止。本发明以不同的数据长度动态的产生不同大小数据区块,并且透过相应的新增方法将新的数据写入对应的数据区块后。因此,本发明可以有效的降低数据的储存量,并且亦可对现有的数据做相应的新增。有关本发明的特征与实作,配合附图作最佳实施例详细说明如下。
图IA为现有技术的定长切分示意图;图IB为现有技术的内容定义切分示意图;图2为本发明的切分运作流程示意图;图3为本发明的数据区块切分示意图;图4A为本发明的分块长度运作示意图;图4B为本发明的切分位置示意图;图5为本发明新增数据的运作流程示意图;图6A为本发明新增数据的数据区块分解示意图;图6B为本发明新增数据的数据区块分解示意图;图6C为本发明新增数据的数据区块分解示意图。其中,附图标记输入文件100数据区块110输入文件310数据区块32O滑动窗口330
具体实施例方式本发明应用于具有处理重复数据删除程序的计算机,例如个人电脑、笔记型电脑、服务器或应用在客户端与服务端架构中。为能清楚本发明运作流程与实际数据区块的划分方式,还请同时参考图2与图3所示,其分别为本发明的切分运作流程示意图与数据区块切分示意图。本发明包括以下步骤步骤S210 载入输入文件;步骤S220 利用固定长度的滑动窗口在输入文件中循序移动,并记录滑动窗口于输入文件的起始位置,且同时记录当前滑动窗口位于输入文件的尾端位置,将起始位置与尾端位置间的长度定义为分块长度;步骤S230 根据滑动窗口对输入文件的固定长度的所涵盖范围进行指纹特征程序,用以产生指纹特征值;步骤S240 重复滑动窗口的移动,直至滑动窗口符合切分条件时,则停止滑动窗口的移动,再根据输入文件的分块长度产生相应的数据区块;以及步骤S250 依据滑动窗口在前一数据区块的尾端位置作为新的滑动窗口的起始位置,并重复执行产生数据区块的步骤,直至完成输入文件中的所有数据区块为止,且产生指纹特征值的索引文件。首先,将输入文件310载入相应的计算机装置中,而对欲进行切分的数据区块320 的分块长度定义为L (图3中左起第一个与第二个为已完成切分的数据区块320,而第三个为欲进行切分的数据区块320),滑动窗口 330的长度为W(如图3所示中虚线框)。接着, 滑动窗口 330的起始位置对齐于输入文件310的起始位置。滑动窗口 330以固定长度的字节在输入文件310中循序地移动。举例来说,若是滑动窗口 330每次以一个字节作为移动单位时,则滑动窗口 330会每次以一个字节在输入文件310中依序移动。换言之,第一次的滑动窗口 330的起始位置与第二次滑动窗口 330相差一个字节。若是以五个字节作为移动单位,则滑动窗口 330会每次移动五个字节的间隔在输入文件310中移动。在滑动窗口 330移动的过程中,另外会记录滑动窗口 330位于输入文件310的尾端位置,在每次移动时会计算一个哈希值。而起始位置与尾端位置间的长度就是为分块长度L。本发明为避免滑动窗口 330无终止的滑动,所以以下列步骤作为分块长度决定依据,请参考图4A所示,其为本发明的分块长度运作示意图。分块长度的决定包括以下步骤步骤S231 对指纹特征值进行模数处理,并判断处理结果是否符合第一切分数值;步骤S232 若指纹特征符合第一切分数值,则停止滑动窗口的滑动并进行切分;步骤S233 若指纹特征不符合第一切分数值,则判断指纹特征是否符合第二切分数值;步骤S234:若指纹特征不符合第二切分数值,则开始移动滑动窗口并跳至步骤 S236 ;步骤S235 若指纹特征符合第二切分数值,则记录滑动窗口在输入文件的当前位置;步骤S236 判断分块长度是否符合预设长度;步骤S237 若分块长度符合预设长度,则判断当前的指纹特征是否符合第二切分数值;步骤S239 若指纹特征不符合第二切分数值,则以预设长度进行切分;
步骤S238 若指纹特征符合第二切分数值,则当前滑动窗口的位置作为切分的边界,并进行切分;以及步骤S240 若分块长度未符合预设长度,则继续移动滑动窗口。在步骤S231中,对于每一次移动的过程中均会对滑动窗口 330所涵盖的部分输入文件310进行哈希处理,而哈希处理的种类可以是SHA-1、rolling哈希程序。当滑动视窗每次移动时,将会产生相应部分的输入文件310的指纹特征值,请参考下式1所示。Fingerprint (W) mod (D) =r ζ 1式1中的Fingerprint为哈希程序,W为滑动窗口 330的长度,D为一预设模数,r 为 Fingerprint (W)的余数。在滑动视窗每次滑动时均会计算相应部分的输入文件310的指纹特征值。接着, 在对指纹特征值进行模数计算,计算相应的余数值。在本发明中将所产生的余数值与切分数值进行比对。当余数值与切分数值相同时,则停止滑动窗口 330的滑动。本发明中为避免滑动窗口 330无限制的滑动,所以分别设定至少两组的指纹特征值,根据第一指纹特征值rl与第二指纹特征值r2用以检测是否继续进行切分。而第一特征值与第二特征值的设定除了可以透过统计的方式得到也可以藉由乱数生成或人为的方式所给定。将每次滑动窗口 330滑动时所产生的指纹特征值和第一特征值比较。如果两者相同,则分块成功。如果不同,则继续使用指纹特征值和第二特征值进行比较。如果指纹特征值和第二特征值相同,则记录当前滑动窗口 330的数据位置。但此一数据位置并非一定是切分的边界。接着,滑动窗口 330仍会继续移动至预设长度,并计算相应的指纹特征值。假设在到达预设长度前仍未出现符合第一特征值或第二特征值的指纹特征值,则将会以预设长度为基准,对输入文件310进行切分。若是在到达预设长度都没有符合第一特征值的位置时才去检查是否有过符合第二特征值的位置。如果有则以符合第二特征值的位置分块。如果没有才以预设长度的位置为边界分块。就上述的切分处理过程中可能还会出现“在切分过程中一直没有符合第一特征值的位置,但存在符合第二特征值的位置P1”的情形(请参考图4B)。但比较到位置Pl时,由于还没有达到预设长度的位置P2,不确定后面(位置Pl到位置P2之间)是否会有符合第一特征值的位置。所以要继续将滑动窗口 330向后进行滑动,一直到达预设长度时认为确实没有符合第一特征值的位置,才再检查是否有过符合第二特征值的位置。若有则以该位置为边界分块,若没有则以预设长度为边界分块。举例来说,当切分数值rl为50,切分数值r2为70,预设长度为128Kbytes,并且假设滑动窗口 330在输入文件310中移动时产生下列余数值18、52、37、50、26、45、70与100。 当第一次所产生的余数值为18时,由于余数值18未符合上述两组切分数值且未达预设长度,所以将继续移动滑动窗口 330。同理,余数值52与37未符合上述两组切分数值且未达预设长度,所以将继续移动滑动窗口 330。当余数值为50时,由于未达预设长度所以暂先记录余数值50时的滑动窗口 330位于输入文件310的所在位置,并继续移动滑动窗口 330。同理,余数值26、45未符合上述两组切分数值且未达预设长度,所以将继续移动滑动窗口 330。当余数值为70时,由于未达预设长度所以暂先记录余数值70时的滑动窗口 330 位于输入文件310的所在位置,并继续移动滑动窗口 330。假设余数值100时的分块长度等于预设长度。由于余数值100不符合切分数值rl与r2,但分块长度以达预设长度,所以滑动窗口 330将不继续移动。而且将滑动窗口 330回卷至余数值为70位于输入文件310相应位置,并将此一位置作为数据区块320切分的边界。持续重复上述数据区块320的切分处理,直至完成输入文件310中的所有数据区块320为止,且产生指纹特征值的索引文件与元数据(meta-data)。本发明除了上述的数据区块320的切分处理外,本发明并提出以下的数据区块 320的新增处理,藉以将新的数据加入现有的数据区块320中。请参考图5所示,其为本发明新增数据的运作流程示意图。本发明新增数据包括下列步骤步骤S510 载入新增文件;步骤S520 对新增文件进行数据区块切分程序,产生多组数据区块;步骤S530 对每一数据区块进行哈希程序,计算每一数据区块所相应的哈希值;步骤S540 依序比对每一哈希值是否与指纹特征值相同;步骤S550 当哈希值与指纹特征值不相同时,则在索引文件中将哈希值插入前一相同数据区块的指纹特征值之后;以及步骤S560 重复比对哈希值与指纹特征值,直至完成所有的哈希值的比对为止。首先,将新增文件载入计算机装置,其中新增文件中包含原始的输入文件310的内容与所新增的数据。接下来,在对新增文件进行数据区块切分程序,产生多组数据区块 320。此处产生数据区块320的处理过程与前述相同,所以对此一切分处理不重复叙述。并对所产生的数据区块320进行哈希程序的处理,藉以计算每一个数据区块320相应的哈希值。请配合图6A 图6C所示,其分别为本发明新增数据的数据区块分解示意图。图6A中为已切分后的各数据区块320 (分别为数据区块1、数据区块2、数据区块 3、数据区块4、数据区块5、数据区块6与数据区块7)。在图6B中的数据区块2插入新数据时,并同实在索引文件中将哈希值插入前一相同数据区块的指纹特征值之后。接着,对原数据区块2之后的数据区块重新进行索引文件的修改,使该些数据区块320形成如图6C所示的异动后数据区块320。当哈希值与指纹特征值相同时,更新该数据区块320所相应的索引文件,更新内容为数据区块320的引用次数与元数据。当哈希值与指纹特征值不相同时,则在索引文件中将哈希值插入前一相同数据区块320的指纹特征值之后。重复比对哈希值与指纹特征值,直至完成所有的哈希值的比对为止。本发明以不同的数据长度动态的产生不同大小数据区块320,并且透过相应的新增方法将新的数据写入对应的数据区块320后。因此,本发明可以有效的降低数据的储存量,并且亦可对现有的数据做相应的新增。虽然本发明以前述的较佳实施例公开如上,但其并非用以限定本发明,任何本领域的技术人员,在不脱离本发明的精神和范围内,当可作些许的更动与修改,因此本发明的专利保护范围须视本说明书所附的权利要求书所界定者为准。
权利要求
1.一种重复数据删除的数据区块切分方法,应用在一文件备份程序中,用以将一输入文件进行文件切割为多个数据区块,其特征在于,包括以下步骤载入该输入文件;利用一固定长度的一滑动窗口在该输入文件中循序移动,并记录该滑动窗口于该输入文件的一起始位置,且同时记录当前该滑动窗口位于该输入文件的一尾端位置,将该起始位置与该尾端位置间的长度定义为一分块长度;根据该滑动窗口对该输入文件的该固定长度的所涵盖范围进行一指纹特征程序,用以产生一指纹特征值;重复该滑动窗口的移动,直至该滑动窗口符合一切分条件时,则停止该滑动窗口的移动,再根据该输入文件的该分块长度产生相应的该数据区块;以及依据该滑动窗口在前一该数据区块的该尾端位置作为新的该滑动窗口的该起始位置, 并重复执行产生该数据区块的步骤,直至完成该输入文件中的所有该些数据区块为止,且产生该些指纹特征值的一索引文件。
2.如权利要求1所述的重复数据删除的数据区块切分方法,其特征在于,该切分条件为当该分块长度符合一预设长度时,则停止该滑动窗口的移动。
3.如权利要求1所述的重复数据删除的数据区块切分方法,其特征在于,该切分条件包括当该指纹特征值符合一切分数值时,则停止该滑动窗口的移动。
4.如权利要求1所述的重复数据删除的数据区块切分方法,其特征在于,该切分条件更包括以下步骤对该指纹特征值进行模数处理,并判断处理结果是否符合一切分数值; 若该指纹特征值符合该切分数值,则停止该滑动窗口的滑动; 若该指纹特征值不符合该切分数值,则判断该分块长度是否符合一预设长度; 若该分块长度符合该预设长度,则停止该滑动窗口的滑动;以及若该分块长度不符合该预设长度,移动该滑动窗口并重复判断该切分条件。
5.如权利要求1所述的重复数据删除的数据区块切分方法,其特征在于,该指纹特征程序为卷动式哈希程序(rolling hash)。
6.一种应用权利要求1的重复数据删除的数据区块新增方法,应用于已经过重复数据删除处理的该输入文件,并于该输入文件中增加新的该数据区块,其特征在于,该数据区块新增方法包括以下步骤载入一新增文件,该新增文件至少包含该输入文件的内容; 对该新增文件进行一数据区块切分程序,产生多组该数据区块; 对每一该数据区块进行一哈希程序,计算每一该数据区块所相应的一哈希值; 依序比对每一该哈希值是否与该些指纹特征值相同;当该哈希值与该指纹特征值不相同时,则在该索引文件中将该哈希值插入前一相同该数据区块的该指纹特征值之后;以及重复比对该哈希值与该些指纹特征值,直至完成所有的该些哈希值的比对为止。
全文摘要
本发明公开了一种重复数据删除的数据区块切分方法与新增方法将输入文件进行文件切割为多个数据区块。切分方法包括利用固定长度的滑动窗口在输入文件中移动,记录输入文件的起始位置,另记录滑动窗口位于输入文件的尾端位置,将起始位置与尾端位置间的长度定义为分块长度;根据滑动窗口对输入文件的固定长度的所涵盖范围进行指纹特征程序,产生指纹特征值;重复滑动窗口的移动,直至滑动窗口符合切分条件时;根据各分块长度产生相应的数据区块,并重复执行产生数据区块的步骤,直至完成输入文件中的所有数据区块为止,且产生指纹特征值的索引文件。
文档编号G06F17/30GK102467571SQ20101056458
公开日2012年5月23日 申请日期2010年11月17日 优先权日2010年11月17日
发明者朱明胜, 王云松, 陈志丰 申请人:英业达股份有限公司