CN105518996A - 一种基于二进制域里德所罗门码的数据编解码方法 - Google Patents

一种基于二进制域里德所罗门码的数据编解码方法 Download PDF

Info

Publication number
CN105518996A
CN105518996A CN201480038232.4A CN201480038232A CN105518996A CN 105518996 A CN105518996 A CN 105518996A CN 201480038232 A CN201480038232 A CN 201480038232A CN 105518996 A CN105518996 A CN 105518996A
Authority
CN
China
Prior art keywords
data block
code
checking
original data
node
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
Application number
CN201480038232.4A
Other languages
English (en)
Other versions
CN105518996B (zh
Inventor
李挥
侯韩旭
陈俊
朱兵
李硕彦
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SHENZHEN CESTBON TECHNOLOGY Co Ltd
Original Assignee
SHENZHEN CESTBON TECHNOLOGY Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by SHENZHEN CESTBON TECHNOLOGY Co Ltd filed Critical SHENZHEN CESTBON TECHNOLOGY Co Ltd
Publication of CN105518996A publication Critical patent/CN105518996A/zh
Application granted granted Critical
Publication of CN105518996B publication Critical patent/CN105518996B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic 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/1515Reed-Solomon codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/3761Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 using code combining, i.e. using combining of codeword portions which may have been transmitted separately, e.g. Digital Fountain codes, Raptor codes or Luby Transform [LT] codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/611Specific encoding aspects, e.g. encoding by means of decoding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/615Use of computational or mathematical techniques
    • H03M13/616Matrix operations, especially for generator matrices or check matrices, e.g. column or row permutations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Probability & Statistics with Applications (AREA)
  • General Physics & Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Algebra (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

本发明涉及分布式存储系统领域,尤其涉及一种基于二进制域里德所罗门码(Binary?Reed-Solomon?Code,简为BRS码)的数据编解码方法,包括以下步骤:(A)原始数据构建二进制域里德所罗门码;(B)更新二进制域里德所罗门码;(C)重构二进制域里德所罗门码;所述步骤(A)、步骤(B)以及步骤(C)中的运算均采用异或运算。本发明的有益效果是:通过该方法大大提高了数据上传和下载的速率,很大程度上减少了系统操作复杂度(如元数据更新、更新后的数据广播等);在实际的分布式存储系统中具有很高的应用价值和发展潜力。

Description

一种基于二进制域里德所罗门码的数据编解码方法
【技术领域】
本发明涉及分布式存储系统领域,尤其涉及一种基于二进制域里德所罗门码的数据编解码方法。
【背景技术】
随着计算机网络应用的迅速发展,网络信息数据量变得越来越大,海量信息存储变得尤为重要,持续增长的数据存储压力带动着整个存储市场的快速发展;分布式存储以其高性价比、低初期投资、按需付费等优越的特点日益成为当今大数据存储的主流技术。分布式存储系统的存储结点失效已经成为一种常态,当系统所部署的存储结点变得不可靠时,必须引入冗余来提高结点失效时的可靠性,引入冗余最简单的方法就是对原始数据直接备份,直接备份虽然简单但是其存储效率和系统可靠性不高,而通过编码引入冗余的方法可以提高其存储效率;因此分布式存储的高概率可用性、可靠性以及安全性等均是分布式存储系统的关键技术问题。在目前的存储系统中,编码方法一般采用MDS码,MDS码可以达到存储空间效率的最佳,一个(n,k)MDS纠删码需要将一个原始文件分成k个大小相等的模块,并通过线性编码生成n个互不相关的编码模块,由n个结点存储不同的模块,并满足MDS属性(n个编码模块中任意k个就可重构原始文件)。
当存储系统中的存储结点失效时,为了保持存储系统的冗余量,需要恢复该失效结点存储的数据并将该数据存储在新结点中,该过程称为修复过程。在修复过程中,里德所罗门码首先需要下载k个存储结点的数据并恢复出原始数据,之后为新结点编码出失效结点的存储数据。而当原始数据出现改动时,为了维持数据的一致,需要对冗余的校验数据块进行更改,这个过程称为更新过程。
RDP码,全称RowDiagonalParityCode,是一种简单的纠删码(引自论文ReferencesP.Corbettetal.“Rowdiagonalparityfordoublediskfailurecorrection,”4thUsenixConf.onFileandStorageTech.,SanFrancisco,2004)。它不需要使用有限域或者生成矩阵,只是按行和按泛对角线进行异或计算,生成两个校验数据块,构成了一种带有2个校验数据块的纠删码;但是RDP码更新复杂度偏高和不可拓展。
论文[JamesS.Plank,"OptimizingCauchyReed-SolomonCodesforFault-TolerantNetworkStorageApplications"NetworkComputingandApplications,2006.]提出的柯西里德所罗门码(CauchyReed-SolomonCode,简称CRS码)是当前最常用的里德所罗门编码之一,已经被广泛用于分布式存储系统中,例如在HDFS中就提供了一套基于CRS编码的分布式存储系统。但是CRS依然存在着一些缺陷,首先,使用0-1生成矩阵,虽然能大大降低编解码复杂度,但实际上,它的解码复杂度却不是最优的,还存在许多纠删码,比如DRP编码,它们的解码复杂度要优于CRS。其次,它用于编解码的有限域二进制矩阵还是比较复杂,散乱无章的0和1使得编解码难以更进一步优化。然后,也是因为编码复杂度目前还比较高,使得数据更新时,需要分析各种不同的情况,也使得编码复杂度比较高。
【发明内容】
为了解决现有技术中的问题,本发明提供了一种基于二进制域里德所罗门码的数据构造、重构及更新方法,解决现有技术中主要针对传统的存储装置系统结构比较复杂,采用的编码方式结点数据存储量大,在编码解码更新过程中所需要计算复杂性高的问题,达到保证系统的冗余度,有效地减少了数据更新时的计算量,降低了编解码过程中的计算复杂度,并提高结点失效后修复过程的有效性(包括计算开销和修复时间)的目的。
本发明提供了一种基于二进制域里德所罗门码的数据编解码方法,包括以下步骤:包括以下步骤:(A)原始数据构建二进制域里德所罗门码;(B)更新二进制域里德所罗门码;(C)重构二进制域里德所罗门码;所述步骤(A)、步骤(B)以及步骤(C)中的运算均采用异或运算。
作为本发明的进一步改进,所述原始数据包括k个长度为Lbit原始的数据块,记为si=si,1si,2...si,L,i=0,1,2,...,k-1;校验数据块ma通过如下方式给出:校验数据块ma唯一的标识符为 ID a = ( r 0 a , r 1 a , ... , r k - 1 a ) = ( 0 , a , 2 a , ... , ( k - 1 ) a ) , a = 0 , 1 , 2 , ... , n - k - 1. ; 原始的数据块和校验数据块是线性独立的;原始的数据块被存放在系统结点中,校验数据块被存放在校验结点中。
作为本发明的进一步改进,所述步骤(A)中进一步包括:(A1)原始数据分块,将原始数据B平均分割成k个数据块,每个数据块有Lbit数据,记为S=(s0,s1,...,sk-1);(A2)构建校验数据块M=(m0,m1,...,mn-k-1),其中,表示在原始数据块sj前面添加的“0”的比特数,从而形成校验数据块mi;其中 ( r 0 a , r 1 a , r 2 a , ... , r k - 1 a ) = ( 0 , a , 2 a , ... , ( k - 1 ) a ) , a = 0 , 1 , ... , n - k - 1. ; (A3)节点存储数据进行分发,将原始数据块和校验数据块共计N块发送到N个节点上;每个结点存储数据,结点Ni(i=0,1,...,n-1)存储的数据为s0,s1,s2,...,sk-1,m0,m1,m2,...,mn-k-1,校验数据块通过异或运算获取。
作为本发明的进一步改进,所述步骤(B)中进一步包括:(B1)新的原始数据块分块,将更新后的文件进行分块,分成新的k个原始数据块;(B2)将新的原始数据块和对应的旧的原始数据块进行比较,算出每个块的变化量;(B3)判断每个块是不是发生改变,若发生改变,每个校验数据块根据冗余符号,在对应的位置上加上变化量,完成编码的更新;若没有发生改变则不进行任何操作。
作为本发明的进一步改进,所述步骤(C)中进一步包括:收集任意k个结点上的原始数据块和/或校验数据块,通过循环迭代进行异或计算完成解码。
本发明的有益效果是:通过该方法大大提高了数据上传和下载的速率,很大程度上减少了系统操作复杂度(如元数据更新、更新后的数据广播等);在实际的分布式存储系统中具有很高的应用价值和发展潜力;二进制域里德所罗门码(即BRS码)不仅拥有最优的编解码速度,同时也拥有最快的更新速度。面对庞大的数据量更新,BRS能以最快的速度完成更新,在最短的时间内完成任务,节省时间和资源,既能减少成本的消耗又能达到一种良好的用户体验。
【附图说明】
图1是本发明基于二进制域里德所罗门码的框架图。
图2是本发明构造二进制域里德所罗门码的流程示意图。
图3是本发明更新二进制域里德所罗门码的流程示意图。
【具体实施方式】
下面结合附图说明及具体实施方式对本发明进一步说明。
传统的里德所罗门码构造都是基于有限域GF(q),为了减小里德所罗门的复杂性,我们提出了一种基于二进制域的里德所罗门码(BinaryReed-SolomonCode,简为BRS码);我们知道,对于k个原始数据块(长度为Lbit),不妨令si,j表示数据块si中第j个bit的值,则可记为si=si,1si,2...si,L,i=0,1,2,...,k-1。难点在于成功找到n-k个独立的校验数据块,使得n个数据块(包括原始数据块和校验数据块)中的任意k个数据块是线性独立的。一般情况下,我们把满足以上条件的数据块称为(n,k)独立。
如取一个文件S={s0,s1},包含两个原始数据块s0、s1。明显可以看出,运用异或编码,存在三个线性独立的数据块然而,这并不能满足分布式存储系统的要求。如果我们在原始数据块s0头部添加一个比特“0”,在原始数据块s1尾部添加一个比特“0”。记变动后的原始数据块为si(ri),其中ri是在原始数据块si头部添加的比特数。就上述三个数据块而言,变动后的原始数据块和校验数据块是线性独立的。
如之前所述,k个原始的数据块(长度为Lbit),记为si=si,1si,2...si,L,i=0,1,2,...,k-1。校验数据块ma通过如下方式给出:校验数据块ma唯一的标识符为 ID a = ( r 0 a , r 1 a , ... , r k - 1 a ) .
标识符ID构造:
对于任意整数k的编码,校验数据块ma唯一的标识可以通过如下方式得到:
ID a = ( r 0 a , r 1 a , ... , r k - 1 a ) = ( 0 , a , 2 a , ... , ( k - 1 ) a ) , a = 0 , 1 , 2 , ... , n - k - 1.
则通过上述编码方式编码出的n个数据块{s0,s1,...,sk-1,m0,m1...,mn-k-1}是线性独立的。例如,当k=4,n=9时,编码标识相应地为ID0=(0,0,0,0),ID1=(0,1,2,3),ID2=(0,2,4,6),ID3=(0,3,6,9),ID4=(0,4,8,12).整个编码框架如图1所示。
BRS码构造过程:
通常,参数为(n,k)的里德所罗门码包含n个结点,记为{N0,N1,...,Nn-1}。BRS码应用于包含n个结点的系统中,每个结点各存储1个原始数据块或校验数据块。一个文件被平均分成的k个原始数据块,被存储在其中k个结点中,这k个结点被称为系统结点。另外,编码而成的n-k个校验数据块,被存放在其余的n-k个结点上,这些结点被称为校验结点。
BRS码的构造步骤如图2所示:
1)将原始数据B平均分割成k个数据块,每个数据块有Lbit数据,记为
S=(s0,s1,...,sk-1)。
2)构建校验数据块:
M = ( m 0 , m 1 , ... , m n - k - 1 ) , m i = Σ j = 0 n - k - 1 s j ( r j i ) , i = 0 , 1 , ... , k - 1.
其中,表示在原始数据块sj前面添加的“0”的比特数,从而形成校验数据
块mi通过如下方式给出:
( r 0 a , r 1 a , r 2 a , ... , r k - 1 ′ ) = ( 0 , a , 2 a , ... , ( k - 1 ) a ) , a = 0 , 1 , ... , n - k - 1.
3)每个结点存储数据,结点Ni(i=0,1,...,n-1)存储的数据为s0,s1,s2,...,sk-1,m0,m1,m2,...,mn-k-1
举个简单的例子,假如现在n=6,k=3,则有ID0=(0,0,0),ID1=(0,1,2),ID2=(0,2,4)。每个原始数据块为si=si,1si,2...si,L,i=0,1,2,...,k-1,而每个校验数据块为mi=mi,1mi,2...mi,L,i=0,1,2,...,n-k-1.
可以得到校验数据块的计算过程如下:
m 0 = s 0 ( 0 ) ⊕ s 1 ( 0 ) ⊕ s 2 ( 0 )
s0,1 s0,2 s0,3 s0,4 s0,5 s0,6 0 0 0 0
s1,1 s1,2 s1,3 s1,4 s1,5 s1,6 0 0 0 0
s2,1 s2,2 s2,3 s2,4 s2,5 s2,6 0 0 0 0
m0,1 m0,2 m0,3 m0,4 m0,5 m0,6 m0,7 m0,8 m0,9 m0,10
m 1 = s 0 ( 0 ) ⊕ s 1 ( 1 ) ⊕ s 2 ( 2 )
s0,1 s0,2 s0,3 s0,4 s0,5 s0,6 0 0 0 0
0 s1,1 s1,2 s1,3 s1,4 s1,5 s1,6 0 0 0
0 0 s2,1 s2,2 s2,3 s2,4 s2,5 s2,6 0 0
m1,1 m1,2 m1,3 m1,4 m1,5 m1,6 m1,7 m1,8 m1,9 m1,10
m 2 = s 0 ( 0 ) ⊕ s 1 ( 2 ) ⊕ s 2 ( 4 )
s0,1 s0,2 s0,3 s0,4 s0,5 s0,6 0 0 0 0
0 0 s1,1 s1,2 s1,3 s1,4 s1,5 s1,6 0 0
0 0 0 0 s2,1 s2,2 s2,3 s2,4 s2,5 s2,6
m2,1 m2,2 m2,3 m2,4 m2,5 m2,6 m2,7 m2,8 m2,9 m2,10
BRS码更新过程:
当原始数据发生更改时,为了维持数据一致性,需要对校验数据块进行更新。在编码过程中,每个校验数据块由右式计算得到。假如S=(s0,s1,...,sk-1)都被更改成了S′=(s′0,s′1,...,s′k-1),先计算出增量 Δ S = S ′ ⊕ S = ( s 0 ⊕ s 0 ′ , s 1 ⊕ s 1 ′ , ... , s k - 1 ⊕ s k - 1 ′ ) = ( Δs 0 , Δs 1 , ... , Δs k - 1 ) . 校验数据块的增量为
Δm i = m i ′ ⊕ m i = Σ j = 0 n - k - 1 ( s j ′ ( r j i ) ⊕ s j ( r j i ) ) = Σ j = 0 n - k - 1 Δs j ( r j i ) .
假如只有sj发生改变而其他的都保持不变,即Δsj不全为0,而其他的全部为0,那就有所以对于每一个mi,如果S中有1个bit发生了改变,每个mi中只需要对应地改变1个bit就能完成更新。这就达到了最优的更新复杂度。
BRS码的更新过程如图3表示:
1)将更新后的文件进行分块,分成新的k个原始数据块。
2)将新的原始数据块和对应的旧的原始数据块进行比较,算出每个块的变化量Δs
3)判断每个块是不是发生改变,即判断变化量Δs是否全为0。
4)对不发生改变的块,不进行任何操作。
5)对发生改变的块,每个校验数据块根据冗余符号,在对应的位置上加上变化量Δs,完成编码的更新。
BRS码重构过程:
与通常的里德所罗门编码不同,BRS的编解码只采用了简单的异或计算,可以做到完全地不涉及有限域的乘法计算。重构数据时,需要收集任意k个数据块。如果有原始数据块损坏了,就需要利用校验数据块进行解码计算了。
下面以一个例子说明BRS码的重构过程。假如现在有2个原始数据块s0,s1,可以生成两个校验数据块构成(n=4,k=2)的BRS编码。重构时,需要收集2个结点上的数据块。假如其中一个是原始数据块而另一个是校验数据块,那根据可以直接异或得到另一个原始数据块。假如两个数据块都是校验数据块,假设各个数据块的第j个bit的值分别为s0,j,s1,j,m0,j,m1,j,根据编码过程,有m1,1=s0,1 m 0 , j = s 0 , j ⊕ s 1 , j , m 1 , j + 1 = s 0 , j + 1 ⊕ s 1 , j , j ≥ 1 , 通过循环迭代进行异或计算,就可以解出s0,s1中所有的数据,完成解码。
前面编码时,介绍了BRS码在n=6,k=3的编码过程。假如3个原始数据块全部损坏,要使用3个校验数据块进行解码。我们可以利用编码时的关系:
m2,1=s0,1,m2,2=s0,2,
m 1 , 1 = s 0 , 1 , m 1 , 2 = s 0 , 2 ⊕ s 1 , 1
直接得到s0,1,s0,2,s1,1。然后由下列关系
m 0 , i = s 0 , i ⊕ s 1 , i ⊕ s 2 , i m 1 , i + 2 = s 0 , i + 2 ⊕ s 1 , i + 1 ⊕ s 2 , i m 2 , i + 4 = s 0 , i + 4 ⊕ s 1 , i + 2 ⊕ s 2 , i 其中i≥1
得到迭代公式
s 0 , i = m 2 , i ⊕ s 1 , i - 2 ⊕ s 2 , i - 4 s 1 , i - 1 = m 1 , i ⊕ s 0 , i ⊕ s 2 , i - 2 s 2 , i - 1 = m 0 , i - 1 ⊕ s 0 , i - 1 ⊕ s 1 , i - 1 其中i≥2,并且s1,b=s2,b=0,(b≤0)
根据上面的迭代公式,每循环一次,就能算出3个bit的值(s0,s1,s2中都能得到一个bit)。每个原始数据块长度为Lbit,所以重复L次后,就能解出原始数据块中的所有未知的bit。这就完成了数据的重构。
2.3BRS码性能评估
2.3.1编码计算复杂度
RDP码,有2个校验数据块,第一个校验数据块是k个原始数据块通过异或运算得到,每个数据块长度为Lbit,则需要(k-1)L异或运算。而第二个校验数据块是泛对角线上k个数据块的异或得到,也需要(k-1)L异或运算。所以RDP的编码复杂度是最优的。
CRS编码,有一个称为w的分组数量,未经过任何优化的编码需要大约异或计算,由于经过优化,平均每个校验数据块的异或计算量可以达到大约但实际上因为w≥log2n,通常有w≥4(n≥9),所以编码时,每个校验数据块的异或运算要大于(k-1)L。CRS的编码复杂度没有达到最优。
对于BRS码,系统总共有(n-k)个校验数据块,每个校验数据块是k个原始数据块通过异或运算得到。因此,计算每个校验数据块编码需要(k-1)L异或运算。BRS的编码复杂度也是最优的。
2.3.2解码计算复杂度
RDP码是通过迭代解码的,本身不涉及有限域计算。假设原始数据块故障的数量为r(r≤2),那重构时所需要的异或计算量为r(k-1)Lbit。
CRS使用了二进制矩阵,避免了有限域计算,加快了计算速度。但解码由二进制矩阵决定,平均解码时的异或数量是大约由于通常w>3,CRS码也无法做到解码最优。
BRS码像RDP码一样,也是通过迭代解码的,本身不涉及有限域计算。假设原始数据块故障的数量为r,(r≤n-k),那重构时所需要的异或计算量就是r(k-1)L。
2.3.3更新计算复杂度
DRP虽然编码和解码都能达到最优,但更新时却比较麻烦。每当原始数据有1个bit改变时,按行异或得到的校验数据块只需要更新1个bit,而按泛对角线异或得到的校验数据块需要依赖原始数据块和按行异或得到的校验数据块,它需要更新2个bit。所以每次更新1bit时,平均每个校验数据块需要更新1.5bit。
CRS的编码过程经过优化,但更新过程却很难优化。CRS的更新复杂度和它的二进制生成矩阵紧密联系在一起。平均来说,每次更新1bit,每个校验数据块需要更新大约
BRS的更新过程跟它的编码过程差不多。在编码时,因为原始数据的每一个bit只需要引用一次,如果原始数据中有一个bit发生了改变,每个校验数据块中只需要对应地改变1个bit就能完成更新。相比于RDP和CRS,BRS有着更优越的更新复杂度。同时,BRS已经达到了最优的更新复杂度。
下面是本文引用的编码的复杂度比较
BRS码相比传统里德所罗门码,最大的优势在于其大大减小了编解码过程中计算复杂度,使用了简单易于实施的异或运算,并且避免了有限域复杂的运算。传统里德所罗门码的构造基于有限域GF(q),编解码过程中设计到的有限域加法、减法以及乘法。有限域的运算虽然理论研究比较成熟,但实际运用起来比较繁琐、时间消耗大,明显不能符合当今分布式存储系统快速可靠的设计指标。BRS码则不同,编解码的运算仅仅限于快速的异或运算,大大提高了数据上传和下载的速率,很大程度上减少了系统操作复杂度(如元数据更新、更新后的数据广播等)。在实际的分布式存储系统中具有很高的应用价值和发展潜力。BRS码不仅拥有最优的编解码速度,同时也拥有最快的更新速度。面对庞大的数据量更新,BRS能以最快的速度完成更新,在最短的时间内完成任务,节省时间和资源,既能减少成本的消耗又能达到一种良好的用户体验。
BRS码可以保证像其他的里德所罗门码结点存储数据量小。BRS码还具有的MDS属性能让系统能够容纳多个结点故障,而不引起数据的丢失。同时BRS码可以实现结点精确修复,即系统修复后的数据与结点丢失的数据完全一致,这使得BRS码易于实施、修复及更新代价低。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。

