[0118]if type是修复节点要求发送数据
[0119]根据head发送相应信息
[0120]在本实施例中,为了更好的说明该修复方法,假设在开始数据修复工作前的背景如下:文件以纠删码的形式存储,假设有5块文件被损坏,且经过计算后5个数据块的优先级由高到低记为a,b, c, d, e ;如图5至图10所示,对所述五个数据块进行修复的过程具体包括以下步骤:
[0121](I)第一步:管理节点检测到有5个数据块损坏。
[0122](2)第二步:根据LeDiR算法[2],管理节点为损坏的数据块分配对应的最优节点进行数据修复工作。分别是a、c数据块分配到S1存储节点进行修复,b数据块分配到S 2存储节点进行修复,d、e数据块分配到S3存储节点进行修复。
[0123](3)第三步:向存储节点S1、S2、S3发送损坏纠删码数据块的对应的相关修复信息。
[0124]信息中包含的内容如下:
[0125]1.修复该数据有关的其他纠删码信息所在的其他节点位置,及所在的存储地址等。
[0126]2.该纠删码修复算法所必需的参数信息,由该具体的修复算法所决定。
[0127](4)第四步:存储节点Sp S2, &接收到管理节点M发送的信息后,开始进行各自的数据修复。
[0128](5)第五步:经计算,存储节点S1* a数据块的修复工作的优先权高于c数据块的修复工作,所以a数据块的修复工作先进行。同理,存储节点S3*d数据块修复工作的优先权高于e数据块修复工作,d数据块先修复。
[0129](6)第六步:存储节点Sp S2, S3分别向与修复a、b、d数据块相关的数据块所在的存储节点节点发送数据修复请求。
[0130](7)第七步:存储节点集A中如果有某个节点Ai被多个需要进行修复工作的节点请求数据,按先到先响应的规则,后到的则进入请求等待。
[0131](8)第八步:接收到请求的存储节点Ai发送响应信号给存储节点集S中的对应存储节点。
[0132](9)第九步:存储节点Sp S2, S3收到节点集A中各个存储节点响应,收到一个响应则立刻再发送一个“数据发送信号”过去,令其可以发送纠删码数据块。假设由于a数据块的修复只需k个纠删码的数据块即可,当接收到第k+Ι个响应信号时则发送取消信号回去。s2、s3同理。
[0133](10)第十步:存储节点到修复a数据块的所需纠删码数据,则调用对应的纠删码算法,对a数据块进行修复工作。S2、S3同理。
[0134](11)第十一步:当存储节点S1修复好a数据块后,发送完成信号及a数据块的一些相关信息给管理节点M,以方便管理节点进行管理。S2、S3同理。
[0135](12)第十二步:存储节点Sp S3分别开始修复数据块c,e。类似重复修复步骤的第六步至第^^一步。
[0136]以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。
【主权项】
1.一种分布式数据存储系统的修复方法,其特征在于具体包括以下步骤: 步骤S1:提供一管理节点与复数个存储节点;所述管理节点用以查找所述存储节点中是否有数据损坏;所述存储节点中包括用以修复损坏数据块的存储节点集S与用以存储修复数据所需的纠删码数据的存储节点集A ; 步骤S2:所述管理节点监测查找所述分布式数据存储系统中的损坏数据块,当所述管理节点查找到损坏数据块时,采用LeDiR算法在用以修复损坏数据块的存储节点集S中为所述损坏数据块选取最优存储节点,并授权所述最优存储节点进行数据修复工作; 步骤S3:所述最优存储节点向存储节点集A请求修复所述损坏数据块所需的纠删码数据,并为所述损坏数据分配一空间,启动所述损坏数据块的修复进程,采用纠删码算法进行修复工作; 步骤S4:所述最优存储节点完成数据修复后,将数据修复情况发送给管理节点;若是修复成功,则将最优存储节点上数据发送给管理节点进行数据更新;若是失败,则所述最优存储节点对所述损坏数据块重新进行修复。2.根据权利要求1所述的一种分布式数据存储系统的修复方法,其特征在于:所述管理节点创建表T,用以记录纠删码信息元存储位置;所述管理节点创建表G,用以记录每个存储节点当前的访问量;所述管理节点包括一用以存储损坏数据块位置的链表badList,当所述管理节点采用心跳报文对所有存储节点的状态进行检测,当检测到损坏数据块时,将存储损坏数据块的存储节点添加到badlist中。3.根据权利要求1所述的一种分布式数据存储系统的修复方法,其特征在于:所述纠删码算法可记为(n,k, t, Q),用以修复损坏数据块,具体包括以下步骤: 步骤Sll:将待存入分布式数据存储系统的文件数据分为k个分片; 步骤S12:将k个分片进行冗余编码,生成n (n>k)个冗余分片,并且将所述η个冗余分片分别存储在不同的服务器节点上; 步骤S13:当进行修复损坏数据块时,从η个分片中选取t(k<t〈n)个有效分片,从每个分片上下载Q比例的存储量进行译码,恢复损坏数据块中的文件数据。4.根据权利要求1所述的一种分布式数据存储系统的修复方法,其特征在于:所述步骤S2中所述管理节点查找到损坏数据块时,若查找到的损坏数据块的数量大于I时,需对所有损坏数据块的优先数进行计算,其中所述损坏数据块的优先数量用以表示进行数据修复的先后顺序,所述优先数越低的损坏数据块,优先权越高,则越需要优先修复,反之修复顺序越靠后;所述优先数计算采用以下公式得到:数据块优先级=静态优先数+ul*冗余数-u2*该数据块被访问频率+u3*相关数据访问负载数,其中1^+1?+?= 100 %,冗余数=该数据整体的所有纠删码-最少可以修复整个数据整体的纠删码数。5.根据权利要求1所述的一种分布式数据存储系统的修复方法,其特征在于:所述用以修复损坏数据块的存储节点集S中的最优存储节点有多个修复损坏数据块的任务时,根据所述数据块优先数的大小进行排序,依次选择优先数小的损坏数据块进行修复;在选定修复一损坏数据块后,所述最优存储节点集S所述最优存储节点向存储节点集A请求修复所述损坏数据块所需的纠删码数据。6.根据权利要求5所述的一种分布式数据存储系统的修复方法,其特征在于:所需的纠删码数据包括进行纠删码算法所需要的k个其它纠删码信息元,当所述最优存储节点接收到存储节点集A中响应的纠删码信息元超过所需的k个时,则发送取消信号至所述存储节点集A,并采用纠删码算法对损坏数据块进行修复。
【专利摘要】本发明涉及一种分布式数据存储系统的修复方法,包括以下步骤:步骤S1:提供管理节点与复数个存储节点;存储节点中包括用以修复损坏数据块的存储节点集与用以存储修复数据所需的纠删码数据的存储节点集;步骤S2:管理节点监测查找系统中的损坏数据块,当管理节点查找到损坏数据块时,采用LeDiR算法选取最优存储节点,并授权最优存储节点进行数据修复工作;步骤S3:最优存储节点采用纠删码算法进行修复工作;步骤S4:最优存储节点完成数据修复后,将数据修复情况发送给管理节点。本发明依靠管理节点检测出损坏的存储节点,并基于纠删码算法进行修复,不同节点上的修复进程可并发进行,提高了存储系统的修复能力,减轻了管理服务器的负载。
【IPC分类】G06F3/06
【公开号】CN105159603
【申请号】CN201510506387
【发明人】高翔, 陈健, 赖建华, 刘志光
【申请人】福建省海峡信息技术有限公司
【公开日】2015年12月16日
【申请日】2015年8月18日