提高数据去重系统可扩展性的容错编码方法、装置及系统转让专利
申请号 : CN202010567095.0
文献号 : CN111831223B
文献日 : 2021-06-11
发明人 : 胡燏翀 , 冯丹 , 周嘉伟
申请人 : 华中科技大学
摘要 :
权利要求 :
1.一种提高数据去重系统可扩展性的容错编码方法,所述数据去重系统中,每个容器由k个数据块组成,并且每个容器中的k个数据块按照RS(k,m)编码方式编码后产生m个校验块;每个容器中的k个数据块及编码产生的m个校验块构成一个条带,且分别存储在不同的k+m个节点上;其特征在于,所述提高数据去重系统可扩展性的容错编码方法包括:在所述数据去重系统中新增Δk个节点时,将每k+Δk个具有局部性关联的容器划分为一个关联容器组,并将编码方式从RS(k,m)扩展为RS(k+Δk,m);
对于每一个关联容器组G,选取其中的Δk个容器作为待迁移容器,将待迁移容器中的共Δk×k个数据块均匀地迁移到Δk个新增节点中;对于所述关联容器组G中每一个未迁移的容器C,从每一个新增节点中选取一个数据块与所述容器C中的数据块组合,得到k+Δk个数据块,按照扩展之后的编码方式计算组合得到的k+Δk个数据块对应的校验块PC1′~PCm′,并将校验块PC1′~PCm′存储到节点中,由组合得到的k+Δk个数据块及校验块PC1′~PCm′构成一个新的条带;从节点中删除所述关联容器组G中各容器的旧校验块;
其中,k、Δk和m均为正整数;RS(k,m)和RS(k+Δk,m)均为纠删码编码方式,RS(k,m)对k个数据块编码产生m个校验块,RS(k+Δk,m)对k+Δk个数据块编码产生m个校验块。
2.如权利要求1所述的提高数据去重系统可扩展性的容错编码方法,其特征在于,对于所述关联容器组G,选取待迁移容器的方式为:按照碎片化程度从高到低的顺序对所述关联容器组G中的容器进行排序;
将排序结果中碎片化程度最高的前Δk个容器作为待迁移容器。
3.如权利要求2所述的提高数据去重系统可扩展性的容错编码方法,其特征在于,容器中数据块所关联的文件数量越多,该容器的碎片化程度越高。
4.如权利要求1所述的提高数据去重系统可扩展性的容错编码方法,其特征在于,划分关联容器组的方式为:
对于每一个容器,获得其中各数据块所关联的文件id,并将其中占比最高的文件id作为该容器的关联性id;
将关联性id相同的容器作为具有局部性关联的容器;
将每k+Δk个具有局部性关联的容器划分为一个关联容器组。
5.如权利要求1所述的提高数据去重系统可扩展性的容错编码方法,其特征在于,按照扩展之后的编码方式计算组合得到的k+Δk个数据块对应的校验块PC1′~PCm′,包括:分别获得编码方式在扩展前、后对应的编码矩阵,通过矩阵变换得到校验块PC1′~PCm′与容器C的旧校验块PC1~PCm以及迁移的数据块之间的关系f;
读取节点中存储的容器C的旧校验块PC1~PCm以及相应的迁移的数据块,将所读取的数据块按照所述关系f计算组合得到的k+Δk个数据块对应的校验块PC1′~PCm′。
6.如权利要求1‑5任一项所述的提高数据去重系统可扩展性的容错编码方法,其特征在于,还包括:
在系统扩展完成后,发生降级读时,定位失效数据块所属的条带,并从该条带中读取k+Δk个未失效的编码块,按照扩展之后的编码方式对所读取的编码块进行解码操作,修复出失效数据块;
其中,编码块为条带中的数据块或校验块。
7.一种提高数据去重系统可扩展性的容错编码装置,所述数据去重系统中,每个容器由k个数据块组成,并且每个容器中的k个数据块按照RS(k,m)编码方式编码后产生m个校验块;每个容器中的k个数据块及编码产生的m个校验块构成一个条带,且分别存储在不同的k+m个节点上;其特征在于,所述提高数据去重系统可扩展性的容错编码装置包括:关联容器组划分模块、数据块迁移模块、扩展编码模块以及垃圾回收模块;
所述关联容器组划分模块,用于在所述数据去重系统中新增Δk个节点时,将每k+Δk个具有局部性关联的容器划分为一个关联容器组,并将编码方式从RS(k,m)扩展为RS(k+Δk,m);
所述数据块迁移模块,用于对于每一个关联容器组G,选取其中的Δk个容器作为待迁移容器,将待迁移容器中的共Δk×k个数据块均匀地迁移到Δk个新增节点中;
所述扩展编码模块,用于对于所述关联容器组G中每一个未迁移的容器C,从每一个新增节点中选取一个数据块与所述容器C中的数据块组合,得到k+Δk个数据块,按照扩展之后的编码方式计算组合得到的k+Δk个数据块对应的校验块PC1′~PCm′,并将校验块PC1′~PCm′存储到节点中,由组合得到的k+Δk个数据块及校验块PC1′~PCm′构成一个新的条带;
所述垃圾回收模块,用于从节点中删除所述关联容器组G中各容器的旧校验块;
其中,k、Δk和m均为正整数;RS(k,m)和RS(k+Δk,m)均为纠删码编码方式,RS(k,m)对k个数据块编码产生m个校验块,RS(k+Δk,m)对k+Δk个数据块编码产生m个校验块。
8.一种数据去重系统,所述数据去重系统中,每个容器由k个数据块组成,并且每个容器中的k个数据块按照RS(k,m)编码方式编码后产生m个校验块;每个容器中的k个数据块及编码产生的m个校验块构成一个条带,且分别存储在不同的k+m个节点上;其特征在于,所述数据去重系统包括权利要求7所述的提高数据去重系统可扩展性的容错编码装置。
说明书 :
提高数据去重系统可扩展性的容错编码方法、装置及系统
技术领域
背景技术
本的问题,目前业界常见的解决方法是通过数据去重的方法降低数据冗余,减少存储开销,
具体地,它首先将备份文件流划分为一组固定大小或变化大小的数据块,将可变长度数据
块打包成固定大小的容器,然后利用哈希算法计算每个块的指纹以唯一地表示该块。如果
新的块指纹与指纹数据库中的指纹之一相同,则认为它是重复的。只有非冗余块存储在磁
盘中,将其指纹存储在指纹数据库中。数据去重可以有效降低数据冗余,但是减少数据冗余
带来的问题是数据的可靠性进一步下降,纠删码因其良好的存储效率和高可靠性,常常被
应用于去重系统,来提高去重系统可靠性。
带,划分为大小相同的编码块在进行编码。这两类编码分别在存储利用率、降级读性能和弹
性机制上作了权衡,其中容器内编码在牺牲了扩展性能的条件下,存储利用率和降级读性
能均有较大幅度提升。然而,随着传统数据中心向云存储的迁移,云数据中心正在成为新的
核心,到2025年,全球存储数据的49%将驻留在公有云环境中。对于云环境来说,随着存储
规模的改变自由伸缩集群的灵活弹性机制是其重要特性,而目前已有的去重系统的容错编
码均难以做到兼顾高可用和高可扩展性。
的。
发明内容
据块按照RS(k,m)编码方式编码后产生m个校验块;每个容器中的k个数据块及编码产生的m
个校验块构成一个条带,且分别存储在不同的k+m个节点上;该提高数据去重系统中可扩展
性的容错编码方法包括:
的容器C,从每一个新增节点中选取一个数据块与容器C中的数据块组合,得到k+Δk个数据
块,按照扩展之后的编码方式计算组合得到的k+Δk个数据块对应的校验块PC1′~PCm′,并
将校验块PC1′~PCm′存储到节点中,由组合得到的k+Δk个数据块及校验块PC1′~PCm′构成一
个新的条带;从节点中删除关联容器组G中各容器的旧校验块;
复出失效数据块;
m)编码方式编码后产生m个校验块;每个容器中的k个数据块及编码产生的m个校验块构成
一个条带,且分别存储在不同的k+m个节点上;该提高数据去重系统中可扩展性的容错编码
装置包括:关联容器组划分模块、数据块迁移模块、扩展编码模块以及垃圾回收模块;
m);
方式计算组合得到的k+Δk个数据块对应的校验块PC1′~PCm′,并将校验块PC1′~PCm′存储到
节点中,由组合得到的k+Δk个数据块及校验块PC1′~PCm′构成一个新的条带;
验块;每个容器中的k个数据块及编码产生的m个校验块构成一个条带,且分别存储在不同
的k+m个节点上;该数据去重系统包括本发明所提供的上述提高数据去重系统可扩展性的
容错编码装置。
容器划分为一个关联容器组,按照关联容器组进行数据块迁移,且每个关联容器组中仅迁
移Δk个容器中的数据块;数据迁移之后,由迁移数据块与未迁移容器中的数据块组合并重
新编码为新的条带,由此能够有效减少网络带宽和磁盘I/O的开销,快速完成系统扩展,同
时也避免了系统扩展时条带中编码块大小改变对读写性能产生的影响,从而有效提高数据
去重系统的可扩展性。
产生的去重碎片进行处理,将同一文件的分块进行聚合,利用数据局部性提高数据去重系
统的读性能。
附图说明
具体实施方式
不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要
彼此之间未构成冲突就可以相互组合。
的,因此在去重时,一个数据块的重复也就意味着往往其上下文的若干个数据库也是重复
的,因此DDFS等数据去重系统引入容器来保留这种局部性关系,通过对多个数据块的聚合,
以此减少去重过程中反复的磁盘I/O。
块构成一个条带,且分别存储在不同的k+m个节点上;其中,RS(k,m)为一种纠删码编码方
式,采用RS(k,m)对k个数据块编码产生m个校验块,相应地,编码条带的长度为k+m;RS
(Reed‑Solomon)编码是众多纠删码中较为常用的一种编码方式,不失一般性地,以下实施
例中均以RS编码为例进行说明。
容器,采用RS(2,2)编码方式对各容器中的数据块进行编码,即k=2,m=3;第一个容器中包
含数据块D1和D2,编码后产生校验块P1和P2,数据块D1和D2和校验块P1和P2构成一个条带;第
二个容器包含数据块D3和D4,编码后产生校验块P3和P4,数据块D3和D4和校验块P3和P4构成一
个条带;第三个容器包含数据块D5和D6,编码后产生校验块P5和P6,数据块D5和D6和校验块P5
和P6构成一个条带;各条带中不同的编码块(数据块或校验块)分别存储在不同的节点上;
为便于描述,不失一般性地,以下实施例均在图1所示的数据去重系统的基础上实现。
展时,根据容器之间的局部性关系预先将容器分组,并在扩展时根据其局部性关系将数据
块迁移重组为新的编码条带并对校验块执行更新;进一步在系统扩展时优先对产生碎片化
的容器进行处理,从而提高系统的读性能。
所示,将三个容器作为关联容器组,记为G;
个未迁移的容器C,即第一个容器或第二个容器,从每一个新增节点中选取一个数据块与容
器C中的数据块组合,如图1所示,将迁移后的数据块D5与第一个容器中的数据块D1和D2组
合,将迁移后的数据块D6与第二个容器中的数据块D3和D4;对于每一个未迁移的容器C,组合
后得到3个数据块,按照扩展之后的编码方式RS(3,2)计算组合得到的3个数据块对应的校
验块PC1′~PCm′;对于第一个容器,按照RS(3,2)计算的校验块为P1′~P2′,对于第二个容器,
按照RS(3,2)计算的校验块为P3′~P4′;将校验块P1′~P2′分别存储到节点2和节点3中,由
数据块D1、D2和D5,以及校验块P1′~P2′构成一个新条带;将校验块P3′~P4′分别存储到节点
2和节点3中,由数据块D3、D4和D6,以及校验块P3′~P4′构成一个新条带;从节点中删除该关
联容器组G中各容器的旧校验块,即校验块P1~P6。
即与该文件相关联。
器组G的处理方式,在此将不作复述。
于校验块的数量,采用本实施例所提供的方式进行校验块更新,能够减少校验块更新过程
中传输的数据量,从而减少网络带宽和磁盘I/O开销。
解码操作,修复出失效数据块;
计算组合得到的3个数据块对应的校验块PC1′~PCm′,并将校验块PC1′~PCm′存储到节点中,
由组合得到的3个数据块及校验块PC1′~PCm′构成一个新的条带;
了集群扩展性能的同时,保证了系统的降级读和节点恢复性能,同时与容器间编码相比具
有较低的存储开销。
在本发明的保护范围之内。