Claims (5)

1.一种基于二进制域里德所罗门码(BinaryReed-SolomonCode,简为BRS码)的数据编解码方法,其特征在于:包括以下步骤:(A)原始数据构建二进制域里德所罗门码;(B)更新二进制域里德所罗门码;(C)重构二进制域里德所罗门码;所述步骤(A)、步骤(B)以及步骤(C)中的运算均采用异或运算。
2.根据权利要求1所述的基于二进制域里德所罗门码的数据编解码方法,其特征在于:所述原始数据包括k个长度为Lbit原始的数据块,记为si=si,1si,2...si,L,i=0,1,2,...,k-1;校验数据块ma通过如下方式给出:校验数据块ma唯一的标识符为 ID a = ( r 0 a , r 1 a , ... , r k - 1 a ) = ( 0 , a , 2 a , ... , ( k - 1 ) a ) , a = 0 , 1 , 2 , ... , n - k - 1. ; 原始的数据块和校验数据块是线性独立的;原始的数据块被存放在系统结点中,校验数据块被存放在校验结点中。
3.根据权利要求2所述的基于二进制域里德所罗门码的数据编解码方法,其特征在于:所述步骤(A)中进一步包括:(A1)原始数据分块,将原始数据B平均分割成k个数据块,每个数据块有Lbit数据,记为S=(s0,s1,...,sk-1);(A2)构建校验数据块M=(m0,m1,...,mn-k-1),其中,表示在原始数据块sj前面添加的“0”的比特数,从而形成校验数据块mi;其中 ( r 0 a , r 1 a , r 2 a , ... , r k - 1 a ) = ( 0 , a , 2 a , ... , ( k - 1 ) a ) , a = 0 , 1 , ... , n - k - 1. ; (A3)节点存储数据进行分发,将原始数据块和校验数据块共计n块发送到n个节点上;每个结点存储数据,结点Ni(i=0,1,...,n-1)存储的数据为s0,s1,s2,...,sk-1,m0,m1,m2,...,mn-k-1,校验数据块通过异或运算获取。
4.根据权利要求1所述的基于二进制域里德所罗门码的数据编解码方法,其特征在于:所述步骤(B)中进一步包括:(B1)新的原始数据块分块,将更新后的文件进行分块,分成新的k个原始数据块;(B2)将新的原始数据块和对应的旧的原始数据块进行比较,算出每个块的变化量;(B3)判断每个块是不是发生改变,若发生改变,每个校验数据块根据冗余符号,在对应的位置上加上变化量,完成编码的更新;若没有发生改变则不进行任何操作。
5.根据权利要求1所述的基于二进制域里德所罗门码的数据编解码方法,其特征在于:所述步骤(C)中进一步包括:收集任意k个结点上的原始数据块和/或校验数据块,通过循环迭代进行异或计算完成解码。
CN201480038232.4A 2014-12-16 2014-12-16 一种基于二进制域里德所罗门码的数据编解码方法 Active CN105518996B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2014/093964 WO2016058262A1 (zh) 2014-12-16 2014-12-16 一种基于二进制域里德所罗门码的数据编解码方法

Publications (2)

Publication Number Publication Date
CN105518996A true CN105518996A (zh) 2016-04-20
CN105518996B CN105518996B (zh) 2019-07-23

Family

ID=55725058

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480038232.4A Active CN105518996B (zh) 2014-12-16 2014-12-16 一种基于二进制域里德所罗门码的数据编解码方法

Country Status (3)

Country Link
US (1) US20160285476A1 (zh)
CN (1) CN105518996B (zh)
WO (1) WO2016058262A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107135264A (zh) * 2017-05-12 2017-09-05 成都优孚达信息技术有限公司 用于嵌入式设备的数据编码方法
CN108347250A (zh) * 2017-01-23 2018-07-31 合肥高维数据技术有限公司 适用于少量冗余里德-所罗门码的快速编码方法及设备
CN108762973A (zh) * 2018-04-17 2018-11-06 华为技术有限公司 存储数据的方法和存储设备
CN114142871A (zh) * 2021-12-03 2022-03-04 北京得瑞领新科技有限公司 一种可提前终止迭代的增量计算的ldpc校验方法及装置

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111858128B (zh) * 2019-04-26 2023-12-29 深信服科技股份有限公司 一种纠删码数据修复方法、装置、设备及存储介质
CN111585581B (zh) * 2020-05-14 2023-04-07 成都信息工程大学 一种基于二元域运算且支持任意码距的编码方法
CN111585582B (zh) * 2020-05-14 2023-04-07 成都信息工程大学 一种基于阵列运算且码距自由确定的编码方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030051201A1 (en) * 2001-09-10 2003-03-13 Filippo Brenna Coding/decoding process and device, for instance for disk drives
US7065698B2 (en) * 2001-03-03 2006-06-20 Lg Electronics Inc. Method and apparatus for encoding/decoding reed-solomon code in bit level
CN102761340A (zh) * 2012-08-10 2012-10-31 济南微晶电子技术有限公司 一种bch并行编码电路

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5291496A (en) * 1990-10-18 1994-03-01 The United States Of America As Represented By The United States Department Of Energy Fault-tolerant corrector/detector chip for high-speed data processing
US7127668B2 (en) * 2000-06-15 2006-10-24 Datadirect Networks, Inc. Data management architecture
JP3427382B2 (ja) * 2001-10-26 2003-07-14 富士通株式会社 エラー訂正装置及びエラー訂正方法
US8209577B2 (en) * 2007-12-20 2012-06-26 Microsoft Corporation Optimizing XOR-based codes
US20150142863A1 (en) * 2012-06-20 2015-05-21 Singapore University Of Technology And Design System and methods for distributed data storage
US9613656B2 (en) * 2012-09-04 2017-04-04 Seagate Technology Llc Scalable storage protection
WO2014131148A1 (zh) * 2013-02-26 2014-09-04 北京大学深圳研究生院 一种最小存储再生码的编码和存储节点修复方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7065698B2 (en) * 2001-03-03 2006-06-20 Lg Electronics Inc. Method and apparatus for encoding/decoding reed-solomon code in bit level
US20030051201A1 (en) * 2001-09-10 2003-03-13 Filippo Brenna Coding/decoding process and device, for instance for disk drives
CN102761340A (zh) * 2012-08-10 2012-10-31 济南微晶电子技术有限公司 一种bch并行编码电路

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108347250A (zh) * 2017-01-23 2018-07-31 合肥高维数据技术有限公司 适用于少量冗余里德-所罗门码的快速编码方法及设备
CN108347250B (zh) * 2017-01-23 2021-08-03 合肥高维数据技术有限公司 适用于少量冗余里德-所罗门码的快速编码方法及设备
CN107135264A (zh) * 2017-05-12 2017-09-05 成都优孚达信息技术有限公司 用于嵌入式设备的数据编码方法
CN107135264B (zh) * 2017-05-12 2020-09-08 成都优孚达信息技术有限公司 用于嵌入式设备的数据编码方法
CN108762973A (zh) * 2018-04-17 2018-11-06 华为技术有限公司 存储数据的方法和存储设备
CN114142871A (zh) * 2021-12-03 2022-03-04 北京得瑞领新科技有限公司 一种可提前终止迭代的增量计算的ldpc校验方法及装置
CN114142871B (zh) * 2021-12-03 2022-06-24 北京得瑞领新科技有限公司 一种可提前终止迭代的增量计算的ldpc校验方法及装置

