一种阵列式存储系统的编码容错方法与流程

文档序号:12477437阅读:190来源:国知局
本发明属于计算机信息存储
技术领域
,具体是一种用于任意多节点的阵列式存储系统的编码容错方法。
背景技术
:随着网络和服务器的迅速成长,数据的容量越来越大,数据的重要性和安全性也更加得到重视。为了应对由数据量的快速增长而带来的数据存储可靠性问题,同时也为了提高数据访问的并发效率和降低成本,通常有效的做法是使用多个存储节点共同构建一个存储系统,该存储系统通常是基于网络的分布式存储系统,其雏形可以追溯到集中式的RAID(RedundantArrayofInexpensiveDisk,廉价冗余磁盘阵列)系统。RAID技术的提出,是希望用多块小型磁盘按照一定条件组合成一块大容量的逻辑硬盘,在多块硬盘中按照一定规则,如分条、分块、交叉存取等方式对数据和校验数据进行各种组合处理,用冗余数据的方式提高可靠性,使得单个硬盘发生故障时不会影响数据的正常访问,从而保证重要数据的安全;另外也希望以此种多块小型磁盘按一定条件组合成大容量的逻辑磁盘,替代昂贵的单块大容量硬盘,从而降低数据储存费用。虽然当前单个硬件设备的稳定性已经较高,但是对于由众多节点构成的分布式存储系统,节点故障事件仍然会频繁发生。尤其在数据量巨大的情况下,单个节点平均失效概率一定的情况下,总的节点数目增加就意味着一个系统在任意时间段内可能同时失效的节点数目也随之增长;黑客攻击或操作失误等突发行为也可能造成一个存储系统中多个节点同时失效。采用常见的基于镜像备份的可靠性增强策略虽然提高了存储系统的可靠性,但显然需要浪费巨大的存储空间,随着容错能力提升而存储效率不断下降、更新成本不断增加。技术实现要素:本发明的目的就是针对现有技术的不足,提供一种用于任意多节点的阵列式存储系统的编码容错方法,能够有效提高容错能力。为实现上述目的,本发明所述阵列式存储系统的编码容错方法的具体技术方案为:所述阵列存储系统由n个数据节点和k个校验节点构成,每个节点同一个条带中的每个条块包含m个元素纵向排列,m为大于2的正整数,每个元素由一个比特表示,形成一个m*(n+k)的阵列,数据节点存储的元素为数据元素阵列,校验节点存储的元素为校验元素阵列;所述方法的具体步骤为:S1、设存储系统所需最大容错数量为err,则err,m,n需要满足如下条件:n>=m*err-err+1;S2、对数据元素阵列内每个元素进行二维编号,即用D(i,j)表示数据元素阵列的第i行第j个元素;对于校验元素阵列中的每个元素按照列优先进行一维编号,即用C(h)表示校验元素阵列中的第h个元素;基于已知的数据元素进行err轮的校验元素计算,每一轮进行n次计算,产生n个校验元素,校验元素的计算公式为:以上式中,x、y表示第x轮的第y次码链部署,1<=x<=err,1<=y<=n,其中j可由公式(二)计算得出:以上公式(二)中,%为取模运算,为上取整数;每一次的计算所涉及的所有数据元素及校验元素构成一个校验链;S3、当有不大于err个节点发生错误时,该节点上所有元素称为失效元素,遍历所有校验链,寻找仅有一个失效元素的校验链,对该链条上所有非失效元素进行异或运算,其结果就是该失效元素的值,重复遍历校验链计算失效元素,直至找回所有失效元素。所述节点包括但不限于PC、服务器或磁盘。以上方法执行步骤S3可以看出,本方法针对的错误类型为节点错误,即一旦某节点出现任意错误就认为该节点的数据全部不再可靠或全部丢失,该方法适用于任意多节点的阵列式存储。本发明的有益效果是提供了一种阵列式存储系统的编码容错方法,能够提高存储系统的可靠性,适于公司或机构等数据量大且对数据稳定性要求高的情况,能够广泛的应用于服务器系统中。附图说明附图用来提供对本发明的进一步理解,并不构成对本发明的限制。图1为本发明适用的多节点存储系统的逻辑结构示意图。具体实施方式下面结合实施例,对本发明的实施作进一步的描述。如图1所示,一个阵列存储系统由n个数据节点和k个校验节点构成,每个节点可以是但不限于是一台PC、服务器或磁盘;将每个节点分为数目相等的多个存储区域,称为条块,每个节点上对应的条块组成条带;每个条带可以采用不同的存储方式。设某条带内,每个条块包含有m个元素,m为3,每个元素由一个比特表示;将3个元素纵向排列,则形成一个3*(n+k)的阵列。S1、设存储系统所需最大容错数量为err,则err,m,n需要满足如下条件:n>=m*err-err+1=3*3-3+1=7,取n为7;数据元素阵列的尺寸为3*7;假设数据元素阵列中各元素值如下所示:110010101010001110111S2、对数据节点的条块内每个元素进行二维编号,即用D(i,j)表示数据元素阵列的第i行第j个元素;对于校验元素阵列中的每个元素按照列优先进行一维编号,即用C(h)表示校验元素阵列中的第h个元素;基于已知的数据元素进行3轮的校验元素计算,每一轮进行7次计算,产生7个校验元素,采用公式(一)计算:以上式中,x、y表示第x轮的第y次码链部署,1<=x<=err,1<=y<=n,为D(i,j)的异或运算,其中j可由公式(二)计算得出:以上公式(二)中,%为取模运算,为上取整数;详细地,各校验元素值计算过程如下:第x=1轮:第y=1次计算,即C(1)=1,本次计算所涉及的所有数据元素及校验元素构成一个校验链,即D(1,1)、D(2,2)、D(3,3)、C(1)构成一个校验链;第y=2次计算,即C(2)=1,本次计算D(1,2)、D(2,3)、D(3,4)、C(2)构成一个校验链;依次得出校验元素C(3)=0+1+1=0;C(4)=0+0+1=1;C(5)=1+0+1=0;C(6)=0+0+1=1;C(7)=1+0+1=0以及校验链。第x=2轮:第y=1次计算即C(8)=0,本次计算所涉及的D(1,1)、D(2,7)、D(3,6)、C(8)构成一个校验链;第y=2次计算,即C(9)=0,本次计算D(1,2)、D(2,1)、D(3,7)、C(9)构成一个校验链;依次得出校验元素C(10)=0+1+1=0;C(11)=0+0+1=1;C(12)=1+1+1=1;C(13)=0+0+0=0;C(14)=1+0+1=0以及校验链;第x=3轮:第y=1次计算即C(15)=0,本次计算所涉及的D(1,1)、D(2,3)、D(3,5)、C(15)构成一个校验链;第y=2次计算,即C(16)=1,本次计算所涉及的D(1,2)、D(2,4)、D(3,6)、C(16)构成一个校验链;依次得出校验元素C(17)=0+0+1=1;C(18)=0+0+1=1;C(19)=1+0+1=0;C(20)=0+0+1=1以及校验链;直至第x=err=3轮y=n=7次计算,即C(21)=0,本次计算所涉及的D(1,7)、D(2,2)、D(3,4)、C(21)构成一个校验链。按列优先一维排列出校验元素C(h)阵列如下:即:110001010010110101010最终整个存储阵列如下所示:110010111000100101000100101111101110101010S3、当有不大于err个节点发生错误时,该节点上所有元素称为失效元素;本实施例中,假设3个节点发生错误,如第1、3、9个节点发生错误,则1、3、9列上的数据全部丢失,即元素D(1,1)、D(2,1)、D(3,1),元素D(1,3)、D(2,3)、D(3,3),元素C(4)、C(5)、C(6)失效,如下表:x1x01011x00010x1x10001x01011x1x01110x01010数据恢复:遍历所有校验链,寻找仅有一个失效元素的校验链,对该链条上所有非失效元素进行异或运算,其结果就是该失效元素的值,重复遍历校验链计算失效元素,直至找回所有数据,过程如下所示:首先找到仅有一个失效元素的校验链D(1,3)、D(2,4)、D(3,5)、C(3),则D(1,3)=1^1^0=0;赋值如下表所示:x1001011x00010x1x10001x01011x1x01110x01010重复遍历校验链找到仅有一个失效元素的校验链D(1,2)、D(2,3)、D(3,4)、C(2),则D(2,3)=1^0^1=1;继续重复遍历校验链找到仅有一个失效元素的校验链D(1,1)、D(2,7)、D(3,6)、C(8),则D(1,1)=0^1^0=1;继续重复遍历校验链依次计算失效元素D(3,3)=1、D(2,1)=0、D(3,1)=1、C(4)=1、C(5)=0、C(6)=1,最终所有失效数据完全恢复。本发明在当有不大于err个节点发生错误时,能够找回所有失效元素,有效提高存储系统的可靠性。以上结合对本发明进行了示例性描述,显然本发明具体实现并不受上述方式的限制,只要采用了本发明的方法构思和技术方案进行的各种非实质性的改进,或未经改进将本发明的构思和技术方案直接应用于其它场合的,均在本发明的保护范围之内。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1