一种面向纠删码存储集群的懒惰预测修复方法

文档序号:33367599发布日期:2023-03-08 00:14阅读:40来源:国知局
一种面向纠删码存储集群的懒惰预测修复方法

1.本发明属于计算机存储技术领域,具体涉及一种面向纠删码存储集群的懒惰预测修复方法。


背景技术:

2.随着物联网、人工智能、第五代移动通信网络(5g)等新兴技术的快速发展,边缘端产生的数据量呈爆炸式增长。基于纠删码的低动态移动分布式存储集群通常把流行数据存储在一定区域内的移动节点中,能节省大量存储开销。它在数据读取时能从附近的移动节点检索数据,与从基站检索数据相比,能减少通信开销和延迟。但是,由于节点可能故障或离开,导致数据失效,从而无法从附近移动节点检索数据,集群数据可用性和可靠性遭到破坏。
3.纠删码容错技术在数据失效后能修复失效数据,保证数据可靠性与可用性,这既可以提高用户服务质量,又可以防止数据永久失效。然而,纠删码面临修复成本高的问题,因为修复一个失效块需要检索多个相关块来重构失效数据,具体表现在数据修复时的传输数据量大、修复时间长。目前有大量关于纠删码修复的方法被提出,包括被动和主动预测修复机制,被动修复是在数据失效后才触发修复操作,而主动预测修复能在节点失效前修复即将失效数据,显著减少节点失效后的修复时间。节点故障预测和轨迹预测等节点失效预测技术使预测修复成为可能。预测修复手段有两种:迁移和重构。由于重构和迁移是两种不冲突的机制,采用迁移与重构并行修复的方法与仅采用一种预测机制相比,能减少预测修复时间。
4.然而,现有的迁移与重构并行的主动预测修复方法存在不足,具体表现在:

只考虑单节点故障,耦合简单重构和迁移策略。

没有区分数据块和校验块。因此,当检测到多个节点故障时,可通过耦合懒惰重构和迁移策略,以减少平均预测修复时间,从而减少修复总时间。针对数据块失效和校验块失效制定不同的修复方案可进一步减少传输流量和修复时间,同时不影响数据的正常读取。


技术实现要素:

5.针对现有技术存在的不足,本发明提出了一种面向纠删码存储集群的懒惰预测修复方法,该方法包括:
6.s1:判断即将失效节点中stf块的性质,根据stf块的性质和数量将stf块所在的条带划分到m-lfpr队列或s-lfpr队列;
7.s2:将s-lfpr队列添加至m-lfpr队列末尾组成修复队列;
8.s3:对修复队列中的条带进行划分,得到初始懒惰重构集;
9.s4:对初始懒惰重构集中的条带进行划分,得到迁移集和新的懒惰重构集;
10.s5:对迁移集和新的懒惰重构集中的stf块执行并行预测修复,得到修复好的stf块。
11.优选的,将stf块划分到m-lfpr队列或s-lfpr队列的过程包括:
12.若stf块为验证块,则判断其所在条带上stf块数量是否等于容错上限,若是,则将该stf块所在条带划分到m-lfpr队列中,否则,保留当前stf块所在条带;
13.若stf块为数据块,判断stf块所处条带上stf块的数量,若数量等于1,则将该stf块所在条带划分到s-lfpr队列中,若数量大于1,则将该stf块所在条带划分到m-lfpr队列中。
14.优选的,将s-lfpr队列添加至m-lfpr队列末尾组成修复队列时,将s-lfpr队列和m-lfpr队列中的条带按照stf块的数量降序排序。
15.优选的,对条带进行划分得到初始懒惰重构集的过程包括:
16.s31:初始化一个重构集;
17.s32:若重构集中的条带数小于最大并行重构条带数,则对重构集进行优化,得到优化后的重构集,去除修复队列中重构集中的条带;
18.s33:从剩下的条带中初始化另一个重构集,重复执行步骤s32~s33,直到修复队列中不含条带,得到多个初始懒惰重构集。
19.进一步的,初始化重构集为从修复队列中选取数量不超过最大并行重构条带数的条带作为重构集元素。
20.进一步的,对重构集进行优化的过程包括:每条条带中均存在多个相关块,依次替换两条条带或增加新的条带,使得多条条带不同位置上的相关块不发生重叠,得到优化后的重构集。
21.优选的,得到迁移集和新的懒惰重构集的过程包括:按照相关块的数量对初始懒惰重构集进行降序排序,得到排序后的初始懒惰重构集,将排序第一的初始懒惰重构集作为新的懒惰重构集;预估新的懒惰重构集中stf块的修复时间,按照升序排序依次从其他初始懒惰重构集中提取条带加入迁移集中,当预估迁移集中stf块的修复时间与新的懒惰重构集中stf块的修复时间相等时,得到新的懒惰重构集对应的迁移集。
22.本发明的有益效果为:本发明针对即将失效块的性质和数量,把它们加入不同的修改队列,并采取并行地采取懒惰重构与迁移策略预测修复失效块,减少纠删码存储集群的预测修复时间。本发明具有成本低、易实施等优势,同时具有良好的可扩展性、实用性。
附图说明
23.图1为本发明中懒惰预测修复方法的流程图;
24.图2为本发明中修复队列确定示意图;
25.图3为本发明中迁移与懒惰重构并行的预测修复示意图。
具体实施方式
26.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
27.本发明提出了一种面向纠删码存储集群的懒惰预测修复方法,如图1所示,所述方
法包括以下内容:
28.s1:判断即将失效节点中stf块的性质,根据stf块的性质和数量将stf块所在的条带划分到m-lfpr队列或s-lfpr队列。
29.当检测到即将失效节点时,应根据该节点上每个stf(即将失效)块的性质来判断是否立即执行预测修复操作,如果需要立即执行预测修复操作,则加入修复队列。stf块的性质分为数据块和校验块,数据块失效可能导致读降级,从而影响数据可用性,因此需要立即进行预测修复;而校验块失效不会影响数据的正常读取,可以延迟预测修复。
30.将stf块划分到m-lfpr队列或s-lfpr队列的过程包括:
31.若stf块为验证块,则判断其所在条带上stf块数量是否等于容错上限,若是,则将该stf块所在条带划分到m-lfpr队列中,否则,保留当前stf块所在条带;可选的,容错上限为2~8,在一优选实施例中,容错上限为2。
32.若stf块为数据块,判断stf块所处条带上stf块的数量,若数量等于1,则将该stf块所在条带划分到s-lfpr队列中,若数量大于1,则将该stf块所在条带划分到m-lfpr队列中。
33.具体的,如图2所示,集群采取(5,3)rs码(纠删码)作为容错机制,相继检测到节点f1和f2即将失效,且其中包含stf数据块和stf校验块。首先,检测到节点f1即将失效,如果其中的块是数据块且该条带中仅有一个即将失效的块,加入到s-lfpr队列,否则加入到m-lfpr队列,如果是校验块则延迟处理。f1中的块s
11
、s
31
和s
51
为数据块,因此将这些块所在条带添加到s-lfpr修复队列中。块s
21
和s
41
是校验块,可以延迟修复,因此暂不处理这些块,但作上标记,后续可能加入到m-lfpr修复队列。第一轮将对s-lfpr修复队列中的块执行预测修复操作。之后,检测到节点f2即将失效,其中s
12
是数据块,且其所在条带s1中只有这一个stf块(块s
11
已经在第一轮完成预测修复并存储到健康节点n4),因此将块s
12
所在条带s1加入到s-lfpr队列。块s
42
虽然也是数据块,但在条带s4中还有一个stf块s
41
。因此,条带s4被加入到m-lfpr队列中。块s
22
是校验块,可以延迟修复,但是条带s2中已有两个stf块,达到容错上限(容错上限为2),因此条带s2也加入m-lfpr队列。第二轮将依次对m-lfpr和s-lfpr修复队列中的stf块进行预测修复。
34.s2:将s-lfpr队列添加至m-lfpr队列末尾组成修复队列。
35.s-lfpr队列是一种特殊的m-lfpr队列,将s-lfpr队列添加在m-lfpr队列后得到一个新的修复队列;在将s-lfpr队列添加至m-lfpr队列末尾组成修复队列时,将s-lfpr队列和m-lfpr队列中的条带按照stf块的数量降序排序。
36.s3:对修复队列中的条带进行划分,得到初始懒惰重构集。
37.s31:初始化第一重构集。
38.假设修复队列中存在n条条带,例如,如图3所示,修复队列中总共有8个条带,按照stf块的数量降序排列条带,得到条带s1~s8。初始化一个重构集,即从修复队列中选取数量不超过最大并行重构条带数g的条带作为重构集元素,优选的,按照条带的排列顺序选取两条条带(条带s1和条带s2)组成一个重构集。其中,g表示最大并行重构条带数,等于健康节点数量与纠删码第二个参数的比值,优选的,在本例中g为9/3=3,即一个重构集中最多容纳3条条带。
39.s32:若重构集中的条带数小于最大并行重构条带数,则对重构集进行优化,得到
优化后的重构集,去除修复队列中重构集中的条带。
40.对重构集进行优化的过程包括:
41.每条条带中均存在多个相关块(可参与修复的块),其为根据stf块得到的stf块对应的健康块;多个相关块存在于不同的健康节点上,依次替换两条条带或增加新的条带,使得多条条带不同位置上的相关块不发生重叠,得到优化后的重构集;具体的,首先,进行第一轮优化:重构集r1由s1和s2组成,对r1进行优化,s1和s2中均没有可替换的块,依次替换掉s1和s2以及增加条带,当r1的并行度达到最高时,得到优化后的重构集r1={s1,s4,s5};其中,并行度指多条条带不同位置上的相关块不发生重叠,每个相关块所在节点位置是独一无二、互相不冲突的。
42.s33:从剩下的条带中初始化另一个重构集,重复执行步骤s32~s33,直到修复队列中不含条带,得到多个初始懒惰重构集。
43.进行第二轮优化:初始化另一个重构集r2={s2,s3},重构集中的条带数小于3条,有优化空间,但是在剩余条带中找不到任何可替换的条带使得并行度更高,因此,重构集仍为r2={s2,s3}。
44.修复队列中还有未成为重构集元素的条带,初始化重构集r3由s6和s7组成,r3还需要优化,重复执行步骤s32~s33,进行第三轮优化:s7中存在可替换的块,通过依次替换其中的块得到优化的重构集r3,得到优化后的重构集r3={s6,s7,s8},至此,修复队列中已不含条带,得到多个初始懒惰重构集:r={r1,r2,r3}。
45.s4:对初始懒惰重构集中的条带进行划分,得到迁移集和新的懒惰重构集。
46.对初始懒惰重构集进行排序,使修复并行度高的stf块先被修复,其主要工作是使每轮修复的stf节点中块的数量最大化,只要在每一轮检索到的相关块来自不同的健康节点,重构就可以并行执行。
47.根据初始懒惰重构集,能快速确定迁移集:按照相关块的数量对初始懒惰重构集进行降序排序,得到排序后的初始懒惰重构集,初始懒惰重构集集合r={r1,r2,r3},将排序第一的初始懒惰重构集作为新的懒惰重构集即r1为新的懒惰重构集。预估新的懒惰重构集中stf的修复时间,按照升序排序依次从其他初始懒惰重构集中提取条带加入迁移集中,当预估迁移集中stf块的修复时间与新的懒惰重构集中stf块的修复时间相等时,得到新的懒惰重构集对应的迁移集。具体的:
48.r1可以修复5块,r2可以修复4块,r2可以修复3块。按降序排列,首先得到重构集r1,其预测修复时间为4t。接下来,需要找到对应于r1的迁移集m,使迁移修复时间不超过4t。依次从排序靠后的r中提取条带,并将它们添加到迁移集m中。因此首先将r3中的所有条带加入到m中,此时其迁移修复时间为2t(《4t)。所以继续从r2中取出条带并将它们添加到m中,其迁移修复时间为2t。由于2t+2t=4t,因此找到了r1对应的迁移集m={s2,s
3 s6,s7,s8}。
49.s5:对重构集和迁移集中的stf块执行并行预测修复,得到修复好的stf块。
50.在步骤s4的基础上,m和r1中的stf块可以在一轮中分别使用迁移和懒惰重构策略耦合地预测修复。
51.以上所举实施例,对本发明的目的、技术方案和优点进行了进一步的详细说明,所应理解的是,以上所举实施例仅为本发明的优选实施方式而已,并不用以限制本发明,凡在本发明的精神和原则之内对本发明所作的任何修改、等同替换、改进等,均应包含在本发明
的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1