CN103650462B - 基于同态的自修复码的编码、解码和数据修复方法及其存储系统 - Google Patents

基于同态的自修复码的编码、解码和数据修复方法及其存储系统 Download PDF

Info

Publication number
CN103650462B
CN103650462B CN201280032802.XA CN201280032802A CN103650462B CN 103650462 B CN103650462 B CN 103650462B CN 201280032802 A CN201280032802 A CN 201280032802A CN 103650462 B CN103650462 B CN 103650462B
Authority
CN
China
Prior art keywords
data
coded data
node
code
module
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.)
Expired - Fee Related
Application number
CN201280032802.XA
Other languages
English (en)
Other versions
CN103650462A (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.)
Peking University Shenzhen Graduate School
Original Assignee
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 Peking University Shenzhen Graduate School filed Critical Peking University Shenzhen Graduate School
Publication of CN103650462A publication Critical patent/CN103650462A/zh
Application granted granted Critical
Publication of CN103650462B publication Critical patent/CN103650462B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Error Detection And Correction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及一种分布式数据存储中数据同态编码的方法,包括如下步骤:将数据量为M的数据O用正整数k分为k份,每份的数据量为M/k,即其中,oi是等分数据O后得到的每份数据,是以2M/k为阶的有限域;使所述oi为多项式的系数;在有限域中任取n个不同的非零元素值α1,…,αn,代入所述多项式变量,分别计算每个值代入后所述多项式的值,得到存储在各存储节点的编码数据;分别存储所述得到的编码数据到各存储节点。本发明还涉及一种下载、修复上述编码数据的方法。实施本发明的分布式数据存储中数据同态编码、取得和数据自修复方法,具有以下有益效果:其传输的数据量较小、系统也不复杂,系统的开销也较小。

Description

基于同态的自修复码的编码、解码和数据修复方法及其存储 系统
技术领域
本发明涉及分布式数据存储,更具体地说,涉及基于同态的自修复码的编码、解码和数据修复方法及其存储系统。
背景技术
网络存储系统在最近几年一直备受关注,存储系统包含不同的类型:如基于P2P分布式存储系统和基于数据中心与存储区域网的专用的基础设施系统。由于在分布式存储系统中,经常出现存储节点失效或者文件传输损耗,因此在该网络存储系统中必须要有冗余。冗余可以通过一种简单的复制数据来实现,但是存储效应不高,纠错码提供一种不同于以往复制的有效存储方案。一个(n,k)MDS(Maximum Distance Separable,最大距离可分离)纠错码需要将一个原始文件分成k个大小相等的模块,并通过线性编码生成n个互不相关的编码模块,由n个节点存储不同的模块,并满足MDS属性(n个编码模块中任意k个就可重构原始文件)。这种编码技术在提供有效的网络存储冗余中占有重要的地位,特别适合存储大的文件以及档案数据备份应用。
由于节点失效或者文件损耗,系统的冗余度会随着时间而逐渐丧失,因此需要一种装备来保证系统的冗余。文献[R.Rodrigues and B.Liskov,“High Availability inDHTs:Erasure Coding vs.Replication”,Workshop on Peer‐to‐Peer Systems(IPTPS)2005.]中提出的EC码(Erasure Codes,纠错码),在存储开销上是比较有效的,然而支持冗余恢复所需要的通信开销也比较大。请见图1和图2,图1表示只要系统中有效节点数d≥k,就可以从现有节点中获得原始文件;图2表示恢复失效节点所存储内容的过程。从图1、2中可以看出整个恢复过程是:1)首先从系统中的k个存储节点中下载数据并重构原始文件;2)由原始文件再重新编码出新的模块,存储在新节点上。该恢复过程表明修复任何一个失效节点所需要的网络负载至少为k个节点所存储的内容。所以,上述EC码修复过程所需要的通信负载较高。目前大多采用两种措施来弥补:1)使用混合策略,要求对整个原始文件进行一个额外的备份,使得修复过程所需要的网络负载等于所丢失的数据量,但是该策略增加了存储负载并使得系统复杂,且节点负载不能均衡;2)使用懒修复(修复过程延迟到有若干个节点失效后再一同修复)可以有效避免由于临时的失效而带来的额外修复负载,但是延迟修复可能使得系统易受攻击,从而系统需要一个更大的冗余量,另外在网络有限资源的使用过程中可能会阻止修复过程。
在现有技术中,当任意一个模块所存储的信息是由两个其他模块的信息异或而得到的情况下,任意两个模块信息就可用来修复第三个模块,在文献[A.Duminuco,E.Biersack,“Hierarchical Codes:How to Make Erasure Codes Attractive for Peer-to-Peer Storage Systems”,Peer-to-Peer Computing(P2P),2008.]中提出了一种HC码(Hierarchical Codes分层码)。HC码是一种迭代构造,从小的EC码开始逐渐构成一个大的编码,通过异或由EC码构造的子模块而产生。其主要思想是:考虑一个大小为s×k的文件,将文件分成s个子群,每个子群包含k个未编码模块。在每个子群中使用一个(n,k)EC码来产生n-k个局部冗余编码模块。通过编码计划进一步由所有的s×k个未编码模块来产生r个全局冗余编码模块。因此形成一个编码群,将s×k个未编码模块编码成s×n+r个编码模块。局部冗余模块可以用来修复子群中节点的失效,因此只需要访问少于整个文件大小的模块就可以进行修复;而全局冗余模块提供进一步修复保证,即当一个子群中失效的模块太多而不能自修复时可通过全局冗余模块进行修复。但是,由于HC码中系统结构不对称,使得有些模块的地位或许比其他模块地位要高,使得很难做一个深入的恢复力分析(影响对编码有效性的理解);在实际系统中如果利用该编码则需要更复杂的算法(不管是重构还是修复);在HC码中不同编码模块的地位不同,因而修复丢失的模块所需要的模块数不仅仅取决于丢失的模块数,还与具体哪些模块丢失有关;同样地,重构原始文件所需要的模块数可能也因不同的丢失模块而不同。
在现有技术中,专利PCT/CN2012/071177中提出了一种RGC码(RegeneratingCodes,再生码),使得修复一个丢失的编码模块只需要一小部分的数据量,而不需要先重构整个文件。RGC码应用线性网络编码技术,通过NC(Network Coding,网络编码)属性(即最大流最小割)来改善修复一个编码模块所需要的开销,从网络信息论上可以证明用和丢失模块相同的数据量的网络开销就可修复原丢失模块。RGC码主要思想还是利用MDS属性,当一些存储节点失效,也就相当于存储数据丢失,需要从现有有效节点中下载信息来使得丢失的数据再生,并存储在新的节点上。随着时间的推移,很多原始节点可能都会失效,一些再生的新节点可以在自身再重新执行再生过程,继而生成更多的新节点。因此再生过程需要确保两点:1)失效的节点间是相互独立的,再生过程可以循环递推;2)任意k个节点就足够恢复原始文件。
图3描述了当一个节点失效后的再生过程。分布式系统中n个存储节点各自存储α个数据,当有一个节点失效,新节点通过从其他d≥k个存活节点中下载数据来再生,每个节点的下载量为β,每个存储节点i通过一对节点Xi in,Xi out来表示,这对节点通过一个容量为该节点的存储量(即α)的边连接。再生过程通过一个信息流图描述,Xin从系统中任意d个可用节点中各自收集β个数据,通过在Xout中存储α个数据,任何一个接收者都可以访问Xout。从信源到信宿的最大信息流是由图中最小割集决定,当信宿要重构原始文件时,这个流的大小不能低于原始文件的大小。
每个节点存储量α和再生一个节点所需要的带宽γ之间存在一个折中,因此又引入MBR码(Minimum-bandwidth Regenerating,最小带宽再生)和MSR码(Minimum-storageRegenerating,最小存储再生)。对于最小存储点可以知道每个节点至少存储M/k比特,因此可推出MSR码中当d取最大值即一个新来者同时和所有存活的n-1个节点通信时,修复带宽γMSR最小即而MBR码拥有最小修复带宽,可以推出当d=n-1时,获得最小修复负载对于节点失效修复问题,考虑了三种修复模型:精确修复:失效的模块需要正确构造,恢复的信息和丢失的一样(核心技术为干扰队列和NC);功能修复:新产生的模块可以包含不同于丢失节点的数据,只要修复的系统支持MDS码属性(核心技术为NC);系统部分精确修复:是介于精确修复和功能修复之间的一个混合修复模型,在这个混合模型中,对于系统节点(存储未编码数据)要求必须精确恢复,即恢复的信息和失效节点所存储的信息一样,对于非系统节点(存储编码模块),则不需要精确修复,只需要功能修复使得恢复的信息能够满则MDS码属性(核心技术为干扰队列和NC)。但是,为了使RGC码运用到实际的分布式系统中,即使不是最优情况也至少需要从k个节点下载数据才能修复丢失模块,因此即使修复过程所需要的数据传输量比较低,RGC码也需要高的协议负载和系统设计(NC技术)复杂度来实现。另外RGC码中未考虑工程解决方法,如懒修复过程,因此不能避免临时失效所带来的修复负载。最后基于NC的RGC码的编解码实现所需要的计算开销比较大,比传统的EC码要高一个阶数。
发明内容
本发明要解决的技术问题在于,针对现有技术的上述修复数据传输量较大、系统开销较大、系统较复杂的缺陷,提供一种修复数据传输量小、系统开销较小、系统较简单的基于同态的自修复码的编码、解码和数据修复方法及其存储系统。
本发明解决其技术问题所采用的技术方案是:构造一种基于同态的自修复码的编码方法,包括如下步骤:
A)将数据量为M的数据O用正整数k分为k份,每份的数据量为M/k,即其中,oi是等分数据O后得到的每份数据,是以2M/k为阶的有限域;
B)使所述Oi为多项式的系数,即pi=oi+1,i=0,...,k-1;
C)在有限域中任取n个不同的非零元素值α1,…,αn,代入所述多项式变量,分别计算每个值代入后所述多项式的值,得到存储在各存储节点的编码数据;其中,n≤2M/k-1;
D)分别存储所述得到的编码数据到各存储节点。
在本发明所述的基于同态的自修复码的编码方法中,所述步骤C)中,所述n个不同非零元素值为所述有限域的生成元的不同阶数。
本发明还涉及一种对应上述编码方法的、基于同态的自修复码的解码方法,包括如下步骤:
M)取得k个线性无关的编码数据,计算所述k个编码数据的2k-1的线性组合;其中,k≥2;
N)在所述2k-1个线性组合中任取2k-1+1个,通过恢复多项式pi=oi+1,i=0,...,k-1得到数据O,O=(o1,…,ok)。
本发明还涉及一种修复使用上述的编码方法得到的编码数据的方法,包括如下步骤:
I)判断存储编码数据的节点上的编码数据是否失效,如是,执行下一步骤;否则,退出;
J)判断存在失效编码数据的节点是否达到设定修复阈值,如是执行下一步骤;否则,退出;
K)通过d个与所述失效的编码相关的、存储在不同存储节点的编码数据之间的运算得到的结果,修复所述失效节点中的数据。
在本发明所述的修复上述编码数据的方法中,所述步骤J)中,系统最大能够容忍(n-1)/2个节点失效而不丢失数据,因此所述设定的修复阈值最大不超过(n-1)/2,n是节点个数,具体还包括:
J1)如果阈值设置为1,表明系统进行饿修复(有失效即进行修复);
J2)如果阈值设置为大于1且不超过(n-1)/2,表明系统进行懒修复(达到一定失效数后再修复)。
在本发明所述的修复上述编码数据的方法中,所述步骤K)中,d值代表修复一个失效节点所下载的节点数,在本发明所采用的自修复码中d等于2(当d=1时就只是简单的复制编码),并可通过依次逐个修复或并发修复所述失效节点所丢失的数据。
在本发明所述的修复上述编码数据的方法中,还包括如下步骤:
取得分布存储的编码数据的码字形式(p(α1),…,p(αn)),并判断当n=2M/k-1时,所述α1,…,αn是否都在集合B中,如是退出,否则,执行步骤I);其中,集合B是有限域中的一个F2基,该基由M/k个线性无关的元素组成,即B={b1,…,bM/k}。
在本发明所述的修复上述编码数据的方法中,所述步骤K)进一步包括如下步骤:
K1)确定已失效的编码存储数据的存储节点;
K2)通过利用有限域中的乘法群的生成元的特性,分解所述失效存储节点中表示其存储编码数据内容的多项式为其他存储节点编码数据的多项式,找到与所述已失效的编码存储数据相关的存储节点;
K3)下载所述相关节点的编码数据并按照步骤K2)中的多项式运算得到所述已失效的编码数据。
本发明还涉及一种基于同态的自修复码的分布式存储系统,包括多个存储节点,还包括至少一个编码模块、至少一个解码模块和至少一个数据修复模块;所述编码模块用于将数据转换为多个基于同态的自修复编码数据并分别存储在不同的存储节点上;所述解码模块用于从所述多个存储节点中取得编码数据并恢复数据;所述数据修复模块用于修复所述失效节点所丢失的编码数据;所述数据修复模块还包括:
编码数据可修复判断单元:用于通过取得分布存储的编码数据的码字形式(p(α1),…,p(αn)),并判断当n=2M/k-1时,所述α1,…,αn是否都在集合B中,来判断所述数据编码是否可修复;
编码数据失效判断单元:用于判断在存储所述数据编码的多个节点上是否存在失效的数据编码;
失效编码数据量判断单元:用于判断失效的数据编码是否达到设定的修复阈值;
失效编码数据修复单元:用于在失效的数据编码超过达到修复阈值时,通过d个与所述失效的编码相关的、存储在不同存储节点的编码数据之间的运算得到的结果,修复所述失效节点中的编码数据。
在本发明所述的基于同态的自修复码的分布式存储系统中,所述编码模块进一步包括:
数据等分单元:用于将数据量为M的数据O用正整数k分为k份,每份的数据量为M/k,即其中,oi是等分数据O后得到的每份数据,是以2M/k为阶的有限域;
多项式系数设置单元:用于使所述Oi为多项式的系数,即pi=oi+1,i=0,...,k-1;
编码数据取得单元:用于在有限域中任取n个不同的非零元素值α1,…,αn,代入所述多项式变量,分别计算每个值代入后所述多项式的值,得到存储在各存储节点的编码数据;其中,n≤2M/k-1;
编码数据存储单元:用于将所述得到的编码数据存储到各存储节点;
所述解码模块进一步包括:
编码数据取得单元:用于由不同的存储节点取得k个线性无关的编码数据,计算所述k个编码数据的2k-1的线性组合;其中,k≥2;
多项式恢复及数据取得单元:用于在所述2k-1个线性组合中任取2k-1+1个,通过恢复多项式pi=oi+1,i=0,...,k-1得到数据O,O=(o1,…,ok)。
实施本发明的基于同态的自修复码的编码、解码和数据修复方法及其存储系统,具有以下有益效果:由于采用在有限域中进行数据编码,使得各存储节点之间存储的编码数据之间存在一定的相关,当一个或多个存储节点的编码数据失效时,只要与其相关的多个或多对存储节点中有一对未失效,即可恢复数据。由于在大多数情况下只需一对相关存储节点的编码数据即可恢复失效数据,其传输的数据量较小、系统也不复杂,同时,由于在相关编码数据之间采用异或运算恢复失效的数据,系统的开销也较小。
附图说明
图1是现有技术中EC码中采用的数据下载过程示意图;
图2是现有技术中EC码中采用的数据恢复过程示意图;
图3是现有技术中RGC码中采用的数据恢复过程示意图;
图4是本发明基于同态的自修复码的编码、解码和数据修复方法及其存储系统实施例中编码数据存储方法的流程图;
图5是所述实施例中取得编码数据方法的流程图;
图6是所述实施例中修复编码数据方法的流程图;
图7是所述实施例中判断编码数据是否可修复的流程图;
图8是所述实施例中存储节点存储的编码数据以及修复示意图;
图9是所述实施例中编码与现有技术中各种编码的静态恢复力的比较示意图;
图10是所述实施例中不同阀值对应每个失效数据模块的修复负载示意图;
图11是所述实施例中基于同态的自修复码的存储系统结构示意图。
具体实施方式
下面将结合附图对本发明实施例作进一步说明。
如图4所示,在本发明的基于同态的自修复码的编码、解码和数据修复方法及其存储系统实施例中,对于数据进行编码的步骤包括:
步骤S401将一个大小为M的文件O分为相等的k份,即在本实施例中,其采取的技术方案是为网络存储系统设计明确的最优码,所需要的设计装备类似于传统的EC码。其整个思路为:定义Fq为q阶有限域,为除零元素以外的有限域。如果q=2m,元素x∈Fq可以通过一个m维向量x=(x1,…,xm)表示,其中xi∈F2,i=1,…,m,来自于一个固定的基域,也就是其中w为F2上m阶不可约首一多项式的一个本原根,{1,w,…,wm-1}构成Fq上一组F2基。有限域F2中只有元素0和1以及模2上的加法和乘法。在q阶有限域上的一个线性(n,k,d)SRC(Self‐repairing Codes,自修复码)码是一个线性映射c:,将一个k维的向量s映射为一个n维向量c(s)。码字c(s)的集合C,构成该编码。第三个参数d表示码字的最小距离:d=minx≠y∈Cd(x,y),其中汉明距离d(x,y)表示系数x和y位置不同的数。这个最小距离表示SRC码所能容忍的最大节点失效数,通过MDS码可知最大容忍度为n‐k。
数据的线性编码可以通过任意的多项式来实现,当选择有限域F2时,所有操作都是在模2上进行的。令其中m≥1,那么可以推出(a+b)2=a2+2ab+b2=a2+b2,因为2ab≡0mod2,得出
( a + b ) 2 i = Σ j = 0 2 i 2 i j a j b 2 i - j = a 2 i + b 2 i , i ≥ 1 . - - - ( 1 )
因此在Fq(q=2m)上,一个线性化的多项式p(X)可以表示成:一个弱线性化的多项式p(X)可以表示成:通过公式(1)可以推出当有下述公式:
p ( a + b ) = Σ i = 0 k - 1 p i ( a + b ) 2 i = Σ i = 0 k - 1 p i ( a 2 i + b 2 i ) = p ( a ) + p ( b ) . - - - ( 2 )
对于公式(2)可进一步推广,一个给定的多项式s=2l,1≤l≤m(当l=m时,p(X)是一个线性化多项式),有下述公式:
p ( ua + vb ) = Σ i = 0 k - 1 p i ( ua + vb ) s i = Σ i = 0 k - 1 p i ( ( ua ) s i + ( vb ) s i ) = Σ i = 0 k - 1 p i ( ua s i + vb s i ) = u Σ i = 0 k - 1 p i a s i + v Σ i = 0 k - 1 p i b s i = up ( a ) + vp ( b ) , 其中u,v∈Fs (3)
所以,在本步骤中,首先是选择一个正整数k,并用其将数据O分为k等份,每一份的数据量为M/k,其中,M是数据O的全部数据量;这样,数据O就可以表示为其中,是以2M/k为阶的有限域,得到的每个等份oi是有限域的元素。
步骤S402将k个分组编码为多项式p(X)上的k个系数,即pi=oi+1,i=0,...,K-1。在本步骤中,将上述k个分组(即被等分得到的部分)设置为上述多项式p(X)的k个系数,即pi=oi+1,i=0,...,k-1。
步骤S403由多项式p(X)上n个不同的非零值α1,…,αn来获得n个编码模块,即n个码字(p(α1),…,p(αn)),每个编码模块由不同的存储节点存储。在本步骤中,取中n个不同的非零值(为了使各个码字不同,必须满足公式(4):n≤2M/k-1.(4))作为多项式p(X)的变量分别代入上述多项式,由于在上述步骤中已经将该多项式的系数用k个分组代替,所以,当上述n个非零值分别代入多项式时,可以分别得到由上述k个分组之中的部分或全部表示的多项式的值。代入一个非零值就得到一个这样的多项式的值,而一个这样的值就表示一个编码数据(或编码模块),该编码数据存储在一个存储节点上;代入不同的非零值得到的编码数据存储在不同的存储节点上。
图5是下载用上述方法编码而存储在分布式存储系统中的数据的方法,在图5中,包括如下步骤:
步骤S501由k个线性无关的模块,计算2k-1个线性组合,再由线性组合来评估多项式p值。在本步骤中,由各存储节点下载其存储的编码数据,这些编码数据共下载k个,且这些编码数据线性无关;也就是说,取得k个线性无关的编码数据,并计算所述k个编码数据的2k-1的线性组合;其中,k≥2;
步骤S502由于多项式系数是在有限域上,由拉格朗日内插法可知只要2k-1+1点(因为当k≥2时,2k-1≥2k-1+1)就可以恢复唯一的多项式p和数据O,需要满足公式(5):2k-1+1≤2M/k-1.(5)。在本步骤中,通过在所述2k-1个线性组合中任取2k-1+1个,利用这些数据恢复多项式pi=oi+1,i=0,...,k-1得到数据O,O=(o1,…,oi)。将选取的2k-1+1个线性组合分别(请填入如何由这些线性组合得到数据的具体做法)得到所述多项式;在本步骤中,但需要强调的是:为了实现只要很少的编码模块(一般为2个)就可修复个别丢失的模块,并且支持在低于一半的节点失效情况下可自修复,丢失了MDS属性,即不是任意的k个模块就可恢复原始文件(虽然存在大量可能的k个组合)。
对于任意一个整数k,是在有限域上编码。为了获得有限域上精确的计算量,在一些情况下,通过使用一个乘法群上的生成元w来衡量将会非常方便。生成元具有属性,并且没有更小的满足该等式的整数w。
例如,取一个大小M=12比特的文件O=(o1,…,o12),令k=3,得出M/k=4,满足公式(5),即22+1=5≤24-1=15=nmax。文件O被分成3部分, O 1 = ( o 1 , . . . , o 4 ) , O 2 = ( o 5 , . . . , o 8 ) , O 3 = ( o 9 , . . . , o 12 ) ∈ F 2 4 . 令w为乘法群的生成元,因此有w4=w+1,w15=1,而用于编码的多项式为
图6是在本实施例中恢复失效编码数据的方法流程图,如图6所示,失效的编码数据的恢复包括如下步骤:
步骤S601编码数据可恢复?在本步骤中判断编码数据(编码模块)是否可以恢复,如是,执行下一步骤,否则,执行步骤S605;至于如何判断编码数据可以恢复,在稍后有较为详细的描述。
步骤S602存在失效的编码数据?在本步骤中,判断存储在各存储节点的编码数据中是否存在失效的编码数据,如是,执行下一步骤,否则,执行步骤S605;
步骤S603失效的编码数据达到设定修复阈值?在本步骤中,判断失效的编码数据数量是否达到设定值,如是,执行下一步骤,否则,执行步骤S605。值得一提的是,在本实施例中,由于系统最大能够容忍(n-1)/2个节点失效,因此上述修复阈值不能超过(n-1)/2;在本实施例中,当该值为1时,对编码数据的修复是饿修复;当该值大于1时,对编码数据的修复是懒修复。
步骤S604修复失效的编码数据:在本步骤中,对已发现的失效编码数据进行修复。具体而言,在本实施例中上述编码的例子中,n维码字可以通过评估(计算)p(X)在中n个不同元素而获得,其中可得n≤15=nmax。当n=4时,如果在wi,i=0,1,2,3中评估p(X),那么4个编码模块p(1),p(w),p(w2),p(w3)是线性无关的,由稍后所述的编码数据修复判断可知该编码不存在自修复的可能。而当n=7时,获得7个编码模块(p(1),p(w),p(w2),p(w4),p(w5),p(w8),p(w10)),由w4=w+1递推,可知 p ( 1 ) = Σ i = 1 4 o i w i 1 + Σ i = 1 4 o i + 4 w i 1 2 + Σ i = 1 4 o i + 8 w i 1 4 = o 4 + o 8 + o 12 + ( o 1 + o 4 + o 5 + o 8 + o 9 + o 12 ) w 1 + ( o 2 + o 6 + o 10 ) w 2 + ( o 3 + o 7 + o 11 ) w 3 , 从而得出节点1所存储的内容为(o4+o8+o12,o1+o4+o5+o8+o9+o12,o2+o6+o10,o3+o7+o11),其他节点所存储的内容可通过相同方法可以获得。图8中列出了不同节点所存储的内容,当存储p(w10)的节点7失效,由于p(w10)=p(w2+w+1)=p(w2)+p(w+1)=p(w2+w)+p(1)=p(w2+1)+p(w),新节点可以通过节点3和4、节点1和5或节点2和6恢复节点7所存储的内容。对于其他节点失效的情况下也可通过同样的方式进行自修复。当节点6和7同时失效,仍然可以通过两种不同方式进行修复,如:第一个新节点通过节点3和4修复节点7,第二个新节点通过节点3和1修复节点6。
步骤S605退出:在本步骤中,退出本次数据修复。
图7示出了在本实施例中判断编码数据是否可以修复的具体流程,在图7中,包括如下步骤:
步骤S701由编码过程构造n个码字形式(p(α1),…,p(αn)),每个系数都在中,且k<n≤2M/k-1:在本步骤中,通过上述编码过程构造的码字形式(p(α1),…,p(αn)),确定上述码字形式中每个系数所在有限域且k<n≤2M/k-1。定义n可以取得的最大值为nmax,即nmax=2M/k-1,即可确定编码过程中得到的码字形式。
步骤S702中包含一个F2基,该基由M/k个线性无关的元素组成B={b1,…,bM/k},故得到集合B:在本步骤中,由上述有限域中的F2基确定集合B。
步骤S703n=2M/k-1,将αi,i=1,…,n这些基元素看成在F2上的线性组合:在本步骤中,若n取最大值,即n=2M/k-1,αi,i=1,…,n可以看成这些基元素在F2上的线性组合。
步骤S704:由知一个码字可以由其他码字线性组合获得:在本步骤中,由于从公式(2)可以得出这意味着一个编码模块可以通过其他编码模块的一个线性组合获得。从计算复杂性上来说,一个丢失模块的修复只需要一些异或操作(在一个好的情况下,只需要两个模块就可重构一个丢失模块;在坏的情况下则需要k-1个)。
步骤S705α1,…,αn均在B集合中?在本步骤中,判断α1,…,αn是否均在B集合中,如是,执行步骤S707;否则执行步骤S706.。
步骤S706(p(α1),…,p(αn))码字失效可以自修复:在本步骤中,上述α1,…,αn不都在集合B中,则(p(α1),…,p(αn))码字可由其他码字的线性组合获得,因此可进行自修复。
步骤S707编码数据不具有自修复属性:在本步骤中,由于α1,…,αn相互独立,任意码字都不能由其他码字的线性组合获得,该编码就不具有自修复属性。
在本实施例中上述编码的例子中,当一个节点想获得原文件时,需要下载k=3个线性无关的分组,也就是p(w),p(w2),p(w3),基于上述分组可以产生线性组合p(aw+bw2+cw3),由a,b,c∈{0,1}知存在23-1=7种非零线性组合,根据译码装置S502得出其中的任意22+1=5种线性组合就可以恢复多项式p,进而获得原文件O。
从上面分析可以看出,对于给定的k值,n可以取k+1到nmax中不同值,同时也可取不同的{α1,…,αn}来定义一个SRC码。选择集合αi来形成一个大小为的子空间,这个选择可以构成一个特定的对称结构的编码,也就是类似一种异或结构。然而需要说明的是,尽管编码模块可以通过相互之间的异或获得,但是每个模块所获得的关于所有其他不同模块的信息,实际上不是通过一个简单的数据本身的异或。
此外,在本实施例中,从静态恢复力上进行分析(态恢复力主要是指一个文件一旦存入系统,在没有另外的修复甚至系统中某些个别的存储节点失效时,该文件一直有效的概率),令pnode为任意给定节点有效的概率,由于系统中没有两个不同的模块存储在相同节点上,因此可以推出任意节点所存储的模块的有效性为pnode
上面所描述的(n,k)HSRC码(Homomorphic Self‐Repairing Codes,同态自修复码),主要将原始k个模块通过线性多项式编码成n个互不相关的模块每一个编码模块pi都由一个节点来存储,因此系统中有n个节点,每个节点存储一个长度为M/k的二进制向量,也可以看成一个n×M/k的二进制矩阵A,即
A = p 1 . . . p n = p 1,1 . . . p 1 , M / k . . . p n , M / k . . . p n , M / k , p i , j &Element; F 2 . - - - ( 6 )
在本实施例中,当n=4时,可以得到一个4维的单位矩阵A=I4,而当n=7时,矩阵为 A T = 1 0 0 1 0 1 1 0 1 0 1 1 0 1 0 0 1 0 1 1 1 0 0 0 0 0 0 0 . 因此一个节点失效可等效于矩阵A丢失了一个相应的行,如果多个节点(如n‐x,表示有效节点只有x个)失效,可以通过一个x×M/k的子矩阵Ax来代替A。对于x个可用的编码模块的任意给定的线性组合,如果我们获得矩阵Ax中至少k个线性无关的行,那么仍可以重构原始文件。也可以理解为如果矩阵Ax的秩不小于k则原始文件可以被重构。
对于d>1,考虑一个没有全零行的(2d-1)×d的二进制矩阵,可推出该矩阵的秩为d。如果以概率1‐pnode来随机均匀地移去矩阵的某些行,那么将得到一个x×d的子矩阵,其中x是二项式分布的。令R(x,d,r)为矩阵(2d-1)×d中秩为r的子矩阵x×d数,其中包含所有可能的行的排列。根据矩阵秩的特点(不能大于最小维数),当等于最小维数时表示任意行之间都是线性无关的(即不能相互表示),当小于最小维数时可以降低行数进行递推分析:秩为r‐1的一个(x‐1)×d子矩阵有2d-1-(2r-1-1)=2d-2r-1个,秩为r的一个(x‐1)×d子矩阵有2r-1-(x-1)=2r-x,因此可以得到公式(7):
令ρ(x,d,r)为在子矩阵x×d中,秩为r的个数占所有可能的秩的比例。由于在2d-1中选择x行有种可能,而对于每一个x有x!中排列方式,因此可以得出:
&rho; ( x , d , r ) = R ( x , d , r ) &Sigma; j = 0 d R ( x , d , j ) = R ( x , d , r ) C 2 d - 1 x x ! - - - ( 8 )
通过公式(7)和(8)可以推出一个本实施例中的(n,k)HSRC码恢复原始文件的概率pobj为: p obj = &Sigma; x = k n &Sigma; r = k d &rho; ( x , d , r ) C n x p node x ( 1 - p node ) n - x , d = log 2 ( n + 1 ) - - - ( 9 )
而一个(n,k)EC码成功恢复原始文件的概率为图9将HSRC码静态恢复力和EC码进行比较,可以看出对于相同的存储负载M/k,SRC码的静态修复力只比EC码低一点,另外对于一个固定的k值,随着n值的增加,SRC码的静态修复力逐渐接近EC码。对于比较低的存储开销,在相对比较高的pnode情况下,恢复原始文件的概率仍为1。这主要是因为在任何存储系统中,都有一个修复操作来补充丢失的模块,使得系统的pnode值比较高。若为了实现和EC码相同的静态恢复力,SRC码需要在编码过程中引入额外的冗余,但是通过比较可以知道这个冗余负载是可接受的。
节点可用性的概率pnode可以通过下面两种情况增大:要么执行一个懒修复,也就是只有当系统的冗余度降低到一个确定阈值时才执行修复;要么在执行修复过程前,有多个相关联的模块失效(这种情况需要额外分析,一般用饿修复)。由于在修复过程未考虑相关联的模块的失效,可能会实施一个饿修复,即只要任何一个编码模块失效,就立即进行修复。由于HSRC码的子空间架构,使得HSRC码中一个丢失的模块可以通过两个其他可用的模块来进行修复。
在本实施例中,SRC码的分集s定义为线性相关的分组对(可用于重构分组对中一个确定失效的模块)的个数。可以看出本实施例中s=3,假设p(w)丢失,三个固定的分组对(即(p(1),p(w4));(p(w2),p(w5));(p(w8),p(w10)))中的任意一个就可用来修复p(w),从图8中也可以看出当节点7或节点6失效都有三个固定的分组对来修复。对于一个确定的d,令n=2d-1,多项式p(x)通过来评估,其中αi∈{0,1},(α0,…,αd-1)取除全0以外所有可能的2d个值。假设对于每一个α,都可以构造分组对(α+β,α),其中β取除0和α以外所有可能的2d-2个值,可以得出共有2d-2(相当于n‐1)个分组对,但由于分组对(α+β,α)与(α,α+β)等效,因此可以得出引理1:一个(n,k)HSRC码的分集s为(n‐1)/2。
考虑任意丢失模块α,如果系统中有(n‐1)/2个模块不可用,在最坏情况下可以假设这(n‐1)/2个模块属于同一分组对。然而只要系统中有另外一个分组可用,就可以和其他分组构成一对,因而可以证明系统中至少有一个可用的分组对来重构丢失模块α。因此推出引理2:对于一个HSRC码,如果系统中至少有(n+1)/2个模块可用,那么对于任何失效的模块都存在一些可用的分组对,并可以从这些可用的分组对中恢复丢失的数据。
x是在一个给定时间内系统中可用的分组数,对于任意的丢失模块,都可以通过相互组合的分组对进行修复。当x≥(n+1)/2时只要两次下载就可以修复;否则需要进行一个概率性分析,由于一个确定分组对的节点都可用的概率为(x/n)2,因此只要两个分组就可以重构丢失的分组的概率为p2=1-(1-(x/n)2)s。如果两个分组不能修复一个确定的模块,则假设可以通过更多的分组来修复丢失的模块,一个松的上限值可以通过考虑如果2个分组不可以修复丢失的模块,可以通过下载k个分组来进行修复,这种情况发生的概率为1-p2=(1-(x/n)2)s
假设修复一个丢失模块所需要下载的分组数为Dx,而n个分组中只有x个可用,Dx值可以由公式(10)决定: D x = 2 ; x &GreaterEqual; ( n + 1 ) / 2 D x < 2 p 2 + k ( 1 - p 2 ) ; otherwise - - - ( 10 )
通过上述分析知所有丢失的模块可以通过并发的或者顺序的两种方式修复。如果是按照并发的方式,那么下载所需要的分组的总负载Dprl为:Dprl=(n-x)Dx;如果是按照顺序的方式,则下载所需要的分组的总负载Dseq为:
为了比较不同修复方案的负载(使用SRC码的懒修复(包括并发、顺序两种方式)、饿修复以及使用传统EC码的懒修复),考虑懒修复的一个阈值:在n个存储节点的系统中,只有当可用的节点数x=xth时才开始修复。如果在SRC码中使用饿修复,那么需要下载的负载为Degr=2(n-xth)。可以推出在SRC码中,当懒修复的阈值xth≥(n+1)/2时,饿修复所使用的总共带宽等于懒修复(包括并发、顺序两种方式)所消耗的带宽。
在EC码设计中,当使用懒修复时(阈值xth),假设一个节点下载足够的模块(一般为k)来构造原始文件,然后再在本地构造一个新的编码模块来存储,并且也为其他失效节点构造n-xth-1个不同编码模块,将这些模块分别存储在其他不同新节点上,从而总共网络负载为:DEClazy=k+n-xth-1;当使用饿修复时,则对于每次修复都需要从k个节点下载数据,显然这比懒修复所需要的负载要大,因此不作考虑。
如果少于一半的分组不可用,由引理2可知下载两个模块就可以修复一个丢失的模块;当更多的模块丢失,考虑一个和EC码相同的修复策略,也就是先下载k个模块来重构整个文件,然后再在本地分别构造所有丢失模块。这说明SRC码降低修复带宽的条件是只有系统中没有丢失太多的模块。定义一个临界值xc,即EC码的懒修复所需要的总带宽和SRC码相同。当xth≥(n+1)/2,由上面分析知饿修复所需要的带宽等于懒修复,而且顺序修复和并发修复的带宽相同,即Degr=Dprl=Dseq,因此可以由下式推出xc D egr = D EClazy &DoubleRightArrow; 2 ( n - x c ) = k + n - x c - 1 &DoubleRightArrow; x c = n + 1 - k .
图10比较了SRC码与EC码在懒修复过程中修复每个丢失模块所需要的平均网络负载。SRC码主要考虑并发和顺序两种懒修复方案,从图中可以看出当xth≥(n+1)/2=16时,这两种懒修复方案所需要的负载相同且恒为2,而EC码的懒修复负载(只有顺序)随着阈值xth的增加不断增大,并且当xth≥xc=n+1-k=24时,SRC码修复负载就比EC码低。
从上面的分析可以得出当懒修复中的阈值xth比临界值xc要小时,EC码修复所需要的总带宽比SRC码低,但是对于大部分存储网络来说xc一般比较低,并且EC码一般使用懒修复。由于懒修复在节点失效后需要等待的时间太长,使得在另外更多的节点失效条件下系统易受攻击(如非法节点假冒),因此在修复之前等待若干节点失效是没必要的;另外同时修复这么多失效模块会引入过重的网络带宽负载。而使用SRC码可以灵活的根据实际情况决定选择懒修复(通常含有比较高的阈值xth)还是饿修复方案,每一个丢失模块所修复的开销在一个大的范围内(即xth≥(n+1)/2)保持不变。这种灵活性使得SRC码特别适合P2P系统,也就是可以避免不需要的类似于暂时下线的修复,另外也没有EC码中懒修复的三个缺点即:
1)必须选择一个阈值从而使得系统易受攻击;
2)必须选择一个大的n值来处理类似于这种的攻击;
3)引入过重的网络带宽负载。
SRC码在基于编码的分布式存储系统中是非常有效的,可以大幅度降低修复过程所使用的带宽。对于系统中不同参数的选择,EC码中的懒修复可能在总共带宽消耗上要优于SRC码,但是EC码限制了系统的实际应用范围。
SRC码另外一个优点是可以同时独立并发的修复不同的丢失模块。如果修复不够快,可能在修复过程中会有新的节点失效,从而使得性能退化,更严重的后果可能是会丢失所存储的文件。
假设在存储网络中每个节点的上下链路容量在每个单位时间内都为1个分组,并且网络总的带宽比较大,这种假设在不同的网络存储系统环境中是合理的。对于实施例1,n值取nmax,也就是使用一个(15,3)HSRC码。由于类似于懒修复或相互关联的失效等原因,我们可以假设p(1),…,p(w6)这7个模块失效,而p(w7),…,p(w15)这些模块可用,下面列出了修复每个丢失模块可能的分组对。
一个可能的计划(在不同的节点上下载可用的模块来重构丢失的模块)如下:在第一个时隙,想要构造各自的p(1),…,p(w6)中的一个模块的7个节点分别独立下载p(w11),p(w10),p(w12),空,p(w13),p(w7),p(w8);在第二个时隙分别下载p(w12),p(w8),p(w7),p(w10),p(w11),p(w13),p(w14)(可以看出除了p(w3)所有丢失模块都可修复);在第三个时隙,下载p(w12)来构造p(w3)。从这例子可以看出,在两个时隙内所下载的模块就可以重构丢失模块中的6个,最后一个模块可以通过下一时隙来修复,这主要是取决于任意节点在每个单位时间内只能上传或下载一个模块的限制。
如果系统内存在一个关于原始文件的完整副本(如EC码中的混合策略),那么修复7个丢失的模块需要7个时隙;如果用EC码则至少需要9个时隙。因此可以证明SRC码可以允许失效的模块快速修复。
在本实施例中,SRC码和HC码不同的是:在HC码中不同的编码模块的地位不同,因而修复丢失的模块所需要的模块数不仅仅取决于丢失了多少模块数,还与具体哪些模块被丢失有关,同样重构原始文件所需要的模块数可能也因不同的丢失模块而不同,而SRC码修复过程与具体丢失模块无关。RGC码将网络编码应用到一个(n,k)纠错码,并基于NC最小割最大流定理来支持最小修复负载,RGC码中要重构任意一个模块,至少需要和其他k个节点通信,当只有一个模块丢失,所需要的最小通信量是与所有活动的n-1个节点通信,而SRC码只要和2个活动节点通信就可修复丢失模块。
SRC码属性可以理解为修复丢失模块所需要的通信负载低,并且由于修复可并发执行使得修复所需要的时延低。这些有利的属性使SRC码特别适合应用于实际的分布式存储系统。在分布式存储系统中,HSRC码提供了一种有效的修复丢失冗余的方案,具体包括:1)不管是实施饿修复还是懒修复所需要的修复带宽都比较低;2)丢失模块从一个给定数的模块中修复,该给定数只于丢失了多少模块有关,而与具体哪些模块丢失无关,因此可以并发独立地修复多个不同的模块,使得修复过程比较快,降低修复时延。
本实施例还涉及一种实现上述基于同态的自修复码的编解码、数据修复方法的存储系统,如图11所示,该存储系统包括多个存储节点1101,还包括至少一个编码模块1102、至少一个解码模块1103和至少一个数据修复模块1104;其中,编码模块1102用于将数据转换为多个基于同态的自修复编码数据并分别存储在不同的存储节点1101上;解码模块1103用于由上述多个存储节点1101中取得编码数据并恢复数据;数据修复模块1104用于修复存储节点1101上失效的编码数据;在本实施例中,上述编码模块1102、解码模块1103和数据修复模块1104是软件功能模块,可以位于相同或不同的物理载体上;当然,在一些情况下,上述各模块也可以是使用特定硬件(通常是专用的集成电路芯片)构成的,同样可以分布在相同或不同的物理载体上。
在本实施中,编码模块1102进一步包括:数据等分单元1121、多项式系数设置单元1122、编码数据取得单元1123和编码数据存储单元1124;其中,数据等分单元1121用于将数据量为M的数据O用正整数k分为k份,每份的数据量为M/k,即其中,oi是等分数据O后得到的每份数据,是以2M/k为阶的有限域;多项式系数设置单元1122用于使上述Oi为多项式的系数,即pi=oi+1,i=0,...,k-1;编码数据取得单元1123用于在有限域中任取n个不同的非零元素值α1,…,αn,代入上述多项式变量,分别计算每个值代入后上述多项式的值,得到存储在各存储节点的编码数据;其中,n≤2M /k-1;编码数据存储单元1124用于分别存储上述得到的编码数据到各存储节点。
解码模块1103包括编码数据取得单元1131和多项式恢复及数据取得单元1132;编码数据取得单元1131用于由不同的存储节点取得k个线性无关的编码数据,计算上述k个编码数据的2k-1的线性组合;其中,k≥2;多项式恢复及数据取得单元1132用于在上述2k-1个线性组合中任取2k-1+1个,通过恢复多项式pi=oi+1,i=0,...,k-1得到数据O,O=(o1,…,ok)。
在本实施例中,数据修复模块1104包括:编码数据可修复判断单元1141、编码数据失效判断单元1142、失效编码数据量判断单元1143和失效编码数据修复单元1144;其中,编码数据可修复判断单元1141用于通过取得分布存储的编码数据的码字形式(p(α1),…,p(αn)),并判断当n=2M/k-1时,所述α1,…,αn是否都在集合B中,来判断数据编码是否可修复;编码数据失效判断单元1142用于判断在存储上述数据编码的多个节点上是否存在失效的数据编码;失效编码数据量判断单元1143用于判断上述失效的数据编码是否达到设定的修复阈值;失效编码数据修复单元1144用于在失效的数据编码达到设定阈值时,通过d个与所述失效的编码相关的、存储在不同存储节点的编码数据之间的运算得到的结果,修复所述失效节点中的编码数据。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种基于同态的自修复码的编码方法,其特征在于,包括如下步骤:
A)将数据量为M的数据O用正整数k分为k份,每份的数据量为M/k,即其中,oi是等分数据O后得到的每份数据,是以2M/k为阶的有限域;
B)使所述Oi为多项式的系数,即pi=oi+1,i=0,...,k-1;
C)在有限域中任取n个不同的非零元素值α1,…,αn,代入所述多项式变量,分别计算每个值代入后所述多项式的值,得到存储在各存储节点的编码数据;其中,n≤2M/k-1;
D)分别存储所述得到的编码数据到各存储节点。
2.根据权利要求1所述基于同态的自修复码的编码方法,其特征在于,所述步骤C)中,所述n个不同非零元素值为所述有限域的生成元的不同阶数。
3.一种用于如权利要求1所述基于同态的自修复码的解码方法,其特征在于,包括如下步骤:
M)取得k个线性无关的编码数据,计算所述k个编码数据的2k-1的线性组合;其中,k≥2;
N)在所述2k-1个线性组合中任取2k-1+1个,通过恢复多项式pi=oi+1,i=0,...,k-1得到数据O,O=(o1,…,ok)。
4.一种修复使用如权利要求1所述的编码方法得到的编码数据的方法,其特征在于,包括如下步骤:
I)判断存储编码数据的节点上的编码数据是否失效,如是,执行下一步骤;否则,退出;
J)判断存在失效编码数据的节点是否达到设定修复阈值,如是执行下一步骤;否则,退出;
K)通过d个与所述失效的编码相关的、存储在不同存储节点的编码数据之间的运算得到的结果,得到所述失效编码数据节点中的数据并修复。
5.根据权利要求4所述的方法,其特征在于,所述步骤J)中,系统最大能够容忍(n-1)/2个节点失效而不丢失数据,所述设定的修复阈值最大不超过(n-1)/2,n是节点个数;具体还包括:
J1)如果设定的修复阈值设置为1,系统进行饿修复;或
J2)如果设定的修复阈值设置为大于1且不超过(n-1)/2,系统进行懒修复。
6.根据权利要求4所述的方法,其特征在于,所述步骤K)中,d值代表修复一个失效的节点所需下载的节点数,在自修复码中d等于2,并可通过依次逐个修复或并发修复所述失效节点丢失的数据。
7.根据权利要求6所述的方法,其特征在于,还包括如下步骤:
取得分布存储的编码数据的码字形式(p(α1),…,p(αn)),并判断当n=2M/k-1时,所述α1,…,αn是否都在集合B中,如是退出,否则,执行步骤I);其中,集合B是有限域中的一个F2基,该基由M/k个线性无关的元素组成,即B={b1,…,bM/k}。
8.根据权利要求7所述的方法,其特征在于,所述步骤K)进一步包括如下步骤:
K1)确定已失效的编码存储数据的存储节点;
K2)通过利用有限域中的乘法群的生成元的特性,分解所述失效存储节点中表示其存储编码数据内容的多项式为其他存储节点编码数据的多项式,找到与所述已失效的编码存储数据相关的存储节点;
K3)下载所述相关节点的编码数据并按照步骤K2)中的多项式运算得到所述已失效的编码数据。
9.一种用于如权利要求1所述的编码方法得到的自修复码的分布式存储系统,包括多个存储节点,其特征在于,还包括至少一个编码模块、至少一个解码模块和至少一个数据修复模块;所述编码模块用于将数据转换为多个基于同态的自修复编码数据并分别存储在不同的存储节点上;所述解码模块用于由所述多个存储节点中取得编码数据并恢复数据;所述数据修复模块用于修复所述存储节点上失效的编码数据;所述数据修复模块还包括:
编码数据可修复判断单元:用于通过取得分布存储的编码数据的码字形式(p(α1),…,p(αn)),并判断当n=2M/k-1时,所述α1,…,αn是否都在集合B中,来判断所述数据编码是否可修复;
编码数据失效判断单元:用于判断在存储所述数据编码的多个节点上是否存在失效的数据编码;
失效编码数据量判断单元:用于判断失效的数据编码是否达到设定的修复阈值;
失效编码数据修复单元:用于在失效的数据编码达到设定的修复阈值时,通过d个与所述失效的编码相关的、存储在不同存储节点的编码数据之间的运算得到的结果,修复所述失效节点中的编码数据。
10.根据权利要求9所述的基于同态的自修复码的分布式存储系统,其特征在于,所述编码模块进一步包括:
数据等分单元:用于将数据量为M的数据O用正整数k分为k份,每份的数据量为M/k,即其中,oi是等分数据O后得到的每份数据,是以2M/k为阶的有限域;
多项式系数设置单元:用于使所述Oi为多项式的系数,即pi=oi+1,i=0,...,k-1;
编码数据取得单元:用于在有限域中任取n个不同的非零元素值α1,…,αn,代入所述多项式变量,分别计算每个值代入后所述多项式的值,得到存储在各存储节点的编码数据;其中,n≤2M/k-1;
编码数据存储单元:用于将所述得到的编码数据分别存储到各节点;
所述解码模块进一步包括:
编码数据取得单元:用于由不同的存储节点取得k个线性无关的编码数据,计算所述k个编码数据的2k-1的线性组合;其中,k≥2;
多项式恢复及数据取得单元:用于在所述2k-1个线性组合中任取2k-1+1个,通过恢复多项式pi=oi+1,i=0,...,k-1得到数据O,O=(o1,…,ok)。
CN201280032802.XA 2012-04-27 2012-04-27 基于同态的自修复码的编码、解码和数据修复方法及其存储系统 Expired - Fee Related CN103650462B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2012/074837 WO2013159341A1 (zh) 2012-04-27 2012-04-27 基于同态的自修复码的编码、解码和数据修复方法及其存储系统

