一种基于纠删码集群存储系统的交叉重构方法

文档序号:6386389阅读:542来源:国知局
专利名称:一种基于纠删码集群存储系统的交叉重构方法
技术领域
本发明属于数据存储领域,更具体地,涉及一种基于纠删码集群存储系统的交叉重构方法。
背景技术
随着计算机技术和网络技术的发展,集群存储系统需要具有高存储利用率和高容错率的容错技术以应对海量数据对集群可靠性提出的挑战。纠删码容错技术在上述两方面具有优势而越来越受到重视。纠删码容错技术通过纠删码算法将数据进行编码得到少量冗余,再将数据与冗余一起存储。如图1所示,每个节点的磁盘空间被划分成一个个条块。整个集群的磁盘空间由一个个相互独立的条带组成。每个条带将k个数据块通过一定编码算法计算出r个冗余块,将这k+r个条块分布到集群的不同节点。集群可以使用某一条带中的任意k个条块,解码得到该条带内的所有数据块和冗余块。因此该集群存储系统最多可以容忍r个节点失效。但是纠删码容错技术存在一个缺点,即任意一个节点失效都需要通过网络传输k个存活节点的数据来恢复这个失效节点上的数据,这个过程的网络带宽开销大。特别是随着数据量的爆炸性增长,不断增大的存储规模使得出现失效节点已成为集群存储系统的常态。为了恢复失效节点上的数据并替换失效的节点,纠删码集群存储系统需要让新加入的节点向k个存活的节点获取数据以进行重构,引起网络带宽的大量占用。特别是当集群中有f (f ^ 2)个节点同时失效时,现有的重构方法或者需要让这f个替换节点各自向k个存活节点获取数据,需要占用fXk倍的网络带宽开销,从而造成重构时间的延长,降低集群的可靠性。所以,多节点同时失效而引起的大量网络带宽开销是纠删码集群存储系统的目前重构方法面临的巨大挑战。

发明内容
针对现有技术的缺陷,本发明的目的在于提供一种基于纠删码集群存储系统的交叉重构方法,旨在解决现有重构方法面对纠删码集群存储系统中出现多个节点同时失效的情况下造成大量网络带宽开销的问题,本发明的方法将需要恢复的数据划分给各个替换节点,每个替换节点只负责一部分条带的恢复,各自重构之后得到的少量数据在两两替换节点之间相互发送和接收,能够降低网络带宽开销和加快重构速度,同时具有高可靠性和高可扩展性。为实现上述目的,本发明提供了一种基于纠删码集群存储系统的交叉重构方法,包括以下步骤:(1)纠删码集群存储系统的第i个替换节点RNi将自身条带号的基准值rowstep初始化为0,其中i=l,…,f,f为系统中失效节点的数量;(2)替换节点RNi向集群中任意k个存活节点发出请求,获取这k个存活节点的第rowstep+i个条块,分别记为B1,…,Bk,其中k为系统中数据节点的数量;(3)替换节点RNi使用条块B1,...,Bk根据下式计算出属于集群的第rowstep+i个条带的f个失效块,分别记为RBratstel^1,…,RBrowstep+i,f:RBrow,j = DECj(B1,...,Bk)其中DECO代表水平编码算法的解码操作,row表示正在处理的是集群中第row个条带的各个条块,j表示通过这次解码操作计算出来的是第j个替换节点上的失效块,且有j=l,…,f ;(4)替换节点RNi将失效块RBratstel^i写入本地磁盘,成为本地的第rowstep+i个条块;(5)替换节点RNi将失效块
^^rowstep+i, I j ^^rowstep+i, 1-1 ^^rowstep+i, i+1 j ^^rowstep+i, f
一一对应地发送给替换节点RN1,…,RNi+ RNi+1,…,RNf,同时替换节点RNi接收从替换节点RN1, -, RNi^1, RNi+1,…,RNf发来的各一个失效块,一一对应地记为RBratstel^i,…,
RRRR...RR-
^-^rowstep+1-l, i ^-^rowstep+i+l, i ,^-^rowstep+f, i (6)替换节点RNi将 在步骤(5)中从其他替换节点接收到的f_l个失效块写入本地磁盘;(7)替换节点RNi将自身条带号的基准值rowstep加f ;(8)替换节点尺队判断是否已恢复所有条块,若是,则返回步骤(2),否则过程结束。条块B1,…,Bk可以是数据块,也可以是冗余块。水平编码算法包括CRS和VRS算法。步骤(3 )具体为,第i个替换节点RNi取row的值为rowstep+i ,然后依次取
j=l,…,f,分别计算出f个失效块 RBrowstep+i,I, ,RBrowstep+i,f ο通过本发明所构思的以上技术方案,与现有技术相比,本发明具有以下的有益效果:(I)网络带宽的开销小:由于在步骤(2)中让一个替换节点只向获取存活节点获取一部分数据,所以减少了重复的数据在网络中的传输量,从而减少了对网络带宽的占用。(2)重构速度的加快使得集群可靠性良好:由于替换节点的网络带宽是制约重构速度的瓶颈,步骤(2)带来的小的网络带宽开销能让替换节点缩短重构时间,减小集群在重构期间出现下一个失效节点的可能,从而提高了集群的可靠性。(3)可扩展性良好:由步骤(2)和步骤(5)可知,当集群中同时失效的节点数量增多时,每个替换节点需要向存活节点获取的数据量将减小,替换节点两两之间相互传递已被重构出来的数据,保证了失效数据能够被完整恢复,因此本发明方法在失效节点个数越多的情况下重构速度越快,从而具有良好的可扩展性。


图1为现有纠删码集群存储系统的数据条带化分布与重构示意图;图2为本发明基于纠删码集群存储系统的交叉重构方法的流程图;图3为本发明方法的数据流向示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。首先给出本发明相关概念的定义: 条带:在纠删码中,条带是可以独立地恢复出失效数据的信息集合。 条块:处于同一存储设备上的属于同一条带的数据的集合。一个条块可以只包含数据或者冗余,也可以同时包含数据和冗余。本发明方法使用水平编码,一个条块只包含数据或者冗余。 水平编码:一种纠删码,所有数据块和校验块在同一条带上。 数据块:只存储原始数据的条块,本说明书使用DBra^i表示属于第row个条带且位于第i个数据节点的数据块。 冗余块:只存储冗余数据的条块,本说明书使用PBratii表示属于第row个条带且位于第i个冗余节点的冗余块。 数据节点:存储数据块的节点,本说明书使用DNi来表示第i个数据节点。 冗余节点:存储冗余块的节点,本说明书使用PNi来表示第i个冗余节点。 失效节点:集群中由于存储介质损坏、网络故障或者宕机等原因而不可使用的节点。 存活节点:集群中能正常工作的节点。 替换节点:新加 入集群中用来替换失效节点的节点,本说明书使用RNi表示第i个替换节点。 失效数据:位于失效节点上的数据。 重构:在替换节点上进行的恢复失效数据的操作。 失效块:位于失效节点上的条块。特别地,本说明书中也使用“失效块”来称呼被重构过程计算得到的条块,它与被失效节点丢失的条块在信息上是完全一致的,说明书中用RBrat, i来表示属于集群中第row个条带且位于第i个替换节点上的失效块。本发明提供的一种基于纠删码集群存储系统的交叉重构方法使用IRS(k,r, f)表示,k, r, f均为正整数。其中k是数据节点的个数,r是冗余节点的个数,f是失效节点的个数,也是替换节点的个数。该方法让多个替换节点在重构过程中相互合作,以达到减少网络带宽开销,加快重构速度的目的,适用于集群中同时出现多个节点失效的情况。如图2所示,本发明基于纠删码集群存储系统的交叉重构方法包括以下步骤:(I)纠删码集群存储系统的第i个替换节点RNi将自身条带号的基准值rowst印初始化为0,其中i=l,…,f,f为系统中失效节点的数量;具体而言,集群中每个替换节点都执行本发明方法所示的步骤,这里使用标号i来表示可以任意选取一个替换节点;(2)替换节点RNi向集群中任意k个存活节点发出请求,获取这k个存活节点的第rowstep+i个条块,分别记为B1,…,Bk,其中k为系统中数据节点的数量;具体而言,条块B1,…,Bk可以是数据块,也可以是冗余块;(3)替换节点RNi使用条块B1,...,Bk根据下式计算出属于集群的第rowstep+i个条带的f个失效块,分别记为RBratstel^1,…,RBMwstep+i,f。RBrow;j = DECj(B1, -,Bk)
上式中,DECO代表一种水平编码算法,包括CRS (Cauchy Reed-Solomon), VRS(Vandermonde Reed-Solomon)等的解码操作,它可以计算出f个失效块,下标row表示正在处理的是集群中第row个条带的各个条块,下标j表示通过这次解码操作计算出来的是第j个替换节点上的失效块,其中j=l,…,f ;具体而言,第i个替换节点RNi取row的值为 rowstep+i,然后依次取 j=l,..., f,分别计算出 f 个失效块 RBrowste3^1,..., RBrowstep+i;f ;因为替换节点RNi表示集群中的任意一个替换节点,因此到本步骤结束时为止替换节点RNi计算得到属于第rowstep+i个条带的f个失效块ABratste^1…,RBrowste^f ;替换节点RN2计算得到属于第rowstep+2个条带的f个失效块=RBratstelrtu,..., RBrowstep+2;f,依次类推;(4)替换节点RNi将失效块RBratstel^i写入本地磁盘,成为本地的第rowstep+i个条块;(5)替换节点RNi将失效块
^^rowstep+i, I j ^^rowstep+i, 1-1 ^^rowstep+i, i+1 j ^^rowstep+i, f
一一对应地发送给替换节点RN1,…,RNh,RNi+1,…,RNf,在这里,替换节点的标号与失效块的第2个下标对应,表示替换节点RNi将属于第rowstep+i个条带的失效块发送给其他替换节点;同时,替换节点RNi接收从替换节点RN1,…,RNi^1, RNi+1,…,RNf发来的各一个失效块,--对应地记为
^■^rowstep+1, i ,^-^rowstep+1-lJ i,^-^rowstep+i+1, i ,^^rowstep+f, i
在这里,
替换节点的标号与失效块的第I个下标对应,表示其他替换节点将应该位于第i个失效节点上的失效块发送给第i个替换节点RNi ;(6)替换节点RNi将在步骤(5)中从其他替换节点接收到的f_l个失效块写入本地磁盘;具体而言,到步骤(6)结束为止 ,替换节点RNi完成了对本地磁盘的第rowstep+i个到第rowstep+f个条块的恢复;因为替换节点RNi表示集群中的任意一个替换节点,所以到步骤(6)结束为止,集群中的第rowstep+i个到第rowstep+f个条带都已经被恢复;(7)替换节点RNi将自身条带号的基准值rowstep加f ;(8)替换节点RNi判断是否已恢复所有条块,若是,则返回步骤(2),否则过程结束;具体而言,从步骤(2)到步骤(6),集群完成对当前f个条带的恢复,之后以f为步长递增rowstep进行接下来的循环,每一轮循环顺序恢复f个条带。为了使本发明方法更容易理解,下面结合图3所示的实施例1RS(k,r,2)来说明。图3为出现两个失效节点(f=2)的情况下,本发明方法的数据流向示意图。如图3所示,DN1, -,DNk为数据节点,PN1, -,PNr为冗余节点,其中数据节点DN1和DN2失效,替换节点RN1和RN2进行交叉重构来替换失效节点DN1和DN2。图3下方的虚线方框里是替换节点RNi和RN2在交叉重构中根据步骤(2)到(6) —次循环计算出来的失效块,箭头为数据流向。为了便于显示,图3将替换节点RN1和RN2的条带号基准rowstep设置为O,并指定替换节点RN1获取DN3, -,DNk, PN1, PN2这k个存活节点的第I个条块,即条块DB3,…,DBk7PB17PB2 ;同样指定替换节点RN2获取上述k个存活节点的第2个条块。接着,替换节点RN1计算出属于第I个条带的2个失效块RB1;1和RB1^并将失效块RB1;1写入本地磁盘,成为替换节点RN1的第I个条块;替换节点RN2计算出属于第2个条带的2个失效块RB2il和RB2j2,并将失效块RB2,2写入本地磁盘,成为替换节点RN2的第2个条块。此时,替换节点RN1多余的失效块RBy是替换节点RN2需要的,替换节点RN2多余的失效块RB2;1是替换节点RN1需要的。于是替换节点RN1和RN2相互交换上述2个失效块。失效块RB。成为替换节点RN1的第2个条块,失效块RBli2成为替换节点RN2的第I个条块。所以整个集群的第I个和第2个条带被完整恢复。替换节点RN1和RN2互相交换各自缺少的失效块,是本发明方法被称为交叉重构的含义所在。本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种基于纠删码集群存储系统的交叉重构方法,其特征在于,包括以下步骤: (O纠删码集群存储系统的第i个替换节点RNi将自身条带号的基准值rowstep初始化为0,其中i=l,…,f,f为系统中失效节点的数量; (2)替换节点RNi向集群中任意k个存活节点发出请求,获取这k个存活节点的第rowstep+i个条块,分别记为B1,…,Bk,其中k为系统中数据节点的数量; (3)替换节点RNi使用条块B1,...,Bk根据下式计算出属于集群的第rowstep+i个条带的f个失效块,分别记为RBratstel^1,…,RBrowstep+i, f.RBrow, j = DECj (B1,…,Bk) 其中DECO代表水平编码算法的解码操作,row表示正在处理的是集群中第row个条带的各个条块,j表示通过这次解码操作计算出来的是第j个替换节点上的失效块,且有j=l,…,f ; (4)替换节点RNi将失效块RBrowstep+i,i写入本地磁盘,成为本地的第rowst印+i个条块; (5)替换节点RNdf失效块^^rowstep+i, I ,^^rowstep+i, 1-1 ^^rowstep+i, i+1 ,^^rowstep+i, f一一对应地发送给替换节点RN1,…,RNi+ RNi+1,…,RNf,同时替换节点RNi接收从替换节点RN1, -, RNi^1, RNi+1,…,RNf发来的各一个失效块,一一对应地记为RBratstel^i,…,RRRR...RR-^-^rowstep+1-l, i ^-^rowstep+i+l, i ,^-^rowstep+f, i(6)替换节点RNi将在步骤(5)中从其他替换节点接收到的f-Ι个失效块写入本地磁盘; (7)替换节点RNi将自身条带号的基准值rowstep加f; (8)替换节点RNi判断是否已恢复所有条块,若是,则返回步骤(2),否则过程结束。
2.根据权利要求1所述的交叉重构方法,其特征在于,条块B1,…,Bk可以是数据块,也可以是冗余块。
3.根据权利要求1所述的交叉重构方法,其特征在于,水平编码算法包括CRS和VRS算法。
4.根据权利要求1所述的交叉重构方法,其特征在于,步骤(3)具体为,第i个替换节点RNi取row的值为rowstep+i,然后依次取j=l,..., f,分别计算出f个失效块"RR..."RRjAurowsl:ep+i,I,,ivi^rOwstep+!, f °
全文摘要
本发明公开了一种基于纠删码集群存储系统的交叉重构方法,包括第i个替换节点RNi将自身条带号的基准值rowstep初始化为0,替换节点RNi向集群中任意k个存活节点发出请求,获取这k个存活节点的第rowstep+i个条块,分别记为B1,…,Bk,替换节点RNi使用条块B1,…,Bk计算出属于集群的第rowstep+i个条带的f个失效块,分别记为RBrowstep+i,1,…,RBrowstep+i,f,替换节点RNi将失效块RBrowstep+i,i写入本地磁盘,成为本地的第rowstep+i个条块。本发明能够降低网络带宽开销和加快重构速度。
文档编号G06F11/14GK103106124SQ20121059129
公开日2013年5月15日 申请日期2012年12月29日 优先权日2012年12月29日
发明者黄建忠, 曹强, 谢长生, 黄思倜, 张峰豪 申请人:华中科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1