Also Published As

Publication number Publication date
US20160285476A1 (en) 2016-09-29
WO2016058262A1 (zh) 2016-04-21
CN105518996B (zh) 2019-07-23

Similar Documents

Publication Publication Date Title
CN105518996A (zh) 一种基于二进制域里德所罗门码的数据编解码方法
US9647698B2 (en) Method for encoding MSR (minimum-storage regenerating) codes and repairing storage nodes
US9722637B2 (en) Construction of MBR (minimum bandwidth regenerating) codes and a method to repair the storage nodes
US10270468B2 (en) Method for file updating and version control for linear erasure coded and network coded storage
CN107086870B (zh) 修复多节点失效的mds阵列码编码以及解码方法
WO2016058289A1 (zh) 一种能修复多个节点失效的mds纠删码
CN104219019A (zh) 编码方法及编码设备
CN105335150A (zh) 纠删码数据的快速编解码方法和系统
CN103336785A (zh) 一种基于网络编码的分布式存储方法及其装置
CN111149093A (zh) 分布式存储系统的数据编码、解码及修复方法
CN103746774A (zh) 一种高效数据读取的容错编码方法
CN106484559A (zh) 一种校验矩阵的构造方法及水平阵列纠删码的构造方法
CN101567697A (zh) 一种速率兼容的低密度奇偶校验码编码方法和编码器
US10187084B2 (en) Method of encoding data and data storage system
Esmaili et al. Efficient updates in cross-object erasure-coded storage systems
CN101478312A (zh) 一种ldpc译码器及其实现译码的方法
WO2017041232A1 (zh) 一种二进制循环码的编解码框架
WO2017041233A1 (zh) 一种功能修复再生码的编码和存储节点修复方法
CN105681425B (zh) 基于分布式存储系统的多节点修复方法及其系统
CN108512553B (zh) 一种降低带宽消耗的截短再生码构造方法
CN115113816A (zh) 一种纠删码数据处理系统、方法、计算机设备及介质
Liu et al. Z codes: General systematic erasure codes with optimal repair bandwidth and storage for distributed storage systems
Mazumdar et al. Local recovery properties of capacity achieving codes
US20200112324A1 (en) Polar coding and decoding for correcting deletion and/or insertion errors
WO2016042090A1 (en) Method and apparatus for processing data in storage systems

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant