CN111078460A - 一种快速纠删码计算方法 - Google Patents
一种快速纠删码计算方法 Download PDFInfo
- Publication number
- CN111078460A CN111078460A CN201911128043.7A CN201911128043A CN111078460A CN 111078460 A CN111078460 A CN 111078460A CN 201911128043 A CN201911128043 A CN 201911128043A CN 111078460 A CN111078460 A CN 111078460A
- Authority
- CN
- China
- Prior art keywords
- data
- matrix
- exclusive
- lost
- row
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/154—Error and erasure correction, e.g. by using the error and erasure locator or Forney polynomial
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1148—Structural properties of the code parity-check or generator matrix
- H03M13/116—Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices
- H03M13/1168—Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices wherein the sub-matrices have column and row weights greater than one, e.g. multi-diagonal sub-matrices
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1148—Structural properties of the code parity-check or generator matrix
- H03M13/118—Parity check matrix structured for simplifying encoding, e.g. by having a triangular or an approximate triangular structure
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/19—Single error correction without using particular properties of the cyclic codes, e.g. Hamming codes, extended or generalised Hamming codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/27—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes using interleaving techniques
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/29—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2903—Methods and arrangements specifically for encoding, e.g. parallel encoding of a plurality of constituent codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/373—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with erasure correction and erasure determination, e.g. for packet loss recovery or setting of erasures for the decoding of Reed-Solomon codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/61—Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
- H03M13/615—Use of computational or mathematical techniques
- H03M13/616—Matrix operations, especially for generator matrices or check matrices, e.g. column or row permutations
Abstract
本发明涉及数据保护技术领域,公开了一种快速纠删码计算方法。包括以下步骤:S1)将原始数据进行拆分,构建原始编码矩阵M;S2)获得横向异或编码矩阵M1;S3)获得纵向异或编码矩阵M2;S4)根据横向异或编码矩阵M1和纵向异或编码矩阵M2获得异或编码矩阵M3;S5)对横向异或编码矩阵M1进行数据位置变换,获得存储矩阵M4;S6)判断存有存储矩阵M4最后一列数据的存储节点是否发生损坏;S7)根据损失节点位置一对损失数据进行恢复;S8)根据损失节点位置二对损失数据进行恢复。本发明仅采用异或这一种运算便获得了所有校验数据,当存储节点中任意两个节点损坏,都能够通过未损坏节点中的数据进行恢复,运算快速,计算效率高。
Description
技术领域
本发明涉及数据保护技术领域,尤其涉及一种快速纠删码计算方法。
背景技术
针对传统数据冗余保护技术在大容量磁盘存储系统中所表现出的不足,以分布式、大规模、大容量磁盘存储为特点的海量存储系统中出现了一种更加高效的数据冗余技术——纠删码。纠删码起源于通信传输领域,目前逐渐出现在大规模存储系统中,特别是分布式存储环境。纠删码技术基本思想是将一份数据划分为k块原始的数据,基于k块原始数据冗余计算获得m块冗余数据。对于这k+m块数据,其中任意的m块元素出错时,存储系统均可以通过重构算法恢复出原来的k块数据,纠删码冗余保护技术解决了传统冗余保护技术不适于分布式生产存储系统的问题。
纠删码可以用于有大量数据和任何需要容错的应用程序或系统中,比如磁盘阵列系统、数据网格、分布式存储应用程序、对象存储或归档存储。基于纠删码的方法与传统的镜像、副本技术相比,具有冗余度低、磁盘利用率高等优点。目前,纠删码的一个常见的使用案例是基于对象的云存储,其针对云计算、大数据业务对海量存储系统的多样性、大规模存储容量需求,能够较好的适应分布式存储应用环境。
纠删码是一种有效的数据容错方法,一般表示为:n=k+m,变量k代表原始数据的数量,变量m代表故障后添加的提供保护的校验数据的数量,变量n代表纠删码编码后创建的数据的总数量。它花费较小的数据冗余代价,实现了数据的高可靠性,在分布式存储等系统中广泛应用。但通用的纠删码算法,需要使用矩阵乘法运算,算法相对复杂,运算量大,且不易将计算硬件化。在m=1时,可以通过k个原始数据的异或运算算出m=1个校验数据,例如,有k个原始数据:D1、D2、D3、…、Dk-1、Dk,将这些数据逐一进行异或运算,得到校验数C,C=D1xorD2xorD3...Dk-1xorDk,xor表示异或符号,然后将原始数据和校验数据分别存储,当任何一个数据遗失或损坏时,能够通过其他数据的异或运算进行恢复。由于异或运算简单高效,又易于硬件实现,是一种高效的纠删码实现方式,但这种方式无法直接实现m>1的情况,只能生成一个校验数据。本发明提供了一种方法,可以通过异或运算实现m=2的数据校验效果。
发明内容
本发明的目的在于为了解决现有纠删码实现方式采用异或运算无法生成两个校验数据的问题,提供一种快速纠删码计算方法,本发明在两个存储节点均发生损坏时只需要采用异或运算就能生成两个校验数据,恢复出所有损失数据,运算快速,计算效率高。
为了实现上述目的,本发明采用的技术方案如下:
一种快速纠删码计算方法,包括以下步骤:
S1)获取需要存储的原始数据,将原始数据进行拆分,构建原始编码矩阵M;
S2)对原始编码矩阵M进行横向异或运算,获得横向异或编码矩阵M1;
S3)对原始编码矩阵M进行纵向异或运算,获得纵向异或编码矩阵M2;
S4)根据横向异或编码矩阵M1和纵向异或编码矩阵M2获得异或编码矩阵M3;
S5)对横向异或编码矩阵M1进行数据位置变换,获得存储矩阵M4,将存储矩阵M4中每一列数据存入存储节点;
S6)判断存有存储矩阵M4最后一列数据的存储节点是否发生损坏,若是,则进入步骤S7);若否,则进入步骤S8);
S7)获得损失节点位置一,根据损失节点位置一对损失数据进行恢复;
S8)获得损失节点位置二,根据损失节点位置二对损失数据进行恢复。
本发明的步骤依次对应于原始数据分拆、横向异或运算校验码、纵向异或运算校验码、原始数据重新排列、重新排列后的数据与校验码数据组合、组合后的数据再按列分组后按分组将数据存储到对应的存储节点中。当两个存储节点损坏时,判断判断存有存储矩阵M4最后一列数据的存储节点是否发生损坏,将未损坏节点中的数据读出,针对存储节点发生损坏位置的不同,进行不同的逆向操作,从而恢复出遗失的数据,本发明仅采用异或运算就能恢复出两个存储节点损坏时的损失数据,运算效率高。
进一步的,步骤S1)中将原始数据进行拆分,构建原始编码矩阵M,包括步骤:
S11)将原始数据拆分为n个数据块,每个数据块均有k2个数据;
S12)设置拆分周期,按照拆分周期将每个数据块中的k2个数据进行拆分,每个拆分周期有k个数据;
将原始数据拆分为多个数据块,每块数据的数量为k*k个数据,按k*k的矩阵排列,形成编码矩阵M。
进一步的,步骤S2)中对原始编码矩阵M进行横向异或运算,获得横向异或编码矩阵M1,包括步骤:
S21)对原始编码矩阵M中的每一行进行异或运算,获得横向校验值集Cr={Cr1,Cr2,…,Crx,…,Crk-1,Crk},Crx表示原始编码矩阵M的第x行横向校验值,Crx=Dx1xorDx2xorDx3…Dxk-1xorDxk,xor为异或符号;
通过进行横向异或运算,得到每行的横向校验值,然后将每一行的横向校验值增加到矩阵M中,增加一列,使矩阵M变为k行k+1列的矩阵,也就是k行k+1列的横向异或编码矩阵M1。
进一步的,步骤S3)中对原始编码矩阵M进行纵向异或运算,获得纵向异或编码矩阵M2,包括步骤:
S31)对原始编码矩阵M中的每一列进行异或运算,获得纵向校验值集Cc={Cc1,Cc2,…,Ccx,…,Cck-1,Cck},Ccx表示原始编码矩阵M的第x列纵向校验值,Ccx=D1xxorD2xxorD3x…Dk-1xxorDkx;
通过进行纵向异或运算,得到每列的纵向校验值,然后将每一列的纵向校验值增加到矩阵M中,增加一行,使矩阵M变为k+1行k列的矩阵,也就是k+1行k列的横向异或编码矩阵M2。
进一步的,步骤S4)中根据横向异或编码矩阵M1和纵向异或编码矩阵M2获得异或编码矩阵M3,包括步骤:
S41)对纵向校验值集Cc中的所有元素进行异或运算,得到总检验值C=Cc1xorCc2xorCc3…Cck-1xorCck;
S42)获得k+1行k+1列的异或编码矩阵
对所有的纵向校验值进行异或运算,得到的结果为总检验值C,再构建k+1行k+1列的异或编码矩阵M3。
进一步的,步骤S41)中对横向校验值集Cr中的所有元素进行异或运算,得到总检验值C=Cr1xorCr2xorCr3…Crk-1xorCrk。
总检验值C也等于所有横向校验值的异或运算结果。
进一步的,步骤S5)中对横向异或编码矩阵M1进行数据位置变换,获得存储矩阵M4,包括步骤:
S51)对横向异或编码矩阵M1中的每一行数据设置循环左移的位数,第x行循环左移的位数为(x-1)*z,z为单个数据的位宽,获得异或编码矩阵M1中每一行循环左移的位数;
对横向异或编码矩阵M1进行数据位置变换,形成错位排列,将横向异或编码矩阵M1中任意一个数据的坐标设为(x′,y′),x′为数据在横向异或编码矩阵M1中的横坐标,y′为数据在横向异或编码矩阵M1中的纵坐标,则错位排列后数据的位置为(x0,y0),x0=x′,y0=((y′-(x′-1))<=0)*(k+1)+(y′-(x′-1)),<=表示将y′-(x′-1)与0进行比较,若y′-(x′-1)≠0,则((y′-(x′-1))<=0)取值为0,若y′-(x′-1)=0,则((y′-(x′-1))<=0)取值为1。错位排列的过程相当于把横向异或编码矩阵M1按行整体将数据循环左移(行序号-1)*单数据位宽,第1行循环左移的位数为0,第2行循环左移的位数为(2-1)*z,第x行循环左移的位数为(x-1)*z。进行错位排列后再将纵向校验值集Cc中的各个元素增加到错位排列矩阵M5的最后一列,获得存储矩阵M4。
进一步的,步骤S5)中将存储矩阵M4中每一列存入存储节点中,包括步骤:
S55)获取k+2个存储节点,将k+2个存储节点记为{Node1,Node2,...,Nodek+1,Nodek+2},Nodek+1表示第k+1个存储节点;
S56)将k+2个数据组分别存入与数据组的下标相对应的存储节点中,第k+1个存储节点存储第k+1个数据组。
本发明按列将存储矩阵M4中的数据进行分组,每一列为一组,共k+2个数据组,分别为G1、G2、G3......Gk+1和Gk+2,比如G1中的数据为D11、D22、…、DXX、…、Dkk,G2中的数据为D12、D23、…、DXX+1、…、Crk,以此类推,最后Gk+2中的数据为Cc1、Cc2、…、Ccx、…、Cck,每组数据统一处理,对数据进行分布式存储,共需k+2个存储节点,分别为Node1、Node2、Node3......Nodek+1和Nodek+2,将每组数据存储到下标对应的存储节点上,完成数据编码和存储。
进一步的,步骤S7)中获得损失节点位置一,节点位置一为前k+1个存储节点中的任意一个存储节点以及第k+2个存储节点;
根据损失节点位置一对损失数据进行恢复,包括步骤:
S71)获取存储节点中的未损失数据,按照异或编码矩阵M3的排列方式对未损失数据进行排列,获得解码矩阵M6,获取解码矩阵M6中每一行损失数据的位置;
S72)对解码矩阵M6第i行的未损失数据按行逐一进行横向异或运算,获得第i行进行横向异或运算的值Ci,将值Ci填充到第i行损失数据的位置上,i∈{1,2,...,k},依次恢复解码矩阵M6的前k行所有损失数据,获得前k行恢复矩阵M7;
S73)对前k行恢复矩阵M7的第j列进行纵向异或运算,将第j列进行纵向异或运算的值填充到解码矩阵M6的第k+1行第j列,j∈{1,2,...,k,k+1},恢复解码矩阵M6的第k+1行的所有损失数据。
当有两个存储节点损坏时,判断存有存储矩阵M4最后一列数据的存储节点是否发生损坏,也就是第k+2个存储节点是否损坏,如果损坏,则获取存储节点中的未损失数据,存储矩阵4中的每一个元素都能在异或编码矩阵M3对应的坐标找到相应的值,按照异或编码矩阵M3的排列方式对未损失数据进行排列,获得解码矩阵M6,解码矩阵M6即异或编码矩阵M3。当第k+2个存储节点损坏时,解码矩阵M6的最后一行数据全部损坏,解码矩阵M6的前k行中每一行都有一个数据损坏,先将解码矩阵M6的前k行中每一行都进行横向异或运算,然后再将每一行进行横向异或运算的值填充到该行的损失数据位置处,依次恢复解码矩阵M6的前k行所有损失数据。再利用解码矩阵M6的前k行数据构成前k行恢复矩阵M7,对恢复矩阵M7进行纵向异或运算,恢复解码矩阵M6的第k+1行的所有损失数据。
进一步的,步骤S8)获得损失节点位置二,所述损失节点位置二为前k+1个存储节点中的任意两个存储节点;
根据损失节点位置二对损失数据进行恢复,包括步骤:
S81)获取存储节点中的未损失数据,按照异或编码矩阵M3的排列方式对未损失数据进行排列,获得解码矩阵M8,获取解码矩阵M8中损失数据的位置;
S82)将解码矩阵M8第k+1行的前k个数据进行横向异或运算,获得总校验值C,将总校验值C填充到解码矩阵M6的第k+1行第k+1列;
S83)获取解码矩阵M8中仅有1个损失数据的列,选取仅有1个损失数据的列中的任意一列y,获取任意一列y中的损失数据的位置P1,所述损失数据的位置P1包括行序号m1和列序号n1;
S84)对任意一列y中的未损失数据逐一进行纵向异或运算,将进行纵向异或运算的值填充到任意一列y中损失数据的位置P1;
S85)获取第m1行损失数据的位置P2,将第m1行的未损失数据逐一进行横向异或运算,将进行横向异或运算的值填充到第m1行中损失数据的位置P2,所述损失数据的位置P2包括行序号m1和列序号n2;
S86)重复步骤S83),依次恢复解码矩阵M8中的所有损失数据。
当有两个存储节点损坏时,判断存有存储矩阵M4最后一列数据的存储节点是否发生损坏,若存储节点损坏的位置为损失节点位置二,也就是前k+1个存储节点中的任意两个存储节点发生损坏,则表明解码矩阵M8的前k行均有两个损失数据,解码矩阵M8的第k+1行即最后一行数据的前k个数据无损失,通过计算将解码矩阵M8第k+1行的前k个数据进行横向异或运算,获得总校验值C,再填充到解码矩阵M8对应的位置上,至此,解码矩阵M8中有两列只有一个损失数据,其他列上都有两个损失数据,考虑只有一个损失数据的列。步骤S83)中,获取解码矩阵M8中仅有1个损失数据的列,假设两个已损坏的存储节点的序号分别是a和b,则获得在解码矩阵M8中只有一个损失数据的列序号分别为ya和yb,ya=((a-1))<=0)*(k+1)+(a-1),yb=((b-1))<=0)*(k+1)+(b-1),<=表示将位于<=符号前的值与位于<=符号后的值进行比较,若两值不相同,则取位于<=符号后的值作为计算结果,若两值相同,则取值为1。比如在计算ya时,<=表示将(a-1)与0进行比较,若(a-1)≠0,则((a-1))<=0)取值为0,若(a-1)=0,则((a-1))<=0)取值为1。任取其中一列,先进行纵向异或运算,将纵向异或运算的值填充到这个列的损失数据所在的位置上,然后找到这个损失数据的行,对这个损失数据的行的未损失数据逐一进行横向异或运算,将横向异或运算的值填充到这个损失数据的行对应的另外一个损失数据所在的位置,然后重复步骤S83),依次恢复恢复解码矩阵M8中的所有损失数据。
本发明的有益效果是:仅采用异或这一种运算便获得了所有校验数据,当存储节点中任意两个节点损坏,都能够通过未损坏节点中的数据进行恢复,运算快速,计算效率高。
附图说明
图1是本发明实施例一的一种快速纠删码计算方法流程图。
图2是本发明实施例一根据损失节点位置一恢复损失数据流程图。
图3是本发明实施例一根据损失节点位置二恢复损失数据流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不用于限定本发明。
实施例一,假设原始数据数量k=6,则m=2,n=k+m,n=8。共有8台计算机,通过网络连接,组成一个8节点的集群,节点名称分别为:Node1、Node2、Node3、Node4、Node5、Node6、Node7、Node8。
如图1所示,一种快速纠删码计算方法,包括以下步骤:
S1)获取需要存储的原始数据,将原始数据进行拆分,构建原始编码矩阵M,包括步骤:
S11)将原始数据拆分为n个数据块,每个数据块均有36个数据;
S12)设置拆分周期,按照拆分周期将每个数据块中的36个数据进行拆分,每个拆分周期有6个数据;
S2)对原始编码矩阵M进行横向异或运算,获得横向异或编码矩阵M1,包括步骤:
S21)对原始编码矩阵M中的每一行进行异或运算,获得横向校验值集Cr={Cr1,Cr2,Cr3,Cr4,Cr5,Cr6},Cr4表示原始编码矩阵M的第4行横向校验值,Cr4=D41xorD42xorD43xorD44xorD45xorD46,xor为异或符号;
S3)对原始编码矩阵M进行纵向异或运算,获得纵向异或编码矩阵M2,包括步骤:
S31)对原始编码矩阵M中的每一列进行异或运算,获得纵向校验值集Cc={Cc1,Cc2,Cc3,Cc4,Cc5,Cc6},Cc4表示原始编码矩阵M的第4列纵向校验值,Cc4=D14xorD24xorD34xorD44xorD54xorD64;
S4)根据横向异或编码矩阵M1和纵向异或编码矩阵M2获得异或编码矩阵M3,包括步骤:
S41)对纵向校验值集Cc中的所有元素进行异或运算,得到总检验值C=Cc1xorCc2xorCc3xorCc4xorCc5xorCc6;
S42)获得7行7列的异或编码矩阵
S5)对横向异或编码矩阵M1进行数据位置变换,获得存储矩阵M4,将存储矩阵M4中每一列数据存入存储节点,包括步骤:
S51)对横向异或编码矩阵M1中的每一行数据设置循环左移的位数,第x行循环左移的位数为(x-1)*z,z为单个数据的位宽,获得异或编码矩阵M1中每一行循环左移的位数;
S55)获取8个存储节点,将8个存储节点记为{Node1,Node2,Node3,Node4,Node5,Node6,Node7,Node8},Node8表示第8个存储节点;
S56)将8个数据组分别存入与数据组的下标相对应的存储节点中,第8个存储节点存储第8个数据组。
S6)判断存有存储矩阵M4最后一列数据的存储节点是否发生损坏,若是,则进入步骤S7);若否,则进入步骤S8);
S7)校验码数量m=2,即最多允许两个存储节点损坏,当损坏的存储节点包含Node8时,假设Node8和Node3损坏,则损失的数据如表一所示。
表1当损坏节点包含Node8时的损失数据表
表1
根据损失节点位置一即Node8和Node3,对损失数据进行恢复,如图2所示,包括步骤:
S71)获取存储节点中的未损失数据,按照异或编码矩阵M3的排列方式对未损失数据进行排列,获得解码矩阵M6,获取解码矩阵M6中每一行损失数据的位置,解码矩阵M6中每一行损失数据的位置如表2所示。
表2解码矩阵M6中每一行损失数据表
表2S72)对解码矩阵M6第i行的未损失数据按行逐一进行横向异或运算,获得第i行进行横向异或运算的值Ci,将值Ci填充到第i行损失数据的位置上,i∈{1,2,...,6},依次恢复解码矩阵M6的前6行所有损失数据,获得前6行恢复矩阵M7;
S73)对前6行恢复矩阵M7的第j列进行纵向异或运算,将第j列进行纵向异或运算的值填充到解码矩阵M6的第7行第j列,j∈{1,2,...,7},恢复解码矩阵M6的第7行的所有损失数据。
从表2可以看出,解码矩阵M6的前6行,每行只有1个数据损失,第7行全部数据损失。对解码矩阵M6前6行,每行的未损失数据进行异或运算,则可以恢复出每行的损失数据,每行的损失数据分别为D13、D24、D35、D46、Cr5和D61,将这些恢复后的数据填充到解码矩阵M6的相应位置。对解码矩阵M6前6行的损失数据进行填充后,解码矩阵M6每一列中只有最后一个数据损失,对每一列的未损失数据进行异或运算,则可以逐个恢复每一列的损失数据,每一列的损失数据分别为Cc1、Cc2、Cc3、Cc4、Cc5、Cc6和C,将恢复后的数据填充到相应位置,最后损失数据全部恢复完毕。
S8)当损坏节点不包含Node8时,假设损失节点位置为Node3和Node5,则损失的数据如表3所示。
表3当损坏节点不包含Node8时的损失数据表
表3
根据损失节点位置二即Node3和Node5,对损失数据进行恢复,如图3所示,包括步骤:
S81)获取存储节点中的未损失数据,按照异或编码矩阵M3的排列方式对未损失数据进行排列,获得解码矩阵M8,获取解码矩阵M8中损失数据的位置,解码矩阵M8中每一行损失数据的位置如表4所示。
表4解码矩阵M8中每一行损失数据表
表4S82)将解码矩阵M8第7行的前6个数据进行横向异或运算,获得总校验值C,将总校验值C填充到解码矩阵M6的第6行第6列;
S83)获取解码矩阵M8中仅有1个损失数据的列,选取仅有1个损失数据的列中的任意一列y,获取任意一列y中的损失数据的位置P1,所述损失数据的位置P1包括行序号m1和列序号n1;
S84)对任意一列y中的未损失数据逐一进行纵向异或运算,将进行纵向异或运算的值填充到任意一列y中损失数据的位置P1;
S85)获取第m1行损失数据的位置P2,将第m1行的未损失数据逐一进行横向异或运算,将进行横向异或运算的值填充到第m1行中损失数据的位置P2,所述损失数据的位置P2包括行序号m1和列序号n2;
S86)重复步骤S83),依次恢复解码矩阵M8中的所有损失数据。
从表4可以看出,第7行数据是完整的,前面6行中的每一行均有2个损失数据,第2列和第4列有1个损失数据,其它列均有2个损失数据。选取第2列,通过此列剩余的未损失数据恢复出D52,然后通过D52所在的第5行中的未损失数据,恢复出数据Cr5,以此类推,找到只有一个损失数据的行或列,恢复出的数据的顺序可以为:D52、Cr5、Cr3、D35、D15、D13、D63、D61、D41、D46、D26、D24,最后损失数据全部恢复完毕。
通过采用本发明公开的上述技术方案,得到了如下有益的效果:
本发明仅采用异或这一种运算便获得了所有校验数据,当存储节点中任意两个节点损坏,都能够通过未损坏节点中的数据进行恢复,运算快速,计算效率高。
以上仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。
Claims (10)
1.一种快速纠删码计算方法,其特征在于,包括以下步骤:
S1)获取需要存储的原始数据,将原始数据进行拆分,构建原始编码矩阵M;
S2)对原始编码矩阵M进行横向异或运算,获得横向异或编码矩阵M1;
S3)对原始编码矩阵M进行纵向异或运算,获得纵向异或编码矩阵M2;
S4)根据横向异或编码矩阵M1和纵向异或编码矩阵M2获得异或编码矩阵M3;
S5)对横向异或编码矩阵M1进行数据位置变换,获得存储矩阵M4,将存储矩阵M4中每一列数据存入存储节点;
S6)判断存有存储矩阵M4最后一列数据的存储节点是否发生损坏,若是,则进入步骤S7);若否,则进入步骤S8);
S7)获得损失节点位置一,根据损失节点位置一对损失数据进行恢复;
S8)获得损失节点位置二,根据损失节点位置二对损失数据进行恢复。
6.根据权利要求5所述的一种快速纠删码计算方法,其特征在于,步骤S41)中对横向校验值集Cr中的所有元素进行异或运算,得到总检验值C=Cr1xorCr2xorCr3…Crk-1xorCrk。
9.根据权利要求8所述的一种快速纠删码计算方法,其特征在于,步骤S7)中获得损失节点位置一,所述节点位置一为前k+1个存储节点中的任意一个存储节点以及第k+2个存储节点;
根据损失节点位置一对损失数据进行恢复,包括步骤:
S71)获取存储节点中的未损失数据,按照异或编码矩阵M3的排列方式对未损失数据进行排列,获得解码矩阵M6,获取解码矩阵M6中每一行损失数据的位置;
S72)对解码矩阵M6第i行的未损失数据按行逐一进行横向异或运算,获得第i行进行横向异或运算的值Ci,将值Ci填充到第i行损失数据的位置上,i∈{1,2,...,k},依次恢复解码矩阵M6的前k行所有损失数据,获得前k行恢复矩阵M7;
S73)对前k行恢复矩阵M7的第j列进行纵向异或运算,将第j列进行纵向异或运算的值填充到解码矩阵M6的第k+1行第j列,j∈{1,2,...,k,k+1},恢复解码矩阵M6的第k+1行的所有损失数据。
10.根据权利要求1或9所述的一种快速纠删码计算方法,其特征在于,步骤S8)获得损失节点位置二,所述损失节点位置二为前k+1个存储节点中的任意两个存储节点;
根据损失节点位置二对损失数据进行恢复,包括步骤:
S81)获取存储节点中的未损失数据,按照异或编码矩阵M3的排列方式对未损失数据进行排列,获得解码矩阵M8,获取解码矩阵M8中损失数据的位置;
S82)将解码矩阵M8第k+1行的前k个数据进行横向异或运算,获得总校验值C,将总校验值C填充到解码矩阵M6的第k+1行第k+1列;
S83)获取解码矩阵M8中仅有1个损失数据的列,选取仅有1个损失数据的列中的任意一列y,获取任意一列y中的损失数据的位置P1,所述损失数据的位置P1包括行序号m1和列序号n1;
S84)对任意一列y中的未损失数据逐一进行纵向异或运算,将进行纵向异或运算的值填充到任意一列y中损失数据的位置P1;
S85)获取第m1行损失数据的位置P2,将第m1行的未损失数据逐一进行横向异或运算,将进行横向异或运算的值填充到第m1行中损失数据的位置P2,所述损失数据的位置P2包括行序号m1和列序号n2;
S86)重复步骤S83),依次恢复解码矩阵M8中的所有损失数据。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911128043.7A CN111078460B (zh) | 2019-11-18 | 2019-11-18 | 一种快速纠删码计算方法 |
PCT/CN2020/129231 WO2021098665A1 (zh) | 2019-11-18 | 2020-11-17 | 一种纠删码计算方法 |
US17/199,093 US11303302B2 (en) | 2019-11-18 | 2021-03-11 | Erasure code calculation method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911128043.7A CN111078460B (zh) | 2019-11-18 | 2019-11-18 | 一种快速纠删码计算方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111078460A true CN111078460A (zh) | 2020-04-28 |
CN111078460B CN111078460B (zh) | 2020-08-25 |
Family
ID=70311207
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911128043.7A Active CN111078460B (zh) | 2019-11-18 | 2019-11-18 | 一种快速纠删码计算方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11303302B2 (zh) |
CN (1) | CN111078460B (zh) |
WO (1) | WO2021098665A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111711484A (zh) * | 2020-06-01 | 2020-09-25 | 深圳市南科信息科技有限公司 | 一种基于可见光成像定位的led-id高效编码算法 |
CN112000512A (zh) * | 2020-08-14 | 2020-11-27 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据修复方法及相关装置 |
WO2021098665A1 (zh) * | 2019-11-18 | 2021-05-27 | 北京中电兴发科技有限公司 | 一种纠删码计算方法 |
CN113258938A (zh) * | 2021-06-03 | 2021-08-13 | 成都信息工程大学 | 一种单节点故障快速修复纠删码的构造方法 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113504874B (zh) * | 2021-06-24 | 2023-08-29 | 中国科学院计算技术研究所 | 基于负载感知的自适应粒度纠删码编解码加速方法及系统 |
CN115473610B (zh) * | 2022-11-11 | 2023-03-24 | 蓝象智联(杭州)科技有限公司 | 一种用于安全多方计算的数据编解码方法及求交方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7093182B2 (en) * | 1999-08-02 | 2006-08-15 | Inostor Corporation | Data redundancy methods and apparatus |
CN105335150A (zh) * | 2014-08-13 | 2016-02-17 | 苏宁云商集团股份有限公司 | 纠删码数据的快速编解码方法和系统 |
CN108132854A (zh) * | 2018-01-15 | 2018-06-08 | 成都信息工程大学 | 一种可同时恢复数据元素及冗余元素的纠删码解码方法 |
US10445164B2 (en) * | 2011-11-01 | 2019-10-15 | Pure Storage, Inc. | Copying data in a dispersed storage network without replication |
US20190317858A1 (en) * | 2018-04-12 | 2019-10-17 | EMC IP Holding Company LLC | System and method for recovery of unrecoverable data with enhanced erasure coding and replication |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5369652A (en) * | 1993-06-14 | 1994-11-29 | International Business Machines Corporation | Error detection and correction having one data format recordable on record media using a diverse number of concurrently recorded tracks |
EP0823153A4 (en) * | 1995-04-27 | 1999-10-20 | Stevens Inst Technology | HIGH INTEGRITY TRANSPORT METHOD FOR TIME-CRITICAL MULTIMEDIA NETWORK APPLICATIONS |
US6367047B1 (en) * | 1998-10-20 | 2002-04-02 | Ecrix | Multi-level error detection and correction technique for data storage recording device |
US7107505B2 (en) * | 2001-03-27 | 2006-09-12 | Comtech Aha Corporation | Concatenated turbo product codes for high performance satellite and terrestrial communications |
US7613984B2 (en) * | 2001-12-28 | 2009-11-03 | Netapp, Inc. | System and method for symmetric triple parity for failing storage devices |
WO2003079556A1 (en) * | 2002-03-14 | 2003-09-25 | Helbig Walter A Sr | System and method for forward error correction |
US7467281B2 (en) * | 2004-06-10 | 2008-12-16 | Intel Corporation | Mapping data blocks to storage blocks to wrap around storage devices |
US8230316B2 (en) * | 2008-01-25 | 2012-07-24 | Nevion Usa, Inc. | Forward error correction for burst and random packet loss for real-time multi-media communication |
US8595606B1 (en) * | 2010-07-16 | 2013-11-26 | The Research Foundation Of State University Of New York | Extended row diagonal parity with optimal decoding procedure |
US9594634B2 (en) * | 2014-06-02 | 2017-03-14 | Intel Corporation | Techniques to efficiently compute erasure codes having positive and negative coefficient exponents to permit data recovery from more than two failed storage units |
CN104850468B (zh) * | 2015-05-31 | 2018-04-27 | 上海交通大学 | 基于校验矩阵的纠删码解码方法 |
US10063261B1 (en) * | 2015-10-13 | 2018-08-28 | Sorenson Ip Holdings Llc | Communication endpoints and related methods for forward error correction of packetized data |
US10230398B2 (en) * | 2016-08-19 | 2019-03-12 | Samsung Electronics Co., Ltd. | Erasure code data protection and recovery computation system and method |
US10771191B2 (en) * | 2018-03-09 | 2020-09-08 | Kencast, Inc. | System for highly reliable file delivery of using continuous FEC encoding/decoding |
CN110277131B (zh) * | 2019-05-30 | 2021-03-23 | 百富计算机技术(深圳)有限公司 | 基于nand flash存储器的校验方法、终端设备及存储介质 |
CN111078460B (zh) * | 2019-11-18 | 2020-08-25 | 北京中电兴发科技有限公司 | 一种快速纠删码计算方法 |
-
2019
- 2019-11-18 CN CN201911128043.7A patent/CN111078460B/zh active Active
-
2020
- 2020-11-17 WO PCT/CN2020/129231 patent/WO2021098665A1/zh active Application Filing
-
2021
- 2021-03-11 US US17/199,093 patent/US11303302B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7093182B2 (en) * | 1999-08-02 | 2006-08-15 | Inostor Corporation | Data redundancy methods and apparatus |
US10445164B2 (en) * | 2011-11-01 | 2019-10-15 | Pure Storage, Inc. | Copying data in a dispersed storage network without replication |
CN105335150A (zh) * | 2014-08-13 | 2016-02-17 | 苏宁云商集团股份有限公司 | 纠删码数据的快速编解码方法和系统 |
CN108132854A (zh) * | 2018-01-15 | 2018-06-08 | 成都信息工程大学 | 一种可同时恢复数据元素及冗余元素的纠删码解码方法 |
US20190317858A1 (en) * | 2018-04-12 | 2019-10-17 | EMC IP Holding Company LLC | System and method for recovery of unrecoverable data with enhanced erasure coding and replication |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021098665A1 (zh) * | 2019-11-18 | 2021-05-27 | 北京中电兴发科技有限公司 | 一种纠删码计算方法 |
US11303302B2 (en) | 2019-11-18 | 2022-04-12 | BEIJING iChinaE SCIENCE & TECHNOLOGY CO., LTD. | Erasure code calculation method |
CN111711484A (zh) * | 2020-06-01 | 2020-09-25 | 深圳市南科信息科技有限公司 | 一种基于可见光成像定位的led-id高效编码算法 |
CN112000512A (zh) * | 2020-08-14 | 2020-11-27 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据修复方法及相关装置 |
CN112000512B (zh) * | 2020-08-14 | 2022-08-02 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据修复方法及相关装置 |
CN113258938A (zh) * | 2021-06-03 | 2021-08-13 | 成都信息工程大学 | 一种单节点故障快速修复纠删码的构造方法 |
CN113258938B (zh) * | 2021-06-03 | 2021-10-08 | 成都信息工程大学 | 一种单节点故障快速修复纠删码的构造方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2021098665A1 (zh) | 2021-05-27 |
US20210273654A1 (en) | 2021-09-02 |
CN111078460B (zh) | 2020-08-25 |
US11303302B2 (en) | 2022-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111078460B (zh) | 一种快速纠删码计算方法 | |
US10146618B2 (en) | Distributed data storage with reduced storage overhead using reduced-dependency erasure codes | |
Sasidharan et al. | A high-rate MSR code with polynomial sub-packetization level | |
CN101243664B (zh) | 应用于对各类码进行编码和解码的原地变换 | |
US8928503B2 (en) | Data encoding methods, data decoding methods, data reconstruction methods, data encoding devices, data decoding devices, and data reconstruction devices | |
WO2018072294A1 (zh) | 一种校验矩阵的构造方法及水平阵列纠删码的构造方法 | |
CN105808170B (zh) | 一种能够修复单磁盘错误的raid6编码方法 | |
CN108132854B (zh) | 一种可同时恢复数据元素及冗余元素的纠删码解码方法 | |
CN105353974B (zh) | 一种适用于磁盘阵列及分布式存储系统的二容错编码方法 | |
Shahabinejad et al. | A class of binary locally repairable codes | |
CN107086870A (zh) | 修复多节点失效的mds阵列码编码以及解码方法 | |
CN112000512B (zh) | 一种数据修复方法及相关装置 | |
CN109358980B (zh) | 一种对数据更新和单磁盘错误修复友好的raid6编码方法 | |
CN112799875A (zh) | 基于高斯消元进行校验恢复的方法、系统、设备及介质 | |
CN113391946A (zh) | 一种分布式存储中的纠删码的编解码方法 | |
CN114116297B (zh) | 一种数据编码方法、装置、设备及介质 | |
US20200336157A1 (en) | Systematic and xor-based coding technique for distributed storage systems | |
CN106788455B (zh) | 一种基于包的最优局部可修复系统码的构造方法 | |
CN115454712B (zh) | 一种校验码恢复方法、系统、电子设备及存储介质 | |
WO2018029212A1 (en) | Regenerating locally repairable codes for distributed storage systems | |
CN107665152B (zh) | 一类纠删码的译码方法 | |
CN108199720B (zh) | 一种减小存储开销和提高修复效率的节点修复方法及系统 | |
WO2017041232A1 (zh) | 一种二进制循环码的编解码框架 | |
US20210055993A1 (en) | Methods and Apparatuses for Robust Data Partition And Recovery | |
CN110780813A (zh) | 一种基于二元域上子空间码的分布式存储系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |