CN103703446B - 网络存储中抗拜占庭失效的数据重构、失效数据恢复方法及装置 - Google Patents

网络存储中抗拜占庭失效的数据重构、失效数据恢复方法及装置 Download PDF

Info

Publication number
CN103703446B
CN103703446B CN201280032806.8A CN201280032806A CN103703446B CN 103703446 B CN103703446 B CN 103703446B CN 201280032806 A CN201280032806 A CN 201280032806A CN 103703446 B CN103703446 B CN 103703446B
Authority
CN
China
Prior art keywords
data
matrix
storage
nodes
failure
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.)
Active
Application number
CN201280032806.8A
Other languages
English (en)
Other versions
CN103703446A (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.)
CHINA UNITED TELEVISION CO Ltd
Peking University Shenzhen Graduate School
Original Assignee
CHINA UNITED TELEVISION CO Ltd
Peking University Shenzhen Graduate School
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 CHINA UNITED TELEVISION CO Ltd, Peking University Shenzhen Graduate School filed Critical CHINA UNITED TELEVISION CO Ltd
Publication of CN103703446A publication Critical patent/CN103703446A/zh
Application granted granted Critical
Publication of CN103703446B publication Critical patent/CN103703446B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/64Hybrid switching systems
    • H04L12/6418Hybrid transport
    • 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/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Detection And Correction Of Errors (AREA)
  • Error Detection And Correction (AREA)

Abstract

本发明涉及一种网络存储中抗拜占庭失效的数据重构方法:从k个存储节点下载其所存储的编码数据和校验值,得到矩阵Y并得到CRC校验和;对矩阵Y进行错误擦除解码,得到码字C′;由码字C′得到信息序列m′并判断信息序列m′能否通过CRC校验,依据判断结果结束数据恢复或再下载两个新的节点存储的编码数据和校验值,再次得到矩阵Y和校验和,继续上述过程直到得到通过校验的信息序列m′;否则,解码失败退出。本发明还涉及一种数据恢复装置、失效数据修复方法及装置。实施本发明的网络存储中抗拜占庭失效的数据重构、失效数据恢复方法及装置,具有以下有益效果:可以抗拜占庭失效节点、数据传输有误时还有进一步的方法来恢复存储数据。

Description

网络存储中抗拜占庭失效的数据重构、失效数据恢复方法及 装置
技术领域
本发明涉及分布式网络存储领域,更具体地说,涉及一种网络存储中抗拜占庭失效的数据重构、失效数据恢复方法及装置。
背景技术
随着新的存储媒介的出现以及存储设备成本越来越低,存储成为了一种必需品。但是,对于大规模的分布式存储系统来说,可靠性的要求也越来越高。随着软硬件产品使用越来越广,宕机和拜占庭失效也越来越频繁。为了保证可靠的存储,需要在网络存储系统中增加一定的冗余。冗余可以通过一种简单的复制数据来实现,但是存储效应不高,而纠错码提供一种不同于复制的有效存储方案。一般编码方式为一个(n,k)MDS(Maximum DistanceSeparable最大距离可分离)纠错码(例如RS码(即reed-solomon codes,一种前向纠错码))。首先,用有限域Fq中的元素个数来表示数据文件的大小,B表示文件包含的原始个数。其次,使用RS码需要将一个原始文件分成k个大小相等的模块,并通过线性编码生成n个互不相关的编码模块,由n个节点存储不同的模块,并保证MDS属性,也就是一个终端用户或信宿通过下载n个存储节点中任意k个节点的编码数据就可重构原始文件。这种编码技术在提供有效的网络存储冗余中占有重要的地位,特别适合存储大的文件以及档案数据备份应用。
由于节点失效或者文件损耗,系统的冗余度会随着时间而逐渐丧失,因此需要一种装备来保证系统的可靠性和相应的容错性。文献[R.Rodrigues and B.Liskov,“HighAvailability in DHTs:Erasure Coding vs.Replication”,Workshop on Peer-to-PeerSystems(IPTPS)2005.]中提出的纠错码,在存储开销上是比较有效的,然而支持冗余恢复所需要的通信开销也比较大。在失效节点修复过程中,首先从系统中的k个存储节点中下载数据并重构原始文件;然后由原始文件再重新编码出新的模块,并存储在新节点上。该修复过程的一个缺点是:为恢复一个存储节点的数据需要下载整个数据文件B,对于修复带宽来说是一种浪费。
RS码是一种纠错码,该编码不仅可以从节点失效中恢复节点所存储的数据,也可以从拜占庭节点(节点数据被篡改)中恢复。RS码工作在m比特的符号上,所有的符号都来自有限域GF(2m)。一个(n,d)RS码是一个线性编码,参数n=2m-1,n-d=2t,其中n是一个码字的总共符号数,d是总共信息符号数,t是RS码错误纠正能力。在文献[I.S.Reed andG.Solomon,“Polynomial codes over certain finite field,”J.Soc.Indust.andAppl.Math.(SIAM),vol.8(2),pp.300-304,1960]中给出RS码的编码过程。首先,令有限域GF(2m)中的d个信息符号序列为u=[u0,u1,...,ud-1],u(x)是由u中信息符号作为系数的多项式,可以表示成:u(x)=u0+u1x+…+ud-1xd-1。其次,码字多项式c(x)相当于u(x)被编码为:c(x)=u(x)xn-d+(u(x)xn-dmodg(x))。其中g(x)是RS码的一个生成多项式,g(x)可以表示为:g(x)=(x-a)(x-a2)…(x-a2t)=g0+g1x+…+g2tx2t,其中a是有限域GF(2m)的一个生成元,gi∈GF(2m)。RS码是一个对称码,其中信息符号u0,u1,...,ud-1是多项式c(x)中的系数。RS码也可以通过将码字c看成信息序列进行编码,即c=[u(a0),u(a1),...,u(an-1)]。
RS码的解码过程相对复杂。令r(x)为所接收的多项式,r(x)=c(x)+e(x)+γ(x)=c(x)+λ(x),其中是错误多项式, γ ( x ) = Σ j = 0 n - 1 γ j x j 是擦除多项式, λ ( x ) = Σ j = 0 n - 1 λ j x j = e ( x ) + γ ( x ) 是正误表多项式。由于g(x)和c(x)有a1,a2,...a2t这些根,可以根据这些根来判断错误位置并恢复信息符号。RS码提供码字之间最大的距离,因而是一种最佳码,只要差错个数v满足一个(n,d)RS码就可进行数据恢复,其中s是擦除的数或不能复原的符号数。
图1列出了RS码解码的基本流程,第一步中的n-k=2t个伴随式主要是通过s=(s1,s2,...,s2t)=cHT计算,其中H为RS码的校验矩阵,si=r(ai)=r(ei),1≤i≤2t。第二步中,假设接受矢量中存在v(不超过t)个错误,分别位于j1,j2,...,jv,即错误多项式σ(x)=(1-β1x)(1-β2x)…(1-β2tx)=σ01x+…+σvxv,其中l=1,2,...,v反映了错误位置的情况。第三步用钱搜索解出错误多项式σ(x)的根,得到错误位置数,再由错误位置数求得错误值从而得到错误多项式e(x)。最后由c(x)=r(x)-e(x)判定码字,从而恢复信息符号。这种处理错误和擦除的解码也称作错误擦除码。在GF(2m)中,加法相当于位之间的异或操作,乘法是通过乘法表或离散的对数表进行运算。为了降低乘法操作的复杂性,可以构造一个不同的生成矩阵,将乘法操作也转换为异或操作。
再生码在修复过程通过在每个节点存储额外的符号或者访问更多的存储节点来实现带宽效益。令α为存储在每个存储节点上的有限域GF(2m)符号数,β≤α为在再生过程从每个存储节点所下载的数据量。为了恢复失效节点所存储的数据,一个新来者(即失效数据的恢复者)需要访问d个存活节点,则总共修复带宽为dβ。一般情况下,总共修复带宽少于B(而传统的RS码需要的修复带宽为整个数据文件的大小)。一个再生码不仅可以再生丢失的编码数据还可以用于重构原始信息符号。令存储节点数为n,一个(n,k,d)再生码要求至少k个节点进行原始数据恢复,至少d个节点进行数据再生,其中k≤d≤n-1。在文献[Y.Wu,A.G.Dimakis,and K.Ramchandran,“Deterministic regenerating codes fordistributed storage,”in Proc.of 45th Annual Allerton Conference on Control,Computing,and Communication,UrbanaChampaign,Illinois,September 2007]的研究结果中,表明信源和信宿之间的割集界限值必须满足公式(1): B ≤ Σ i = 0 k - 1 m i n { α , ( d - i ) β } - - - ( 1 )
在公式(1)中求出α最小值将会构成一个最小存储的再生码;求出β最小值将会构成一个最小修复带宽的再生码。在实际中,存储量α和修复带宽β不可能同时取到最小值,因此在存储和修复带宽间存在一个折中。这两个极值点分别叫做MSR码(Minimum-storageRegenerating,最小存储再生)和MBR码(Minimum-bandwidth Regenerating,最小带宽再生)。在MSR码中,α和β值可以通过先求出α的最小值,然后求出满足要求的β的最小值,如公式(2)所述: α = B / k β = B k ( k - d + 1 ) . - - - ( 2 )
在MBR码中,α和β值是先通过求出β的最小值,再求出α的最小值,如公式(3)所述: α = 2 d B k ( 2 d - k + 1 ) β = 2 B k ( 2 d - k + 1 ) . - - - ( 3 )
一个参数为(α,β,B)的(n,k,d)RS码,满足最佳的条件是:1)(α,β,B)在公式(1)中取等号;2)减小α或β值会导致新的参数不满足公式(1)。因此上述MSR码和MBR码均是最佳再生码。
本发明的编码设计中,令β=1,则公式(2)和(3)分别简化为:
α = d - k + 1 β = k ( d - k + 1 ) = k α . - - - ( 4 ) α = d β = k d - k ( k - 1 ) / 2 . - - - ( 5 )
当节点失效,有三种修复方式,分为精确修复、功能修复和系统部分精确修复。在精确修复中,失效的模块需要正确构造,恢复的信息和丢失的一样;在功能修复中,新产生的模块可以包含不同于丢失节点的数据,只要修复的系统支持MDS码属性;系统部分精确修复是精确修复和部分修复的之间的一个混合的修复模型,在这个混合模型,对于系统节点(存储未编码数据)要求必须精确恢复,对于非系统节点(存储编码模块),则进行功能修复。相比精确修复,功能修复具有以下不足:1)在存储系统中,服务器必须知道全局的编码系数,因而要求服务器必须不断更新修复节点的编码系数;2)由于编码系数的变更,系统修复函数和数据重构的解码函数均需要重新调整;3)每次修复过程均需要增加包头以更新编码系数。精确修复不需要以上操作,而且精确修复可以编码成系统码。
现有的精确再生码中,存储节点中的每个码字可以用矩阵C(n×α)的第i行表示,矩阵C的每一行均有c个符号,而矩阵C是由C=ψM求出,其中ψ为n×d的编码矩阵,M为d×α的信息矩阵。矩阵ψ是事先就确定的且独立于信息符号B。矩阵M包含了B个信息符号,其中的符号有可能是一样的。码字矩阵C的第i行可以表示为其中为编码矩阵ψ的第i行,t用来表示矩阵的转置。在该模型中,所有的符号均属于大小为q的有限域Fq。
数据重构是指客户端从任意的k个存储节点获取kα符号并解码出信息矩阵M。客户端下载的k个存储节点用{i1,i2,…,ik}表示,第j节点将信息向量传输给客户端。这样客户端可以收到数据矩阵ψDCM,其中ψDC是矩阵ψ的k行{ψi1,...,ψik}子矩阵。所以,客户端就可以利用矩阵ψ和M的特性解码出信息码字。
在失效节点的精确再生过程中,μi为长度为α的向量,它为向量ψi的一部分。为了恢复失效节点f,代替节点f的新节点需要从现存存储节点中选择d个{h1,…,hd}并各下载一个符号,这d个节点称为帮助节点,每个帮助节点传输一个符号给新节点,该符号为其存储的α个符号的内部运算,帮助节点hj传输的符号为因此新节点可以获得矩阵ψrepairf,其中ψrepair为矩阵ψ的d行子矩阵。在再生过程中,各个新节点只需要知道失效节点f的编码系数,并不需要其他的编码系数。
现有精确再生码只考虑到节点宕机失效后丢失数据的再生过程,而并没有考虑拜占庭节点的情况。对于重构以及再生的数据没有进行正确性验证,从而使得整个系统数据极易被污染。另外,在执行数据重构或再生过程中,当数据传输有误时,并没有进一步的方法来恢复存储数据。
发明内容
本发明要解决的技术问题在于,针对现有技术的上述没有考虑拜占庭节点的情况、数据传输有误时没有进一步的方法来恢复存储数据的缺陷,提供一种已考虑拜占庭节点的情况、数据传输有误时还有进一步的方法来恢复存储数据的网络存储中抗拜占庭失效的数据重构、失效数据恢复方法及装置。
本发明解决其技术问题所采用的技术方案是:构造一种网络存储中抗拜占庭失效的数据重构方法,包括如下步骤:
A)从k个存储节点下载其存储的编码数据和校验值,由这些编码数据得到矩阵Y;由下载的校验值得到校验和,所述校验和为CRC校验和;
B)对所述矩阵Y进行错误擦除解码,得到码字C′;
C)将码字C′与编码矩阵进行运算得到信息序列m′;
D)判断所述恢复的信息序列m′是否能够通过所述CRC校验和的校验,如能,结束数据恢复;否则,执行步骤E);
E)判断剩下的、未下载的有效存储节点是否大于1,如是,执行步骤F);否则,判断解码失败并退出;
F)在剩下的存储节点中下载两个节点存储的编码数据和校验值,替代之前下载的两个存储节点,得到所述矩阵Y和校验和;并返回步骤B)。
在本发明所述的一种网络存储中抗拜占庭失效的数据重构方法中,所述数据编码包括最小存储再生码或最小带宽再生码。
在本发明所述的一种网络存储中抗拜占庭失效的数据重构方法中,所述CRC校验值通过RS编码后与存储在所述存储节点上的编码数据一起存储在所述存储节点上;所述步骤A)中,其编码数据和编码后的校验值一起下载。
在本发明所述的一种网络存储中抗拜占庭失效的数据重构方法中,所述步骤B)进一步包括:对所述矩阵Y的每一行执行错误擦除解码,得到码字C′。
在本发明所述的一种网络存储中抗拜占庭失效的数据重构方法中,所述步骤C)进一步包括:
C1)由公式U′=C′·G k×k -1得到矩阵U′;其中,Gk×k -1是生成矩阵前k列的逆;
C2)依据所述矩阵U′,得到信息序列m′。
在本发明所述的一种网络存储中抗拜占庭失效的数据重构方法中,所述步骤B)进一步包括:对所述矩阵Y的最后d-k行执行错误擦除解码,得到所恢复的矩阵C′的最后d-k行码字Cd-k;其中,所述C′是一个α×n维的码字向量。
在本发明所述的一种网络存储中抗拜占庭失效的数据重构方法中,所述步骤C)进一步包括:
C1′)通过公式得到矩阵并计算其中,的转置矩阵,G是(n,d)RS码编码时的生成矩阵,Gk和B是构成生成矩阵G的两个子矩阵,Gk -1是子矩阵Gk的逆;是子矩阵Gk的前k列,是所恢复码字向量C′中的最后d-k行中的码字;
C2′)通过公式Yk′=Yk-E,得到矩阵Yk′;其中,E是中的第j0列、第j1列、…、第js-1列重新组成的矩阵,s是编码时设定的帮助节点数;
C3′)在矩阵Yk′的每一行中执行错误擦除解码,得到码字向量C′的前k行矩阵Ck;按照得到
C4′)通过取得的通过 A 1 A 2 T A 2 O , 恢复信息序列m′;其中,O是一个(d-k)×(d-k)的全零矩阵。
本发明还涉及一种网络存储中抗拜占庭失效的数据重构装置,包括:
数据下载单元:用于从k个存储节点下载其存储的编码数据和校验值,由这些编码数据得到矩阵Y;由下载的校验值得到校验和,所述校验和为CRC校验和;
码字取得单元:用于对所述矩阵Y进行错误擦除解码,得到码字C′;
信息取得单元:用于将码字C′与编码矩阵进行运算得到信息序列m′;
校验单元:用于判断所述恢复的信息序列m′是否能够通过所述CRC校验和的校验;
剩余节点判断单元:用于判断剩下的、未下载的有效存储节点是否大于1;
数据替换单元:用于在剩下的存储节点中下载两个节点存储的编码数据和校验值,替代之前下载的两个存储节点,得到所述矩阵Y和校验和。
在本发明所述的一种网络存储中抗拜占庭失效的数据重构装置中,所述信息取得单元包括:
第一运算模块:用于由公式U′=C′·Gk×k -1得到矩阵U′;其中,Gk×k -1是生成矩阵的逆;
第一信息取得模块:用于依据所述矩阵U′,得到信息序列m′。
在本发明所述的一种网络存储中抗拜占庭失效的数据重构装置中,所述信息取得单元包括:
第二运算模块:用于通过公式得到矩阵并计算其中,的转置矩阵,G是(n,d)RS码编码时的生成矩阵,Gk和B是构成生成矩阵G的两个子矩阵,Gk -1是子矩阵Gk的逆;是子矩阵Gk的前k列,是所恢复码字向量C′中的最后d-k行中的码字;
第三运算模块:用于通过公式Yk′=Yk-E,得到矩阵Yk′;其中,E是A2 T·B中的第j0列、第j1列、…、第js-1列重新组成的矩阵,s是编码时设定的帮助节点数;
第四运算模块:用于在矩阵Yk′的每一行中执行错误擦除解码,得到码字向量C′的前k行矩阵Ck;按照得到
第二信息取得模块:用于通过取得的通过 A 1 A 2 T A 2 O , 恢复信息序列m′;其中,O是一个(d-k)×(d-k)的全零矩阵。
本发明还涉及一种网络存储中抗拜占庭失效的失效数据恢复方法,包括如下步骤:
M)选择d个存储节点对失效的存储节点i中存储的编码数据进行修复;被选择的d个存储节点分别计算所存储的编码数据中的α个字符和gi的内积;依据所述d个存储节点存储的编码数据,得到矩阵Yα×d,并得到存储节点i的CRC校验和;其中,gi=[1,(ai-1)1,(ai-1)2,...,(ai-1)α-1],通过存储节点标号i和生成元构建;
N)在所述矩阵Yα×d的每一行执行错误擦除解码,得到码字C′;
O)通过公式M=C′·G-1和(giA1)T+(ai-1)α(giA2)T,得到存储节点i所存储的信息s;
P)判断所述恢复的信息s是否能够通过所述存储节点i的CRC校验和的校验,如能,结束数据恢复;否则,执行步骤Q);
Q)判断剩下的、未下载的有效存储节点是否大于1,如是,执行步骤R);否则,判断恢复失败并退出;
R)在剩下的存储节点中下载两个节点存储的编码数据和校验值,替代之前下载的两个存储节点,得到所述矩阵Y和校验和;并返回步骤N)。
在本发明所述的一种网络存储中抗拜占庭失效的失效数据恢复方法中,所述编码数据包括最小存储再生码编码数据或最小带宽再生码编码数据。
在本发明所述的一种网络存储中抗拜占庭失效的失效数据恢复方法中,所述CRC校验值通过RS编码后与存储在所述存储节点上的编码数据一起存储在所述存储节点上;所述步骤M)中,其编码数据和编码后的校验值一起下载。
本发明还涉及一种网络存储中抗拜占庭失效的失效数据恢复装置,包括:
失效数据下载单元:用于选择d个存储节点对失效的存储节点i中存储的编码数据进行修复;被选择的d个存储节点分别计算所存储的编码数据中的α个字符和gi的内积;依据所述d个存储节点存储的编码数据,得到矩阵Yα×d,并得到存储节点i的CRC校验和;其中,通过存储节点标号i和生成元a构建;
失效数据码字生成单元:用于在所述矩阵Yα×d的每一行执行错误擦除解码,得到码字C′;
失效数据信息取得单元:用于通过公式M=C′·G-1和(giA1)T+(ai-1)α(giA2)T,得到存储节点i所存储的信息s;
失效数据CRC验证单元:用于判断所述恢复的信息s是否能够通过所述存储节点i的CRC校验和的校验;
剩余存储节点判断单元:用于判断剩下的、未下载的有效存储节点是否大于1;
失效数据节点替换单元:用于在剩下的存储节点中下载两个节点存储的编码数据和校验值,替代之前下载的两个存储节点,得到所述矩阵Y和校验和。
实施本发明的网络存储中抗拜占庭失效的数据重构、失效数据恢复方法及装置,具有以下有益效果:由于将RS码和CRC校验和结合来用于数据重构和再生过程,实现了编码数据采用MSR码和MBR码时的数据重构和失效数据修复。考虑错误数据的存在,在两种编码方式中均应用了在解码中采用CRC校验来降低计算复杂性,从错误容忍度、安全强度、存储和带宽负载的分析中,表明不会给系统带来更多的负载。所以,可以抗拜占庭失效节点、数据传输有误时还有进一步的方法来恢复存储数据
附图说明
图1是现有的RS码解码流程示意图;
图2是本发明第一实施例中数据重构的方法流程图;
图3是本发明第一实施例中数据重构装置的结构示意图;
图3A是本发明第一实施例中信息取得单元的结构示意图;
图4是本发明第一实施例中修复失效节点数据的方法流程示意图;
图5是本发明第一实施例中失效节点数据修复装置结构示意图;
图6是本发明第二实施例中数据重构的方法流程图;
图7是本发明第二实施例中信息取得单元的结构示意图;
图8是本发明第一、第二实施例的传输参数比较表。
具体实施方式
下面将结合附图对本发明实施例作进一步说明。
图2是本发明第一实施例中数据重构的流程图,在图2中,重构分布存储在网络上的数据包括如下步骤:
步骤S201选择k个存储节点,并由各节点所存储的编码数据得到矩阵Y:数据重构自然需要由一定数量的存储节点下载编码数据,首先需要的是在这些存储节点中存储编码数据。在第一实施例中,编码数据的存储简述如下:
由于在第一实施例中得到一种精确再生码能够抗拜占庭失效,因此在原始数据重构或恢复失效节点数据后均需要进行完整性校验;用于进行完整性校验的数据需要事先存储在各存储节点中。对于校验数据而言,主要考虑两种认证方案:CRC(Cyclic RedundancyCheck,循环冗余校验码)和哈希函数。这两种方案都需要在原始数据编码之前添加额外的冗余。由于CRC实施起来较哈希函数简单而且所需要的冗余较少,因此在第一实施例中优先采用CRC。
CRC使用一种循环码,使得每个信息序列都可以通过阶为r的生成多项式进行验证,r是增加到信息序列的冗余位。一个CRC码所能检测到的错误位数和冗余位r相关,即一个冗余位为r的CRC码不能检测超过(1/2r)100%比例的错误。例如,当r=32,误检测错误位概率是关于10-10的阶数。由于原始文件通常比较大,通过CRC码所增加的冗余相对来说就比较小。例如,一个(100,20,38)MSR码中,文件大小B=19×20=380,每个节点存储量α=19,当使用有限域GF(211),原始文件总位数为4180。如果r=32,只增加了0.77%冗余。因此,在第一实施例中,假设CRC校验和已经加入到原始数据中并且合成后数据大小为B。
在数据重构或失效再生过程中,为了证实所恢复的编码数据和失效节点所存储的数据相同,需要依赖于存储在其他节点的关于失效节点的校验和信息,即相当于每个存储节点都要存储其他n-1个存储节点的CRC校验和。当新来者(或修复者)访问d个现有节点进行数据修复时,需要从这些存储节点中下载失效节点的CRC校验和。如果被篡改的存储节点数不超过则新来者可以通过对所有接收的CRC校验和进行判断来获得正确的CRC校验和。考虑两种情况:
1)当β比较大时,考虑一个数例:一个(100,20,38)MSR码中,α=19,B=4.18MB,β=1000。每个节点所存储的总位数为19×11×1000=209000bits.如果在每个节点上增加一个32位CTC校验和,冗余为r(n-1)/βαm=32×99/209000≈1.5%,传输CRC校验和所需要的额外带宽是rd/βαm=1216/418000≈0.3%。因此对于比较大的β,所增加的存储和带宽冗余都是可接受的。
2)当β比较小时,采用纠错码来编码r位的CRC校验和。这样可以提高存储和带宽效应。首先,选择一个有限域GF(2m′),其中2m′≥n-1。然后通过一个RS码来编码CRC校验和。值得一提的是,这个编码不同于用于MSR数据再生的RS码。在将一个存储节点的CRC校验和编码成n-1个字符,并将n-1个字符分配给其他存储节点时,每个节点需要存储额外的(n-1)m’位。当一个新来者通过访问d个存储节点来恢复失效节点i时,被访问的节点除了发送自己所存储的编码块,也将节点i的CRC校验和发送出去。新来者通过纠错译码来恢复CRC校验和。在所访问的d个存储节点中,这种方案所能处理的被篡改的节点最大数是所需要的额外带宽是dm’。由于m’远小于n-1和r,因此存储和带宽的冗余均可降低。
在第一实施例中,采用一个参数为[n,k,d=2k-2]的MSR码为例,对数据重构和失效(特别是拜占庭失效)的数据进行数据修复做出示例性说明。因此,在本步骤中,当数据重构开始时,下载所选择的k个存储节点上存储的编码数据及其存储的CRC校验和,并且由上述下载得到的编码数据得到矩阵Y。
在第一实施例一个参数为[n,k,d=2k-2]的最佳MSR码中,将原文件分成大小相等的k份,然后编码成n份分别存储在n个不同的节点上,每个节点存储量为α,并保证n个节点中任意k个节点的数据就可重构原文件;当有节点失效时,修复该节点数据需要从d个可用节点下载数据。其存储量α和修复带宽β分别为 α = d - k + 1 = k - 1 = d / 2 β = k α = α ( α + 1 ) . 假设所有的数据字符都是来自有限域GF(2m)中的元,在β=1的情况下,总数据为mB比特。
将一个信息序列m=(m0,m1,...,mB-1)转换成一个大小为α×d的信息矢量U,令 u i j = u j i = m k 1 , i ≤ j ≤ α u ( j - α ) i = m k 2 , i + α ≤ j ≤ 2 α , 其中k1=(i-1)(α+1)-i(i+1)/2+j,k2=(i-1+α/2)(α+1)-i(i+1)/2+j-α。令U=[A1,A2],从上述构造中可以得出A1,A2均是大小为α×α的对称矩阵。
在这个编码中,信息矢量U的每一行都是一个长度为n的码字。采用一个(n,d=2α)RS码来构造MSR码,U的第i行即相当于码字(pi(a0),pi(a1),...,pi(an-1)).(6)
其中pi(x)是以U的第i行所有元素作为系数的一个多项式,即a是有限域GF(2m)的一个生成元。通过矩阵形式可以描述为:U·G=C,其中 G = 1 1 ... 1 a 0 a 1 ... a n - 1 . . . ( a 0 ) d - 1 ( a 1 ) d - 1 ... ( a n - 1 ) d - 1 , C是一个α×n维的码字向量。将C中的第i列分布到存储节点i,i=1,...n。RS码的生成矩阵可以重新表示成 G = 1 1 ... 1 a 0 a 1 ... a n - 1 . . . ( a 0 ) α - 1 ( a 1 ) α - 1 ... ( a n - 1 ) α - 1 ( a 0 ) α 1 ( a 1 ) α - 1 ... ( a n - 1 ) α - 1 ( a 0 ) α α 0 ( a 1 ) α α 1 ... ( a 1 ) α α n - 1 . . . ( a 0 ) α ( a 0 ) α - 1 ( a 1 ) α ( a 1 ) α - 1 ... ( a n - 1 ) α ( a n - 1 ) α - 1 = G ‾ G ‾ Δ , 其中是G的前α行矩阵,Δ是以(a0)α,(a1)α,...,(an-1)α为对角线元素的对角线矩阵。可以推出存储节点i所存储的α个字符是 U · g i T ( a i - 1 ) α g i T = A 1 g i T + ( a i - 1 ) α A 2 g i T , 其中中第i列。
需要注意的是生成矩阵G的任一列可以通过生成元a和该列的指标计算,因此每个存储节点在精确再生过程不需要存储整个生成矩阵G。
步骤S202在矩阵Y的每一行执行错误擦出解码,得到码字C′:在本步骤中,在上述得到的矩阵Y中,对其每一行的数据进行错误擦出解码,进而得到已下载的k个存储节点的码字C′。执行错误擦除解码来获得码字C’,即码字矩阵的前d列,令G*为G的前d列,则恢复的信息序列U’可以通过U′=C′·G*-1来获得,其中G*-1是G*的逆。
步骤S203由公式U′=C′·Gk×k -1恢复矩阵U′,进而获得信息序列m′:其中,G是生成矩阵。在第一实施例中,由上述公式(6)所编码的RS码的生成多项式以生成元的阶即a,a1,...,an-d作为根。为不失一般性,设信宿从k个存储节点j0,j1,...,jk-1来恢复编码文件。可以看出生成矩阵G为范德蒙矩阵,为了使得矩阵为非奇异的,(a0)α,(a1)α,...,(an-1)α必须互不相同,如果这个编码所在的有限域GF(2m)满足则这个条件可以满足。在第一实施例中,步骤S202和S203是两个独立过程。S202是对码字进行擦除解码,S203是根据码字恢复信息序列,然后如果得到的信息序列不能通过校验说明所选择的节点数据被篡改(这里的错误擦除解码过程只能纠正有限错误,当数据量大时就不能完全擦除错误),因而需要更多的存储节点数据再次进行擦除解码过程;这是一个循环递推过程,因为第一实施例的环境是在有拜占庭节点情况下即安全度不高易被攻击的条件下,采用这样一个过程是确保原数据被正确构造,使得解码得到的数据可以抗拜占庭失效。
步骤S204CRCTest(m′)成功?在本步骤,对上述步骤中得到信息系列m′进行CRC验证,并判断验证是否成功,如是,执行步骤S205;否则,执行步骤S206;
步骤S205解码成功,返回m′并退出:由于取得的信息序列m′通过了CRC验证,判断重构数据正确,因此将m′做为正常数据返回,并退出数据重构。
步骤S206从剩余的存储节点中取d-k个,并和一开始的k个节点的编码数据结合形成矩阵Yα×d:在本步骤中,由于信息序列m′没有通过CRC验证,这可能是存储节点的数据失效(包括被非法修改)或数据传输过程中出现错误,为解决或验证这一问题,除了已下载的k个存储节点中的编码数据之外,信宿还需要从剩下的存储节点中取d+2-k个节点来恢复编码字符。这一措施包括了本步骤和步骤S209;这两个步骤总共下载了上述数量的剩余节点编码,重新得到在步骤S201中得到的矩阵Y,并再一次进行上述步骤的处理,以得到正确的信息序列。
步骤S207系统中剩下的未用的有效节点数>1?在本步骤中,判断系统中剩下的未用的有效节点数是否大于1,如是,执行步骤S209;否则,执行步骤S208;
步骤S208解码失败,退出;在本步骤,由于已经没有足够的剩余存储节点,判断本次重构解码失败,退出本次重构。
步骤S209取额外的两个存储节点,并和已下载的编码数据构成新的矩阵Y:在本步骤中,如上所述,下载两个存储节点中的更多字符来进行数据恢复,这些数据和上述步骤中已经下载的编码数据重新构成新的矩阵Y,并返回步骤S202,再次进行错误擦除解码。
在上述方法中,重构结束的条件是要么成功恢复原始数据,要么系统中没有可用存储节点。可以看出第一实施例中所提出的MSR码中总数据重构的解码算法所需要的计算复杂性低,并且所使用的RS码可以纠正个错误。在实际中当β>1时,MSR码中总数据重构的解码过程需要执行β次来恢复原始信息数据。
如图3所示,第一实施例中还涉及一种数据重构装置,该数据重构装置包括:数据下载单元31、码字取得单元32、信息取得单元33、校验单元34、剩余节点判断单元35和数据替换单元36;其中,数据下载单元31用于从k个存储节点下载其存储的编码数据和校验值,由这些编码数据得到矩阵Y;由下载的校验值得到校验和,所述校验和为CRC校验和;码字取得单元32用于对所述矩阵Y进行错误擦除解码,得到码字C′;信息取得单元33用于将码字C′与编码矩阵进行运算得到信息序列m′;校验单元34用于判断所述恢复的信息序列m′是否能够通过所述CRC校验和的校验;剩余节点判断单元35用于判断剩下的、未下载的有效存储节点是否大于1;数据替换单元36用于在剩下的存储节点中下载两个节点存储的编码数据和校验值,替代之前下载的两个存储节点,得到所述矩阵Y和校验和。
如图3A所示,在第一实施例中,信息取得单元33进一步包括:第一运算模块301和第一信息取得模块302;其中,第一运算模块301用于由公式U′=C′·G k×k -1得到矩阵U′;其中,Gk×k -1是生成矩阵G前k列的逆;第一信息取得模块302用于依据所述矩阵U′,得到信息序列m′。
在第一实施例中还涉及一种MSR码中丢失数据再生的方法。如图4所示,该数据修复方法包括如下步骤:
步骤S401节点i失效,新来者(即修复者)随机选择d个存储节点进行修复:在本步骤中,已经发现(或确定)节点i失效,也就是节点i上存储的编码数据已经失效或被改,由上述正常的数据重构过程已经不能将数据重构出来;为此,选择d个存储节点,下载这些存储节点上存储的编码数据和CRC校验值,以便于修复节点i上存储的编码数据;
步骤S402被选择的存储节点计算所存储的α个符号和gi的内积:在本步骤中,被选择的存储节点将其存储的α个符号与gi运算得到其内积,gi=[1,(ai-1)1,(ai-1)2...,(ai-1)α-1],可以通过节点标号i和生成元构造,并将合成的字符发送给修复者;
步骤S403根据所选择的d个存储节点存储的编码数据得到矩阵Y,并得到节点i的CRC校验和:取得上述步骤S402中个存储节点发送的字符后,得到矩阵Y,同时得到节点i的CRC校验和;
步骤S404在矩阵Y的每一行执行错误擦出解码过程,获得码字C′:在本步骤中,在上述得到的矩阵Y中的每一行执行错误擦除解码,得到下载的码字C′;
步骤S405计算M=C′·G-1,通过M和公式(7)(即(giA1)T+(ai-1)α(giA2)T),得到存储节点i所存储的信息mi;在本步骤中,得到了节点i存储的信息mi
步骤S406CRCTest(mi)成功?在本步骤中,对上述步骤中得到的存储节点i中存储的信息mi进行验证,并判断该CRC验证是否通过(或成功),如是,执行步骤S406;否则,执行步骤S407;在本步骤中,使用上述步骤中得到的节点i的CRC校验和与信息mi进行CRC验证;
步骤S407数据再生成功,返回mi并退出;在本步骤中,由于通过上述CRC验证,所以判断存储节点i存储的数据被成功再生,将其返回并退出本次数据再生(或失效数据的修复);
步骤S408系统中剩余的有效节点数>1?在本步骤中,判断系统中剩余的有效节点数是否大于1,如是,执行步骤410;否则执行步骤S409;
步骤S409再生失败,退出:因为剩余的有效节点不够,所以再生失败,退出;
步骤S410取额外的两个存储节点,和已下载的编码数据构成新的矩阵Y:在本步骤中,下载两个存储节点中的更多字符来进行节点i的数据修复,这两个新下载的有效节点与上述步骤S401中的d个一起(此时,用于修复的节点数为d+2个),并返回步骤S402,再次进行错误擦除解码。
综上所述,在第一实施例中,如果节点i失效,在再生过程中通过访问s个现有存储节点来进行数据恢复,其中d≤s≤n-1。不失一般性,假设访问的存储节点是j0,j1,...,js-1,每个被访问的存储节点计算它的α个字符和gi=[1,(ai-1)1,(ai-1)2...,(ai-1)α-1]的内积,gi可以通过节点标号i和生成元构造,并将合成的字符发送给修复者(即具体执行修复的部分或设备)。由于MSR码是一个线性编码,通过所传输的合成字符,可以被解码成码字c,其中c=gi·(U·G)=(gi·U)·G。如果(n-s)+2e<n-d+1,其中e是这s个合成字符中错误的数,用G的前d列矩阵G*的逆乘以码字c,可以获得gi·U,也就相当于gi·(A1,A2)=(gi·A1,gi·A2)。由于gi第i列的转置,A1,A2是对称矩阵,因此失效节点i所存储的α个字符可以通过公式(7)来恢复:(giA1)T+(ai-1)α(giA2)T.(7)
通过进行丢失数据再生的解码过程分为两步:首先,新来者访问d个存储节点并解出来获得c并恢复节点i所存储的α个字符;然后检验CRC校验和。如果通过CRC认证,则再生过程成功;否则,新来者将访问两个更多的存储节点,然后通过对所收到的解码来获得c并恢复节点i所存储的α个字符。这个过程直到失效节点所存储的字符被正确恢复才结束。在实际中当β>1时,在进行CRC校验和认证之前,MSR码中丢失数据再生的解码过程需要执行β次来恢复βα个字符。
在第一实施例中还涉及一种MSR码中丢失数据再生的装置,如图5所示,该装置包括:失效数据下载单元51、失效数据码字生成单元52、失效数据信息取得单元53、失效数据CRC验证单元54、剩余存储节点判断单元55和失效数据节点替换单元56;其中,失效数据下载单元51用于选择d个存储节点对失效的存储节点i中存储的编码数据进行修复;被选择的d个存储节点分别计算所存储的编码数据中的α个字符和gi的内积;依据所述d个存储节点存储的编码数据,得到矩阵Yα×d,并得到存储节点i的CRC校验和;其中,通过存储节点标号i和生成元构建;失效数据码字生成单元52用于在所述矩阵Yα×d的每一行执行错误擦除解码,得到码字C′;失效数据信息取得单元53用于通过公式M=C′·G-1和(giA1)T+(ai-1)α(giA2)T,得到存储节点i所存储的信息s;失效数据CRC验证单元54用于判断所述恢复的信息s是否能够通过所述存储节点i的CRC校验和的校验;剩余存储节点判断单元55用于判断剩下的、未下载的有效存储节点是否大于1;失效数据节点替换单元56用于在剩下的存储节点中下载两个节点存储的编码数据和校验值,替代之前下载的两个存储节点,得到所述矩阵Y和校验和。
在第一实施例中,上述数据重构装置和失效数据修复装置均是虚拟的功能模块,实际上,这些模块均是实现上述方法的软件功能模块。其相互之间可以处于同一个物理载体上,也可以处于不同的物理载体上。实际上,后面的第二实施例所涉及的装置也是如此。
在本发明的第二实施例中,同样涉及一种抗拜占庭失效的数据重构方法,与第一实施例中不同的是,第二实施例中涉及的数据编码采用MBR码(Minimum-bandwidthRegenerating最小带宽再生);由于编码的不同,第二实施例中的数据重构方法较第一实施例中稍有不同。
请参见图6,图6示出了第二实施例中的数据重构方法,包括:
步骤S601选择k个存储节点,并由各节点所存储的编码数据得到矩阵Y:本步骤中,任意(或随机)选择k个存储节点,下载其存储的编码数据集CRC校验值,得到矩阵Y。本步骤与步骤S201基本一致;
步骤S602在上述矩阵Y的最后d-k行执行错误擦出解码,获得码字C′:本步骤中,在上述得到的矩阵Y中的最后d-k行执行RS码的数据解码算法,即错误擦出解码,得到码字C′;
步骤S603由得到并计算由Yk′=Yk-E,得到矩阵Yk′;其中,的转置矩阵,G是(n,d)RS码生成矩阵,Gk和B是构成生成矩阵G的两个子矩阵,Gk -1是子矩阵Gk的逆;E是A2 T·B中的第j0列、第j1列、…、第js-1列重新组成的矩阵,s是编码时设定的帮助节点数;在本步骤中,就是通过计算,得到最后可以由其得到信息序列的一些中间参数;
步骤S604在矩阵Yk′的每一行执行错误擦除解码,获得码字向量(即码字C′)的前k行:在本步骤中,对矩阵Yk′的每一行执行错误擦除解码;
步骤S605由得到通过取得的恢复信息序列m′;在本步骤中,得到中间矩阵并与之前得到的中间参数一起,通过 A 1 A 2 T A 2 O , 得到信息系列m′;其中,O是一个(d-k)×(d-k)的全零矩阵;
步骤S606CRCTest(m′)成功?在本步骤中,对上述步骤中得到的信息序列m′进行CRC验证,并判断信息序列m′是否通过CRC验证,如是,执行步骤S607;否则,执行步骤S608:
步骤S607取得数据信息m′,退出:判断为正确地重构了数据,送出该取得的数据并退出本次数据重构;
步骤S608系统中剩下的有效存储节点数>1?在本步骤中,判断系统中剩下的有效存储节点数是否大于1,即判断系统中存在的、仍未被下载其编码数据参与数据重构的存储节点数是否大于1,如是,执行步骤610;如否,执行步骤S609;
步骤S609解码失败,退出:如果上一步骤中的有效节点数不大于1,判断数据重构解码失败,退出本次数据重构;
步骤S610取额外的两个存储节点,和已下载的编码数据构成新的矩阵Y:在本步骤中,下载两个存储节点中的更多字符来进行数据恢复,这些数据和上述步骤中已经下载的编码数据重新构成新的矩阵Y,并返回步骤S602,再次进行错误擦除解码。
综上所述,在第二实施例中,以一个参数任意的[n,k,d]最佳MBR码为例说明数据重构的方法。将一个信息序列m=(m0,m1,...,mB-1)转换成一个大小为α×d的信息矢量U,令 u i j = u j i = m k 1 , i ≤ j ≤ k u j i = m k 2 , k + 1 ≤ i ≤ d , 1 ≤ j ≤ k 0 , o t h e r w i s e , 其中k1=(i-1)(k+1)-i(i+1)/2+j,k2=(i-k-1)k+k(k+1)/2+j。令 U = A 1 A 2 T A 2 O , 从上述构造中可以得出A1是一个k×k的矩阵,A2是一个(d-k)×k的矩阵,O是一个(d-k)×(d-k)的全零矩阵。也就是说,信息序列m转换为一个信息适量U表示,而信息矢量U可以用矩阵A1、矩阵A2以及一个全零矩阵O的运算关系表示;其中A1,A2都是对称矩阵,显然U的维数为d×d(或α×d)。在本发明的实施例中,A1、A2分别是一个由信息序列m(该信息序列是正确的或原始的信息序列)导出的矩阵,而在稍后所提及的是解码过程所获得的矩阵,由两个矩阵倒推就可得到信息序列m′(该信息序列由解码而得,未知是否有错),信息序列m′需要进行校验判断是否和原信息序列m一致。
采用一个(n,d)RS码来编码U的每一行,U的第i行即相当于码字(pi(a0),pi(a1),...,pi(an-1))。其中pi(x)是以U的第i行所有元素作为系数的一个多项式,即a是有限域GF(2m)的一个生成元。通过矩阵形式可以描述为:U·G=C,其中 G = 1 1 ... 1 a 0 a 1 ... a n - 1 . . . ( a 0 ) k - 1 ( a 1 ) k - 1 ... ( a n - 1 ) k - 1 ( a 0 ) k ( a 1 ) k ... ( a n - 1 ) k . . . ( a 0 ) d - 1 ( a 1 ) d - 1 ... ( a n - 1 ) d - 1 , C是一个α×n维的码字向量。G是(n,d)RS码的生成矩阵,可以拆分成两个子矩阵即 G = G k B , 其中 G k = 1 1 ... 1 a 0 a 1 ... a n - 1 ( a 0 ) 2 ( a 1 ) 2 ... ( a n - 1 ) 2 . . . ( a 0 ) k - 1 ( a 1 ) k - 1 ... ( a n - 1 ) k - 1 . - - - ( 8 )
B = ( a 0 ) k ( a 1 ) k ... ( a n - 1 ) k . . . ( a 0 ) d - 1 ( a 1 ) d - 1 ... ( a n - 1 ) d - 1
需要注意的是Gk是(n,k)RS码的一个生成矩阵,它将在数据恢复的解码过程中用到。由公式(8)所编码的RS码的生成多项式以生成元的阶即a,a1,...,an-k作为根,和第一实施例中MSR码解码过程不同的是:在MSR码中使用一个(n,d)RS解码器,而在MBR码中需用一个(n,k)RS解码器。
设信宿从s个存储节点j0,j1,...,js-1,k≤s≤n中下载数据来恢复编码文件。由于MBR码中α=d,因此信宿接收d个向量并且每个向量有s个字符。将d个向量中的前k个向量收集为Yk,剩下的d-k个向量收集为Yd-k,本发明中可以将码矩阵C的最后d-k行看成是由Gk而不是G编码而来。因此,这个(n,k)RS码的数据解码过程可以通过Yd-k来恢复C中最后d-k行码字。令为Gk的前k列,为所恢复的矩阵C的最后d-k行中码字。
U中A2可以通过公式恢复;然后计算将所得矩阵的第j0列、第j1列、到第js-1列重新组成矩阵E,并将Yk减去矩阵E从而获得矩阵Yk′=Yk-E.(10)。在Yk′上执行RS码的数据解码算法从而获得A1
对解码的信息序列进行CRC校验来检验所恢复数据的正确性。如果通过CRC校验,则取得原始数据并退出;否则,需要执行进一步的解码过程,也就是在每一轮循环中需要从剩下的存储节点中访问两个更多的存储节点,该循环结束的条件是要么所有存储节点都被访问,要么取得正确的原始数据(通过CRC校验)。
在本发明第二实施例中,同样涉及失效数据的修复方法及装置,由于第二实施例中MBR码中失效数据的再生(修复)方法及装置和第一实施例中MSR码的类似。就其装置而言,与第一实施例中的区别在于信息取得单元不同。请参见图7,在第二实施例中,该数据重构装置包括:第二运算模块311、第三运算模块312、第四运算模块313和第二信息取得模块314;其中,第二运算模块311用于通过公式得到矩阵并计算其中,的转置矩阵,G是(n,d)RS码编码时的生成矩阵,Gk和B是构成生成矩阵G的两个子矩阵,Gk -1是子矩阵Gk的逆;是子矩阵Gk的前k列,是所恢复码字向量C中的最后d-k行中的码字;第三运算模块312用于通过公式Yk′=Yk-E,得到矩阵Yk′;其中,E是A2 T·B中的第j0列、第j1列、…、第js-1列重新组成的矩阵,s是编码时设定的帮助节点数;第四运算模块313用于在矩阵Yk′的每一行中执行错误擦除解码,得到码字向量C′的前k行矩阵Ck;按照得到第二信息取得模块313用于通过取得的通过 A 1 A 2 T A 2 O , 恢复信息序列m′;其中,O是一个(d-k)×(d-k)的全零矩阵。
在第二实施例中,就方法而言,在获得gi·U后,取它的转置,由于U是对称的,所以UT=U,即得出所再生的所有βα个字符都要进行CRC校验,如果通过CRC校验,则说明βα个字符是失效节点所存储的原字符;否则,需要执行进一步解码过程。所以,在此不再赘述。
图8综合上述两个实施例对MSR码和MBR码在错误容忍度、安全强度、存储和带宽负载上进行了量的分析。并将MSR码和MBR码中数据重构和数据再生过程分开讨论。从表中数据可以看出这些实施例中能够抗拜占庭失效并且是有效的且不会带来更多的系统负担。
在对失效容忍度分析中,主要考虑两种失效:宕机失效和拜占庭失效。假设节点之间失效是相关独立的,在这两种情况下,失效容忍度均是由系统所能处理的的最大失效节点数衡量。
宕机失效:宕机失效可以看成是码字中个别字符被擦除。由于在总数据重构中至少需要k个节点,很容易得出系统所能冗余的最大宕机失效数是n-k。对于丢失数据再生过程,需要访问d个存储节点,因此失效容忍度是n-d。值得一提的是,由于现有节点均包含正确的数据符号,因此CRC校验总是正确的。
拜占庭失效:一般情况下,在RS码中需要两个额外的正确编码分组来鉴别一个错误的编码分组。然而,在丢失数据的再生过程,新来者获得正确的CRC校验和的性能也会影响失效容忍度。假设在获得正确的CRC校验和过程中使用了错误纠正码,如果新来者没有获得正确的CRC校验和,在这种情况下即使失效的节点数没有超过RS码所能处理的最大失效数,丢失数据的再生过程也都会失败。因此,失效容忍度必须取RS码(在MBR和MSR码中)的能力和恢复正确CRC校验和能力的较小者。在MSR和MBR码中,总数据重构过程所能容忍的错误节点数分别是丢失数据的再生过程中失效容忍度均为中的较小者。
在分析安全强度时,考虑假冒攻击,即一类拜占庭攻击者通过相互合作伪造数据来破坏总数据的重构和丢失数据的再生过程,也就是说考虑一种合谋攻击。本发明通过在总数据重构和丢失数据的再生过程中,判断伪造数据的攻击者最小数,而安全强度取低于这个数的一个数值。伪造在丢失数据的再生过程是非常有效的,因为即使一个攻击者只能访问很少的节点,但是通过数据再生过程可以将伪造的数据传输到其他存储节点上并且最终会判断这些数据是有效的,因此会导致所重构的原始数据是错误的。
在总数据重构过程,在最糟糕的情况下,考虑矩阵U中只有一行被篡改的安全强度。令攻击者为j0,j1,...,jv-1,并且她们可以合谋伪造一个新的信息符号。假设y是U中被伪造的行,令y′=y+u,其中u是矩阵U中被伪造行的正确信息符号。通过RS码编码过程,可以得出yG=(y′+u)G=y′G+uG=v+c,其中c是存储节点所存储的原始数据,v是由攻击者所篡改的数据。假设v中非零符号数为h,由于v必须是一个码字,则h≥n-d+1,其中n-d+1是RS码的最小汉明距离。为了成功伪造信息符号,攻击者必须攻击一些存储节点,使得这些节点存储yG中相应的编码符号,从而使节点所存储的码字和伪造的信息符号一致。如果攻击者攻击k个存储节点,当信宿恰好访问到这些被攻击的节点,根据解码过程,攻击者可以成功的伪造数据。假设攻击者攻击b<k个存储节点,根据解码过程,当其中是RS码的错误纠正能力,解码算法仍可能将接收的向量解码为yG。取更小的b值,令因此在MSR码中,总数据重构的安全强度为由于在MBR码解码中使用(n,k)RS码,因此MBR码的安全强度为
在再生过程的假冒攻击中,由于CRC校验和的计算是一个线性操作,因此攻击者没有必要破坏失效节点的CRC校验和,只需要伪造冗余位均为0的数据即可。因此再生过程的安全强度为
通过上述分析可知CRC校验并没有增加在假冒攻击中的安全强度。由于获得哈希值的操作是非线性的,因此通过使用哈希值可以提高安全强度。在这种情况下,攻击者不仅需要获得原始数据信息,也需要伪造相应的哈希值。因此安全强度在总数据重构过程中至少为k-1,在丢失数据再生过程中至少为d-1。
CRC校验和在存储和带宽的消耗中增加了额外的负担。在总数据重构过程中的冗余为CRC校验和的大小即r比特。每个信息序列后都要增加额外的r比特,来使得数据重构后可以进行数据验证。由于MSR码的信息位数为mkα-r,因此在存储上的冗余率为而MBR码的信息位数为m(kd-k(k-1)/2)-r,因此对于冗余率为另外,MSR码和MBR码在恢复原始数据的过程中,所下载的数据量恰好为k个节点所存储编码模块,因此在带宽上的冗余率等于存储上的冗余率。
对于再生过程,假设通过(n-1,k’)RS码来将编码的CRC字符分配给其他n-1个存储节点,其中由于每个节点必须存储其他n-1个存储节点所编码的CRC字符,因此每个节点所需要的额外存储是(n-1)m’比特。根据MSR码和MBR码编码特性,即存储在每个节点的编码数据字符是βαm比特,得出这两种最佳码在存储上的冗余率均为
新来者必须获得失效节点的正确CRC校验和,才可以检验所恢复数据的正确性。被访问的d个存储节点需要向新来者提供它们所存储的数据,该数据还应包括失效节点的CRC校验和。由于校验和长度为m’比特,则总的额外带宽为dm’比特,而MSR码和MBR码中修复失效节点所存储的βα字符的总共带宽为βmd,得出这两种最佳码在存储上的冗余率均为
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

Claims (14)

1.一种网络存储中抗拜占庭失效的数据重构方法,其特征在于,包括如下步骤:
A)信宿从k个存储节点下载其存储的编码数据和校验值,由这些编码数据得到矩阵Y;由下载的校验值得到校验和,所述校验和为CRC校验和;
B)对所述矩阵Y进行错误擦除解码,得到码字C′;
C)将码字C′与编码矩阵进行运算得到信息序列m′;
D)判断所述恢复的信息序列m′是否能够通过所述CRC校验和的校验,如能,结束数据恢复;否则,执行步骤E);
E)判断剩下的、未下载的有效存储节点是否大于1,如是,执行步骤F);否则,判断解码失败并退出;
F)在剩下的存储节点中下载两个节点存储的编码数据和校验值,替代之前下载的两个存储节点,得到所述矩阵Y和校验和;并返回步骤B)。
2.根据权利要求1所述的网络存储中抗拜占庭失效的数据重构方法,其特征在于,所述数据编码包括最小存储再生码或最小带宽再生码。
3.根据权利要求1所述的网络存储中抗拜占庭失效的数据重构方法,其特征在于,所述CRC校验值通过RS编码后与存储在所述存储节点上的编码数据一起存储在所述存储节点上;所述步骤A)中,其编码数据和编码后的校验值一起下载。
4.根据权利要求3所述的网络存储中抗拜占庭失效的数据重构方法,其特征在于,所述步骤B)进一步包括:对所述矩阵Y的每一行执行错误擦除解码,得到码字C′。
5.根据权利要求4所述的网络存储中抗拜占庭失效的数据重构方法,其特征在于,所述步骤C)进一步包括:
C1)由公式U′=C′·Gk×k -1得到矩阵U′;其中,G是编码时的生成矩阵,Gk×k -1是生成矩阵前k列的逆;
C2)依据所述矩阵U′,得到信息序列m′。
6.根据权利要求3所述的网络存储中抗拜占庭失效的数据重构方法,其特征在于,所述步骤B)进一步包括:对所述矩阵Y的最后d-k行执行错误擦除解码,得到所恢复的码字C′的最后d-k行码字Cd-k;其中,所述C′是一个α×n维的码字向量。
7.根据权利要求6所述的网络存储中抗拜占庭失效的数据重构方法,其特征在于,所述步骤C)进一步包括:
C1′)通过公式得到矩阵并计算其中,的转置矩阵,G是(n,d)RS码编码时的生成矩阵,Gk和B是构成生成矩阵G的两个子矩阵,Gk -1是子矩阵Gk的逆;是子矩阵Gk的前k列,是所恢复码字向量C′中的最后d-k行中的码字;
C2′)通过公式Yk′=Yk-E,得到矩阵Yk′;其中,E是中的第j0列、第j1列、…、第js-1列重新组成的矩阵,s是编码时设定的帮助节点数;
C3′)在矩阵Yk′的每一行中执行错误擦除解码,得到码字向量C′的前k行矩阵Ck;按照得到
C4′)通过取得的通过 A 1 A 2 T A 2 O , 恢复信息序列m′;其中,O是一个(d-k)×(d-k)的全零矩阵。
8.一种网络存储中抗拜占庭失效的数据重构装置,其特征在于,包括:
数据下载单元:用于从k个存储节点下载其存储的编码数据和校验值,由这些编码数据得到矩阵Y;由下载的校验值得到校验和,所述校验和为CRC校验和;
码字取得单元:用于对所述矩阵Y进行错误擦除解码,得到码字C′;
信息取得单元:用于将码字C′与编码矩阵进行运算得到信息序列m′;
校验单元:用于判断所述恢复的信息序列m′是否能够通过所述CRC校验和的校验;
剩余节点判断单元:用于判断剩下的、未下载的有效存储节点是否大于1;
数据替换单元:用于在剩下的存储节点中下载两个节点存储的编码数据和校验值,替代之前下载的两个存储节点,得到所述矩阵Y和校验和。
9.根据权利要求8所述的网络存储中抗拜占庭失效的数据重构装置,其特征在于,所述信息取得单元包括:
第一运算模块:用于由公式U′=C′·Gk×k -1得到矩阵U′;其中,Gk×k -1是生成矩阵前k列的逆;
第一信息取得模块:用于依据所述矩阵U′,得到信息序列m′。
10.根据权利要求8所述的网络存储中抗拜占庭失效的数据重构装置,其特征在于,所述信息取得单元包括:
第二运算模块:用于通过公式得到矩阵并计算其中,的转置矩阵,G是(n,d)RS码编码时的生成矩阵,Gk和B是构成生成矩阵G的两个子矩阵,Gk -1是子矩阵Gk的逆;是子矩阵Gk的前k列,是所恢复码字向量C′中的最后d-k行中的码字;
第三运算模块:用于通过公式Yk′=Yk-E,得到矩阵Yk′;其中,E是A2 T·B中的第j0列、第j1列、…、第js-1列重新组成的矩阵,s是编码时设定的帮助节点数;
第四运算模块:用于在矩阵Yk′的每一行中执行错误擦除解码,得到码字向量C′的前k行矩阵Ck;按照得到
第二信息取得模块:用于通过取得的通过 A 1 A 2 T A 2 O , 恢复信息序列m′;其中,O是一个(d-k)×(d-k)的全零矩阵。
11.一种网络存储中抗拜占庭失效的失效数据恢复方法,其特征在于,包括如下步骤:
M)选择d个存储节点对失效的存储节点i中存储的编码数据进行修复;被选择的d个存储节点分别计算所存储的编码数据中的α个字符和gi的内积;依据所述d个存储节点存储的编码数据,得到矩阵Yα×d,并得到存储节点i的CRC校验和;其中,通过存储节点标号i和生成元a构建;
N)在所述矩阵Yα×d的每一行执行错误擦除解码,得到码字C′;
O)通过公式M=C′·G-1和(giA1)T+(ai-1)α(giA2)T,得到存储节点i所存储的信息s;
P)判断所述恢复的信息s是否能够通过所述存储节点i的CRC校验和的校验,如能,结束数据恢复;否则,执行步骤Q);
Q)判断剩下的、未下载的有效存储节点是否大于1,如是,执行步骤R);否则,判断恢复失败并退出;
R)在剩下的存储节点中下载两个节点存储的编码数据和校验值,替代之前下载的两个存储节点,得到所述矩阵Y和校验和;并返回步骤N)。
12.根据权利要求11所述的网络存储中抗拜占庭失效的失效数据恢复方法,其特征在于,所述编码数据包括最小存储再生码编码数据或最小带宽再生码编码数据。
13.根据权利要求11所述的网络存储中抗拜占庭失效的失效数据恢复方法,其特征在于,所述CRC校验值通过RS编码后与存储在所述存储节点上的编码数据一起存储在所述存储节点上;所述步骤M)中,其编码数据和编码后的校验值一起下载。
14.一种网络存储中抗拜占庭失效的失效数据恢复装置,其特征在于,包括:
失效数据下载单元:用于选择d个存储节点对失效的存储节点i中存储的编码数据进行修复;被选择的d个存储节点分别计算所存储的编码数据中的α个字符和gi的内积;依据所述d个存储节点存储的编码数据,得到矩阵Yα×d,并得到存储节点i的CRC校验和;其中,gi=[1,(ai-1)1,(ai-1)2,...,(ai-1)α-1],通过存储节点标号i和生成元a构建;
失效数据码字生成单元:用于在所述矩阵Yα×d的每一行执行错误擦除解码,得到码字C′;
失效数据信息取得单元:用于通过公式M=C′·G-1和(giA1)T+(ai-1)α(giA2)T,得到存储节点i所存储的信息s;
失效数据CRC验证单元:用于判断所述恢复的信息s是否能够通过所述存储节点i的CRC校验和的校验;
剩余存储节点判断单元:用于判断剩下的、未下载的有效存储节点是否大于1;
失效数据节点替换单元:用于在剩下的存储节点中下载两个节点存储的编码数据和校验值,替代之前下载的两个存储节点,得到所述矩阵Y和校验和。
CN201280032806.8A 2012-06-11 2012-06-11 网络存储中抗拜占庭失效的数据重构、失效数据恢复方法及装置 Active CN103703446B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2012/076694 WO2013185271A1 (zh) 2012-06-11 2012-06-11 网络存储中抗拜占庭失效的数据重构、失效数据恢复方法及装置

Publications (2)

Publication Number Publication Date
CN103703446A CN103703446A (zh) 2014-04-02
CN103703446B true CN103703446B (zh) 2016-08-17

Family

ID=49757397

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201280032806.8A Active CN103703446B (zh) 2012-06-11 2012-06-11 网络存储中抗拜占庭失效的数据重构、失效数据恢复方法及装置

Country Status (2)

Country Link
CN (1) CN103703446B (zh)
WO (1) WO2013185271A1 (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10243583B2 (en) * 2017-06-16 2019-03-26 Western Digital Technologies, Inc. CPU error remediation during erasure code encoding
CN111224747A (zh) * 2019-12-19 2020-06-02 湖北大学 可降低修复带宽和磁盘读取开销的编码方法及其修复方法
US11405420B2 (en) * 2020-08-28 2022-08-02 Seagate Technology Llc Distributed secure edge heterogeneous storage network with redundant storage and byzantine attack resilience
CN113296999B (zh) * 2021-05-20 2022-11-11 山东云海国创云计算装备产业创新中心有限公司 一种raid6编码方法及编码电路
CN114244853B (zh) * 2021-11-29 2024-09-03 国网北京市电力公司 大数据共享方法、装置以及大数据共享系统
CN116560957A (zh) * 2023-04-21 2023-08-08 珠海云艺网络科技有限公司 一种受损文档修复结果的测试方法、系统、装置及介质
CN118484152B (zh) * 2024-07-16 2024-09-24 济南浪潮数据技术有限公司 数据的调用方法及装置、存储介质及电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1859115A (zh) * 2006-01-24 2006-11-08 华为技术有限公司 一种网络数据的分布式存储下载系统、设备及方法
US7555673B1 (en) * 2002-10-17 2009-06-30 Symantec Operating Corporation Cluster failover for storage management services
US7657781B1 (en) * 2003-07-25 2010-02-02 Cisco Technology, Inc. System and method for providing redundant data load sharing in a distributed network

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7555673B1 (en) * 2002-10-17 2009-06-30 Symantec Operating Corporation Cluster failover for storage management services
US7657781B1 (en) * 2003-07-25 2010-02-02 Cisco Technology, Inc. System and method for providing redundant data load sharing in a distributed network
CN1859115A (zh) * 2006-01-24 2006-11-08 华为技术有限公司 一种网络数据的分布式存储下载系统、设备及方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
一种P2P分布式系统高可靠数据恢复模型;姜春茂,张国印,曲明成;《哈尔滨工程大学学报》;20120331;第33卷(第3期);全文 *
基于网络编码的分布式文件系统设计与实现;常乾;《中国优秀硕士学位论文全文数据库 信息科技辑》;20100115;全文 *
拜占庭容错纠删码分布式存储协议;蔡鸾佳;《计算机系统应用》;20120215;第21卷(第2期);全文 *

Also Published As

Publication number Publication date
CN103703446A (zh) 2014-04-02
WO2013185271A1 (zh) 2013-12-19

Similar Documents

Publication Publication Date Title
CN103703446B (zh) 网络存储中抗拜占庭失效的数据重构、失效数据恢复方法及装置
EP2288991B1 (en) Method of storing a data set in a distributed storage system, distributed storage system and computer program product for use with said method
JP5485008B2 (ja) 連鎖的暗号化反応の系統的記号化および復号化
CN103124182B (zh) 文件下载和流系统
US7240236B2 (en) Fixed content distributed data storage using permutation ring encoding
Bowers et al. HAIL: A high-availability and integrity layer for cloud storage
US9996413B2 (en) Ensuring data integrity on a dispersed storage grid
US8127212B2 (en) System and method for determining the fault-tolerance of an erasure code
KR20120058556A (ko) 인코딩 및 디코딩 프로세스들을 위해 심볼들의 영속적 비활성화에 의한 fec 코드들을 활용하는 방법 및 장치
RU2680350C2 (ru) Способ и система распределенного хранения восстанавливаемых данных с обеспечением целостности и конфиденциальности информации
Silberstein et al. Error resilience in distributed storage via rank-metric codes
Han et al. Exact regenerating codes for byzantine fault tolerance in distributed storage
CN110532126A (zh) 纠删码存储系统数据快速恢复方法、装置及存储介质
EP3852275A1 (en) Method, device and apparatus for storing data, computer readable storage medium
CN108279995A (zh) 一种基于安全再生码的分布式存储系统的存储方法
Han et al. Efficient exact regenerating codes for byzantine fault tolerance in distributed networked storage
WO2017041231A1 (zh) 一种精确修复的二进制再生码编解码
Han et al. Progressive data retrieval for distributed networked storage
US9183076B2 (en) Using carry-less multiplication (CLMUL) to implement erasure code
CN116865947B (zh) 一种基于线性编码的区块链存储方法
CN116560915B (zh) 数据恢复方法、装置、电子设备及存储介质
Li et al. Rate-matched regenerating code in hostile networks
Han et al. Update-Efficient Error-Correcting Regenerating Codes
CN118555053A (zh) 一种混合纠错方法、量子密钥分发方法及系统
Han et al. Progressive Decoding for Data Availability and Reliability in Distributed Networked Storage

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant