一种适用于磁盘阵列及分布式存储系统的二容错编码方法_2

文档序号:9597120阅读:来源:国知局
校验数据计算方法的示意图,以k = 3为例;
[0027] 图2是修复单个失效磁盘方法的示意图,以k = 3、第一个磁盘失效为例;
[0028] 图中图号:D1~D3为数据盘,D4、D5为校验盘。D4为行校验,其数据块由D1、D2、 D3中位于同一行的数据块进行异或运算生成。图1中数据块上的标号给出了 D5中数据块 的计算方式:D5中的数据块由1~8编号,编号为i的数据块由D1~D4中含有编号i的 数据块进行异或运算生成,即含有同一编号的数据块全体构成一个校验集,同一校验集中 的数据块异或运算之和为0。从而校验集中的任一数据块可由此校验集中的其他数据块进 行异或运算求得。例如D5中的第一个数据块由D1中的第2个数据块、D2中的第3个数据 块和D3中的第5个数据块进行异或运算所得。图1中所标示的D5中数据的计算方法利用 了行校验盘中的数据块。
[0029] 修复磁盘D1时所需读取的数据块由图2中的阴影标出。D1中的第1、3、5、7个数 据块通过行校验修复,D1中的第2个数据块利用标号1的校验集进行修复,D1中的第4个 数据块利用标号3的校验集进行修复,D1中的第6个数据块利用标号5的校验集进行修复, D1中第8个数据块利用标号7的校验集进行修复。
【具体实施方式】
[0030] 本实施例以参数k = 3为例,第二个校验盘中数据的编码方案如下:
[0031]
[0033] 单个磁盘失效时的修复方案:
[0034] 当需要修复的是第k+2个盘(即第二个校验盘)时,需要读取所有的原始数据块, 即读取前k个盘存储的数据并按照编码方案重新生成第二个校验盘存储的数据。
[0035] 当需要修复的是第i(i〈k+2)个盘时,要读取的数据量比传统编码减少约50%,需 要从未失效盘的第i个磁盘读取的数据块下标集合民按如下方法构造:若i = k+Ι,令R i
[0036] 读取未失效盘中由下标集民指定的数据块,例如若R {1,2, 5, 6},则对于每一
个未失效盘读取其中第1、2、5、6个数据块au, a_ji2, a_ji5, a_ji6。将第j个盘中由下标集民 指定的若干数据块看作一个列向量,并记为a, I民。利用行校验修复失效盘中由下标集民指 定的数据块,即已」民=a …+a;
[0037] 接下来修复失效盘中下标不在民中的数据块,将这些数据块 看作一个 列向量并记为X。构造矩阵
,其中〇,1分别为2klR2kl列的0矩阵和单位 矩阵;对于下标i〈k,构造矩阵B1= A。令|民表示矩阵B j中行下标和列下标都属于 民的元素构成的子矩阵,令D表示矩阵B i中行下标属于R i且列下标不属于R i的元素构成 的子矩阵,根据本编码的构造方法,失效盘中下标不在民中的全部数据块X可以通过求解 以下方程得出:
[0039] 以k = 3情况下,第一个磁盘失效的情况为例:读取数据块j = 2, 3, 4, 5},利用行校验修复数据块aiil, ali3, ali5, ali7(例如aul= au+a^+au),对于数据块 ali2, ali4, ali6, aliS,根据构造方法有以下方程成立:
[0041] 从而可以按如下方式修复数据块ali2, ali4, ali6, aliS:
【主权项】
1. 一种适用于磁盘阵列及分布式存储系统的二容错编码方法,其特征在于:所述方法 包括编码方案和单个磁盘错误修复方案;所述方法除最后一个冗余节点失效的情况外,修 复单个数据节点过程中每一个正常工作的数据节点仅需读取所存储数据块的一半,并且在 传输前无需对读取的内容进行编码运算;所述方法将一个磁盘阵列划分为多个条带,每个 条带由各个磁盘中一块相同大小的存储空间组成,每个磁盘在不同条带中的校验盘与系统 盘进行轮转循环。2. 根据权利要求1所述的一种适用于磁盘阵列及分布式存储系统的二容错编码方法, 其特征在于,所述编码方案包括冗余节点所存储的校验数据生成和构造编码矩阵; 冗余节点所存储的校验数据生成方法为,设系统中共有η个磁盘,其中有k = n-2个系 统盘,令m = 2k,将待存储的原始数据划分为等长的mk个数据块,每个系统盘中存储m个数 据块的原始数据;令^ ,表示第i个盘中存储的第j个数据块;将每个盘中存储的数据看作 长度为m的列向量并记为a1= (a I i,ali2,…,alini)τ,这里上标T表示矩阵转置;第一个校验 盘采用行校验编码,即a k+1= a ,这里加法为异或运算;第二个校验盘的数据表示 为ak+2= A PfA2B2+…+Akak,其中A1, A2,…,AA m行m列的矩阵,其中的元素都取自二元有 限域;通过给出矩阵AdA2,…,Ak的构造方法来给出第二个校验盘的编码方案; 对于任意给定的参数k,采用以下算法构造编码矩阵: 第1步:令第2步:若i = k,则输出矩阵A1, A2,…,Ak;否则进行下一步; 第3步:令对于j = 1,2,…,i,4本步骤中0, I分别 为21行2 1列的0矩阵和单位矩阵; 第4步:令i - i+Ι,转到第2步。3. 根据权利要求1所述的一种适用于磁盘阵列及分布式存储系统的二容错编码方法, 其特征在于,所述单个磁盘失效的修复方案为: 当第k+2个盘,即第二个校验盘失效时,读取前k个盘存储的数据并按照编码方案重新 生成第二个校验盘存储的数据; 当第i(i〈k+2)个盘失效时,按如下步骤进行修复: 第1步:构造下标集合R1:若i = k+Ι,令R {2 k kl,2k 42,…,2k};若i〈k+l,令R1 ={(j-1) 2?, (j-1) 2彳2,…,(j-1) 2V21 11 j = 1,2,…,2k 1I ; 第2步:读取未失效盘中由下标集Ri指定的数据块,例如若Ri= {1,2, 5, 6},则对于每 一个未失效盘读取其中第1、2、5、6个数据块au, a_ji2, a_ji5, a_ji6;将第j个盘中由下标集 R1指定的若干数据块看作一个列向量,并记为a , I R1;利用行校验修复失效盘中由下标集R i 指定的数据块,即 ajRi= ajRi+ajRi+…+a; !IRdaiJRfudakJRi; 第3步:构造矩阵其中0, I分别为2k 4于2 k 1列的0矩阵和单位矩阵; 对于下标i〈k,构造矩阵Bi= A i+Bk+1; 第4步:将失效盘中下标不在R1中的数据块看作一个列向量并记为X ;令 Bj I R1表示矩阵B ;中行下标和列下标都属于R i的元素构成的子矩阵,令D表示矩阵B i中行 下标属于R1且列下标不属于R i的元素构成的子矩阵,根据本编码的构造方法,失效盘中下 标不在民中的全部数据块X可以通过求解以下方程得出: ak+21 R1 = Dx+B ! I R1 a! I RJB21 R1 a21 R1+…+Bk+11 R1 ak+11 R1。
【专利摘要】一种适用于磁盘阵列及分布式存储系统的二容错编码方法,对于任意给定的k个同样大小的存储有原始数据的节点,本发明编码生成两个冗余节点上的校验数据,使得这k+2个数据节点中任意两个损坏的情况下仍能够恢复全部原始数据。当单个数据节点损坏时,系统需要从其他数据节点读取数据并编码再生成损坏数据节点所存储的数据。本发明的主要特点为:除最后一个冗余节点失效的情况外,修复单个数据节点过程中每一个正常工作的数据节点仅需读取所存储数据块的一半,并且在传输前无需对读取的内容进行编码运算。
【IPC分类】G06F3/06, G06F11/10
【公开号】CN105353974
【申请号】CN201510641173
【发明人】王艳
【申请人】华东交通大学
【公开日】2016年2月24日
【申请日】2015年10月8日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1