CN112470140A - 基于块的重复数据删除 - Google Patents
基于块的重复数据删除 Download PDFInfo
- Publication number
- CN112470140A CN112470140A CN201980048951.7A CN201980048951A CN112470140A CN 112470140 A CN112470140 A CN 112470140A CN 201980048951 A CN201980048951 A CN 201980048951A CN 112470140 A CN112470140 A CN 112470140A
- Authority
- CN
- China
- Prior art keywords
- fingerprint
- data block
- tail
- incoming data
- sha
- 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
- 238000000034 method Methods 0.000 claims abstract description 65
- 238000013507 mapping Methods 0.000 claims description 24
- 238000013500 data storage Methods 0.000 description 6
- 238000005192 partition Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 239000004744 fabric Substances 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000011218 segmentation Effects 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 238000000638 solvent extraction Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 238000001816 cooling Methods 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 230000008030 elimination Effects 0.000 description 2
- 238000003379 elimination reaction Methods 0.000 description 2
- 238000012005 ligant binding assay Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/215—Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
-
- 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/0608—Saving storage space on storage systems
-
- 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3239—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
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)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
基于块的重复数据删除系统和方法。将传入数据块划分为头部和尾部,用于指纹鉴定,以及映射入各自的头部SHA(安全哈希算法)和尾部SHA表。头部或尾部指纹用于定位先前数据块,该先前数据块与传入数据块几乎相同,且用于确定数据突发,从而对传入数据块进行重复数据删除。
Description
背景技术
数字数据存储系统可以利用各种技术将存储数据所需的存储量减小到最少。这样的存储最小化技术不仅可以节省时间,更快地完成数据处理,而且还能减少冗余,将存储成本降到最低。
这样的存储优化技术之一是重复数据删除。重复数据删除采用一种方案,其中相同的数据块(或单个段)同时由不同的元数据集中的多个指针引用。以这种方式,所有数据集共有的数据块仅存储一次,并且消除了重复数据的重复副本。
块级重复数据删除系统是一种将传入数据集或输入数据流分段为多个数据块的系统。例如,传入数据集可能是备份环境中的备份文件。作为另一个示例,输入数据集可以是数据库快照、虚拟机映像等。重复数据删除不仅可以通过消除重复数据来减少存储空间,还可以最大程度地减少网络环境中冗余数据的传输。
可以通过为每个这样的数据块创建加密安全的哈希签名或指纹,例如SHA-1,SHA-2,来识别每个传入数据块。还创建了所有指纹的索引,每个指纹都指向相应的数据块。然后,该索引提供参考列表,以确定先前已存储了哪些数据块。
在固定长度的块重复数据删除中,多个数据块的大小是固定的,即,它们被分成固定的块。块的长度例如可以是4K字节。作为另一个示例,长度可以是16K字节。在可变长度重复数据删除中,多个数据块被分割为可变大小的块单元。在此,每个大小可变的单元的长度根据其内容本身而变化。
在通常的实践中,传入数据块和先前的数据块可以通过单个脉冲串变化。例如,在备份系统中,单个文件是由大量组件文件组成的备份映像。这些文件即使是同一文件系统的连续备份,也很少会完全相同。单独添加、删除或更改任何组件文件都可以使其余图像内容发生移位。即使没有其他文件已更改,该移位也将导致每个固定大小的段与其之前的样子不同,包含一个邻居的一些字节并放弃其中的一些字节给其其它邻居。
通常,现有的重复数据删除系统和方法可能需要大量计算且效率低下,并且尤其是在上述的上下文中,经常导致冗余或重复数据的存储。在这种情况下,需要解决常规系统和方法的一个或多个缺点。
发明内容
可以在本公开中找到基于块的重复数据删除系统和方法的各种示例性实施例。
在一个实施例中,一种重复数据删除方法,将接收到的用于存储的多个传入数据块中的其中一个数据块划分为至少头部和尾部。在生成唯一标识头部的头部指纹的同时,还生成了同样唯一标识传入数据块的尾部的尾部指纹。
重复数据删除方法包括提供头部SHA(安全散列算法)和尾部SHA表。对于每个数据块,头部SHA表包括头部指纹到完整指纹的映射。尾部SHA表包括针对每个数据块的尾部指纹到完整指纹的映射。重复数据消除方法确定传入数据块的头部指纹是否在头部SHA表中,或者传入数据块的尾部指纹是否在尾部SHA表中。
如果头部指纹在头部SHA表中,或者尾部指纹在尾部SHA表中,则重复数据删除方法将使用(传入数据块的)头部或尾部指纹来标识存储的先前的数据块。在此,前一数据块和传入的数据块几乎相同。但是,传入的数据块包括前一数据块中数据之上的数据突发。此后,识别数据突发并将其写入可用的PBA(物理块地址)。
一方面,如果无法在头部SHA表或尾部SHA表中找到(传入数据块的)头部指纹和尾部指纹,则将传入数据块写入可用的PBA,以进行存储,从而代替识别先前的数据块并将数据突发写入上面的可用PBA。
在另一实施例中,参考LBA(逻辑块地址)表设有参考LBA,该参考LBA具有将逻辑块地址映射到先前数据块的完整指纹以及映射到存储数据突发的PBA的条目。
另一方面,重复数据删除方法在LBA表中创建新条目,该新条目将逻辑块地址映射到传入数据块的完整指纹。在另一实施例中,创建SHA表中的条目,其中SHA表中的条目将逻辑块地址映射到存储有传入数据块的PBA。
另一方面,重复数据删除方法为传入数据块生成完整的指纹。此处,完整指纹唯一地标识了传入数据块的整体。重复数据删除方法检查将完整指纹映射到PBA的SHA表,以确定传入数据块的完整指纹是否与存储的先前数据块匹配。如果匹配,则重复数据删除方法将在LBA表中创建一个新条目,该新条目将逻辑块地址映射到传入数据块的完整指纹。
在另一实施例中,使用头部指纹或所述尾部指纹来识别存储的数据块的重复数据删除方法包括以下步骤:
在所述头部SHA表中,识别所述先前数据块的头部指纹与所述传入数据块的头部指纹是否相同;提供SHA表,该SHA表具有将先前数据块的完整指纹映射到其中存储先前数据块的PBA的条目;以及使用先前数据块的完整指纹以从PBA存储中检索所述先前数据块。另一方面,使用所述头部指纹或所述尾部指纹通过识别出尾部SHA表中的先前数据块的尾部指纹与尾部指纹相同,来识别存储的数据块的重复数据删除。
在另一实施例中,仅当传入数据块的头部指纹不在头部SHA表中并且传入数据块的尾部指纹不在尾部SHA表中时,才将传入数据块而非突发数据写入PBA(物理块地址)进行存储。然而,如果传入数据块的头部指纹在头部SHA表中,或者传入数据块的尾部指纹在尾部SHA表中,则头部指纹或所述尾部指纹用于定位存储的先前数据块。先前数据块和传入数据块几乎是匹配的,除了传入数据块包括不包含在先前数据块中的数据突发。然后将突发存储在PBA(物理块地址)中,从而无需将传入的数据块写入存储中。
可以通过参考说明书的其余部分和附图来进一步理解本文的本公开的性质和优点。下面参照附图详细描述本公开的其他特征和优点以及本公开的各种实施例的结构和操作。在附图中,相同的附图标记表示相同或功能相似的元件。
附图说明
图1示出了可与本公开的示例性实施例一起使用的示例存储集群系统。
图2示出了根据本公开的示例性实施例的基于块的重复数据删除系统的简要概述。
图3示出了根据本公开的示例性实施例的基于块的重复数据删除方法。
图4示出了相对于先前的数据块具有数据突发的新的数据块。
图5示出了根据本公开的示例性实施例的用于突发编码基于块的重复数据删除的示例计算设备的通用组件的逻辑集合的一个组合。
图6示出了根据本公开的示例性实施例的用于突发编码基于块的重复数据删除的分布式系统的一种组合。
具体实施方式
现在将详细参考本公开的实施例,其中附图中示出了实施例的示例。尽管将结合实施例描述本公开,但是应当理解,它们并不旨在将本公开限制于这些实施例。相反,本公开旨在覆盖替代、修改和等同形式,其可以包括在由所附权利要求限定的本公开的精神和范围内。此外,在本公开的以下详细描述中,阐述了许多具体细节,以透彻理解本公开。然而,对于本领域的普通技术人员显而易见的是,可以在没有这些具体细节的情况下实践本公开。在其他情况下,没有详细描述公知的方法,过程,组件和电路,以免不必要地使本公开的各方面不清楚。
图1示出了可与本公开的示例性实施例一起使用的示例存储集群系统100。
在图1中,存储集群系统100包括具有多个插槽104的机架102。每个插槽104的大小设置为接收在每个存储节点106内具有内部非易失性固态存储器108的存储节点106。该存储布置可以提供本地存储,或根据本公开实施例的存储区域网络。
因此,这种存储区域网络可能包括多个存储节点106和多个存储集群系统100,以提供取决于特定系统的存储内存要求的灵活配置。取决于特定机架中的插槽104的数量,适当通信地耦合的一个或多个存储集群系统100可能就足够了。作为示例,尽管这里仅示出了四个插槽104,但是机架102可以包括十六个这样的插槽104。
本领域普通技术人员将意识到,可以根据需要耦合两个十六个插槽的集群,以满足存储内存需求。此外,也可以采用少于插槽104的数量。在图1中,示出了四个插槽104。四个插槽中的两个由存储节点106填充,而其他两个插槽104A和104B为空。
在图1中,存储集群系统100的机架102还包括交换结构模块110和冷却系统112。交换结构模块110经由一个或多个网络交换机互连存储节点106。通过跨多个节点分布数据,可以实现更高的总吞吐量。尽管未示出,但是交换结构模块110还可以包括用于提供冗余的附加结构模块以及用于跨网络路由数据的路由引擎。冷却系统112可以包括单个或多个风扇架,每个风扇架包括两个或多个风扇,并且其中每个风扇架由风扇架控制器控制。
本领域技术人员将意识到该存储节点排列不必按照顺序进行,而可以是不按照顺序的。注意,存储节点106可以被热插拔。因此,每个存储节点106可以插入插槽104或从插槽104中移除,而无需关闭系统电源或者重大中断系统的运行。当检测到插入或去除存储节点106时,系统将自动重新配置。
如图1所示,存储节点106包括内部固态存储器108,内部固态存储器108可以包括相对快速的非易失性固态存储器,诸如非易失性随机存取存储器(NVRAM)和闪存(未示出)。存储节点106还包括处理器114和存储器116。根据本公开的示例性实施例,可以包括可以由处理器114执行的一行或多行代码的指令可以被存储在存储器116中。
图1的存储集群系统100,例如可以用于主存储。作为另一个示例,存储集群系统100可以是备份系统。无论哪种情况,存储内存的容量都是可扩展的,并且可以根据系统要求增加或减少。例如,存储集群系统100可被配置为具有1PB(250字节)的存储容量。如参考以下附图所描述的,根据本公开的实施例,这样的系统可以具有增加的重复数据删除率。
基于块的重复数据删除系统
传统的基于块的重复数据删除系统利用基于内容的寻址进行重复数据删除。在这样的系统中,每个数据文件首先被分割成固定长度或可变长度的块。一旦分割完成,将为块分配唯一的逻辑块地址(LBA)。加密安全哈希算法(SHA)可以用作每个数据块的唯一指纹。SHA算法的示例可能包括SHA-1,SHA-2等。在此,f(D)可以用来表示数据块D的指纹。为了简洁明了,f(D)可以简单地用f表示,
基于块的重复数据删除系统可能维护两个映射表,一个LBA表和一个SHA表映射。LBA表将LBA(用/表示)映射到相应的指纹(用f表示)。此关系由[I:f]表示。SHA表在存储介质中存储了从指纹f到物理块地址(PBA)的映射以及引用计数。此关系由[f:p,c]表示,其中f是指纹,p是PBA,c是引用计数。
重复数据删除写入
输入:[LBA:/,数据块:D]
1.计算指纹f=f(D)。
2.在LBA表中添加一个新条目[I:f]。
3.如果SHA表中有f,则将其引用计数c加1。
4.否则,压缩D并写入可用的PBA p,然后在SHA表中创建一个新条目[f:p,c=1]。
重复数据删除读取
输入:LBA:I
1.从LBA表中检索[I:f]。
2.从SHA表中检索[f,p,c]
3.在PBA p读取(和解压缩)数据块D。返回D。
重复数据删除被删除
输入:LBA:I
1.从LBA表中检索[I:f]。
2.从SHA表中检索[f,p,c],并且设置c←c+1。
3.如果c=0,则将[f:p,c]和p都标记为删除。
4.标记[I:f]删除。
在高性能系统存储中,可以采用的压缩算法包括LZ77及其变体,例如LZO和可选的霍夫曼编码。在接收到LBA读取查询后,操作系统从LBA表中检索指纹f,然后从SHA表中检索PBA p,在媒介PBA p处读取(压缩的)数据块并将数据解压缩为原始形式。
在接收到LBA删除请求后,首先,操作系统从LBA表中查找指纹f,然后在SHA表中将相应的引用计数c减一,最后删除LBA表中的相应条目。定期进行垃圾收集以清除过时的数据块。具体而言,当引用计数c为零时,将从媒体中删除相应的数据块,并删除其SHA条目。
以下是固定长度4K重复数据删除示例,以说明每个参数的字节长度。考虑一个容量为1PB(250字节),平均重复数据删除率为3,平均压缩率为2的存储系统。通常,该系统可以存储250/(4096/2)=239个唯一4K字节数据块,和3x239块原始4K字节数据。因此,LBA以6字节表示,而PBA则以5字节表示。SHA-1指纹占用20个字节。引用计数c占用1个字节(以避免出现计数器溢出的这种少见的情况,其中流行的块被引用超过255次,并且在计数器重置为1的情况下创建了第二个相同的SHA条目)。
在图2的示例中,重复数据删除系统200可以包括应用程序202,该应用程序202指导文件系统204,以创建用于重复数据删除208的一个或多个文件(表示为新数据块203)。根据本公开的实施例,重复数据删除208减少或消除了冗余或重复数据,并且可以在数据创建和存储过程中或在存储集群系统100(图1)备份数据的过程中内联。
在一个示例中,当创建或发送数据块以将其存储在存储集群系统100中时,重复数据删除208可以内联发生。也可以在存储完或备份完数据之后发生重复数据删除。
与传统的重复数据删除系统不同,传统的重复数据删除系统通过识别并限制用于存储的冗余或重复数据的数量而具有有限的冗余数据消除能力,特别是当传入数据块和先前数据块以单个突发变化时,更具有这种能力,本公开便于快速访问数据并提高了存储内存的功能,从而改善了计算机技术。
这里,在创建了新的数据块D之后,将创建的数据块D发送到分区模块206进行分区。注意,如本文所用,新的数据块D由先前的数据块Dp和突发B组成,即,D=Dp+B。具体地说,新的数据块D可以与先前的数据块Dp相差单个突发B。这是因为由于数据的创建是有意的,所以文件的修改的特征可以为多个突发,而不是随机字节。此外,通常将文件分割为平均长度为4-8K字节的小块。因此,可以将逐块修改假定为单个突发。具体来说,突发B由四个元素定义:
B={开始位置,结束位置,突发长度,突发数据}
不计算结束位置数据字节的位置。现在提供一些示例以阐明上述定义。 表示传入的块从参考块位置8和9删除了两个字节;B={8,8,1,a}表示传入的块在参考块位置8处插入字节a;B={8,10,3,abc}表示传入的块用三个字节abc(在参考块位置8)替换了位置8和9处的两个参考字节。
该突发编码系统和方法的优点在于,它不需要两个相似的块具有相等的长度。本领域技术人员将理解,相似程度可以变化。
在图2的示例中,分区模块206接收新的数据块D 203,并将其至少划分为头部和尾部。尽管未示出,但是分区模块206可以接收多个数据块。在接收到数据块时,每个数据块被类似地划分为至少头部和尾部。如下所述,头部代表数据块的最左侧的部分,而尾部代表数据块的最右侧的部分。例如,如果新数据块D 203为11011100,则头部可以为110,而尾部可以为100。
在对新数据块203进行分区之后,重复数据删除208使用哈希函数210来为头部生成指纹。该头部指纹唯一地标识传入数据块的头部。与头部一样,重复数据删除208也使用哈希函数210为尾部生成指纹,使得尾部指纹唯一地标识新数据块D203。此外,还生成新数据块203的整体的完整的指纹。
在生成尾部和头部指纹之后,重复数据删除208使用头部SHA(安全哈希算法)表214和尾部SHA(安全哈希算法)表216来确定新数据块D 203的头部指纹是否在头部SHA表214中或新数据块D 203的尾部指纹是否在尾部SHA表216中。头部SHA表214包括数据块的头部指纹到相同数据块的完整指纹的映射。例如,对于先前存储在存储集群系统100中的先前数据块Dp,头部SHA表214将包括映射到Dp的完整指纹的数据块Dp的头部指纹,其中完整指纹是数据块Dp的整体的指纹。
这里,尾部SHA表216包括数据块的尾部指纹到相同数据块的完整指纹的映射。例如,对于先前存储在存储集群系统100中的先前数据块Dp,尾部SHA表216将包括映射到Dp的完整指纹的数据块Dp的尾部指纹。
如果在相应的hSHA表214或tSHA表216中的头部指纹或尾部指纹,则重复数据删除208利用头部指纹或尾部指纹来识别所存储的先前数据块Dp。如前所述,新数据块203包括在先前数据块Dp中的数据之上的数据突发B。否则,新数据块203和先前数据块Dp相同。然后,重复数据删除208确定该突发B是什么,并将其写入(或读取或删除)到PBA(物理块地址)中。此时,重复数据删除208然后与参考LBA(rLBA)表218,逻辑地址映射到先前数据组块Dp的指纹以及存储突发数据B的物理块地址。
确定新数据块D 203是否类似于先前存储的数据块Dp的传统且高度不切实际的方法在于与所有现有的数据库进行详尽比较。由于必须将新数据块与所有已存储的先前数据块进行比较,因此这种系统很耗时。与为数据块创建单个指纹的常规系统不同,本实施例为写入的每个数据块创建头部和尾部指纹。
当一个新的(由数据突发稍作修改的)数据块到达时,新的经过稍微修改的数据块的头部或尾部指纹与先前的块的头部或尾部指纹匹配。因此,识别先前的块,并且存储新数据组块与先前的块之间的差异(即数据突发),而不是存储新数据组块的全部。这与传统的重复数据删除系统不同,传统的重复数据删除系统无法确定两个数据块是否几乎相同,或者一个数据块是另一个数据块的稍加修改的版本,从而使得存储另一个几乎相同的数据块。
这种类型的可变长度分段方法的一种常规方法是通过为数据字节的每个滑动窗口计算Rabin指纹,并在关联的Rabin指纹满足某些条件(例如,多个最低有效位均是零)时设置块边界。然而,Rabin指纹分割需要很多计算,因为计算出的指纹的数量与数据长度一样大。实际上,所有现有的可变长度分段方法都在与每个字节关联的连续字节数上计算某些度量。
突发编码的重复数据删除写入
图3示出了根据本公开的示例性实施例的基于块的重复数据删除方法300。
在图3中,在框301处,重复数据删除方法300开始于接收多个用于存储的数据块。数据块可以来自传入数据集或输入数据流,例如备份环境中的备份文件。
在框302处,根据一种或多种实施方式,通过分区模块206对传入数据块进行分区(图2)。在这样的实施方式中,作为第一步,由分区模块206接收长度为I的新数据块D。第二步,将新数据块D划分为至少三个部分[D0,D1,D2]。D0代表数据块D的头部或最左边的部分,D1代表中间部分,D2是数据块D的尾部或最右边。在此特定实施方式中,分区操作使得D0和D2的长度等于Imin/2,其中Imin表示预定义最小块长度。
在框304处,指纹212(图2)与哈希函数210(图2)协作以生成用于新数据块D的指纹,计算尾部D0和头D2。即,确定指纹f=f(D),f0=f{D0}和f2=f{D2)。
在判定框306,方法300确定SFIA表中是否存在数据块的指纹f。
在框308处,如果SFIA表中存在f,则其计数器增加1。结果,在框310处,在LBA表中创建新条目[I:f],并且该过程在结束框312处终止。
返回参考判定框306,如果f不在SFIA表中,则基于块的重复数据删除方法300进入判定框314。在此判定框314,确定头部指纹f0是否在头部SHA表214中及其对应的计数器C0=0。与仅使用两个表的常规系统不同,本发明的实施例采用三个额外的表:头部SHA(hSHA)表214,尾部SHA(tSHA)表216和参考LBA(rLBA)表218(图2)。本领域技术人员将意识到,由于两个表(SHA和LBA)仅与存储的数据块的完整指纹有关,因此传统系统会严重限制数据重复数据删除。无法将传入数据块识别为几乎重复的数据块会导致整个传入数据块被存储。图4中示出了这种情况。
在图4中,示出了先前已经存储的先前数据块402。还示出了先前数据块402的指纹404。如406所示,当将单个数据突发B添加到先前数据块402时,先前数据块402的整个指纹会被改变,并且现在变为新的数据块指纹408。因此,使用新的数据块指纹408的搜索并未显示先前数据块402,使得即使新的数据块406和先前数据块402只相差了单个突发B,也会导致整个新的数据块406被存储。
与传统系统不同,本公开的实施例认识到,先前的数据块402和新的数据块406几乎相同并且仅相差单个突发B。然后存储该单个突发,而不是存储整个新数据块。本领域技术人员还将认识到,使用三个附加表,参考LBA(rLBA)表,头部SHA(hSHA)表和尾部SHA(tSHA)表克服了传统系统的上述缺点。
这里,参考LBA(rLBA)表的形式为[i:f’,p~],其中PBA p~包含突发数据B,该突发数据B反映了LBA数据D与参考数据D’的差异,该参考数据D’具有指纹f’。头部SHA(hSHA)表的形式为[f0:f,C0],其中f0=f(D0),f=f(D),C0表示其引用计数。尾部SHA(tSHA)表的形式为[f2:f,C2],其中f=f(D2),C2表示其引用计数。
在图3中,回到判定框314,如果f0在头部SHA表中,则方法300进入框316。
在框316处,方法300从hSHA表中检索出头部指纹/先前数据块指纹条目[f0:f’,c0],在框318处,设置计数器c0=1,接着方法300进行到判定框320。
回到判定框314,如果头部指纹f0不在hSHA表中,则方法300前进至判定框322,在此判定尾部指纹f2是否在尾部SHA表中。如果是这样,则方法300进行到框324。
在框324处,方法300从tSHA表中检索出头部指纹/先前数据块指纹条目[f2:f’,c0],在框326处,设置计数器c2=1,接着方法300进行到判定框320。
在判定框320,如果f’在SHA表中,则在框330处,从SHA表中检索先前的数据块指纹/物理块地址条目[f’:p’,c’],并在框332中,设置c’←c’+1。
在框334处,方法300读取(并解压缩)来自PBA(物理块地址)p’的先前数据块D’。
在框336处,方法300确定新数据块D 203(图2)与先前数据块D’之间的突发B,并将该突发B写入下一可用PBA p~。
在框338处,方法300在rLBA表中创建一个新的逻辑块地址/先前的数据指纹/突发物理块地址条目,[I:f’,p~]。
返回到判定框320,如果先前的数据块指纹f’不在SHA表中,则处理进入框328。类似地,在判定框322处,如果尾部指纹f2不在尾部SHA表中,则处理也进行到框328。
在框328处,方法300创建头部指纹/新数据块完整指纹hSHA条目[f0:f,c0=0]和尾部指纹/新数据块完整指纹tSHA条目[f2:f,c2=0]。
在框340处,方法300为新数据块D 203(图2)创建逻辑块地址/完整指纹LBA条目[I:f]。
在框342处,方法300压缩新数据块D并写入可用的PBA p,并在框344处为新数据块D创建新的SHA条目[I:p,c=1]。
在块316和324以及相关联的块中,当在cSHA表中并且对应的c-=1时,传入的新数据块D和现有块D*均指先前的块D’。D=D*和D的更多重复项很可能会出现。为此,为D创建新的指纹效率更高,以便可以通过常规LBA和SHA表直接对D的未来重复项进行重复数据删除。
还请注意,LBA分为两个表,即LBA表和rLBA表。在判定框320处,b处不存在[f’:p’,c’]的原因可能是因为异步删除过程。对应的读取和删除操作如下所述。尽管已经描述了突发编码重复数据删除写算法,但是可以采用其他合适的突发编码重复数据删除写算法。
突发编码的重复数据删除读取
一种用于突发编码的重复数据删除读取的示例性实施例和算法如下。输入:LBA:I
1.如果I位于LBA表中,则
(a)从LBA表中检索I:f]。
(b)从SHA表中检索[f:p,c]。
(c)在PBA p读取(并解压缩)数据块D。
返回D。
2.其他,
(a)从rLBA表中检索[I:f’,p~]。
(b)从PBA p~读取B。
(c)从SHA表中检索[f’:p’,c’]。
(d)在PBA p’上读取(并解压缩)参考数据块D’。
(e)将突发B应用于D’,得到D。返回D。
突发编码的重复数据删除
用于突发编码的重复数据删除的一种示例性实施例和算法如下:输入:LBA:I
1.如果I位于LBA表中,则
(a)从LBA表中检索[I:f]。
(b)从SHA表中检索[f:p,c],并设置c←c-1
(c)如果c=0,则将[f:p,c]和p都标记为删除。
(d)将[I:f]标记为删除。
2.其他,
(a)从rLBA表中检索[I:f,p~]。
(b)从SHA表中检索[f:p,c],并设置c←c-1。
(c)将p~标记为删除。
(d)将[I:f’,p~]标记为删除。
尽管已经描述了突发编码的重复数据删除写,读取和删除算法,但是可以采用其他合适的突发编码的重复数据删除写,删除和读取算法。注意,在以上公开的实施例中,以上删除过程没有考虑删除过时的hSHA或tSHA条目。相反,可以定期扫描hSHA和tSHA表以去除条目[fi:f,ci](i=0,2),从而使得SHA表中不存在f。
因此,由于异步更新了从hSHA条目[f0:f,c0]和htSHA条目[f2:f,c2]中删除SHA条目[f:p,c]的操作,因此,步骤3.b在写入过程中可能会失败。在这种情况下,参考写入被认为是无效的,并且随后执行新的写入。本公开的另一优点在于,本公开的突发编码重复数据删除方案与传统重复数据删除方案兼容。也就是说,旧方案中的任何重复数据删除块也将在新方案中进行重复数据删除。
图5示出了根据本公开的示例性实施例的示例计算设备500的通用组件的逻辑集合的一个组合,该示例计算设备500可用于实现突发编码基于块的重复数据删除。在该示例性实施例中,该设备包括用于执行可以存储在存储设备504中的指令的处理器502。该设备可以包括各种存储类型,数据存储或非暂时性计算机可读存储介质,例如第一数据存储器,用于由处理器102执行的程序指令,用于图像或数据的单独存储器,用于与其他组件共享信息的可移动存储器等。
该设备可以包括显示元件506,例如LCD(液晶显示器)或触摸屏,尽管诸如便携式媒体播放器之类的设备可能会通过其他方式(例如通过音频扬声器)传达信息。
在许多实施例中,该设备可以包括至少一个从用户接收输入信号的输入设备512。该输入元素可以是按钮、触摸板、触摸屏、滚轮、操纵杆、键盘、鼠标、小键盘或任何其他此类设备或元素,用户可以通过这些设备或元素进行交互或向该设备发出命令。在某些方面,设备可能不包含按钮,并且可能仅通过视觉和音频命令进行控制,因此用户可以控制设备而无需接触输入设备。在其他实施例中,计算设备可以包括一个或多个网络接口元件508,用于在包括Wi-Fi,蓝牙,RF,有线或无线通信系统的各种网络上进行通信。在许多实施例中,该设备可以与网络(例如因特网)通信,并且可能能够与其他此类设备进行通信。示例设备也可以包括一个或多个音频元件510,例如可以包括用于生成音频输出的一个或多个扬声器和/或用于接收诸如来自用户的语音命令的音频输入的一个或多个麦克风。
图6示出了可以在其中实现各种实施例的环境600的示例。本文讨论的用于实现根据各种实施例的各方面的示例环境主要涉及与Web服务和云计算有关的基于Web的环境,但是应当理解,尽管出于解释目的使用基于Web的环境,但是适当地可以使用不同的环境来实现各种实施例。与各种实施例一起使用的客户端设备602可以包括任何适当的设备,可操作这些客户端设备602,以通过至少一个适当的网络604发送和接收请求,消息或信息,并将信息传达回该设备的用户。
这样的客户端设备的示例包括个人计算机,智能电话,手持通讯设备,膝上型计算机,机顶盒,个人数据助理,电子书阅读器等。该网络可以包括任何适当的网络,包括内部网、因特网、蜂窝网络、局域网,包括内部网,因特网,蜂窝网络,局域网或任何其他这样的网络或其组合。用于这种系统的组件可以至少部分取决于所选择的网络和/或环境的类型。可以通过有线或无线连接及其组合来启用网络上的通信。在至少一些实施例中,来自客户端设备的请求可以被接收到与该请求的目的地地址相关联的接口层606,其中接口层可以包括诸如路由器,负载平衡器,应用程序接口等的组件。
接口层可以接收请求并将请求的信息定向到一个或多个计算资源,例如一个或多个Web服务器608和/或一个或多个应用程序服务器610,它们可以使用至少一些实施例中的一个或多个数据存储或数据库612中的数据来处理请求。应当理解,可以存在可以被链接或以其他方式配置的多个应用服务器,层或其他元件,过程或组件,这些应用服务器,层或其他元件,过程或组件可以进行交互以执行如本文讨论和建议的任务。
如本文所用,数据存储是指能够存储,访问和检索数据的任何设备或设备的组合,其可以包括在任何标准的分布式或集群式环境中的数据服务器,数据库,数据存储设备和数据存储介质的任意组合和数量。数据存储可以经过专门编程以实现本公开的实施例,从而使得这种实现是非通用的。服务器可以包括任意的硬件和软件,用于根据需要与数据存储集成以执行客户端设备的一个或多个应用程序的各个方面,处理应用程序的大多数数据访问和业务逻辑。应用程序服务器与数据存储协作,提供访问控制服务,并且能够生成传输给用户的以下内容,例如文本、图形、音频,和/或视频,这些内容可通过Web服务器服务于用户,Web服务器的形式为HTML,DHTML,XML或示例中的另一任何结构化的语言。Web服务器可以处理所有请求和响应,以及在客户端设备和资源之间传递内容。应当理解,Web服务器和应用服务器不是必需的,而仅仅是示例组件,因为本文讨论的结构化代码可以在本文其他各处讨论的任何适当的设备或主机上执行。每个服务器通常将包括操作系统,该操作系统为该服务器的一般管理和操作提供可执行程序指令,并且包括存储指令的非暂时性计算机可读介质,当由服务器的处理器执行所述指令时,指令允许服务器执行其预期功能。
本公开的实施例可被特殊编程和实现以使其非通用。实施例可以使用ASIC(专用集成电路)和/或使用包括复杂可编程逻辑器件(CPLD)和现场可编程门阵列(FPGA)的可编程逻辑器件(PLD)进行特殊编程。在一个实施例中,该环境是使用多个计算机系统和组件的分布式计算环境,这些计算机系统和组件使用一个或多个计算机网络或直接连接经由通信链路互连。因此,本文中各种系统和服务的描述应被认为是说明性的而非限制性的。
尽管以上是对本公开的示例性特定实施例的完整描述,但是其他实施例也是可能的。因此,以上描述不应被视为限制本公开的范围,本公开的范围由所附权利要求及其等同物的全部范围限定。
Claims (25)
1.一种重复数据删除方法,包括:
接收多个传入数据块进行存储;
将所述多个传入数据块其中之一划分为至少一个头部和一个尾部;
生成所述头部的指纹,所述头部指纹唯一地标识所述传入数据块的头部;
生成所述尾部的指纹,所述尾部指纹唯一地标识所述传入数据块的尾部;
在头部SHA(安全哈希算法)表中,将一头部指纹映射到每个相应数据块的一完整指纹;
在尾部SHA(安全哈希算法)表中,将一尾部指纹映射到每个相应数据块的一完整指纹;
确定所述传入数据块的头部指纹是否在所述头部SHA表中,或者所述传入数据块的尾部指纹是否在所述尾部SHA表中,
如果是,则1)使用所述传入数据块的所述头部指纹或所述尾部指纹来识别所存储的先前数据块,其中所述先前数据块和所述传入数据块几乎相同,除了所述传入数据块包括在所述先前数据块中的数据之上的数据突发;
2)确定在所述传入数据块和所述先前数据块之间的所述数据突发;和
3)将所述数据突发写入PBA(物理块地址)p~处的存储中。
2.根据权利要求1所述的方法,其特征在于,如果所述传入数据块的头部指纹不在所述头部SHA表中,且所述传入数据块的尾部指纹不在尾部SHA表中,则将所述传入数据块写入可用的PBA p以进行存储,并跳过上述1),2)和3)。
3.根据权利要求1所述的方法,其特征在于,还包括
提供参考LBA(逻辑块地址)表,该参考LBA表具有将逻辑块地址映射到所述先前数据块的完整指纹以及映射到存储所述数据突发的PBA p~的条目。
4.根据权利要求2所述的方法,其特征在于,还包括
在所述头部SHA表中创建条目,所述头部SHA表中的条目映射所述头部指纹和所述传入数据块的完整指纹;和
在所述尾部SHA表中创建条目,所述尾部SHA表中的条目映射所述尾部指纹和所述传入数据块的完整指纹。
5.根据权利要求4所述的方法,其特征在于,还包括
在LBA表中创建新条目,新条目LBA条目将逻辑块地址映射到所述传入数据块的完整指纹。
6.根据权利要求5所述的方法,其特征在于,还包括
在SHA表中创建一个条目,所述SHA表中的条目将所述逻辑块地址映射到存储所述传入数据块的PBA p中。
7.根据权利要求1所述的方法,其特征在于,还包括
生成所述传入数据块的完整指纹,所述完整指纹唯一地标识所述传入数据块的整体。
8.根据权利要求7所述的方法,其特征在于,还包括
检查将完整指纹映射到PBA的SHA表,以确定所述传入数据块的完整指纹是否与存储的先前数据块匹配,如果是,则在LBA表中创建新条目,所述LBA表中的新条目将逻辑块地址映射到所述传入数据块的完整指纹。
9.根据权利要求1所述的方法,其特征在于,通过使用所述头部指纹或所述尾部指纹来识别存储的数据块的步骤包括
在所述头部SHA表中,识别所述先前数据块的头部指纹与所述传入数据块的头部指纹是否相同;
提供SHA表,该SHA表具有将所述先前数据块的完整指纹映射到其中存储所述先前数据块的PBA的条目;以及
使用所述先前数据块的完整指纹从所述PBA存储中检索所述先前数据块。
10.根据权利要求1所述的方法,其特征在于,通过使用所述头部指纹或所述尾部指纹来识别存储的数据块的步骤包括
在所述尾部SHA表中,识别所述先前数据块的尾部指纹与所述传入数据块的尾部指纹是否相同;
提供SHA表,该SHA表具有将所述先前数据块的完整指纹映射到其中存储所述先前数据块的PBA的条目;以及
使用所述先前数据块的完整指纹以从所述PBA存储位置中检索所述先前数据块。
11.根据权利要求9所述的方法,其特征在于,如果所述先前数据块的完整指纹不在所述SHA表中,则
在所述头部SHA表中创建一个新条目,所述新条目将所述头部指纹映射到所述传入数据块的完整指纹,在LBA表中创建一个新条目,该新LBA条目将逻辑块地址映射到所述传入数据块的完整指纹,将所述传入数据块存储在PBA中,并在所述SHA表中创建一个新条目,所述新的SHA表条目将所述逻辑块地址映射到PBA。
12.根据权利要求10所述的方法,其特征在于,如果所述先前数据块的完整指纹不在所述SHA表中,则
在所述尾部SHA表中创建一个新条目,所述新条目将所述尾部指纹映射到所述传入数据块的完整指纹,在LBA表中创建一个新条目,该新LBA条目将逻辑块地址映射到所述传入数据块的完整指纹,将所述传入数据块存储在PBA中,并在所述SHA表中创建一个新条目,所述新的SHA表条目将所述逻辑块地址映射到PBA。
13.根据权利要求3所述的方法,其特征在于,还包括
通过从PBA p~中读取所述数据突发,从存储中读取所述传入数据块;
从存储中读取所述先前数据块;以及
在处理器数据块上应用所述数据突发以产生所述传入数据块。
14.根据权利要求3所述的方法,其特征在于,还包括
通过删除所述数据突发来删除所述传入数据块,并删除所述参考LBA表中的条目,所述参考LBA条目将所述逻辑块地址映射到所述先前数据块的完整指纹以及映射到PBA p~。
15.一种重复数据删除方法,包括:
接收多个传入数据块进行存储;
将所述多个传入数据块其中之一划分为至少一个头部和一个尾部;
生成所述头部的指纹,所述头部指纹唯一地标识所述传入数据块的头部;
生成所述尾部的指纹,所述尾部指纹唯一地标识所述传入数据块的尾部;
生成所述传入数据块的完整指纹,所述完整指纹唯一地标识所述传入数据块的整体;
在头部SHA(安全哈希算法)表中,将所述头部指纹映射到所述传入数据块的完整指纹;和
在尾部SHA(安全哈希算法)表中,将所述先前数据块的尾部指纹映射到所述传入数据块的完整指纹;以及
仅当所述传入数据块的头部指纹不在所述头部SHA表中并且所述传入数据块的尾部指纹不在所述尾部SHA表中时,才将所述传入数据块写入PBA(物理块地址)进行存储。
16.根据权利要求15所述的方法,其特征在于,如果所述传入数据块的头部指纹在所述头部SHA表中,或者所述传入数据块的尾部指纹在所述尾部SHA表中,
使用所述传入数据块的所述头部指纹或所述尾部指纹来定位所存储的所述先前数据块,其中所述先前数据块和所述传入数据块几乎匹配,除了所述传入数据块包括数据突发,所述数据突发未包括在所述先前数据块中;以及
将所述数据突发存储在PBA(物理块地址)p~存储中,而不是将所述传入数据块写入存储中。
17.根据权利要求16所述的方法,其特征在于,还包括提供参考LBA(逻辑块地址)表,所述参考LBA具有将逻辑块地址映射到所述先前数据块的完整指纹以及映射到存储所述数据突发的PBA p~的条目。
18.根据权利要求16所述的方法,其特征在于,还包括
在所述头部SHA表中创建一个条目,所述头部SHA表中的条目将所述头指纹映射到所述传入数据块的完整指纹;和
在所述尾部SHA表中创建一个条目,所述尾部SHA表中的条目将所述尾部指纹映射到所述传入数据块的完整指纹。
19.一种非暂时性机器可读存储介质,其具有用于执行方法的指令,所述方法使得计算设备执行以下操作:
接收多个传入数据块进行存储;
将所述多个传入数据块其中之一划分为至少一个头部和一个尾部;
生成所述头部的指纹,所述头部指纹唯一地标识所述传入数据块的头部;
生成所述尾部的指纹,所述尾部指纹唯一地标识所述传入数据块的尾部;
提供一头部SHA(安全哈希算法)表,该头部SHA表针对每个数据块,将头部指纹映射到各自的数据块的完整指纹;
提供一尾部SHA(安全哈希算法)表,该尾部SHA表针对每个数据块,将尾部指纹映射到各自的数据块的完整指纹;
确定所述传入数据块的头部指纹是否在所述头部SHA表中,或者所述传入数据块的尾部指纹是否在所述尾部SHA表中,
如果是,则1)使用所述传入数据块的所述头部指纹或所述尾部指纹来识别所存储的先前数据块,其中所述先前数据块和所述传入数据块几乎相同,除了所述传入数据块包括在所述先前数据块中的数据之上的数据突发;
2)确定在所述传入数据块和所述先前数据块之间的所述数据突发;和
3)将所述数据突发写入PBA(物理块地址)p~处的存储中。
20.根据权利要求19所述的非暂时性机器可读存储介质,其特征在于,如果所述传入数据块的头部指纹不在所述头部SHA表中,且所述传入数据块的尾部指纹不在尾部SHA表中,则将所述传入数据块写入可用的PBA p以进行存储,并跳过上述1),2)和3)。
21.根据权利要求19,权利要求1所述的非暂时性机器可读存储介质,其特征在于,还包括一参考LBA(逻辑块地址)表,该参考LBA表具有将逻辑块地址映射到所述先前数据块的完整指纹以及映射到存储所述数据突发的PBA p~的条目。
22.根据权利要求20所述的非暂时性机器可读存储介质,其特征在于,将所述传入数据块写入到可用的PBA(物理块地址)p中进行存储包括,使所述计算设备:
在所述头部SHA表中创建条目,所述头部SHA表中的条目映射所述头部指纹和所述传入数据块的完整指纹;和
在所述尾部SHA表中创建条目,所述尾部SHA表中的条目映射所述尾部指纹和所述传入数据块的完整指纹。
23.根据权利要求19所述的非暂时性机器可读存储介质,其特征在于,还包括使所述计算设备:
产生用于所述传入数据块的完整指纹,所述完整指纹用于唯一地标识所述传入数据块的整体。
24.一种计算设备,包括:包含机器可读存储介质的存储器,所述机器可读存储介质在其上存储有用于执行方法的指令;以及耦合到所述存储器的处理器,所述处理器被配置为执行所述指令以使所述处理器:
接收多个传入数据块进行存储;
将所述多个传入数据块其中之一划分为至少一个头部和一个尾部;
生成所述头部的指纹,所述头部指纹唯一地标识所述传入数据块的头部;
生成所述尾部的指纹,所述尾部指纹唯一地标识所述传入数据块的尾部;
提供一头部SHA(安全哈希算法)表,该头部SHA表针对每个数据块,将头部指纹映射到各自的数据块的完整指纹;
提供一尾部SHA(安全哈希算法)表,该尾部SHA表针对每个数据块,将尾部指纹映射到各自的数据块的完整指纹;
确定所述传入数据块的头部指纹是否在所述头部SHA表中,或者所述传入数据块的尾部指纹是否在所述尾部SHA表中,
如果是,则1)使用所述传入数据块的所述头部指纹或所述尾部指纹来识别所存储的先前数据块,其中所述先前数据块和所述传入数据块几乎相同,除了所述传入数据块包括在所述先前数据块中的数据之上的数据突发;
2)确定在所述传入数据块和所述先前数据块之间的所述数据突发;和
3)将所述数据突发写入PBA(物理块地址)p~处的存储中。
25.根据权利要求24所述的计算设备,其特征在于,如果所述传入数据块的头部指纹不在所述头部SHA表中,且所述传入数据块的尾部指纹不在尾部SHA表中,则将所述传入数据块写入可用的PBA p以进行存储,并跳过上述1),2)和3)。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862681615P | 2018-06-06 | 2018-06-06 | |
US62/681,615 | 2018-06-06 | ||
US16/198,582 US10671306B2 (en) | 2018-06-06 | 2018-11-21 | Chunk-based data deduplication |
US16/198,582 | 2018-11-21 | ||
PCT/US2019/030222 WO2019236216A1 (en) | 2018-06-06 | 2019-05-01 | Chunk-based data deduplication |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112470140A true CN112470140A (zh) | 2021-03-09 |
Family
ID=68763825
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980048951.7A Pending CN112470140A (zh) | 2018-06-06 | 2019-05-01 | 基于块的重复数据删除 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10671306B2 (zh) |
EP (1) | EP3803613A4 (zh) |
JP (1) | JP2021527291A (zh) |
CN (1) | CN112470140A (zh) |
WO (1) | WO2019236216A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113254397A (zh) * | 2021-06-15 | 2021-08-13 | 成都统信软件技术有限公司 | 一种数据检查方法及计算设备 |
CN113495901A (zh) * | 2021-04-20 | 2021-10-12 | 河海大学 | 一种面向可变长数据块的快速检索方法 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11119995B2 (en) | 2019-12-18 | 2021-09-14 | Ndata, Inc. | Systems and methods for sketch computation |
US10938961B1 (en) | 2019-12-18 | 2021-03-02 | Ndata, Inc. | Systems and methods for data deduplication by generating similarity metrics using sketch computation |
US11232074B2 (en) * | 2020-05-19 | 2022-01-25 | EMC IP Holding Company LLC | Systems and methods for searching deduplicated data |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090164696A1 (en) * | 2007-12-21 | 2009-06-25 | Spansion Llc | Physical block addressing of electronic memory devices |
CN101882216A (zh) * | 2009-05-08 | 2010-11-10 | 成都市华为赛门铁克科技有限公司 | 构建数据指纹的方法、装置及电子设备 |
CN103729225A (zh) * | 2014-01-22 | 2014-04-16 | 中国人民解放军国防科学技术大学 | 一种基于内容分块的远程文件实时更新方法 |
US8706695B1 (en) * | 2012-01-26 | 2014-04-22 | Amazon Technologies, Inc. | Reducing head and tail duplication in stored data |
CN103870514A (zh) * | 2012-12-18 | 2014-06-18 | 华为技术有限公司 | 重复数据删除方法和装置 |
CN103959256A (zh) * | 2011-11-28 | 2014-07-30 | 国际商业机器公司 | 基于指纹的数据重复删除 |
CN103970875A (zh) * | 2014-05-15 | 2014-08-06 | 华中科技大学 | 一种并行重复数据删除方法 |
US9367557B1 (en) * | 2013-09-26 | 2016-06-14 | Emc Corporation | System and method for improving data compression |
EP3173952A1 (en) * | 2015-11-30 | 2017-05-31 | NXP USA, Inc. | System and method for removing hash table entries |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4122440A (en) | 1977-03-04 | 1978-10-24 | International Business Machines Corporation | Method and means for arithmetic string coding |
US4652856A (en) | 1986-02-04 | 1987-03-24 | International Business Machines Corporation | Multiplication-free multi-alphabet arithmetic code |
US20110145489A1 (en) * | 2004-04-05 | 2011-06-16 | Super Talent Electronics, Inc. | Hybrid storage device |
US20110179219A1 (en) * | 2004-04-05 | 2011-07-21 | Super Talent Electronics, Inc. | Hybrid storage device |
US8768895B2 (en) | 2007-04-11 | 2014-07-01 | Emc Corporation | Subsegmenting for efficient storage, resemblance determination, and transmission |
US8385192B2 (en) | 2009-08-11 | 2013-02-26 | International Business Machines Corporation | Deduplicated data processing rate control |
US9401967B2 (en) | 2010-06-09 | 2016-07-26 | Brocade Communications Systems, Inc. | Inline wire speed deduplication system |
US9122639B2 (en) | 2011-01-25 | 2015-09-01 | Sepaton, Inc. | Detection and deduplication of backup sets exhibiting poor locality |
US9071584B2 (en) | 2011-09-26 | 2015-06-30 | Robert Lariviere | Multi-tier bandwidth-centric deduplication |
US10142257B2 (en) * | 2013-04-08 | 2018-11-27 | Alcatel Lucent | Dynamic scaling of redundancy elimination middleboxes |
US9632720B2 (en) * | 2013-08-29 | 2017-04-25 | International Business Machines Corporation | Data de-duplication |
JP6319740B2 (ja) | 2014-03-25 | 2018-05-09 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | データ圧縮を高速化する方法、並びに、データ圧縮を高速化するためのコンピュータ、及びそのコンピュータ・プログラム |
US9628111B2 (en) | 2015-05-11 | 2017-04-18 | Via Alliance Semiconductor Co., Ltd. | Hardware data compressor with multiple string match search hash tables each based on different hash size |
US10678434B2 (en) * | 2015-05-12 | 2020-06-09 | Hitachi, Ltd. | Storage system and storage control method for improving a deduplication process |
-
2018
- 2018-11-21 US US16/198,582 patent/US10671306B2/en active Active
-
2019
- 2019-05-01 EP EP19815702.6A patent/EP3803613A4/en active Pending
- 2019-05-01 WO PCT/US2019/030222 patent/WO2019236216A1/en unknown
- 2019-05-01 JP JP2021518424A patent/JP2021527291A/ja active Pending
- 2019-05-01 CN CN201980048951.7A patent/CN112470140A/zh active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090164696A1 (en) * | 2007-12-21 | 2009-06-25 | Spansion Llc | Physical block addressing of electronic memory devices |
CN101882216A (zh) * | 2009-05-08 | 2010-11-10 | 成都市华为赛门铁克科技有限公司 | 构建数据指纹的方法、装置及电子设备 |
CN103959256A (zh) * | 2011-11-28 | 2014-07-30 | 国际商业机器公司 | 基于指纹的数据重复删除 |
US8706695B1 (en) * | 2012-01-26 | 2014-04-22 | Amazon Technologies, Inc. | Reducing head and tail duplication in stored data |
CN103870514A (zh) * | 2012-12-18 | 2014-06-18 | 华为技术有限公司 | 重复数据删除方法和装置 |
US9367557B1 (en) * | 2013-09-26 | 2016-06-14 | Emc Corporation | System and method for improving data compression |
CN103729225A (zh) * | 2014-01-22 | 2014-04-16 | 中国人民解放军国防科学技术大学 | 一种基于内容分块的远程文件实时更新方法 |
CN103970875A (zh) * | 2014-05-15 | 2014-08-06 | 华中科技大学 | 一种并行重复数据删除方法 |
EP3173952A1 (en) * | 2015-11-30 | 2017-05-31 | NXP USA, Inc. | System and method for removing hash table entries |
Non-Patent Citations (1)
Title |
---|
王灿等: "一种基于预分块和滑动窗口的重复数据消除方法", 《控制与决策》, pages 1158 - 1165 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113495901A (zh) * | 2021-04-20 | 2021-10-12 | 河海大学 | 一种面向可变长数据块的快速检索方法 |
CN113495901B (zh) * | 2021-04-20 | 2023-10-13 | 河海大学 | 一种面向可变长数据块的快速检索方法 |
CN113254397A (zh) * | 2021-06-15 | 2021-08-13 | 成都统信软件技术有限公司 | 一种数据检查方法及计算设备 |
CN113254397B (zh) * | 2021-06-15 | 2021-10-15 | 成都统信软件技术有限公司 | 一种数据检查方法及计算设备 |
Also Published As
Publication number | Publication date |
---|---|
JP2021527291A (ja) | 2021-10-11 |
EP3803613A1 (en) | 2021-04-14 |
US20190377509A1 (en) | 2019-12-12 |
US10671306B2 (en) | 2020-06-02 |
EP3803613A4 (en) | 2022-03-16 |
WO2019236216A1 (en) | 2019-12-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10671306B2 (en) | Chunk-based data deduplication | |
US11169972B2 (en) | Handling data extent size asymmetry during logical replication in a storage system | |
USRE49148E1 (en) | Reclaiming space occupied by duplicated data in a storage system | |
US9880746B1 (en) | Method to increase random I/O performance with low memory overheads | |
US8954710B2 (en) | Variable length encoding in a storage system | |
US8983952B1 (en) | System and method for partitioning backup data streams in a deduplication based storage system | |
US9454476B2 (en) | Logical sector mapping in a flash storage array | |
US10303797B1 (en) | Clustering files in deduplication systems | |
US9798728B2 (en) | System performing data deduplication using a dense tree data structure | |
EP3588260B1 (en) | Mapping in a storage system | |
US20160162207A1 (en) | System and method for data deduplication utilizing extent id database | |
US20110161291A1 (en) | Wan-optimized local and cloud spanning deduplicated storage system | |
US10372687B1 (en) | Speeding de-duplication using a temporal digest cache | |
US20160196215A1 (en) | Storage apparatus, storage system, and data read method | |
US10365828B1 (en) | Techniques for efficiently organizing storage of compressed extents | |
US20230236725A1 (en) | Method to opportunistically reduce the number of SSD IOs, and reduce the encryption payload, in an SSD based cache in a deduplication file system | |
JP2001056775A (ja) | 計算機システム及びプログラム記録媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |