一种基于Ceph分布式系统多机架更新修复数据的优化方法与流程

文档序号:24194186发布日期:2021-03-09 16:08阅读:159来源:国知局
一种基于Ceph分布式系统多机架更新修复数据的优化方法与流程
一种基于ceph分布式系统多机架更新修复数据的优化方法
技术领域
1.本发明属于分布式存储数据更新修复技术领域,涉及一种以使时间间隔为阈值的及时和延时更新节点,且通过改进的纠删码可保证数据一致性、可靠性的跨机架高效数据修复的方法,此方法可用于对分布式系统丢失的部分数据进行数据修复。


背景技术:

2.对于存储设备数量大的分布式集群,发生故障是在所难免。面对分布式存储出现的故障,系统怎么能快速的发现故障,定义类型,并且解决故障是一大挑战。对于现大数据时代,大量数据是极为重要的,对于服务器可靠性稳定性的判断,就是基于数据是否能够正常访问,遇到故障数据是否能够及时恢复、数据能够及时转移。因此,考虑设计一种方法能够使系统遇到数据丢失的情况,能及时的进行修复、并能及时对节点进行更新的功能。
3.现在最经常使用的方法是多副本,简而言之就是将数据复制多份,存储到不同的节点。还有一种方法就是使用rs纠删码,纠删码可以保证系统的可靠性,用低冗余的方法进行数据的恢复,此方法成为分布式系统上最为常见、使用最广泛的方法。但是此方法也有它致命的缺点,就是它恢复数据时是需要从多个节点进行读取数据,来进行算法操作修复丢失的数据,对节点数据的读取就涉及到i/o方面的开销,特别是多个机架时,跨机架的通信是需要大量的i/o开销,占用一些系统的资源,导致效率比较低下。分布式存储系统出现故障,数据恢复的速度对集群的整体性能的影响是巨大的,因为服务器、磁盘经常会发发生故障,所以需要频繁重构数据,来进行数据的修复。如果修复方法占用资源大,需要较长的时间重建数据就会大大影响系统的性能,甚至会降低正常读取被擦除数据的性能,导致数据可能会进一步丢失,增加永久数据丢失的敏感性。所以,减少数据恢复处理的时间是必不可少的,因此许多研究人员对修复的算法、编码的存储方式、数据修复的流程都改进研究,来减少i/o传输的开销。
4.对于纠删码修复数据之前,需要对节点进行更新,保证数据是最新的状态。在多点更新的场景下需要消耗大量的网络开销和完成成倍的计算,所以,怎么以低成本和高效的方式完成纠删码修复更新成为了新对挑战。对于纠删码种的数据块、编码块,它们对于数据的要求是不一样的,数据块需要的是数据的一致性,编码块需要的是它的更新效率,因此对此需要亟需设计出一种更新效率的算法,对两种特性都能兼顾到,能更好的对数据进行高效率的更新。


技术实现要素:

5.有鉴于此,本发明的目的在于提供一种基于ceph分布式系统多机架更新修复数据的优化方法,针对现有技术中分布式系统存储故障数据丢失修复及其数据更新高i/o开销低效率的问题,提供高效率、高可靠性的数据修复方法。
6.为达到上述目的,本发明提供如下技术方案:
7.一种基于ceph分布式系统多机架更新修复数据的优化方法,先对同机架内的编码
块聚合到一个节点,然后对其解码操作,完成解码运算的一部分,接着把各个机架的解码结果传输到另一个节点,然后对所有获得的解码结果进行异或处理,得到丢失的数据。
8.该方法的原理是先利用以时间间隔为阈值,设置触发更新的功能,数据块采用即时更新,编码块采用延时更新,两种分别的方法能更好的解决数据更新问题。对更新好的数据进行数据修复,因为都是间断性的时间更新,所以无论数据怎么变,修复的都是目前最新需要的数据。
9.该方法具体包括以下步骤:
10.s1:确定数据更新触发时机;
11.s2:使用及时和延迟对节点进行数据更新;包括:对节点的数据块编码块进行以时间间隔为阈值的及时和延时更新;
12.s3:对数据进行分级解码修复;包括:机架内数据跨机架传输之前,在机架内通过公式进行聚合产生分级解码,再传输到另一个节点;使用改进的jerasure库(增加函数,在不同osd上并行运行)进行分级解码功能的实现,从而在不同的osd上并行运行,恢复丢失的数据;使用两层通信系统进行传输;使用增加的组来记录编码块来进行分级编码处理。
13.进一步,步骤s1中,确定数据更新触发时机,具体包括:首先输入编码参数,包括总共的更新数据量和触发时的数据量,设置阈值数组默认大小,如果更新时数据量大于编码参数中触发时的数据量,则缩小阈值大小,除此之外如更新时数据量小于2,则扩大阈值大小;阈值固定后则根据触发更新数据量映射出间隔时间。
14.进一步,步骤s2中,使用及时和延迟对节点进行数据更新,具体包括:获得待更新节点和编码节点,对数据块更新需要接收完整的新数据后立即对旧数据进行更新;然后把更新信息发送给第一个待更新节点,该节点接收到更新信息后对信息进行算法处理,分别合成临时编码块,再把各个临时编码块分别发送到其余待更新的三个节点,接受后进行编码块的延迟更新;
15.进一步,步骤s3中,所述的两层通信系统是:ceph系统message模块增加向osd发送分级请求消息,primary osd在发送分级解码结果消息的两层通信系统。
16.进一步,步骤s3中,使用增加的组来记录编码块来进行分级编码处理,具体包括:设定一个一位组对机架内是否获得编码块而进行复1、0,来进行分级解码的处理操作。
17.进一步,步骤s3中,对数据进行分级解码修复,具体包括:首先选择机架内某一个节点n1作为进行分级解码的节点,然后对同机架的数据进行聚合,把聚合的结果通过交换机传到另一个汇总节点上去,汇总节点收到所有机架数据后对此进行异或处理,达到数据的修护。
18.本发明的有益效果在于:
19.(1)本发明的数据更新及时合理且降低了i/o消耗,增加了数据修复的效率,提升了数据的可靠性。利用算法计算出时间间隔的阈值,更加合理的对此更新,采用立即、延时分别更新,大大提高了数据可靠性。
20.(2)本发明对于数据修复降低了i/o消耗,修复速度大大提高,在跨机架传输前对机架内的数据进行聚合编码成一个数据块,然后在进行跨机架传输,降低了跨机架传输的数据量,数据修复速度更快。
21.本发明的其他优点、目标和特征在某种程度上将在随后的说明书中进行阐述,并
且在某种程度上,基于对下文的考察研究对本领域技术人员而言将是显而易见的,或者可以从本发明的实践中得到教导。本发明的目标和其他优点可以通过下面的说明书来实现和获得。
附图说明
22.为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作优选的详细描述,其中:
23.图1是本发明基于ceph分布式系统多机架更新修复数据的优化策略总流程图;
24.图2是及时更新和延时更新的结合示例图;
25.图3是多机架分级解码优化修复过程图;
26.图4是分级解码流程图。
具体实施方式
27.以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
28.请参阅图1~图4,本发明设计了一种基于ceph分布式系统多机架更新修复数据的优化方法,具体包括以下步骤:
29.步骤一:对数据更新触发时机进行确定;
30.我们先确定输入的编码参数(n,k),n为总共的更新数据量,k为触发时的数据量,先定义一个hold组,设置hold组为default_size,判读更新时数据量m如果大于k,则缩小阈值大小hold+=hold,else if m<2,则扩大hold+=hlod,hold代表了时间间隔阈值,通过调整hold大小,可以映射出时间间隔,比如说五小时进行一次更新。
31.步骤二:使用立即和延迟对节点进行数据更新;
32.以时间间隔作为触发的指标,使系统能够精确的控制更新的触发时机,本实施例以图2进行示例分析。图2显示了3个待更新节点node0、node1、node2和3个待更新的编码节点parity0、parity1、parity2,再时刻t1,node0收到了更新的信息并完成了数据块的更新。再t2时刻,node1同node0一样完成了更新,并同时把d*1-d1发送到node0中,node0收到发送的信息通过:
33.p*
i,1
=a
i,0,j
*(d*0-d0)+a
i,1,j
*(d*1-d1),0≤i≤2
34.合成临时的编码块p*
i,1
。其中,a
i,0,j
表示node0节点的编码矩阵,a
i,1,j
表示node1节点的编码矩阵,d*0表示node0中新的数据块,d0表示node0中原有的数据块,d*1表示node1中新的数据块,d1表示node1中原有的数据块。在t3时刻,node2完成数据块的更新后也将d*2-d2的信息发送至node0,然后node0通过:
35.p*
i,1
=a
i,0,j
*(d*0-d0)+a
i,1,j
*(d*1-d1)+a
i,2,j
*(d*2-d2),0≤i≤2
36.合成临时的编码块p*
i,1
。若通过时间阈值设置到在时刻t4更新,node0将合成的临
时模块p*
0,1
p*
1,1
p*
2,1
分别发送至node0、node1、node2。最后通过:
[0037][0038]
完成编码块的更新。此次数据就快速的进行了更新,也保证了数据块的一致性,编码块的快速性。
[0039]
步骤三:对数据进行分级解码修复;
[0040]
通过获得k个编码块(h1,h2,

h
k
,),编码过程是由k个原始数据块k*(k+m)矩阵相乘来实现,得到m个校验块:
[0041][0042]
其中,g
i
(1≤i≤k+m)是1
×
k行向量,是单位矩阵。
[0043]
任何k个可用块都可以重建原始数据块,k个可用块由{h
′1,..,h

k
}表示,编码矩阵中总对应k个行向量,k个行向量由x表示,且x必须是一个可逆矩阵。解码如下:
[0044][0045]
重建数据块hi(1≤i≤k+m),可得到:
[0046][0047]
设y
i
=g
i
*x-1
,可以得出:
[0048][0049]
为减少跨机架传输量,可以在实现跨机架传输前对同机架可用块进行分级解码。
[0050][0051]
上公式中的聚合被成为分级解码的结果。
[0052]
如图3所示,本实施例设定node1为分级解码的节点,然后把node2的数据先传输到nodel然后进行分级解码:得出h1,同理交换机2也得出h2,然后各种交换机的数据传到交换机0,因为每个交换机只传送一个,比以往的每个交换机传输两个少了一般的传输量,更加增加了数据修复的效率,通过交换机0把数据传到r,在r上进行异或运法,得出丢失的数据。
[0053]
最后说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本技术方案的宗旨和范围,其均应涵盖在本发明的权利要求范围当中。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1