CN105917304A - 重复数据删除的装置和方法 - Google Patents
重复数据删除的装置和方法 Download PDFInfo
- Publication number
- CN105917304A CN105917304A CN201480041259.9A CN201480041259A CN105917304A CN 105917304 A CN105917304 A CN 105917304A CN 201480041259 A CN201480041259 A CN 201480041259A CN 105917304 A CN105917304 A CN 105917304A
- Authority
- CN
- China
- Prior art keywords
- data
- entry
- index
- value
- data block
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/174—Redundancy elimination performed by the file system
- G06F16/1748—De-duplication implemented within the file system, e.g. based on file segments
- G06F16/1752—De-duplication implemented within the file system, e.g. based on file segments based on file chunks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
- G06F3/0641—De-duplication techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
描述了一种用于重复数据删除的装置和方法。所述装置包括用于接收数据块的接口以及耦合至所述接口的重复数据删除引擎,所述重复数据删除引擎用于基于使用从所述数据块中计算所得的多个值查询索引对所述数据块进行重复数据删除,以及将多个新条目***至所述索引中,每个条目对应于所述多个值中的一个值,其中为了将所述多个新条目***至所述索引中,所述重复数据删除引擎还用于:为每个新条目确定所述索引中对应于相同值的条目数量;如果所述条目数量超过阈值,将所述条目中的一个条目替换为所述新条目。
Description
技术领域
本发明涉及一种重复数据删除的装置和方法,尤其涉及用于重复数据删除的索引的更新。
背景技术
重复数据删除是一种用于删除重复数据的相同副本的数据压缩技术,其可以在多种处理可能重复数据的场景中应用,例如数据存储、备份过程、数据传输和其它场景。重复数据删除通常用于通过将当前处理的数据替换为先前处理的相同数据的引用来降低数据大小。例如,在数据存储中,部分数据或字节格式被识别并存储。随着分析继续进行,其它部分数据与存储的副本比较,无论何时出现匹配,多余数据可替换为对已经存储数据的引用。
为了执行重复数据删除,通常会使用索引,索引包括已经存储数据的特征和引用。由于每次对新数据进行重复数据删除时必须查询索引,所以索引的简单实施和维护会明显放缓处理。例如,如果索引变得过大,则无法在本地存储器或缓存中维护索引并且至少部分索引必须存储在较大但速度较慢的存储器中并从该存储器中获取,这种现象也称作磁盘查找瓶颈。因此,简单的重复数据删除方法通常具有过多资源和吞吐量要求,所以这些方法通常无法在终端用户产品中实现。
其它重复数据删除方法试图降低索引大小。然而,由于该索引不能保存足够的数据来表示先前存储的数据,所以这些方法的重复数据删除率通常较低,从而导致数据的潜在重复存储。
发明内容
鉴于上述情况,鉴于资源利用率和重复数据删除率两方面,本发明的一个目的是提供一种快速高效的重复数据删除方法。前述目的和其它目的可以通过独立权利要求的特征来实现。其它实现方式在从属权利要求、具体说明和附图中显而易见。
根据本发明的第一方面,提供了一种装置,所述装置包括用于接收数据块的接口。所述装置还包括耦合至所述接口的重复数据删除引擎,所述重复数据删除引擎用于基于使用从所述数据块中计算所得的多个值查询索引对所述数据块进行重复数据删除,以及将多个新条目***至所述索引中,每个条目对应于所述多个值中的一个值,其中为了将所述多个新条目***至所述索引中,所述重复数据删除引擎还用于:为每个新条目确定所述索引中对应于相同值的条目数量;如果所述条目数量超过阈值,将所述条目中的一个条目替换为所述新条目。
所述重复数据删除基于索引查询,其中所述索引可以随着从表征所述数据块的所述多个值中获得的多个新条目而更新。所述索引的每个条目可以包括键和值,其中所述条目的所述键可以对应于所述多个值中的一个值并且所述条目的所述值可以对应所述数据块。因此,所述索引可随着条目而更新,这些条目均可对应所述数据块或者至少部分所述数据块以实现相对于所述数据块进行后续重复数据删除。
所述索引可以存储对应于相同值的若干条目。这些条目可以对应不同的数据块或者至少不同部分的数据块,这些索引可以用于在后续重复数据删除中确定给定值的若干候选数据块。所述索引可以存储K个对应相同值的条目。例如,无论所述数据之间或者条目所表示的数据版本之间的相似性如何,具有相同值的条目的最新的K个副本可被保留。这允许从最多向后K个版本中找到先前处理的数据。由于所述数据块可以相对于最合适的数据块进行重复数据删除由于所述数据块可以根据最合适的数据块进行重复数据删除,这将有利地进行导致更为有效的重复数据删除。然而,由于对应于相同值的条目的数量受到阈值的限制,所以索引大小可以被直接控制。这有利地实现了诸如本地缓存冲之类的大小有限的存储器中索引的有效处理和存储。具体而言,可以通过设置合适的阈值直接控制索引大小并且索引大小可以适于所述装置的可用资源和当前要求,甚至在所述装置的运行期间也可以适于这些要求。
因此,所述索引的基于阈值的配置避免了在潜在速度缓慢的存储设备中加载并存储大量索引,从而降低了磁盘查找瓶颈,同时实现了对大量先前处理的数据的查找以找到进行重复数据删除的合适命中。此外,索引更新的实现不需要所述索引的详细分析和新条目的复杂处理以保持所述索引足够小而驻留在本地存储器中。
所述重复数据删除引擎可在硬件中作为软件或硬件和软件的组合来实现。具体而言,所述重复数据删除引擎可以实现为专用处理模块或专用处理器,其可用于根据本发明的各个方面和实现方式执行重复数据删除方法。
除非另有说明,在本文中使用的术语“或”被理解为包含性连词或择一。因此,表达“A或B”意味着A或B,或者A和B,其也可表示为“A和/或B”。
根据如上所述第一方面的对所述数据块进行重复数据删除的所述装置,在第一可能实施方式中,所述重复数据删除引擎还用于:使用所述多个值查询所述索引;如果所述查询产生匹配条目,根据所述匹配条目获取先前处理数据的特征并且将所述获取的特征与所述数据块的所述特征比较。每个匹配条目,其可以是所述数据块的所述多个值中的至少一个值对应的条目,可以识别先前处理的数据块。由于所述匹配条目的所述对应值可以从一部分所述先前处理的数据块中计算得出,所述先前处理的数据块的所述特征与所述当前数据块的所述特征的后续比较可以用于确定所述先前处理的数据块的其它部分和当前所述数据块的相似性。这具有以下优势:在第一阶段,所述索引可用于确定进行重复数据删除的合适候选块集以实现快速候选块查找;在第二阶段,比较可局限于合适的候选块集,从而降低对先前处理块的特征的访问数量。
根据如上所述第一方面或根据第一方面的第一实现方式,在所述装置的第二可能实施方式中,根据一个或多个版本存储先前处理的数据,所述索引的每个条目对应所述先前处理的数据的所述版本中的一个版本。因此,所述先前处理的数据可以是先前存储的数据。即使所述索引可以保持相对较小,但是同时索引搜索会导致所述先前存储的数据的版本不同。阈值K可以用于直接控制所述索引的大小,以便为索引大小和索引数据种类之间的权衡提供最优解。例如,当前的备份***通常产生包含所有数据的初始全备份或快照,以及多个增量备份或快照,其可只包括有关所述初始全备份或先前增量备份的差异部分。因此,增量备份可以只包含快照内容的子集。为了访问全快照的内容,可以获取来自所述快照和先前快照或所述初始全备份的数据。因此,可以根据若干数据版本获取备份数据,所述数据版本可以由一个或多个快照表示。先前数据版本也可以存在于主存储***和其它存储方法中。通过在引用一个以上数据版本的所述索引中存储条目,重复数据删除率可以明显提高。
重复数据删除可以在各种应用场景中使用,这需要对大量数据进行高效处理和压缩,例如用于在备份***中存储数据以及用于数据传输或通信。应理解,即使根据本发明的各个方面和实施方式可以有关特定应用场景下的重复数据删除,重复数据删除不仅仅局限于本应用场景并且可以在各种其它应用领域中应用以利用先前处理的数据的冗余性。
根据如上所述第一方面或根据所述第一方面的任意前述实现方式,在所述装置的第三可能实施方式中,所述重复数据删除引擎还用于:基于所述查询确定是否要对所述数据块进行重复数据删除;如果要对至少一部分所述数据块进行重复数据删除,将所述至少一部分所述数据块替换为所述匹配数据的引用。重复数据删除过程可使用容器或类似的数据结构来保存所述数据块的元数据。所述容器还可包括先前处理的匹配数据的引用以及由于先前未处理匹配数据而未进行重复数据删除的部分所述数据块的引用。例如,可对所述数据块或所述数据块的各个部分进行重复数据删除并且根据各个容器中的重复数据删除的结果对所述数据块或所述数据块的各个部分进行存储。未进行重复数据删除的部分所述数据块可被视为新数据。所述新数据可被添加至开放容器并且可进一步进行处理,例如写入存储器或通过网络进行传输。块元数据可被存储并在其它数据块的后续重复数据删除中使用。
根据如上所述第一方面或根据所述第一方面的任意前述实现方式,在所述装置的第四可能实施方式中,所述索引为稀疏索引,所述稀疏索引的每个条目对应数据块。因此,所述索引不包括每个小数据单元的条目,但使用键引用较大数据单元,例如数据块。然而,所述键可从小数据单元对应的部分所述数据中获得。因此从一部分所述数据块中获得的值可以用于引用整个数据块。这是有利的,因为所述索引的大小可以保持得很小以避免磁盘查找瓶颈。然而,由于数据局部性,其描述数据流或数据块中的部分数据在后续数据流或块中一起重新出现的趋势,稀疏索引导致以足够高的命中率有效获取匹配数据块。
根据如上所述第一方面或根据所述第一方面的任意前述实现方式,在所述装置的第五可能实施方式中,所述重复数据删除引擎还用于将所述数据块划分为多个分段。所述分段可以具有固定大小或可变大小。固定大小分段的重复数据删除可涉及设置分段大小以及将所述数据块分割成各个分段。固定大小分段的处理可以是有利的,因为固定大小避免了数据总大小的变化,从而允许更为简单的资源组织和分配以缓存或存储所述分段或数据块。
优选地,所述数据块的所述分段的大小可变。例如,4MB的数据块可以被划分为4至8kB的分段。然而,应理解,可以使用任意其它大小的块或分段并且本发明不局限于特定大小的块或分段。基于算法分析所述块的数据的结果将所述数据块划分为大小可变的分段。尽管处理大小可变的分段可能要求各个分段的组织更为复杂,但基于可变分段的重复数据删除可以更为有效,因为灵活分段边界可以更好地反应各个分段的小变化。例如,如果使用大小固定的分段,即使将少量数据包含在数据块中可能导致分段边界的变化,从而导致所有后续分段的变化。相比之下,分段边界可能独立于使用大小可变分段的方法中的局部变化,因为分段边界可基于所述数据块中的所述数据的特征确定,例如应用于所述数据的特定数据值或函数。
优选地,通过在所述数据块上使用滚动哈希函数将所述数据块划分为多个分段。滚动哈希函数为一种将数据块中移动的窗口中的数据作为输入进行哈希的哈希函数。例如,Rabin-Karp滚动哈希或循环多项式哈希可以用作滚动哈希函数。优选地,可以使用循环多项式哈希,因为其性能比Rabin-Karp更好。循环多项式哈希是一种基于哈希函数h的制表哈希形式。哈希函数h可以是将字符映射为随机整数的阵列或哈希表。滚动哈希函数可以应用于所述块的每个字节直至哈希值除以预期分段平均大小的余数等于某个值。因此,只要滚动哈希函数的输出达到某个值,可确定分段边界并且可分割各个分段。例如,为了确定分段边界,滚动哈希可被计算为mod 4k,并且只要滚动哈希等于0,可以设置哈希边界。应理解,可以使用任意其它值,只要该值小于或对应于预期分段大小。
根据所述第一方面的所述第五实现方式,在所述装置的第六可能实施方式中,对于要进行重复数据删除的多个数据块,每个数据块包括相同数量的分段。此外或作为替代,至少一些数据块可以包括每个块中数量不同的分段。如果所述重复数据删除引擎用于将数据块划分为大小固定的多个分段,具有相同大小的每个数据块将具有数量相同的分段。然而,如果所述重复数据删除引擎用于将数据块划分为大小不同的分段,每个数据块可包括每个块中数量不同的分段。然而,即使使用大小可变的分段,所述重复数据删除引擎可用于产生分段数量相同的数据块,例如通过在每个块的开始、内部、或末尾添加虚拟分段。所述虚拟分段可以为空或者大小为零。这对于处理各个块是有利的,因为分段数量相同的块的处理可以简化块和各个分段的组织和处理。
根据所述第一方面的所述装置的所述第五或第六实现方式,在第七可能实现方式中,所述重复数据删除引擎还用于基于所述分段的哈希值计算所述多个值。因此,所述分段的所述哈希值可用作执行所述索引查询的值以确定合适候选值进行所述数据块的重复数据删除。关于所述算法产生的误报概率,可选择用于计算所述哈希值的所述算法,所述概率应当是极为不可能。例如,SHA1哈希算法可以用于计算所述哈希值。然而,应理解,可以应用含误报所需属性的任意其它算法来计算各个分段的所述哈希值。
根据所述第一方面的所述装置的所述第七实现方式,在第八可能实现方式中,所述重复数据删除引擎还用于选择多个所述哈希值作为所述多个值。例如,所述哈希值可与阈值比较,或者可以进一步分析所述哈希值的所述值或位特征。例如,可选择多个最高有效位或最低有效位等于0的哈希值作为所述多个值。优选地,所述选择的多个哈希值可以被进一步处理以产生所述多个值。例如,只有所述哈希值的多个最高有效位或最低有效位可以用作所述多个值。根据示例,SHA1的所述哈希值可以是20个字节。为了使用所述索引的所述值,所述哈希值可以被视为4个字节+16个字节两个部分。可以从所述块的所述分段的哈希值列表中选择值,使得所述哈希值的4个字节为局部最大值。例如,可以选择四个值,4MB块中每个1MB部分对应一个值。在这些哈希值中,剩余的16个字节可被采用并且用作所述索引中的所述键。应理解,将所述值划分并选择为4+16个字节只是一个示例并且对所述哈希值的任意其它划分可用来将多个哈希值选择和处理为所述多个值。然而,用于选择的所述部分最好不是所述键的所述最高有效位以避免所述索引中所述值的一致性。考虑到所述数据的局部性,所述局部最大值可以被赋予有序输出的任意其它函数,例如min函数,替换。否则,如果所有这些选择的代表值或哈希值均来自所述块的相同区域的分段,所述数据的小变化可以影响所述索引中选择的代表值或哈希值。
因此,对于每个块,对应于所述多个值的一组哈希值或指纹可用于查询所述索引。如果所述索引中的所述值或指纹相同,这可用作所述先前处理的数据块可类似于所述当前数据块的指示。因此,可根据所述多个值确定相似数据块以确定合适的候选数据块用于后续与当前数据块的比较以确定匹配的数据块。关于上述示例,可为每个块选择四个指纹或哈希值作为所述多个值,并且如果所有指纹与所述先前处理的块相同,可假设两个块至少部分相同。当前块中任意数据变化只反映在于先前处理的块的指纹相同的指纹的数量减少,例如两个或三个指纹。对哈希值进行取样以产生所述多个选择的值是有利的,因为每个数据块的查询数量降至选定值的数量。
根据如上所述第一方面或根据所述第一方面的任意前述实现方式,在所述装置的第九可能实现方式中,根据替换策略替换所述索引的所述条目。在索引更新期间,所述多个值,其可对应于所述数据块的所述分段的各个哈希值,被***至所述索引中作为新条目。每个条目可包括键和值,其中所述条目的所述值可以是重复数据删除中使用的值,例如分段的哈希值,并且所述条目的所述值可引用所述数据块。如果所述索引不包括任何值相同的含键条目,新条目可被包括在所述索引中。如果所述索引已包括值相同的含键条目,所述重复数据删除引擎可确定所述索引中值相同的含键条目数量。如果条目数量小于所述阈值,所述新条目可被包括在所述索引中,并且可选地,引用计数可以增加。如果条目数量超过或等于所述阈值,所述重复数据删除引擎可根据所述替换策略选择所述条目中的一个条目。
优选地,所述替换策略包括替换最旧的条目。所述重复数据删除引擎可用于确定每个值相同的含键条目的寿命,例如通过获取各个条目引用的所述对应数据块的所述条目或时间戳或版本的各个时间戳。在确定最旧条目或引用最旧数据或数据版本的条目之后,所述最旧条目可被所述新条目替换。
在根据如上所述第一方面或根据所述第一方面的任意前述实现方式,在所述装置的第十可能实现方式中,所述查询产生所述索引的有序条目列表,其中所述条目按照序列秩进行排序。优选地,基于所述多个值的匹配值的数量计算所述序列秩。所述多个值,例如所有或选择数量的分段的所述哈希值,可在所述索引中搜索并且可返回具有至少一个匹配条目的有序条目列表。所述列表可以包括对各个条目对应引用的所述先前处理的块的引用。所述列表可以按照整个先前处理的块与所述当前数据块的良好匹配的概率进行排序。所述序列还可以考虑所述列表中的哪些块最近被用作重复数据删除期间的判定准则。所述序列还考虑每个条目的寿命,例如最近的条目被优先处理。这是有利的,因为在多数情况下,处理的数据的变化累积并且最近条目对应引用的块很有可能将与于所述当前处理的数据块类似。所述列表还根据第一特征,例如匹配条目数量,进行分类,随后根据第二、第三和任意其它特征,例如所述条目的寿命,进行分类。此外,所述列表可以被截断为条目的数量并且所述列表中的所有条目可以用作进行重复数据删除的命中或者条目的截断数量可以用作进行重复数据删除的命中。例如,四个键的索引搜索可以产生各个条目的两组各三个值,并且每个值的所述序列可以根据其寿命进行计算,其中所述最近值可以具有最高序列。所述集合的秩可以是其值的所述序列的总和。例如,可以为各个条目中的每个键保留三个值并且第一个值的序列可以是1000,第二个值的序列可以是900,第三个值的序列可以是800。因此,所述集合中的值的数量可以是最高有效方面并且所述值的寿命作为大小相同的集合的判定准则。所述索引中各个条目的时间戳可以保留在各个值中以确定寿命。此外或者作为替代,所述条目的所述值可以根据寿命保留在有序列表中,并且当新条目被***至所述索引中时,可丢弃最旧条目。
根据如上所述第一方面或根据所述第一方面的任意前述实现方式,在所述装置的第十一可能实现方式中,所述接口用于接收块写命令中的所述数据块。所述接口和所述重复数据删除引擎可以具有基本的I/O块范围。块大小最好在4MB至16MB的范围之间。然而,应注意,可以使用任意块大小并且本发明不局限于特定块大小。
根据第二方面,提供了一种用户设备,所述用户设备包括根据一项实现方式的装置。具体而言,所述用户设备可包括一种装置,所述装置包括用于接收数据块的接口和耦合至所述接口的重复数据删除引擎,所述重复数据删除引擎用于基于使用从所述数据块中计算所得的多个值查询索引对所述数据块进行重复数据删除,以及将多个新条目***至所述索引,每个条目对应于所述多个值中的一个值,其中为了将多个新条目***至所述索引中,所述重复数据删除引擎还用于:为每个新条目确定所述索引中对应于相同值的条目数量;如果所述条目数量超过阈值,将所述条目中的一个条目替换为新条目。应理解,根据所述第二方面的所述用户设备可包括根据所述第一方面的一个或多个实现方式的装置的特征的任意组合。
在根据如上所述第二方面的所述用户设备的第一可能实现方式中,所述用户设备为具有重复数据删除功能的存储器或网络设备中的一个。例如,所述用户设备可以是网络连接存储(NAS)或辅助存储设备。所述用户设备还可以是通信设备。
在第三方面中,提供了一种重复数据删除方法,所述方法包括以下步骤:接收数据块,基于使用从所述数据块中计算所得的多个值查询索引对所述数据块进行重复数据删除,以及将多个新条目***至所述索引中,每个条目对应于所述多个值中的一个值,其中所述将多个新条目***至所述索引中包括为每个新条目确定所述索引中对应于相同值的条目数量,如果所述条目数量超过阈值,将所述条目中的一个条目替换为所述新条目。根据所述第三方面的所述方法使用大小合理的索引提供了一种有效的重复数据删除以避免磁盘查找瓶颈,同时保持找到先前处理的数据的若干引用的能力以选择进行重复数据删除的最合适的数据块。
在根据如上所述第三方面的所述方法的第一可能实现方式中,所述对所述数据块进行重复数据删除包括使用所述多个值查询所述索引;如果所述查询产生匹配查询,根据所述匹配条目获取先前处理的数据的特征并且将获取的特征与所述数据块的特征比较。
根据如上所述第三方面或根据所述第三方面的所述第一实现方式的所述方法的第二可能实施方式,所述方法还包括基于所述查询确定要对哪个数据块进行重复数据删除;如果要对至少一部分所述数据块进行重复数据删除,将所述至少一部分所述数据块替换为所述匹配数据的引用。
在根据如上所述第三方面或根据所述第三方面的任意前述实现方式的所述方法的第三可能实施方式中,所述方法还包括将所述数据块划分为多个分段。
在根据如上所述第三方面或根据所述第三方面的任意前述实现方式的所述方法的第四可能实施方式中,所述方法还包括基于所述分段的哈希值计算所述多个值。
根据如上所述第三方面或根据所述第三方面的任意前述实现方式的所述方法的第五可能实施方式中,所述方法还包括将多个所述哈希值选择作为所述多个值。
根据如上所述第三方面或根据所述第三方面的任意前述实现方式的所述方法的第六可能实施方式,所述方法还包括根据包括替换最旧的条目的替换策略替换所述索引的所述条目。
在根据如上所述第三方面或根据所述第三方面的任意前述实现方式的所述方法的又一可能实现方式中,所述方法可包括任意组合的针对根据所述第一方面的所述装置或根据所述第二方面的所述用户设备的一个或多个实现方式的功能的步骤。
根据第四方面,提供了一种具有用于执行根据所述第三方面的一项实现方式的方法的程序代码的计算机程序,其中当所述计算机程序在计算机上运行时执行所述方法。
根据第五方面,提供了一种计算机程序产品,所述计算机程序产品包括存储在其上供用户设备使用的可读存储介质,所述程序代码包括用于执行根据所述第三方面的所述方法的可能实现方式的各个方法步骤的指令。
因此,本发明的实现方式可以提供一种有效的重复数据删除方法,所述方法使用优化索引,所述索引能够访问多个先前处理的数据以确定进行重复数据删除的合适数据。
附图说明
结合以下说明和附图可以更好地理解本发明的特定特征、方面和优点。
图1是根据本发明的一项或多项实施例中多个装置的示意性的***图;
图2是根据本发明的一项或多项实施例中一种用于重复数据删除的方法的流程图;以及
图3是根据本发明的一项或多项实施例中一种用于重复数据删除的方法的另一流程图。
具体实施例
图1所示为根据本发明的一项或多项实施例中多个装置的示意性的***图。在***100中,装置102a、102b和102c可以在多种应用领域对数据执行重复数据删除操作以基于先前处理的数据中的冗余性以压缩数据或者减少后续处理的数据量。
装置102a可以是包括重复数据删除引擎104和存储器106的存储设备,存储器106包括一个或多个存储设备,例如任意组合的硬盘驱动器、固态驱动器、闪存和其它存储设备的阵列。装置102a可以耦合至处理设备108,例如便携式计算机或个人电脑。处理设备108可向装置102a提供数据以便存储或备份。例如,装置102a可以是辅助存储器、网络连接存储或用于存储或备份数据的任意其它合适的存储设备。计算设备108a可以通过无线或有线链路或网络访问装置102a,正如装置102a和处理设备108直接的箭头所指示的那样。
重复数据删除引擎104可以提供重复数据删除功能,该功能可以被视作用于删除存储器106中存储的数据中的复制数据的相同副本的专业数据压缩技术。重复数据删除引擎104可以通过在容器中存储数据来实现重复数据删除。传入数据可以被提供给重复数据删除引擎104作为一个或多个数据块。重复数据删除引擎104可以将每个数据块划分为分段序列。对于每个块,重复数据删除引擎104可以确定先前存储在存储器106中的合适的数据块集以对当前数据块进行重复数据删除。合适的分段或数据块主要基于底层数据的数据局部性属性确定,该过程假设类似数据序列将在后续数据块中再次出现。
为了找到进行重复数据删除的最佳数据块或数据分段,重复数据删除引擎104可以使用索引。该索引可以存储在存储器或缓存(未示出)中以实现对该索引的快速访问。该索引可以是全索引或稀疏索引。全索引可以包含进入装置102a的数据块的每个小数据或数据单元的指纹。稀疏索引可以包含进入装置102a的每个较大数据或数据单元的命中,例如,各个数据块。因此,稀疏索引可以包含允许确定基于数据局部性搜索匹配的最佳候选区域的命中。当找到此类命中时,该区域的特征或指纹可从存储器106中加载并与当前处理的数据块比较。此外,稀疏索引可以包括对应于相同命中的若干条目。这允许考虑多个数据版本,无论与最近数据版本的相似性如何,这些数据版本在存储器106中仍然有效。
在对数据块进行重复数据删除并且分别将新数据存储在存储器106或者将旧版本数据的引用存储在存储器106之后,重复数据删除引擎104可以通过将多个新条目***至索引中来更新索引,每个条目对应于在重复数据删除期间用于查询索引的值。通过确定相同值对应的索引中的条目数量可以将新条目***至索引中。如果条目数量超过阈值,其中的一个条目被新条目替换。
在块写命令上下文中,装置102a可以寻址重复数据删除引擎104。重复数据删除引擎104可以分析新数据块并产生在索引中应当被搜索的键。根据索引中的搜索结果,先前存储的数据块的合适区域的指纹可从存储器106中加载并且新数据块可以相对于先前存储的数据块进行重复数据删除。可为新数据块产生命中并且将命中***至索引中。为了保持索引足够小同时仍然实现对旧版本数据的访问,该索引可以保持最多K个命中或条目具有相同值,同时K+1个副本可以根据合适的替换策略,例如LRU、日期、或任意其它逻辑策略,移除。K个具有相同命中的副本或者具有相同值的条目实现在相同数据被装置102a再次查找到时找到最佳候选,并且还找到旧数据版本,例如,旧数据版本可能在再次恢复和写旧快照的情况下需要。
装置102b可以包括与装置102a类似的重复数据删除功能。然而,装置102b可对通过网络110进行传输的数据进行应用重复数据删除,这些数据将通过网络110进行传输。例如,处理设备108可向装置102b提交数据以通过网络110向目的设备传输数据。装置102b可通过任意类型的链路或连接技术,例如通过无线或有线连接,连接至网络110。装置102b可以包括重复数据删除引擎,该重复数据删除引擎类似于装置102a的重复数据删除引擎104。装置102b还可包括本地存储器(未示出)以临时缓冲数据。当前数据块在装置102b中根据先前传输的数据使用索引进行的重复数据删除可以使用索引相对于先前传输的数据执行,该索引可以以与装置102a中的索引类似的方式使用、维护和更新。该装置可以进行重复数据删除并且通过网络110发送相应的压缩数据。因此,如果在当前数据块中找到冗余数据,装置102b可以将冗余数据替换为先前传输的数据的引用以减少通过网络进行传输的数据量。目的设备可以通过恢复引用的先前接收的数据的引用来恢复压缩数据。
装置102c可以是任意类型的用户设备,例如通信或移动设备、平板设备或任意其它便携式或固定计算设备,这些设备可以提供重复数据删除功能以利用较大数据集中数据的冗余性。例如,装置102c可以进行重复数据删除以便进行存储或通信。装置102b也可以执行互易功能。例如,装置102b可以通过网络110从装置102b接收压缩去重数据并且可通过将先前接收的数据的引用替换为先前接收的数据来恢复接收到的压缩去重数据。
图2所示为根据本发明的一项实施例的一种方法的流程图。方法200可以是计算机实施的用于进行重复数据删除的计算机实施的方法。方法200可开始于项目202并且向实施至项目204前进,其中接收数据块。例如,该数据块可通过重复数据删除装置的接口接收,例如图1所示的装置102a、102b和102c的一个接口。
方法200可实施至206,其中可基于从数据块中计算所得的多个值查询索引对数据块进行重复数据删除。数据块的重复数据删除可以包括例如通过使用滚动哈希函数将数据块划分为多个分段,这些分段的长度可变,以及为数据块的各个分段计算哈希值。基于哈希值或所选的多个哈希值,可查询索引以提供索引的候选条目,该索引可引用具有一个或多个匹配分段的先前处理的数据块,匹配分段可表示进行重复数据删除的合适候选数据块。可以通过将数据块中的匹配分段替换为匹配的先前处理的数据的引用相对于最为合适的候选块对当前数据块进行重复数据删除。
方法200可实施至208,其中通过将多个新条目***至索引中对索引进行更新,每个条目对应于多个值中的一个值。通过为每个新条目确定索引中对应于相同值的条目数量将多个新条目***至索引中。如果未找到索引中对应于相同值的条目,可以将新条目直接包括在索引中。如果对应于相同值的条目数量低于阈值,可以将新条目添加至索引并且可增加具有相同值的条目的引用计数。如果条目数量超过阈值,可以例如通过遵循替换策略,例如替换索引中最旧的条目,将其中一个条目替换为新条目。
在208中更新索引之后,方法200可实施至210以确定是否将处理下一数据块。如果将处理下一数据块,该方法可重新实施204。如果不需要处理其它数据块,该方法可在212结束。
图3是根据本发明的一项实施例的方法的流程图。方法300可以是计算机实施的方法。方法300可开始于302并且可实施至304,其中可接收包括将进行重复数据删除的逻辑数据块的写命令。
在306中,可以将块划分为大小可变或固定的分段,这些分段可用作计算表征数据块的哈希值的基础。在308中,可计算哈希值以例如,通过查询引用先前处理的数据块的索引在310中确定进行重复数据删除的合适块。基于所选块以及当前数据块和先前处理的数据块的特征比较,在312中对数据块进行重复数据删除。
在重复数据删除312之后,方法300可在314中随着引用当前数据块的新条目而更新索引,方法300可实施至316以确定是否将处理下一数据块。如果处理继续,方法300可重新实施304以在下一写命令中接收逻辑块。如果不需要处理其它数据块,方法300可在318结束。
图2的方法200和图3的方法300可以由重复数据删除引擎,例如图1所示的装置102a的重复数据引擎104,实施。即使图2和图3分别对应的方法200和300的各个方法步骤已经以处理步骤的先后顺序示出,但应理解各个方法步骤可以同时并且以相同或不同的顺序彼此独立地执行。此外,可以省略各个方法步骤并且可以根据本发明实施例的要求添加其它方法步骤。
虽然已详细地描述了本发明及其优点,但是应理解,可以在不脱离如所附权利要求书所界定的本发明的精神和范围的情况下对本发明做出各种改变、替代和更改。
Claims (15)
1.一种装置,其特征在于,包括:
接口,用于接收数据块;以及
耦合至所述接口的重复数据删除引擎(104),用于基于使用从所述数据块中计算所得的多个值查询索引对所述数据块进行重复数据删除,以及将多个新条目***至所述索引中,每个条目对应于所述多个值中的一个值,其中为了将所述多个新条目***至所述索引中,所述重复数据删除引擎(104)还用于:为每个新条目确定所述索引中对应于相同值的条目数量;如果所述条目数量超过阈值,将所述条目中的一个条目替换为所述新条目。
2.根据权利要求1所述的装置,其特征在于,为了对所述数据块进行重复数据删除,所述重复数据删除引擎(104)还用于:使用所述多个值查询所述索引;如果所述查询产生匹配条目,根据所述匹配条目获取先前处理数据的特征,以及将所述获取的特征与所述数据块的所述特征比较。
3.根据权利要求1或2所述的装置,其特征在于,根据一个或多个版本存储先前处理的数据,所述索引的每个条目对应所述先前处理的数据的所述版本中的一个版本。
4.根据前述权利要求之一所述的装置,其特征在于,所述重复数据删除引擎(104)还用于:基于所述查询确定是否将对所述数据块进行重复数据删除;如果将对至少一部分所述数据块进行重复数据删除,将所述至少一部分所述数据块替换为所述匹配数据的引用。
5.根据前述权利要求之一所述的装置,其特征在于,所述索引为稀疏索引,所述稀疏索引的每个条目对应数据块。
6.根据前述权利要求之一所述的装置,其特征在于,所述重复数据删除引擎(104)还用于将所述数据块划分为多个分段。
7.根据权利要求6所述的装置,其特征在于,对于要进行重复数据删除的多个数据块,每个数据块包括相同数量的分段,或者至少一些数据块包括每个块数量不同的分段。
8.根据权利要求6或7所述的装置,其特征在于,所述重复数据删除引擎(104)还用于基于所述分段的哈希值计算所述多个值。
9.根据权利要求8所述的装置,其特征在于,所述重复数据删除引擎(104)还用于选择多个所述哈希值作为所述多个值。
10.根据前述权利要求之一所述的装置,其特征在于,根据包括替换最旧的条目的替换策略,替换所述索引的所述条目。
11.根据前述权利要求之一所述的装置,其特征在于,所述查询产生所述索引的有序条目列表,其中所述条目按照秩进行排序。
12.根据权利要求11所述的装置,其特征在于,基于所述多个值的匹配值的数量或者基于所述条目的寿命计算所述秩。
13.根据前述权利要求之一所述的装置,其特征在于,所述接口用于在块写命令中接收所述数据块。
14.一种根据前述权利要求之一所述的包含装置的用户设备。
15.一种重复数据删除方法,其特征在于,包括:
接收(204;304)数据块;
基于使用从所述数据块中计算所得的多个值查询索引对所述数据块进行重复数据删除(206;312);以及
将多个新条目***至所述索引中,每个条目对应于所述多个值中的一个值,其中所述将所述多个新条目***至所述索引中包括为每个新条目确定所述索引中对应于相同值的条目数量;如果所述条目数量超过阈值,将所述条目中的一个条目替换为所述新条目。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/EP2014/076947 WO2016091282A1 (en) | 2014-12-09 | 2014-12-09 | Apparatus and method for de-duplication of data |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105917304A true CN105917304A (zh) | 2016-08-31 |
Family
ID=52023497
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480041259.9A Pending CN105917304A (zh) | 2014-12-09 | 2014-12-09 | 重复数据删除的装置和方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN105917304A (zh) |
WO (1) | WO2016091282A1 (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107451204A (zh) * | 2017-07-10 | 2017-12-08 | 阿里巴巴集团控股有限公司 | 一种数据查询方法、装置及设备 |
CN109937411A (zh) * | 2017-08-25 | 2019-06-25 | 华为技术有限公司 | 将接收的数据块存储为去重数据块的装置和方法 |
CN110019056A (zh) * | 2017-07-21 | 2019-07-16 | Emc知识产权控股有限公司 | 用于云层的容器元数据分离 |
CN110945483A (zh) * | 2017-08-25 | 2020-03-31 | 华为技术有限公司 | 重复数据删除的网络***和方法 |
CN113010104A (zh) * | 2020-01-27 | 2021-06-22 | 慧与发展有限责任合伙企业 | 基于存储设备的磨损量的重复数据删除***阈值 |
CN113064556A (zh) * | 2021-04-29 | 2021-07-02 | 山东英信计算机技术有限公司 | 一种bios的数据存储方法、装置、设备及存储介质 |
CN113632059A (zh) * | 2020-03-06 | 2021-11-09 | 华为技术有限公司 | 用于消除重复数据删除中的碎片整理的设备和方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101882141A (zh) * | 2009-05-08 | 2010-11-10 | 北京众志和达信息技术有限公司 | 一种实现重复数据数据删除的方法和*** |
US20110246741A1 (en) * | 2010-04-01 | 2011-10-06 | Oracle International Corporation | Data deduplication dictionary system |
CN102456059A (zh) * | 2010-10-21 | 2012-05-16 | 英业达股份有限公司 | 重复数据删除的处理*** |
CN102467572A (zh) * | 2010-11-17 | 2012-05-23 | 英业达股份有限公司 | 支持重复数据删除程序的数据区块查询方法 |
US8463742B1 (en) * | 2010-09-17 | 2013-06-11 | Permabit Technology Corp. | Managing deduplication of stored data |
-
2014
- 2014-12-09 WO PCT/EP2014/076947 patent/WO2016091282A1/en active Application Filing
- 2014-12-09 CN CN201480041259.9A patent/CN105917304A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101882141A (zh) * | 2009-05-08 | 2010-11-10 | 北京众志和达信息技术有限公司 | 一种实现重复数据数据删除的方法和*** |
US20110246741A1 (en) * | 2010-04-01 | 2011-10-06 | Oracle International Corporation | Data deduplication dictionary system |
US8463742B1 (en) * | 2010-09-17 | 2013-06-11 | Permabit Technology Corp. | Managing deduplication of stored data |
CN102456059A (zh) * | 2010-10-21 | 2012-05-16 | 英业达股份有限公司 | 重复数据删除的处理*** |
CN102467572A (zh) * | 2010-11-17 | 2012-05-23 | 英业达股份有限公司 | 支持重复数据删除程序的数据区块查询方法 |
Non-Patent Citations (1)
Title |
---|
MARK LILLIBRIDGE等: ""Sparse Indexing:Large Scale,Inline Deduplication Using Sampling and Locality"", 《7TH USENIX CONFERENCE ON FILE AND STORAGE TECHNOLOGIES》 * |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107451204A (zh) * | 2017-07-10 | 2017-12-08 | 阿里巴巴集团控股有限公司 | 一种数据查询方法、装置及设备 |
CN107451204B (zh) * | 2017-07-10 | 2021-01-05 | 创新先进技术有限公司 | 一种数据查询方法、装置及设备 |
CN110019056A (zh) * | 2017-07-21 | 2019-07-16 | Emc知识产权控股有限公司 | 用于云层的容器元数据分离 |
CN110019056B (zh) * | 2017-07-21 | 2024-01-23 | Emc知识产权控股有限公司 | 用于云层的容器元数据分离 |
CN109937411A (zh) * | 2017-08-25 | 2019-06-25 | 华为技术有限公司 | 将接收的数据块存储为去重数据块的装置和方法 |
CN110945483A (zh) * | 2017-08-25 | 2020-03-31 | 华为技术有限公司 | 重复数据删除的网络***和方法 |
CN109937411B (zh) * | 2017-08-25 | 2021-08-20 | 华为技术有限公司 | 将接收的数据块存储为去重数据块的装置和方法 |
US11507539B2 (en) | 2017-08-25 | 2022-11-22 | Huawei Technologies Co., Ltd. | Apparatus and method for storing received data blocks as deduplicated data blocks |
CN113010104A (zh) * | 2020-01-27 | 2021-06-22 | 慧与发展有限责任合伙企业 | 基于存储设备的磨损量的重复数据删除***阈值 |
US11609849B2 (en) | 2020-01-27 | 2023-03-21 | Hewlett Packard Enterprise Development Lp | Deduplication system threshold based on a type of storage device |
CN113632059A (zh) * | 2020-03-06 | 2021-11-09 | 华为技术有限公司 | 用于消除重复数据删除中的碎片整理的设备和方法 |
CN113064556A (zh) * | 2021-04-29 | 2021-07-02 | 山东英信计算机技术有限公司 | 一种bios的数据存储方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2016091282A1 (en) | 2016-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105917304A (zh) | 重复数据删除的装置和方法 | |
US8892529B2 (en) | Data processing method and apparatus in cluster system | |
CN110268394B (zh) | 用于存储和操作键值数据的方法、***及机器可读存储媒体 | |
CN102782643B (zh) | 使用布隆过滤器的索引搜索 | |
US10452297B1 (en) | Generating and optimizing summary index levels in a deduplication storage system | |
US8782011B2 (en) | System and method for scalable reference management in a deduplication based storage system | |
US9405764B1 (en) | Method for cleaning a delta storage system | |
US8972672B1 (en) | Method for cleaning a delta storage system | |
US9983822B1 (en) | Generating and optimizing summary index levels in a deduplication storage system | |
CN106066896B (zh) | 一种应用感知的大数据重复删除存储***及方法 | |
JP6537214B2 (ja) | 重複排除方法および記憶デバイス | |
CN103870514B (zh) | 重复数据删除方法和装置 | |
US9400610B1 (en) | Method for cleaning a delta storage system | |
CN109445702B (zh) | 一种块级数据去重存储*** | |
EP3316150B1 (en) | Method and apparatus for file compaction in key-value storage system | |
CN108089816B (zh) | 一种基于负载均衡的查询式重复数据删除方法及装置 | |
US20190379394A1 (en) | System and method for global data compression | |
CN108090125B (zh) | 一种非查询式的重复数据删除方法及装置 | |
JP6807395B2 (ja) | プロセッサ・グリッド内の分散データ重複排除 | |
CN113767378A (zh) | 文件***元数据去重复 | |
US10416901B1 (en) | Storage element cloning in presence of data storage pre-mapper with multiple simultaneous instances of volume address using virtual copies | |
CN112162973A (zh) | 指纹碰撞规避、去重及恢复方法、存储介质和去重*** | |
US10209909B1 (en) | Storage element cloning in presence of data storage pre-mapper | |
US11347799B2 (en) | Space accounting for data storage usage | |
JP6163187B2 (ja) | クラスタシステムデータ処理方法及び装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20160831 |