Publications (2)

Publication Number Publication Date
CN103650462A CN103650462A (zh) 2014-03-19
CN103650462B true CN103650462B (zh) 2016-12-14

Family

ID=49482163

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201280032802.XA Expired - Fee Related CN103650462B (zh) 2012-04-27 2012-04-27 基于同态的自修复码的编码、解码和数据修复方法及其存储系统

Country Status (2)

Country Link
CN (1) CN103650462B (zh)
WO (1) WO2013159341A1 (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017041233A1 (zh) * 2015-09-08 2017-03-16 广东超算数据安全技术有限公司 一种功能修复再生码的编码和存储节点修复方法
CN105681425B (zh) * 2016-01-22 2019-01-22 广东顺德中山大学卡内基梅隆大学国际联合研究院 基于分布式存储系统的多节点修复方法及其系统
EP3408956B1 (en) 2016-01-29 2020-12-23 Massachusetts Institute of Technology Apparatus and method for multi-code distributed storage
CN105955839B (zh) * 2016-05-09 2018-12-14 东南大学 一种基于有限域二进制加法移位的再生码容错方法
CN107086870B (zh) * 2017-03-16 2019-10-22 东莞理工学院 修复多节点失效的mds阵列码编码以及解码方法
CN111585581B (zh) * 2020-05-14 2023-04-07 成都信息工程大学 一种基于二元域运算且支持任意码距的编码方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101261318A (zh) * 2008-04-03 2008-09-10 北京航空航天大学 高动态扩频精密测距接收机
CN101834898A (zh) * 2010-04-29 2010-09-15 中科院成都信息技术有限公司 一种网络分布式编码存储方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8046426B2 (en) * 2004-12-30 2011-10-25 Massachusetts Institute Of Technology Random linear coding approach to distributed data storage
US8472877B2 (en) * 2005-10-24 2013-06-25 Qualcomm Incorporated Iterative interference cancellation system and method
CN100579016C (zh) * 2006-01-24 2010-01-06 华为技术有限公司 一种网络数据的分布式存储下载系统、设备及方法
WO2010033644A1 (en) * 2008-09-16 2010-03-25 File System Labs Llc Matrix-based error correction and erasure code methods and apparatus and applications thereof
US8589637B2 (en) * 2009-10-30 2013-11-19 Cleversafe, Inc. Concurrent set storage in distributed storage network

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101261318A (zh) * 2008-04-03 2008-09-10 北京航空航天大学 高动态扩频精密测距接收机
CN101834898A (zh) * 2010-04-29 2010-09-15 中科院成都信息技术有限公司 一种网络分布式编码存储方法

Also Published As

Publication number Publication date
WO2013159341A1 (zh) 2013-10-31
CN103650462A (zh) 2014-03-19

Similar Documents

Publication Publication Date Title
CN103650462B (zh) 基于同态的自修复码的编码、解码和数据修复方法及其存储系统
US9722637B2 (en) Construction of MBR (minimum bandwidth regenerating) codes and a method to repair the storage nodes
US9961142B2 (en) Data storage method, device and distributed network storage system
El Rouayheb et al. Fractional repetition codes for repair in distributed storage systems
Rashmi et al. Explicit construction of optimal exact regenerating codes for distributed storage
Oggier et al. Self-repairing homomorphic codes for distributed storage systems
Hu et al. Cooperative recovery of distributed storage systems from multiple losses with network coding
Li et al. Erasure coding for cloud storage systems: A survey
US9141679B2 (en) Cloud data storage using redundant encoding
Oggier et al. Self-repairing codes for distributed storage—A projective geometric construction
CN107003933B (zh) 部分复制码的构建方法、装置及其数据修复的方法
Oggier et al. Byzantine fault tolerance of regenerating codes
US11500725B2 (en) Methods for data recovery of a distributed storage system and storage medium thereof
Wang et al. MFR: Multi-loss flexible recovery in distributed storage systems
CN109491835A (zh) 一种基于动态分组码的数据容错方法
Hollmann Storage codes—Coding rate and repair locality
CN104782101B (zh) 用于分布式网络存储的自修复码的编码、重构和恢复方法
US20150227425A1 (en) Method for encoding, data-restructuring and repairing projective self-repairing codes
Li et al. Pipelined regeneration with regenerating codes for distributed storage systems
Zhu et al. On low repair complexity storage codes via group divisible designs
WO2018209541A1 (zh) 基于t-设计的部分重复码的编码结构以及构造方法
Mital et al. Storage-repair bandwidth trade-off for wireless caching with partial failure and broadcast repair
Oggier et al. Homomorphic self-repairing codes for agile maintenance of distributed storage systems
Li et al. Cooperative pipelined regeneration in distributed storage systems
Mital et al. Functional broadcast repair of multiple partial failures in wireless distributed storage systems

Legal Events

Date Code Title Description
PB01 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
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20161214

Termination date: 20170427