一种局部可修复码的分区方法技术

技术编号:38720434 阅读:6 留言:0更新日期:2023-09-08 23:15
本发明专利技术涉及一种局部可修复码的分区方法,包括:使用k个数据块生成g个全局校验块,将k个数据块分为l个组,每个组生成1个局部校验块,对每个组,将k/l个数据块以g+1个块为单位划分到不同的分区;按照每θ个组的剩余数据块和局部校验块放到同一个分区,剩下β个组单独放到一个分区中;计算空闲空间σ;如果σ<g,则将所有全局校验块单独划分到一个分区;否则,将其分别存储进空闲空间;为每个已分配分区选择不同的集群,对每个已分配分区,将分区内的每个块写入不同的存储节点。本发明专利技术最小化了修复任意单个块时产生的跨集群网络流量,通用性好,易于实现,适用于所有参数,且完全满足现有存储系统的基本容错要求。储系统的基本容错要求。储系统的基本容错要求。

【技术实现步骤摘要】
一种局部可修复码的分区方法


[0001]本专利技术涉及分布式存储领域,具体涉及一种局部可修复码的分区方法。

技术介绍

[0002]纠删码是一种在数据存储中用于提高数据可靠性和容错性的编码技术。它通过将数据按照一定的规则进行分组和编码,然后将编码后的数据分别存储在不同的节点上,以实现冗余备份和容错。当某个节点出现故障时,可以通过纠删码技术来修复数据,从而保证数据的可靠性和完整性。纠删码是一种容错技术,可用于修复损坏或丢失的数据。与多副本技术相比,它可以在相同的存储开销下,实现更高的容错能力。
[0003]局部可修复码(Local Reconstruction Codes,简称LRC)是微软公司提出的一种纠删码,它的修复代价比其它传统纠删码(如Reed

Solomon Codes)更低,被应用于多种分布式存储系统,例如Ceph、Azure、CubeFS等。LRC通常表示为LRC(k,l,g):使用k个数据块生成g个全局校验块,再将k个数据块分为l个组,每个组增加1个局部校验块。
[0004]现在的分布式存储系统大都被部署为多集群架构,为了实现节点级和集群级的容错能力,一个条带的块会根据特定策略划分到不同的分区,不同分区对应不同的集群,而每个分区内的不同块需要放置在对应集群的不同存储节点上。在多集群架构下,跨集群带宽是一种稀缺资源,不恰当的分区策略会导致LRC在修复过程中产生大量的跨集群网络流量,因而损害系统整体性能;另一方面,单集群损坏可修复是现有存储系统的基本要求,而分区策略会影响LRC在集群级别的容错能力,不恰当的分区策略会违反存储系统的基本容错要求。
[0005]现在常用的LRC分区策略例如条带内的不同块对应不同分区方法(Flat)、将条带内的块随机划分到不同分区方法(Random)等,它们虽然能满足系统的容错要求,但没有针对单块修复产生的跨集群网络流量做任何优化。而最新提出的LRC分区策略,虽然通过最小化条带内每个组所占据的分区数量而最小化了数据块和局部校验块的修复开销,但忽视了全局校验块,事实上全局校验块的修复也会产生大量的跨集群网络流量。

技术实现思路

[0006]为解决上述问题,本专利技术提供一种局部可修复码的分区方法。
[0007]该方法包括以下步骤:
[0008]步骤一,使用k个数据块生成g个全局校验块,再将k个数据块分为l个组,每个组生成1个局部校验块,对每个组,将k/l个数据块以g+1个块为单位划分到不同的分区,每个组剩余r个剩余数据块和1个局部校验块,其中
[0009]步骤二,将l个组按照每θ个组的剩余数据块和局部校验块放到同一个分区,
[0010]θ
×
(+1)≤g+θ,剩下β个组的剩余数据块和局部校验块单独放到一个分区中,β=l%θ;
[0011]步骤三,计算所有已分配分区中的空闲空间能够存储的全局校验块的个数σ;
[0012]步骤四,如果σ<g,则将所有全局校验块单独划分到一个分区;否则,将全局校验块分别存储进各个已分配分区的空闲空间;
[0013]步骤五,为每个已分配分区选择一个集群,确保不同的已分配分区对应不同的集群;对每个已分配分区,将分区内的每个块写入到对应的集群内的存储节点上,确保不同的块写入不同的存储节点。
[0014]进一步的,步骤二中所述θ的最大值为进一步的,步骤二中所述θ的最大值为表示向下取整运算。
[0015]进一步的,中所述进一步的,中所述表示向下取整运算。
[0016]进一步的,步骤三具体包括遍历每个已分配分区,检查每个已分配分区的块隶属于多少个组,计算该已分配分区的容量上限,用该容量上限减去该分区已写入的块所占空间,得出该分区的空闲空间;将所有已分配分区的空闲空间求和得到σ。
[0017]进一步的,步骤四中所述将全局校验块分别存储进各个已分配分区的空闲空间,具体指,将已分配分区按预设规则排列,用全局校验块依次填充各个分区的空闲空间,直到全局校验块用完或空闲空间用完。
[0018]优选的,其特征在于,所述将已分配分区按预设规则排列,具体指,将已分配分区按空闲空间数量降序排列,如果若干分区的空闲空间数量相等,则数量相等的若干分区随机排列。
[0019]本申请实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:
[0020]本申请根据存储系统的基本容错要求,分析出分区策略需要满足的限制,在该限制的基础上,最小化LRC一个条带内每个组所占据的分区数量,也最小化一个条带内所有数据块和全局校验块所占据的分区数量,从而在确保单集群损坏可修复的前提下,也最小化了修复任意单个块时产生的跨集群网络流量。本申请通用性好,易于实现,适用于所有的(k,l,g)参数,且完全满足现有存储系统的基本容错要求。
附图说明
[0021]图1为本专利技术实施例提供的一个多集群架构下的分布式存储系统示意图;
[0022]图2为本专利技术实施例提供的对多个组块的初步处理存储结构示意图;
[0023]图3为本专利技术实施例提供的多个组块的剩余数据块和局部校验块的存储结构示意图;
[0024]图4为本专利技术实施例提供的全局校验块存储结构示意图;
[0025]图5为本专利技术实施例提供的数据修复方法示意图;
[0026]图6为本专利技术实施例提供的多集群架构下最小化单块修复跨集群网络流量的LRC分区方法的实施操作流程示意图。
具体实施方式
[0027]以下结合附图和具体实施例,对本专利技术进行详细说明,在详细说明本专利技术各实施例的技术方案前,对所涉及的名词和术语进行解释说明,在本说明书中,名称相同或标号相同的部件代表相似或相同的结构,且仅限于示意的目的。
[0028]本专利技术在多集群架构下最小化单块修复跨集群网络流量的LRC分区方法,具体步骤如图6所示:
[0029]步骤一:紧凑放置一个条带中每个组的数据块
[0030]使用k个数据块生成g个全局校验块,再将k个数据块分为l个组,每个组生成1个局部校验块。k个数据块、l个局部校验块和g个全局校验块构成了LRC的一个条带。一个条带包含l个组,每个组由k/l个数据块和1个局部校验块组成。根据容错要求,在一个分区中最多能放置g+i个隶属于i个组的块。将一个组的块尽量放到同一个分区,这个分区中只包含这一个组的块,i取值1,因此,对于每个组,最多可以将g+1个数据块放到同一个分区中。对每个组,将数据块以g+1个块为单位划分到不同的分区。
[0031]步骤二:紧凑放置一个条带中多个组的剩余块
[0032]经过第一步后,每个组会剩余r个数据块和1个局部校验块,其中
[0033]假设可以将θ个组的剩余块放到同一个分区,根据容错要求,θ的值必须满足不等式θ
×
(+1)≤g+θ,化简可知θ的最大值为(+1)≤g+θ,化简可知θ的最大值为表示向下取整运算。因此,最多可以将个组的剩余块放到同一个分区中。对于所有本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种局部可修复码的分区方法,其特征在于,包括以下步骤:步骤一,使用k个数据块生成g个全局校验块,再将k个数据块分为l个组,每个组生成1个局部校验块,对每个组,将k/l个数据块以g+1个块为单位划分到不同的分区,每个组剩余r个剩余数据块和1个局部校验块,其中步骤二,将l个组按照每θ个组的剩余数据块和局部校验块放到同一个分区,θ
×
(+1)≤g+θ,剩下β个组的剩余数据块和局部校验块单独放到一个分区中,β=l%θ;步骤三,计算所有已分配分区中的空闲空间能够存储的全局校验块的个数σ;步骤四,如果σ<g,则将所有全局校验块单独划分到一个分区;否则,将全局校验块分别存储进各个已分配分区的空闲空间;步骤五,为每个已分配分区选择一个集群,确保不同的已分配分区对应不同的集群;对每个已分配分区,将分区内的每个块写入到对应的集群内的存储节点上,确保不同的块写入不同的存储节点。2.根据权利要求1所述局部可修复码的分区方法,其特征在于,步骤二中所述θ的...

【专利技术属性】
技术研发人员:吴思赵昊许胤龙
申请(专利权)人:中国科学技术大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1