CN114415955B - 基于指纹的块粒度数据去重系统和方法 - Google Patents
基于指纹的块粒度数据去重系统和方法 Download PDFInfo
- Publication number
- CN114415955B CN114415955B CN202210009039.4A CN202210009039A CN114415955B CN 114415955 B CN114415955 B CN 114415955B CN 202210009039 A CN202210009039 A CN 202210009039A CN 114415955 B CN114415955 B CN 114415955B
- Authority
- CN
- China
- Prior art keywords
- block
- data
- delta
- deduplication
- fingerprint
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 32
- 230000000903 blocking effect Effects 0.000 claims abstract description 25
- 238000012217 deletion Methods 0.000 claims abstract description 4
- 230000037430 deletion Effects 0.000 claims abstract description 4
- 238000012937 correction Methods 0.000 claims abstract description 3
- 238000004364 calculation method Methods 0.000 claims description 20
- 230000008569 process Effects 0.000 claims description 10
- 238000005516 engineering process Methods 0.000 claims description 5
- 238000011084 recovery Methods 0.000 claims description 3
- 230000002441 reversible effect Effects 0.000 claims description 2
- 238000013461 design Methods 0.000 abstract description 7
- 230000000694 effects Effects 0.000 abstract description 5
- 238000000638 solvent extraction Methods 0.000 description 7
- 230000008859 change Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 238000013403 standard screening design Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- 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/061—Improving I/O performance
-
- 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/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- 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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种基于指纹的块粒度数据去重系统和方法,包括:对原始输入数据进行初步分块;对分块得到的块、块的头部与尾部,分别计算块的指纹、头部指纹和尾部指纹,并保存在对应数据结构中;在读取并输入物理块地址时,向下层存储系统请求数据,并在读取到数据后返回数据;在写入并输入数据时,向下层存储系统输出数据,并在写入完成后返回由存储系统分配的物理块地址;创建delta数据,并根据delta数据恢复原始数据;对系统中的去重表、头去重表、尾去重表和delta表进行条目的增删改查操作。本发明重点关注内容相似的数据去重效果,并通过在I/O模块和索引模块的设计策略保持较高的I/O吞吐量和较低的系统资源开销。
Description
技术领域
本发明涉及数据去重以及存储技术领域,具体地,涉及一种基于指纹的块粒度数据去重系统和方法。
背景技术
在数据存储任务中,需要处理的数据量越来越大,使得存储系统的空间压力增大、I/O吞吐量激增。此外,扩容存储介质均增加金钱成本,高性能的存储介质的寿命较短,且大量数据写入导致介质寿命进一步缩短。为了解决上述问题,往常的做法通常是对存储系统进行数据去重。具体地说,对输入数据分块处理,计算每个块的指纹,并将待写入的指纹与已写入的块的指纹进行比对,倘若相同,说明两个块的数据重复,则不再写入块,并将它的物理块地址指向已写入的重复块。以往的工作一般设计特定的分块方法,使得尽可能多的数据块能被识别为重复,包括固定长度分块和内容定义分块两种方法。由于避免重复数据写入存储介质,节约了存储空间,延长了存储介质的寿命并控制了I/O吞吐量。
专利文献CN109445702A(申请号:CN201811259880.9)公开了一种块级数据去重存储系统,包括数据读写模块、指纹查询模块和容器读写模块三个模块,所述块级数据去重存储系统用来设置在存储节点上,接收客户机发送过来的数据,每一个存储节点都可以接收客户机发送过来的数据并将数据备份到容器存储池中,或从容器存储池中恢复指定的数据;所述容器存储池设置在磁盘设备上,磁盘设备上还安装有数据块子索引和容器索引;所述块级数据去重存储系统采用分块压缩技术,消除存储节点集群中的重复数据块,并把内容相似的新数据块聚类到相同的存储节点。
以往的基于指纹的块粒度的去重方法有一个限制:仅当待写入的块的数据与已写入的块的数据完全相同时,才可去重待写入的块。然而,由于数据集的特征,某些待写入的块中,绝大部分数据都与一些已写入的块的数据重复,仅一小部分不同。以往的方法在计算这些小部分数据变化的块的指纹后,认为其不与任何已写入的块的指纹相同,导致这些块不能被去重。为了尽可能避免这种块出现,以往的方法在分块时配置了较小的块长度,如2KB或4KB。然而这导致每次写入数据时产生的块太多,使得元数据占用更多内存,且I/O吞吐量激增,增大存储系统开销。总之,以往的数据去重方法面临两个问题:(1)一些部分数据变动的块不能被去重(2)块长度较小,增大存储系统开销。本发明注意到上述问题,对部分数据变动的块,通过计算指纹的策略找到一个合适的已写入的块,进行比对后,仅写入它相对已写入的块变化的数据,使得最终写入的数据量减少,实现了一个完整的基于指纹的块粒度的数据去重系统。
在基于指纹的去重系统中,为了对每个待写入的块的指纹进行匹配查找,使用去重表记录所有已写入的块的指纹。此外,去重表还记录了块的物理块地址,即引用存储介质的地址。去重表中,每个条目都是一个键值对,键为块的指纹,值为物理块地址和引用计数(记录重复的次数)。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种基于指纹的块粒度数据去重系统和方法。
根据本发明提供的基于指纹的块粒度数据去重系统,包括:
分块模块:通过固定长度分块技术FSC或内容可变长度分块技术CDC,对原始输入数据进行初步分块;
指纹计算模块:对分块得到的块、块的头部与尾部,分别计算块的指纹、头部指纹和尾部指纹,并保存在对应数据结构中;
I/O模块:在读取并输入物理块地址时,向下层存储系统请求数据,并在读取到数据后返回数据;在写入并输入数据时,向下层存储系统输出数据,并在写入完成后返回由存储系统分配的物理块地址;
delta模块:创建delta数据,并根据delta数据恢复原始数据;
索引模块:对系统中的去重表、头去重表、尾去重表和delta表进行条目的增删改查操作。
优选的,所述分块模块包括:分块后块的长度为16KB,对每个得到的数据块,把起始段预设长度的数据作为头部,末尾段预设长度的数据作为尾部;
头部长度和尾部长度相同,为固定长度,为块长度的1/8。
优选的,所述指纹计算模块包括:
指纹计算采用强校验和算法,包括SHA-1和SHA-2;
将计算得到的三个指纹均保存在对应的表示块的数据结构中,并将数据结构作为元数据保存在存储系统中。
优选的,所述I/O模块包括:
标记块为可回收的空闲块后,通知下层存储系统回收该块;
随机检查任意块是否已完成写入并返回物理块地址,在写入头或尾去重条目匹配的块时,将先判断引用块是否已经完成写入到存储介质,若未完成,则跳过后续去重流程,直接写入块。
优选的,所述delta模块包括:
delta数据的定义为三元组,delta=(data,start,end),其中,data为待写入块相比引用块的变化部分数据;start为变化部分数据在引用块的起始位置;end为变化部分数据在引用块的结束位置,end位置本身不包含在delta数据中;
创建delta数据,首先输入引用块和待写入的块的数据;随后从两个块的起始位置开始逐个字节比较,直到遇到第一个不同的字节停止,记录当前位置为start;接着,从两个块的结束位置开始倒序逐个字节比较,直到遇到第一个不同的字节停止,记录当前位置为end;
根据delta恢复原始数据,首先输入delta数据和引用块的数据;随后根据delta中start和end找到对应的数据改写位置;最后用delta中data改写引用块的数据,得到原始的数据。
优选的,所述索引模块包括:
在系统中的去重表、头去重表、尾去重表和delta表的条目为键值对,寻找匹配条目时,判断指纹是否相同;
通过B树或AVL树查找数据结构,索引的项为条目的键;
在写入时,若找到一个引用块,将得到匹配的头或尾去重条目的引用计数,并判断其值是否超过预设阈值,若超过,则将把此块当作全新的块,跳过该待写入块的去重,直接让I/O模块写入,并创建新的去重条目与头和尾去重条目。
根据本发明提供的基于指纹的块粒度数据去重方法,执行:
步骤1:写入流程,首先通过分块模块对输入数据进行固定长度分块或根据内容的变化长度分块;接着对于每个块,通过指纹计算模块计算块的指纹、头指纹和尾指纹;随后通过索引模块根据指纹、头指纹和尾指纹分别在去重表、delta表、头去重表和尾去重表查找匹配条目;
步骤2:读取流程,通过索引模块根据待读取的块的指纹,在delta表中查找条目;
步骤3:删除流程,通过索引模块根据待删除的块的指纹,在去重表和delta表中查找去重条目和delta条目。
优选的,所述步骤1包括:
进行头去重条目或尾去重条目匹配,将符合预设条件的已写入的块作为引用块,通过I/O模块根据条目中保存的物理块地址读取引用块,通过delta模块根据引用块的数据和待写入的块的数据,生成delta数据;然后通过I/O模块写入该delta数据,返回写入的物理块地址;再通过索引模块向delta表插入新的delta条目,键为待写入的块的指纹,值为返回的物理块地址、引用块的物理块地址和初始化为1的引用计数;最终通过索引模块更新头或尾去重表和去重表中引用块的条目,将引用计数都增加1;
进行去重条目或delta条目匹配,若待写入的块和已写入的块完全相同,则通过索引模块将条目中保存的该块的物理块地址赋值给待写入的块,并增加条目的引用计数1;
若没有匹配的条目,则通过I/O模块写入该块的数据,返回物理块地址,随后通过索引模块向去重表插入新的条目,键为待写入块的指纹,值为返回的物理块地址和初始化为1的引用计数,最终通过索引模块向头去重表和尾去重表分别插入新的条目,键分别为待写入块的头指纹和尾指纹,值为返回的物理块地址和初始化为1的引用计数。
优选的,所述步骤2包括:
对于有匹配的delta条目,首先通过I/O模块根据条目中delta数据和引用块的物理块地址依次读取两个数据,随后通过delta模块根据两个数据恢复原始的数据;
对于没有匹配的delta条目;通过I/O模块根据待读取的物理块地址读取数据。
优选的,所述步骤3包括:
对于有匹配的去重条目,通过索引模块减少该去重条目的引用计数1;若引用计数归0,则通过I/O模块标记该块为可回收的空闲块;
对于有匹配的delta条目,通过索引模块减少delta条目中引用块的去重条目的引用计数1,并减少该delta条目的引用计数1;若任何一个引用计数归0,则通过I/O模块标记该块为可回收的空闲块。
与现有技术相比,本发明具有如下的有益效果:
本发明重点关注内容相似的数据去重效果,并通过在I/O模块和索引模块的设计策略保持较高的I/O吞吐量和较低的系统资源开销。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为基于指纹的块粒度数据去重系统架构图;
图2为数据分块示意图;
图3为delta示例示意图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
实施例:
本发明基于指纹块粒度数据去重,整个系统的架构图如图1所示。针对写入、读取和删除,系统运行不同的流程,下面分别介绍。
1、写入流程。首先,分块模块对输入数据进行固定长度分块(FSC)或根据内容的变化长度分块;接着,对于每个块,指纹计算模块计算块的指纹、头指纹和尾指纹;随后索引模块根据指纹、头指纹和尾指纹分别在去重表、delta表、头去重表和尾去重表查找匹配条目;后续分为三种可能情况:
(1)头去重条目或尾去重条目匹配,即找到了一个合适的已写入的块,本发明称其为引用块;则I/O模块根据条目中保存的物理块地址读取引用块;随后delta模块根据引用块的数据和待写入的块的数据,生成delta数据;接着I/O模块写入该delta数据,返回写入的物理块地址;然后索引模块向delta表插入新的delta条目,键为待写入的块的指纹(先前已计算得到),值为返回的物理块地址、引用块的物理块地址和初始化为1的引用计数;最终索引模块更新头或尾去重表和去重表中引用块的条目,将引用计数都增加1。
(2)去重条目或delta条目匹配,即待写入的块和某个已写入的块完全相同;则索引模块将条目中保存的该块的物理块地址赋值给待写入的块,并增加条目的引用计数1。
(3)没有匹配的条目;则I/O模块写入该块的数据,返回物理块地址;随后索引模块向去重表插入新的条目,键为待写入块的指纹(先前已计算得到),值为返回的物理块地址和初始化为1的引用计数;最终索引模块向头去重表和尾去重表分别插入新的条目,键分别为待写入块的头指纹和尾指纹先前已计算得到),值为返回的物理块地址和初始化为1的引用计数。
2、读取流程。索引模块根据待读取的块的指纹(之前写入时已计算得到),在delta表中查找条目,后续有两种情况:
(1)有匹配的delta条目;首先I/O模块根据条目中delta数据和引用块的物理块地址依次读取两个数据;随后delta模块根据两个数据恢复原始的数据。
(2)没有匹配的delta条目;则I/O模块根据待读取的物理块地址读取数据。
3、删除流程。索引模块根据待删除的块的指纹(之前写入时已计算得到),在去重表和delta表中查找去重条目和delta条目,后续分为两种情况:
(1)有匹配的去重条目;则索引模块减少该去重条目的引用计数1;若引用计数归0,则I/O模块标记该块为可回收的空闲块。
(2)有匹配的delta条目;则索引模块减少delta条目中引用块的去重条目的引用计数1,并减少该delta条目的引用计数1;若任何一个引用计数归0,则I/O模块标记该块为可回收的空闲块。
本发明包括五个模块:分块模块、指纹计算模块、I/O模块、delta模块和索引模块。
基于指纹的块粒度数据去重系统中,指纹计算模块采用校验和算法,由CPU计算得到;I/O模块与存储介质交互,包括HDD、SSD和RAID阵列等。系统任务是在写入时进行数据去重,最终将去重后的数据写入存储介质,并妥善处理这些数据的读取和删除。系统的输入是由上层应用输入的写入数据和由上层应用发起的写入、读取或删除请求;系统的输出是向上层应用返回的读取数据和向下层存储介质发起的写入、读取或删除请求。
分块策略是影响系统去重效果的重要因素。常用的分块方法包括固定长度分块(FSC)和基于内容的变化长度分块(CDC)。FSC指由系统配置固定的块长度,如2KB、4KB或8KB,分块时按照该长度对输入数据分块;CDC指系统读取一段数据,若内容满足某种特征,则到达一分割点,得到所有分割点后即完成数据分块,块长度分布在一定范围内,如2KB-8KB。本发明设计了块的头部和尾部,其在分块模块中生成,如图2所示,具体的分块模块的策略如下:
1、对原始输入数据采用FSC或CDC,进而完成初步的分块。这是因为本发明同时支持FSC或CDC分块,选用任意一种方案均可。
2、不论采用上述何种分块方案,系统将控制块长度分布在16KB左右。这是因为配置较大的块长度使得元数据占用空间较小,且I/O吞吐量较高。此外,由于delta的设计,本发明与以往的方案不同,并不因块长度的增大导致去重效果严重下降。
3、对每个得到的数据块,把起始一段长度的数据作为头部,末尾一段长度的数据作为尾部,其长度由系统配置为固定长度,如块长度的1/8。这是因为若两个块的头部或尾部相同,则这两个块很有可能极为相似,甚至完全等同。
指纹计算模块的策略如下:
1、对由FSC或CDC得到的块和其头部与尾部,分别计算三个指纹:块的指纹、头部指纹和尾部指纹。具体的计算方法为强校验和算法,如SHA-1和SHA-2等。
2、计算得到的三个指纹均保存在对应的表示块的数据结构中,该结构在存储系统中常作为元数据。指纹保存在块中的原因是便于写入、读取和删除时直接使用这些指纹。
I/O模块的策略如下:
1、读取并输入物理块地址时,I/O模块向下层存储系统请求数据,并在读取到数据后返回数据。
2、写入并输入数据时,I/O模块向下层存储系统输出数据,并在写入完成后返回由存储系统分配的物理块地址。
3、I/O模块标记块为可回收的空闲块后,通知下层存储系统可回收该块,具体回收时机由存储系统决定。
4、I/O模块支持随时检查某个块是否已完成写入并返回物理块地址。在写入头或尾去重条目匹配的块时,该模块将先判断引用块是否已经完成写入到存储介质。倘若尚未完成,I/O模块将令系统跳过后续去重流程,直接写入块。该设计的原因是防止等待引用块写入导致过长的延迟。
delta模块的策略如下:
1、delta的定义为三元组,即delta=(data,start,end),其中data为待写入块相比引用块的变化部分数据,start为变化部分数据在引用块的起始位置,end为变化部分数据在引用块的结束位置,特别注意end位置本身不包含在delta中。
2、创建delta数据。首先输入引用块和待写入的块的数据;随后从两个块的起始位置开始逐个字节比较,直到遇到第一个不同的字节停止,记录当前位置为start;接着,从两个块的结束位置开始倒序逐个字节比较,直到遇到第一个不同的字节停止,记录当前位置为end。为便于理解,图3展示了三个由替换、插入和删除生成的delta。
3、根据delta恢复原始数据。首先输入delta数据和引用块的数据;随后根据delta中start和end找到对应的数据改写位置;最后用delta中data改写引用块的数据,得到原始的数据。
索引模块的策略如下:
1、索引模块负责对系统中的去重表、头去重表、尾去重表和delta表进行条目的增删改查操作。
2、系统中的去重表、头去重表、尾去重表和delta表的条目为键值对,寻找匹配条目时,判断键(一般为指纹)是否相同。
3、系统中的去重表、头去重表、尾去重表和delta表具体由查找数据结构实现,如B树或AVL树,索引的项即为条目的键。
4、系统中的去重表、头去重表、尾去重表和delta表一般保存在内存中以加快访问速度,可将其整体持久化到硬盘等存储介质中。
5、在写入时,若找到一个引用块,索引模块将得到匹配的头或尾去重条目的引用计数,并判断其值是否超过系统设定的一个阈值。倘若超过,系统将把此块当作全新的块,跳过该待写入块的去重,直接让I/O模块写入,并创建新的去重条目与头和尾去重条目(即上述写入流程的第3种情况)。这种设计的原因是防止过多的块共享同一个引用块,使得系统的I/O吞吐量下降并增大系统资源(内存)的开销。
本发明基于指纹匹配相同数据,在块粒度上实现了包含数据去重逻辑的写入、读取和删除流程,进而实现了一个完整的基于指纹的块粒度数据去重系统。具体地说,本发明包含分块模块、指纹计算模块、I/O模块、delta模块和索引模块。首先,分块模块和指纹计算模块的作用是得到块的头部尾部和其指纹,以便本去重系统实现内容相似块的查找操作;其次,I/O模块在本系统负责输出去重后的数据,并向底层存储系统发起写入、读取和删除请求;随后,delta模块负责产生delta数据,即表示数据变化的数据结构,以实现本系统数据去重的任务;最后,索引模块负责系统内去重相关键值对条目的增删改查。本发明重点关注内容相似的数据去重效果,并通过在I/O模块和索引模块的设计策略保持较高的I/O吞吐量和较低的系统资源(内存)开销。
本发明中,包含不同类型的输入数据的写入、读取和删除流程。其中,待写入的块和某个已写入的块的内容相似时,逻辑最为复杂。下面将通过举例来详细说明本发明处理包含上述情况的过程:
设本系统配置固定长度分块(FSC)且块长度为16KB,引用块被共享的阈值为3,头部和尾部的长度为块长度的1/8(2KB),待写入的数据为:
依次有如下步骤:
1、系统输入上述待写入的32KB数据到分块模块,运行FSC后得到两个块,即:
系统进一步分块得到头部和尾部,并计算它们各自的指纹(f1,f2)、头指纹(fh1,fh2)和尾指纹(ft1,ft2)。
2、系统写入第一个块b1。由于之前没有写入任何数据,索引模块找不到任何条目;随后b1被I/O模块直接写入存储介质并得到物理块地址p1;索引模块创建了新的去重条目d1=(f1,p1,1),头去重条目hd1=(fh1,p1,1)和尾去重条目td1=(ft1,p1,1),并将这些条目分别插入对应的表。
3、系统写入第二个块b2。由于ft1=ft2,索引模块在尾去重表找到匹配的条目td1=(ft1,p1,1),且它的引用计数为1,小于设定的阈值2;根据条目td1,I/O模块从存储介质读取位于p1的引用块b1的数据;delta模块根据b1和b2的数据,构造delta数据delta1=("bb",0,2);I/O模块替换待写入的b2的数据为delta1,写入delta1到存储介质后返回物理块地址p2;索引模块向delta表插入新的delta条目δ1=(f2,p2,p1,1);最终索引模块更新引用块b1的尾去重条目td1=(ft1,p1,2)。
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的系统、装置及其各个模块可以被认为是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部件内的结构。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。
Claims (9)
1.一种基于指纹的块粒度数据去重系统,其特征在于,包括:
分块模块:通过固定长度分块技术FSC或内容可变长度分块技术CDC,对原始输入数据进行初步分块;
指纹计算模块:对分块得到的块、块的头部与尾部,分别计算块的指纹、头部指纹和尾部指纹,并保存在对应数据结构中;
I/O模块:在读取并输入物理块地址时,向下层存储系统请求数据,并在读取到数据后返回数据;在写入并输入数据时,向下层存储系统输出数据,并在写入完成后返回由存储系统分配的物理块地址;
delta模块:创建delta数据,并根据delta数据恢复原始数据;
索引模块:对系统中的去重表、头去重表、尾去重表和delta表进行条目的增删改查操作;
所述delta模块包括:
delta数据的定义为三元组,delta=(data,start,end),其中,data为待写入块相比引用块的变化部分数据;start为变化部分数据在引用块的起始位置;end为变化部分数据在引用块的结束位置,end位置本身不包含在delta数据中;
创建delta数据,首先输入引用块和待写入的块的数据;随后从两个块的起始位置开始逐个字节比较,直到遇到第一个不同的字节停止,记录当前位置为start;接着,从两个块的结束位置开始倒序逐个字节比较,直到遇到第一个不同的字节停止,记录当前位置为end;
根据delta恢复原始数据,首先输入delta数据和引用块的数据;随后根据delta中start和end找到对应的数据改写位置;最后用delta中data改写引用块的数据,得到原始的数据。
2.根据权利要求1所述的基于指纹的块粒度数据去重系统,其特征在于,所述分块模块包括:分块后块的长度为16KB,对每个得到的数据块,把起始段预设长度的数据作为头部,末尾段预设长度的数据作为尾部;
头部长度和尾部长度相同,为固定长度,为块长度的1/8。
3.根据权利要求1所述的基于指纹的块粒度数据去重系统,其特征在于,所述指纹计算模块包括:
指纹计算采用强校验和算法,包括SHA-1和SHA-2;
将计算得到的三个指纹均保存在对应的表示块的数据结构中,并将数据结构作为元数据保存在存储系统中。
4.根据权利要求1所述的基于指纹的块粒度数据去重系统,其特征在于,所述I/O模块包括:
标记块为可回收的空闲块后,通知下层存储系统回收该块;
随机检查任意块是否已完成写入并返回物理块地址,在写入头或尾去重条目匹配的块时,将先判断引用块是否已经完成写入到存储介质,若未完成,则跳过后续去重流程,直接写入块。
5.根据权利要求1所述的基于指纹的块粒度数据去重系统,其特征在于,所述索引模块包括:
在系统中的去重表、头去重表、尾去重表和delta表的条目为键值对,寻找匹配条目时,判断指纹是否相同;
通过B树或AVL树查找数据结构,索引的项为条目的键;
在写入时,若找到一个引用块,将得到匹配的头或尾去重条目的引用计数,并判断其值是否超过预设阈值,若超过,则将把此块当作全新的块,跳过该待写入块的去重,直接让I/O模块写入,并创建新的去重条目与头和尾去重条目。
6.一种基于指纹的块粒度数据去重方法,其特征在于,采用权利要求1-5中任一项所述的基于指纹的块粒度数据去重系统,执行:
步骤1:写入流程,首先通过分块模块对输入数据进行固定长度分块或根据内容的变化长度分块;接着对于每个块,通过指纹计算模块计算块的指纹、头指纹和尾指纹;随后通过索引模块根据指纹、头指纹和尾指纹分别在去重表、delta表、头去重表和尾去重表查找匹配条目;
步骤2:读取流程,通过索引模块根据待读取的块的指纹,在delta表中查找条目;
步骤3:删除流程,通过索引模块根据待删除的块的指纹,在去重表和delta表中查找去重条目和delta条目。
7.根据权利要求6所述的基于指纹的块粒度数据去重方法,其特征在于,所述步骤1包括:
进行头去重条目或尾去重条目匹配,将符合预设条件的已写入的块作为引用块,通过I/O模块根据条目中保存的物理块地址读取引用块,通过delta模块根据引用块的数据和待写入的块的数据,生成delta数据;然后通过I/O模块写入该delta数据,返回写入的物理块地址;再通过索引模块向delta表插入新的delta条目,键为待写入的块的指纹,值为返回的物理块地址、引用块的物理块地址和初始化为1的引用计数;最终通过索引模块更新头或尾去重表和去重表中引用块的条目,将引用计数都增加1;
进行去重条目或delta条目匹配,若待写入的块和已写入的块完全相同,则通过索引模块将条目中保存的该块的物理块地址赋值给待写入的块,并增加条目的引用计数1;
若没有匹配的条目,则通过I/O模块写入该块的数据,返回物理块地址,随后通过索引模块向去重表插入新的条目,键为待写入块的指纹,值为返回的物理块地址和初始化为1的引用计数,最终通过索引模块向头去重表和尾去重表分别插入新的条目,键分别为待写入块的头指纹和尾指纹,值为返回的物理块地址和初始化为1的引用计数。
8.根据权利要求6所述的基于指纹的块粒度数据去重方法,其特征在于,所述步骤2包括:
对于有匹配的delta条目,首先通过I/O模块根据条目中delta数据和引用块的物理块地址依次读取两个数据,随后通过delta模块根据两个数据恢复原始的数据;
对于没有匹配的delta条目;通过I/O模块根据待读取的物理块地址读取数据。
9.根据权利要求6所述的基于指纹的块粒度数据去重方法,其特征在于,所述步骤3包括:
对于有匹配的去重条目,通过索引模块减少该去重条目的引用计数1;若引用计数归0,则通过I/O模块标记该块为可回收的空闲块;
对于有匹配的delta条目,通过索引模块减少delta条目中引用块的去重条目的引用计数1,并减少该delta条目的引用计数1;若任何一个引用计数归0,则通过I/O模块标记该块为可回收的空闲块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210009039.4A CN114415955B (zh) | 2022-01-05 | 2022-01-05 | 基于指纹的块粒度数据去重系统和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210009039.4A CN114415955B (zh) | 2022-01-05 | 2022-01-05 | 基于指纹的块粒度数据去重系统和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114415955A CN114415955A (zh) | 2022-04-29 |
CN114415955B true CN114415955B (zh) | 2024-04-09 |
Family
ID=81271204
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210009039.4A Active CN114415955B (zh) | 2022-01-05 | 2022-01-05 | 基于指纹的块粒度数据去重系统和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114415955B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102722583A (zh) * | 2012-06-07 | 2012-10-10 | 无锡众志和达存储技术有限公司 | 重复数据删除硬件加速装置和方法 |
CN103324552A (zh) * | 2013-06-06 | 2013-09-25 | 西安交通大学 | 两阶段单实例去重数据备份方法 |
CN103729225A (zh) * | 2014-01-22 | 2014-04-16 | 中国人民解放军国防科学技术大学 | 一种基于内容分块的远程文件实时更新方法 |
CN108780447A (zh) * | 2016-03-02 | 2018-11-09 | 华为技术有限公司 | 差异数据备份的方法和设备 |
CN109358987A (zh) * | 2018-10-26 | 2019-02-19 | 黄淮学院 | 一种基于两级数据去重的备份集群 |
CN109445702A (zh) * | 2018-10-26 | 2019-03-08 | 黄淮学院 | 一种块级数据去重存储系统 |
CN111796969A (zh) * | 2020-05-29 | 2020-10-20 | 湖北工业大学 | 一种数据差量压缩检测方法、计算机设备和存储介质 |
CN113296693A (zh) * | 2020-10-30 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 数据存储方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8527482B2 (en) * | 2008-06-06 | 2013-09-03 | Chrysalis Storage, Llc | Method for reducing redundancy between two or more datasets |
US20170038978A1 (en) * | 2015-08-05 | 2017-02-09 | HGST Netherlands B.V. | Delta Compression Engine for Similarity Based Data Deduplication |
-
2022
- 2022-01-05 CN CN202210009039.4A patent/CN114415955B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102722583A (zh) * | 2012-06-07 | 2012-10-10 | 无锡众志和达存储技术有限公司 | 重复数据删除硬件加速装置和方法 |
CN103324552A (zh) * | 2013-06-06 | 2013-09-25 | 西安交通大学 | 两阶段单实例去重数据备份方法 |
CN103729225A (zh) * | 2014-01-22 | 2014-04-16 | 中国人民解放军国防科学技术大学 | 一种基于内容分块的远程文件实时更新方法 |
CN108780447A (zh) * | 2016-03-02 | 2018-11-09 | 华为技术有限公司 | 差异数据备份的方法和设备 |
CN109358987A (zh) * | 2018-10-26 | 2019-02-19 | 黄淮学院 | 一种基于两级数据去重的备份集群 |
CN109445702A (zh) * | 2018-10-26 | 2019-03-08 | 黄淮学院 | 一种块级数据去重存储系统 |
CN111796969A (zh) * | 2020-05-29 | 2020-10-20 | 湖北工业大学 | 一种数据差量压缩检测方法、计算机设备和存储介质 |
CN113296693A (zh) * | 2020-10-30 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 数据存储方法及装置 |
Non-Patent Citations (2)
Title |
---|
一种批处理块级数据去重方法;杨天明;吴海涛;;计算机应用与软件;20160515(05);全文 * |
基于重复数据删除技术的存储系统分析;朱江;冀鸣;杨志成;张嘉贤;曹雄;;信息系统工程;20170420(04);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN114415955A (zh) | 2022-04-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9280487B2 (en) | Methods and apparatus for data processing using data compression, linked lists and de-duplication techniques | |
US9430164B1 (en) | Memory efficient sanitization of a deduplicated storage system | |
US9317218B1 (en) | Memory efficient sanitization of a deduplicated storage system using a perfect hash function | |
US9727573B1 (en) | Out-of core similarity matching | |
US9043334B2 (en) | Method and system for accessing files on a storage system | |
US9984090B1 (en) | Method and system for compressing file system namespace of a storage system | |
US10073853B2 (en) | Adaptive similarity search resolution in a data deduplication system | |
JP6320432B2 (ja) | データ重複排除における、類似性探索に基づくダイジェスト検索 | |
Zou et al. | The dilemma between deduplication and locality: Can both be achieved? | |
US20120136842A1 (en) | Partitioning method of data blocks | |
CN113535670B (zh) | 一种虚拟化资源镜像存储系统及其实现方法 | |
US9405761B1 (en) | Technique to determine data integrity for physical garbage collection with limited memory | |
US10229127B1 (en) | Method and system for locality based cache flushing for file system namespace in a deduplicating storage system | |
US9268832B1 (en) | Sorting a data set by using a limited amount of memory in a processing system | |
KR20150122533A (ko) | 세컨더리 인덱스 생성 방법 및 세컨더리 인덱스 저장 장치 | |
KR101525453B1 (ko) | 데이터 접근빈도를 이용한 raid 시스템의 데이터 복제 방법 | |
CN111124258B (zh) | 全闪存阵列的数据存储方法、装置、设备及可读存储介质 | |
WO2022037015A1 (zh) | 一种基于持久性内存的列式存储方法、装置及设备 | |
Lee et al. | External mergesort for flash-based solid state drives | |
US10133502B2 (en) | Compatibility and inclusion of similarity element resolutions | |
CN112416879B (zh) | 一种基于ntfs文件系统的块级数据去重方法 | |
CN104484402B (zh) | 一种删除重复数据的方法及装置 | |
US8156126B2 (en) | Method for the allocation of data on physical media by a file system that eliminates duplicate data | |
CN114415955B (zh) | 基于指纹的块粒度数据去重系统和方法 | |
US10795596B1 (en) | Delayed deduplication using precalculated hashes |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |