CN103650462A - 基于同态的自修复码的编码、解码和数据修复方法及其存储系统 - Google Patents
基于同态的自修复码的编码、解码和数据修复方法及其存储系统 Download PDFInfo
- Publication number
- CN103650462A CN103650462A CN201280032802.XA CN201280032802A CN103650462A CN 103650462 A CN103650462 A CN 103650462A CN 201280032802 A CN201280032802 A CN 201280032802A CN 103650462 A CN103650462 A CN 103650462A
- Authority
- CN
- China
- Prior art keywords
- data
- coded data
- node
- failure
- 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.)
- Granted
Links
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
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,fc)MDS ( Maximum Distance Separable, 最大距离可分离) 纠错码需要将一个原始文件分 成 k个大小相等的模块,并通过线性编码生成 n个互不相关的编码模 块, 由 n个节点存储不同的模块, 并满足 MDS属性( n个编码模块 中任意 k个就可重构原始文件 )。 这种编码技术在提供有效的网络存 储冗余中占有重要的地位,特别适合存储大的文件以及档案数据备份 应用。
由于节点失效或者文件损耗, 系统的冗余度会随着时间而逐渐丧 失, 因此需要一种装备来保证系统的冗余。 文献 [R.Rodrigues and B.Liskov,"High Availability in DHTs: Erasure Coding vs. Replication", Workshop on Peer-to-Peer Systems (IPTPS)2005.]中提出的 EC 码 ( Erasure Codes, 纠错码) , 在存储开销上是比较有效的, 然而支持 冗余恢复所需要的通信开销也比较大。 请见图 1和图 2, 图 1表示只 要系统中有效节点数 d≥ 就可以从现有节点中获得原始文件; 图 2 表示恢复失效节点所存储内容的过程。 从图 1、 2中可以看出整个恢 复过程是: 1 )首先从系统中的 个存储节点中下载数据并重构原始
文件; 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 x fc的文件, 将文件分成 s个子群, 每个子群包 含个未编码模块。在每个子群中使用一个 (i )EC码来产生 n-fc个局部 冗余编码模块。通过编码计划进一步由所有的 s 个未编码模块来产 生 r个全局冗余编码模块。 因此形成一个编码群, 将 s x fc个未编码模 块编码成 s n+r个编码模块。 局部冗余模块可以用来修复子群中节点 的失效, 因此只需要访问少于整个文件大小的模块就可以进行修复; 而全局冗余模块提供进一步修复保证,即当一个子群中失效的模块太 多而不能自修复时可通过全局冗余模块进行修复。 但是, 由于 HC码 中系统结构不对称, 使得有些模块的地位或许比其他模块地位要高, 使得很难做一个深入的恢复力分析(影响对编码有效性的理解); 在
实际系统中如果利用该编码则需要更复杂的算法(不管是重构还是修 复) ; 在 HC码中不同编码模块的地位不同, 因而修复丟失的模块所 需要的模块数不仅仅取决于丟失的模块数,还与具体哪些模块丟失有 关; 同样地, 重构原始文件所需要的模块数可能也因不同的丟失模块 而不同。
在现有技术中, 专利 PCT/CN2012/071177 中提出了一种 RGC码 ( Regenerating Codes, 再生码), 使得修复一个丟失的编码模块只需 要一小部分的数据量, 而不需要先重构整个文件。 RGC码应用线性网 络编码技术, 通过 NC ( Network Coding, 网络编码)属性(即最大流 最小割 )来改善修复一个编码模块所需要的开销,从网络信息论上可 以证明用和丟失模块相同的数据量的网络开销就可修复原丟失模块。 RGC码主要思想还是利用 MDS属性, 当一些存储节点失效, 也就相 当于存储数据丟失,需要从现有有效节点中下载信息来使得丟失的数 据再生, 并存储在新的节点上。 随着时间的推移, 很多原始节点可能 都会失效, 一些再生的新节点可以在自身再重新执行再生过程, 继而 生成更多的新节点。 因此再生过程需要确保两点: 1 ) 失效的节点间 是相互独立的, 再生过程可以循环递推; 2 )任意 个节点就足够恢复 原始文件。
图 3描述了当一个节点失效后的再生过程。 分布式系统中 n个存储 节点各自存储 "个数据, 当有一个节点失效, 新节点通过从其他 个存活节点中下载数据来再生, 每个节点的下载量为 ^, 每个存储节 点 i通过一对节点 χ'«,χ'。"'来表示, 这对节点通过一个容量为该节点的 存储量(即" ) 的边连接。 再生过程通过一个信息流图描述, x»从 系统中任意 d个可用节点中各自收集 个数据,通过 ^ 在 x。ut 中存储 "个数据, 任何一个接收者都可以访问 x。《'。 从信源到信宿的 最大信息流是由图中最小割集决定, 当信宿要重构原始文件时, 这个
流的大小不能低于原始文件的大小。
每个节点存储量 "和再生一个节点所需要的带宽 ^之间存在一个 折中, 因此又引入 MB R码 ( Minimum-bandwidth Regenerating, 最小 带宽再生)和^181码( Minimum-storage Regenerating,最小存储再生)。 对于最小存储点可以知道每个节点至少存储 M/fc比特, 因此可推出
MSR码中(《MSS, SS)= (L Mf 当 d取最大值即一个新来者同
k k(d - k + l)
时和所有存活的 n-1个节点通信时,修复带宽^^最小即 SS 。 而 MBR码拥 小修复带宽, 可以推出当 d=n-l时, 获得最小修复负 载 ( c
对于节点失效修复问题, 考虑了三种修复模型: 精确修复: 失效的模块需要正确构造, 恢复的 信息和丟失的一样(核心技术为干扰队列和 NC ) ; 功能修复: 新产 生的模块可以包含不同于丟失节点的数据, 只要修复的系统支持 MDS码属性(核心技术为 NC ) ; 系统部分精确修复: 是介于精确修 复和功能修复之间的一个混合修复模型, 在这个混合模型中, 对于系 统节点(存储未编码数据 )要求必须精确恢复, 即恢复的信息和失效 节点所存储的信息一样, 对于非系统节点(存储编码模块), 则不需 要精确修复, 只需要功能修复使得恢复的信息能够满则 MDS码属性 (核心技术为干扰队列和 NC ) 。 但是, 为了使 RGC码运用到实际的 分布式系统中, 即使不是最优情况也至少需要从个节点下载数据才 能修复丟失模块, 因此即使修复过程所需要的数据传输量比较低, RGC码也需要高的协议负载和系统设计 (NC技术)复杂度来实现。
另外 RGC码中未考虑工程解决方法,如懒修复过程, 因此不能避免临 时失效所带来的修复负载。 最后基于 NC的 RGC码的编解码实现所需 要的计算开销比较大, 比传统的 EC码要高一个阶数。 发明内容
本发明要解决的技术问题在于,针对现有技术的上述修复数据传 输量较大、 系统开销较大、 系统较复杂的缺陷, 提供一种修复数据传 输量小、 系统开销较小、 系统较筒单的基于同态的自修复码的编码、 解码和数据修复方法及其存储系统。
本发明解决其技术问题所采用的技术方案是:构造一种基于同态 的自修复码的编码方法, 包括如下步骤:
A )将数据量为 M的数据 0用正整数 k分为 k份, 每份的数 据量为 M/fc, 即 > = (0ι,···, ),0,£ „Λ( = 1,·· ); 其中, 0l是等分数据 0 后得到的每份数据, 是以 2M "为阶的有限域;
B ) 使所述 0, 为多 项式 P O = ^Pix2' 的 系数, 即
Pi = oi+l,i = Q,.."k -1;
C)在有限域 中任取 n个不同的非零元素值 A, ···,«„, 代 入所述多项式变量, 分别计算每个值代入后所述多项式的值, 得到存 储在各存储节点的编码数据; 其中, "≤2Μ"-1 ;
D )分别存储所述得到的编码数据到各存储节点。
在本发明所述的基于同态的自修复码的编码方法中,所述步骤 C) 本发明还涉及一种对应上述编码方法的、基于同态的自修复码的 解码方法, 包括如下步骤:
Μ )取得 k个线性无关的编码数据, 计算所述 k个编码数据 的 2k -1 的线性组合; 其中, ≥2;
N )在所述 2 -1个线性组合中任取 +1个,通过恢复多项式
= 0,··Ί 1得到数据 Ο, O = ( · · ·, )。 本发明还涉及一种修复使用上述的编码方法得到的编码数据的 方法, 包括如下步骤:
I )判断存储编码数据的节点上的编码数据是否失效, 如是, 执行下一步骤; 否则, 退出;
J )判断存在失效编码数据的节点是否达到设定修复阈值, 如 是执行下一步骤; 否则, 退出;
K )通过 d个与所述失效的编码相关的、 存储在不同存储节 点的编码数据之间的运算得到的结果, 修复所述失效节点中的数据。
在本发明所述的修复上述编码数据的方法中, 所述步骤 J ) 中, 系统最大能够容忍 (n-l)/2个节点失效而不丟失数据,因此所述设定的 修复阈值最大不超过 (n-l)/2, n是节点个数, 具体还包括:
J1 )如果阈值设置为 1 , 表明系统进行饿修复(有失效即进行修 复);
J2 )如果阈值设置为大于 1且不超过 (n-l)/2, 表明系统进行懒修 复(达到一定失效数后再修复)。
在本发明所述的修复上述编码数据的方法中, 所述步骤 K ) 中, d值代表修复一个失效节点所下载的节点数, 在本发明所采用的自修 复码中 d等于 2 (当 d=l时就只是筒单的复制编码), 并可通过依次 逐个修复或并发修复所述失效节点所丟失的数据。
在本发明所述的修复上述编码数据的方法中, 还包括如下步骤: 取得分布存储的编码数据的码字形式 (ρ(αι),···,ρ( )) , 并判断 当 Μ = 2μ " - 1时, 所述 是否都在集合 Β 中, 如是退出, 否则, 执行步骤 I ); 其中, 集合 Β是有限域 中的一个 F2基,该基由 M/fc 个线性无关的元素组成, 即8={1)1, bM/fe}。
在本发明所述的修复上述编码数据的方法中, 所述步骤 K )进一 步包括如下步骤:
Kl )确定已失效的编码存储数据的存储节点; K2 )通过利用有限域 中的乘法群 M,t的生成元的特性, 分解所述失效存储节点中表示其存储编码数据内容的多项式为其他 存储节点编码数据的多项式,找到与所述已失效的编码存储数据相关 的存储节点;
K3 ) 下载所述相关节点的编码数据并按照步骤 K2 ) 中的多 项式运算得到所述已失效的编码数据。
本发明还涉及一种基于同态的自修复码的分布式存储系统,包括 多个存储节点,还包括至少一个编码模块、 至少一个解码模块和至少 一个数据修复模块;所述编码模块用于将数据转换为多个基于同态的 自修复编码数据并分别存储在不同的存储节点上;所述解码模块用于 从所述多个存储节点中取得编码数据并恢复数据;所述数据修复模块 用于修复所述失效节点所丟失的编码数据;所述数据修复模块还包括:
编码数据可修复判断单元: 用于通过取得分布存储的编码数 据的码字形式 (/Ηί ,. ,/ΗίΟ) , 并判断当" = 2Μ" -1时, 所述 是 否都在集合 Β中, 来判断所述数据编码是否可修复;
编码数据失效判断单元: 用于判断在存储所述数据编码的多 个节点上是否存在失效的数据编码;
失效编码数据量判断单元: 用于判断失效的数据编码是否达 到设定的修复阈值;
失效编码数据修复单元: 用于在失效的数据编码超过达到修 复阈值时, 通过 d个与所述失效的编码相关的、存储在不同存储节点 的编码数据之间的运算得到的结果,修复所述失效节点中的编码数据。
在本发明所述的基于同态的自修复码的分布式存储系统中,所述 编码模块进一步包括:
数据等分单元: 用于将数据量为 M的数据 0用正整数 k分 为 k份,每份的数据量为 M/fc,即 > = (iV A),0i e JF2Mft ( = U) ;其中,
0l是等分数据 O后得到的每份数据, 是以 2M "为阶的有限域; 多项式系数设置单元: 用于使所述 为多项式 Ρ(Χ) = ^Ρίχ2'的系数, 即 Pi = oM ,i = 0,...,k-l;
")编码数据取得单元:用于在有限域 中任取 n个不同的非 零元素值^…,^, 代入所述多项式变量, 分别计算每个值代入后所 述多项式的值,得到存储在各存储节点的编码数据; 其中, n≤2M'k -l 编码数据存储单元:用于将所述得到的编码数据存储到各存 储节点;
所述解码模块进一步包括:
编码数据取得单元:用于由不同的存储节点取得 k个线性无 关的编码数据, 计算所述 个编码数据的 2 -1 的线性组合; 其中, k>2;
多项式恢复及数据取得单元: 用于在所述 2 -1个线性组合 中任取 2"+1个, 通过恢复多项式 p(X) =∑ PiX2' , Pi =oM,i = 0,...,k-l 得到数据 O, O = ( ···, )。
实施本发明的基于同态的自修复码的编码、解码和数据修复方法 及其存储系统, 具有以下有益效果: 由于采用在有限域中进行数据编 码, 使得各存储节点之间存储的编码数据之间存在一定的相关, 当一 个或多个存储节点的编码数据失效时,只要与其相关的多个或多对存 储节点中有一对未失效, 即可恢复数据。 由于在大多数情况下只需一 对相关存储节点的编码数据即可恢复失效数据,其传输的数据量较小、 系统也不复杂, 同时, 由于在相关编码数据之间采用异或运算恢复失 效的数据, 系统的开销也较小。
附图说明
图 1是现有技术中 EC码中采用的数据下载过程示意图; 图 2是现有技术中 EC码中采用的数据恢复过程示意图;
图 3是现有技术中 RGC码中采用的数据恢复过程示意图; 图 4是本发明基于同态的自修复码的编码、解码和数据修复方法 及其存储系统实施例中编码数据存储方法的流程图;
图 5是所述实施例中取得编码数据方法的流程图;
图 6是所述实施例中修复编码数据方法的流程图;
图 7是所述实施例中判断编码数据是否可修复的流程图; 图 8是所述实施例中存储节点存储的编码数据以及修复示意图; 图 9是所述实施例中编码与现有技术中各种编码的静态恢复力 的比较示意图;
图 10是所述实施例中不同阀值对应每个失效数据模块的修复负 载示意图;
图 11是所述实施例中基于同态的自修复码的存储系统结构示意 图。
具体实施方式
下面将结合附图对本发明实施例作进一步说明。
如图 4所示,在本发明的基于同态的自修复码的编码、解码和数 据修复方法及其存储系统实施例中, 对于数据进行编码的步骤包括: 步骤 S401 将一个大小为 M 的文件 0 分为相等的 k份, 即 > = (0ι,···, ),0ί£ ΜΛ( = 1,···^)。 在本实施例中, 其采取的技术方案是 为网络存储系统设计明确的最优码,所需要的设计装备类似于传统的 EC码。 其整个思路为: 定义 Fq为 q阶有限域, 为除零元素以外的 有限域。如果 q = 2m,元素; ceFq可以通过一个 m维向量; κ = ( ,···,; 表 示,其中 ,eF2 , = l, ,m,来自于一个固定的基域,也就是
, 其中 w为 ^上 m阶不可约首 "多项式的 "个本原才艮, {l,H .',wm— 1 }构 成^上一组 F2基。 有限域 F2中只有元素 0和 1以及模 2上的加法和
乘法。在 q阶有限域上的一个线性( n,k,d )SRC( Self-repairing Codes, 自修复码)码是一个线性映射 C: Fk →Fn , s^ c(s) , 将一个 维的 向量 s映射为一个 n维向量 c ( 。 码字 的集合 C, 构成该编 码。 第三个参数 d表示码字的最小距离:
, 其中汉明 距离 d(c, y)表示系数 X和 y位置不同的数。这个最小距离表示 SRC码 所能容忍的最大节点失效数, 通过 MDS码可知最大容忍度为 ΪΙ-L· 数据的线性编码可以通过任意的多项式来实现, 当选择有限域 F2 时, 所有操作都是在模 2上进行的。 令 a,beFim , 其中 m≥l , 那么可 λ 推 出 (a + b)2 = a2 +2ab + b2 = a2 +b2 , 因 为
, 得 出
(a + b =a2' +b2' ,i≥l. ( 1 )
因此在 ( q = 2m )上, 一个线性化的多项式 p O可以表示成: p(X) 可以表示成: p X、 e jF2„ , 有下述公 式 :
+b2') = ρ(α) + p(b) ·
( 2 ) 对于公式(2 )可进一步推广, 一个给定的多项式 p( = ft ' , s = 2',l<l<m (当 Z = m时, 是一个线性化多项式), 有下述公式: p{ua + vb) =
+ (vb)s )
。 , 其中 (3)
= ^ pt {ua +vbs ) = u^ipia + ptbs =up{a) + vp{b)
所以, 在本步骤中, 首先是选择一个正整数 fc, 并用其将数据 0 分为 k等份, 每一份的数据量为 Mlk, 其中, M是数据 0的全部数 据量; 这样, 数据 0就可以表示为 > = (0l, ···, ),。, ε ΜΛ( = 1,·· ), 其 中, 是以 2M/fe为阶的有限域, 得到的每个等份 01是有限域 的 元素。
步骤 S402 将 k个分组编码为多项式 p(X)上的 k个系数, 即 Pi=Oi+i,i = 0,...,K—i。 在本步骤中, 将上述 个分组(即被等分得到的 部分)设置为上述多项式 p (X) 的 个系数, 即 = 1, = 0,..., -1。
步骤 S403 由多项式 p(X)上 n个不同的非零值^… , 来获得 n 个编码模块, 即 n个码字(ρ( ),···,ρ(6 ),每个编码模块由不同的存储 节点存储。 在本步骤中, 取 F2„ft中 η个不同的非零值(为了使各个码 字不同, 必须满足公式 (4): «≤2M¾-1. (4))作为多项式 ρ(Χ)的变量分 别代入上述多项式, 由于在上述步骤中已经将该多项式的系数用 个 分组代替, 所以, 当上述 n个非零值分别代入多项式时, 可以分别得 到由上述 k个分组之中的部分或全部表示的多项式的值。代入一个非 零值就得到一个这样的多项式的值,而一个这样的值就表示一个编码 数据(或编码模块), 该编码数据存储在一个存储节点上; 代入不同 的非零值得到的编码数据存储在不同的存储节点上。
图 5 是下载用上述方法编码而存储在分布式存储系统中的数据 的方法, 在图 5中, 包括如下步骤:
步骤 S501由 个线性无关的模块, 计算 2 -1个线性组合, 再由 线性组合来评估多项式 p值。在本步骤中, 由各存储节点下载其存储 的编码数据, 这些编码数据共下载 个, 且这些编码数据线性无关; 也就是说, 取得 个线性无关的编码数据, 并计算所述 个编码数据 的 2 -1 的线性组合; 其中, k≥2
步骤 S502由于多项式系数是在有限域上,由拉格朗日内插法可 知只要 2"+1点(因为当 ≥2时, 2 -l≥2 +l )就可以恢复唯一的多
项式 p和数据 O,需要满足公式 (5): 2" + 1≤2Μ/ -1.(5)。在本步骤中, 通过在所述 2 -1个线性组合中任取 2 +1个, 利用这些数据恢复多项 式尸 (X) = AX2' , Α· =。Μ, = 0,···, - 1得到数据 0, O = (0l, ···, ·)。 将选 取的 2" +1个线性组合分别 (请填入如何由这些线性组合得到数据的 具体做法)得到所述多项式; 在本步骤中, 但需要强调的是: 为了 实现只要很少的编码模块(一般为 2个)就可修复个别丟失的模块, 并且支持在低于一半的节点失效情况下可自修复,丟失了 MDS属性, 即不是任意的 k个模块就可恢复原始文件(虽然存在大量可能的 k个 组合)。
对于任意一个整数 fc, 是在有限域 F2„ft上编码。 为了获得有限域 上精确的计算量, 在一些情况下, 通过使用一个乘法群 F2 =F2M/k \{0} 上的生成元 w来衡量将会非常方便。 生成元具有属性 ν2Μ' =1, 并且 没有更小的满足该等式的整数\¥。
例如, 取一个大小 Μ=12比特的文件 O = (0l, ···, ), 令 fc=3, 得出
M/fc=4, 满足公式 (5), 即 22+l=5≤24-l=15=nmax。 文件 0被分成 3部分, 01 =(o1,--,o4),02 =(o5,--,os),03 =(o9,--,o12)eF24。令 W为乘法群^:的生成 元 , 因 此有 >v4=>v + l, w15 =l , 而 用 于编码 的 多 项 式为 ρ(Χ) = ^ο^'Χ +^οι+4^Χ2 + ^οι+^'Χ4。 图 6 是在本实施例中恢复失效编码数据的方法流程图, 如图 6 所示, 失效的编码数据的恢复包括如下步骤:
步骤 S601编码数据可恢复? 在本步骤中判断编码数据(编码模 块)是否可以恢复, 如是, 执行下一步骤, 否则, 执行步骤 S605; 至于如何判断编码数据可以恢复, 在稍后有较为详细的描述。
步骤 S602存在失效的编码数据? 在本步骤中, 判断存储在各存
储节点的编码数据中是否存在失效的编码数据,如是,执行下一步骤, 否则, 执行步骤 S605;
步骤 S603失效的编码数据达到设定修复阈值? 在本步骤中, 判
断失效的编码数据数量是否达到设定值,如是,执行下一步骤,否则, 执行步骤 S605。 值得一提的是, 在本实施例中, 由于系统最大能够
容忍 (n-l)/2个节点失效, 因此上述修复阈值不能超过 (n-l)/2; 在本实
施例中, 当该值为 1时, 对编码数据的修复是饿修复; 当该值大于 1 时, 对编码数据的修复是懒修复。
步骤 S604修复失效的编码数据: 在本步骤中, 对已发现的失效
编码数据进行修复。 具体而言, 在本实施例中上述编码的例子中, n 维码字可以通过评估 (计算) p o在^ 4中 η个不同元素而获得, 其 中可得 w≤15=nmax。 当 n=4时, 如果在 w', = 0,1,2,3中评估 , 那么 4 个编码模块 ρ(1),ρ(Η ,ρ(ν2),ρ(ν3)是线性无关的, 由稍后所述的编码数 据修复判断可知该编码不存在自修复的可能。 而当 η=7 时, 获得 7 个编码模块(W /Hw ,/^^2),/^^4),/^^5),/^^8),/^^10)), 由 =w + l递推, 可 知
(ο1 + ο 4 + ο 5 + ο 8 + o 9 + o 12 )w 1 + (o 2 + o 6 + o10 ) w 2 + ( o o 7 + o11 ) w , 从 而 得 出 节 点 1 所 存 储 的 内 容 为 (o4+o&+o12,o1+o4+o5 +o&+o9 +o12,o2+o6 +o10,o3+o7+on) , 其他节点所存储 的内容可通过相同方法可以获得。图 8中列出了不同节点所存储的内 容 , 当 存 储 的 节 点 7 失 效 , 由 于 p(ww) = p(w2 + W + V) = p(w2) + p(w + l) = p(w2 + w) + ρ(ϊ) = p(w2 + ϊ} + p(w) , 新
节点可以通过节点 3和 4、 节点 1和 5或节点 2和 6恢复节点 7所存 储的内容。对于其他节点失效的情况下也可通过同样的方式进行自修 复。 当节点 6和 7同时失效, 仍然可以通过两种不同方式进行^ ί'爹复, 如: 第一个新节点通过节点 3和 4修复节点 7, 第二个新节点通过节 点 3和 1修复节点 6
步骤 S605 退出: 在本步骤中, 退出本次数据修复。
图 7 示出了在本实施例中判断编码数据是否可以修复的具体流 程, 在图 7中, 包括如下步骤:
步骤 S701由编码过程构造 η个码字形式 (ρ(ί¾),···,ρ(6 ),每个系 数都在 F2Mft中, 且 <«≤2 ¾-1: 在本步骤中, 通过上述编码过程构 造的码字形式 (ρ( ,···,ρ( ) , 确定上述码字形式中每个系数所在有 限域 Λ , 且 <«≤2 ¾-1。 定义 n 可以取得的最大值为 即 nm^ =2Mlk-\ , 即可确定编码过程中得到的码字形式。
步骤 S702 F2Mft中包含一个 F2基, 该基由 M/fc个线性无关的元素 组成 = { ··,^/λ}, 故得到集合 Β: 在本步骤中, 由上述有限域中的 F2基确定集合 Β
步骤 S703 n = 2M>k- 将《;, = 1,... 这些基元素看成在 上的 线性组合: 在本步骤中, 若 n取最大值, 即 M = 2m¾-1 , α;, = 1,… 可 以看成这些基元素在 上的线性组合。
M Ik
步骤 S704: 由 p( = 知一个码字可以由其他码字线性 组合获得: 在本步骤中 , 由于从公式 ( 2 ) 可以得出
M/k M/k
a, = Z ybpay GF2^ p(c = ^ α. ρ(^)。 这意味着一个编码模块可以通 过其他编码模块的一个线性组合获得。从计算复杂性上来说, 一个丟
失模块的修复只需要一些异或操作(在一个好的情况下, 只需要两个 模块就可重构一个丟失模块; 在坏的情况下则需要 个)。
步骤 S705 均在 B集合中? 在本步骤中, 判断 ^…,^是 否均在 B集合中, 如是, 执行步骤 S707; 否则执行步骤 S706.。
步骤 S706 (/;(« ,···, ρ(«„))码字失效可以自修复: 在本步骤中,上 述^…,^不都在集合 Β中, 则(;;(《 ,···, ρ(«„))码字可由其他码字的线 性组合获得, 因此可进行自修复。
步骤 S707编码数据不具有自修复属性:在本步骤中,由于 , · · · , 相互独立, 任意码字都不能由其他码字的线性组合获得, 该编码就不 具有自修复属性。
在本实施例中上述编码的例子中, 当一个节点想获得原文件时, 需要下载 k=3个线性无关的分组, 也就是^^,^^2)^^3) , 基于上述 分组可以产生线性组合 (aw + w2 + cw3) , 由 a'b'c e {Ο'1}知存在 23 -1 = 7 种非零线性组合,根据译码装置 S502得出其中的任意 22 +1 = 5种线性 组合就可以恢复多项式 ρ, 进而获得原文件 0。
从上面分析可以看出, 对于给定的 k值, η可以取 k+1到 nmax 中不同值, 同时也可取不同的 {αι,···,α«}来定义一个 SRC码。 选择集 合" '来形成一个大小为 F 的子空间, 这个选择可以构成一个特定的 对称结构的编码, 也就是类似一种异或结构。 然而需要说明的是, 尽 管编码模块可以通过相互之间的异或获得,但是每个模块所获得的关 于所有其他不同模块的信息,实际上不是通过一个筒单的数据本身的 异或。
此外, 在本实施例中, 从静态恢复力上进行分析(态恢复力主要 是指一个文件一旦存入系统,在没有另外的修复甚至系统中某些个别 的存储节点失效时, 该文件一直有效的概率), 令 pn。de为任意给定节 点有效的概率, 由于系统中没有两个不同的模块存储在相同节点上,
因此可以推出任意节点所存储的模块的有效性为 pn。de。 上面所 4 述的 ( n,k )HSRC码( Homomorphic Self-Repairing Codes , 同态自修复码 ), 主要将原始 k个模块( 0 = ,…, ), ' e 2- )通过线 性多项式编码成 n个互不相关的模块( Ρ = ^,···,Ρ Ρ ιΜΙί ), 每一 个编码模块;;;都由一个节点来存储, 因此系统中有 n个节点, 每个节 点存储一个长度为 M/k的二进制向量, 也可以看成一个 n Wk的二 进制矩阵 A, 即 ,ΡΆ . (6)
在本实施例中, 当 n=4时, 可以得到一个 4维的单位矩阵 A = /4 ,
而当 n=7时, 矩阵为 A 因此一个节点失效可
等效于矩阵 A丟失了一个相应的行, 如果多个节点(如 n-x, 表示有 效节点只有 X个)失效,可以通过一个 X M/k的子矩阵 Ax来代替 A。 对于 X个可用的编码模块的任意给定的线性组合,如果我们获得矩阵 Ax中至少 个线性无关的行,那么仍可以重构原始文件。也可以理解 为如果矩阵 Ax的秩不小于 则原始文件可以被重构。
对于 d>l, 考虑一个没有全零行的(2 -1)>^的二进制矩阵, 可推 出该矩阵的秩为 d。 如果以概率 l-pn。de来随机均勾地移去矩阵的某些 行,那么将得到一个 x> ^的子矩阵,其中 X是二项式分布的。令 R x,d, r) 为矩阵 (^_1)xd中秩为 r的子矩阵 xxd数, 其中包含所有可能的行的 排列。 根据矩阵秩的特点 (不能大于最小维数), 当等于最小维数时
表示任意行之间都是线性无关的 (即不能相互表示), 当小于最小维 数时可以降低行数进行递推分析: 秩为 r-1的一个 (x-1) d子矩阵有 ^一 ^- 1 _1) = 2^ -2 1个, 秩为 r 的一个(x-1) x d 子矩阵有
Y -\-{x-\) = Y -X , 因 此 可 以 得 到 公 式 ( 7 ) :
R(x,d,r) =
- x),r < x&r < d
(7)
令 ( ^,r)为在子矩阵 x> ^中, 秩为 r的个数占所有可能的秩的比 例。 由于
在 2<i-l中选择 X行有 ^-种可能, 而对于每一个 X有 X!中排列方式, 因 u .
j¾l可以
(8)
通过公式(7)和(8)可以推出一个本实施例中的 (n,fc)HSRC码恢 复原始文件的概率;^.为:
n d
Pobj = Σ Σ Ρ(Χ' d' rKPnode (1 -
= 10g2 + 1) (9) 而一个 ( ι ) EC 码成功恢复原始文件的概率为
Pobj =∑ :plde(l- pnode 。 图 9将 HSRC码静态恢复力和 EC码进行比 i=k 较, 可以看出对于相同的存储负载 Mlk, SRC码的静态修复力只比 EC码低一点, 另外对于一个固定的 直, 随着 n值的增加, SRC码 的静态修复力逐渐接近 EC码。 对于比较低的存储开销, 在相对比较
高的 Pn。de情况下, 恢复原始文件的概率仍为 1。 这主要是因为在任何 存储系统中, 都有一个修复操作来补充丟失的模块, 使得系统的 pn。de 值比较高。 若为了实现和 EC码相同的静态恢复力, SRC码需要在编 码过程中引入额外的冗余,但是通过比较可以知道这个冗余负载是可 接受的。
节点可用性的概率 pn。de可以通过下面两种情况增大: 要么执行 一个懒修复,也就是只有当系统的冗余度降低到一个确定阈值时才执 行修复; 要么在执行修复过程前, 有多个相关联的模块失效(这种情 况需要额外分析, 一般用饿修复)。 由于在修复过程未考虑相关联的 模块的失效,可能会实施一个饿修复,即只要任何一个编码模块失效, 就立即进行修复。 由于 HSRC码的子空间架构, 使得 HSRC码中一 个丟失的模块可以通过两个其他可用的模块来进行修复。
在本实施例中, SRC码的分集 s定义为线性相关的分组对(可用 于重构分组对中一个确定失效的模块)的个数。 可以看出本实施例中 s=3 , 假 设 丟 失 , 三 个 固 定 的 分 组 对 ( 即
(p(l), p(w4 )); (p(w2 ), p(w5 )); (p(w& ), p(w10 )) ) 中的任意一个就可用来修复
P(w) ,从图 8中也可以看出当节点 7或节点 6失效都有三个固定的分 组对来修复。 对于一个确定的 d , 令" = 2<i -l , 多项式 通过 « = 来评估, 其中" {0,1} , ("。,···, — 取除全 0以外所有可能 的 2<i个值。假设对于每一个",都可以构造分组对 + 其中 取 除 0和 "以外所有可能的 -2个值,可以得出共有 2<i _2(相当于 n-1 ) 个分组对, 但由于分组对 + 与(","+ 等效, 因此可以得出引 理 1: 一个 ( n,k ) HSRC码的分集 s为 (n-l)/2。
考虑任意丟失模块", 如果系统中有 (n-l)/2个模块不可用, 在最 坏情况下可以假设这 (n-l)/2个模块属于同一分组对。然而只要系统中 有另外一个分组可用, 就可以和其他分组构成一对, 因而可以证明系 统中至少有一个可用的分组对来重构丟失模块"。 因此推出引理 2: 对于一个 HSRC码, 如果系统中至少有 (n+l)/2个模块可用, 那么对 于任何失效的模块都存在一些可用的分组对,并可以从这些可用的分 组对中恢复丟失的数据。
X是在一个给定时间内系统中可用的分组数, 对于任意的丟失模 块, 都可以通过相互组合的分组对进行修复。 当 X≥ (n+1) / 2时只要两 次下载就可以修复; 否则需要进行一个概率性分析, 由于一个确定分 组对的节点都可用的概率为(; c/«)2, 因此只要两个分组就可以重构丟 失的分组的概率为 /2=1-(1-( //7)2)5。 如果两个分组不能修复一个确 定的模块, 则假设可以通过更多的分组来修复丟失的模块, 一个松的 上限值可以通过考虑如果 2个分组不可以修复丟失的模块,可以通过 下载 k个分组来进行修复,这种情况发生的概率为 1 - p2 =(l-(x/ n) )s。
假设修复一个丟失模块所需要下载的分组数为 )x, 而 n个分组中 只有 X个可用, )χ值可以由公式(10)决定: { Dx =2-x≥{n+\)l2
[Dx < 2p2 +k(l- p2) otherwise
(10)
通过上述分析知所有丟失的模块可以通过并发的或者顺序的两种 方式修复。 如果是按照并发的方式, 那么下载所需要的分组的总负载
Z ^为:
如果是按照顺序的方式, 则下载所需要的分
组的总负载/ ^为: Z^ = ^ ,。 为了比较不同修复方案的负载(使用 SRC码的懒修复(包括并发、 顺序两种方式)、 饿修复以及使用传统 EC码的懒修复), 考虑懒修复 的一个阈值:在 n个存储节点的系统中,只有当可用的节点数; c = ¾时 才开始修复。 如果在 SRC码中使用饿修复, 那么需要下载的负载为
Degr = 2(n _ ¾ )。可以推出在 SRC码中,当懒修复的阈值 ¾≥ + 1) / 2时, 饿修复所使用的总共带宽等于懒修复(包括并发、 顺序两种方式)所 消耗的带宽。
在 EC码设计中, 当使用懒修复时(阈值¾ ), 假设一个节点下载 足够的模块(一般为 fc )来构造原始文件, 然后再在本地构造一个新 的编码模块来存储, 并且也为其他失效节点构造《 - ¾ - 1个不同编码 模块, 将这些模块分别存储在其他不同新节点上, 从而总共网络负载 为: DEClazy = k + n - xth - 当使用饿修复时, 则对于每次修复都需要从 个节点下载数据, 显然这比懒修复所需要的负载要大, 因此不作考 虑。
如果少于一半的分组不可用, 由引理 2可知下载两个模块就可以 修复一个丟失的模块; 当更多的模块丟失, 考虑一个和 EC码相同的 修复策略, 也就是先下载 个模块来重构整个文件, 然后再在本地分 别构造所有丟失模块。 这说明 SRC码降低修复带宽的条件是只有系 统中没有丟失太多的模块。 定义一个临界值;^ 即 EC码的懒修复所 需要的总带宽和 SRC码相同。 当¾≥(« + 1) / 2 , 由上面分析知饿修复 所需要的带宽等于懒修复, 而且顺序修复和并发修复的带宽相同, 即
Degr = Dprl = Dseq , 因 此 可 以 由 下 式 推 出 :
。
图 10比较了 SRC码与 EC码在懒修复过程中修复每个丟失模块 所需要的平均网络负载。 SRC码主要考虑并发和顺序两种懒修复方案, 从图中可以看出当¾≥(« + 1) / 2 = 16时, 这两种懒修复方案所需要的负 载相同且恒为 2, 而 EC码的懒修复负载(只有顺序) 随着阈值¾的 增加不断增大, 并且当 ¾≥^ = w + l-;t = 24时, SRC码修复负载就比 EC码低。
从上面的分析可以得出当懒修复中的阈值 ¾比临界值 ^要小时, EC码修复所需要的总带宽比 SRC码低,但是对于大部分存储网络来 说^一般比较低, 并且 EC码一般使用懒修复。 由于懒修复在节点失 效后需要等待的时间太长,使得在另外更多的节点失效条件下系统易 受攻击 (如非法节点假冒), 因此在修复之前等待若干节点失效是没 必要的; 另外同时修复这么多失效模块会弓 I入过重的网络带宽负载。 而使用 SRC码可以灵活的根据实际情况决定选择懒修复(通常含有 比较高的阈值¾ )还是饿修复方案,每一个丟失模块所修复的开销在 一个大的范围内 (即 ¾≥(w + l) / 2 )保持不变。 这种灵活性使得 SRC 码特别适合 P2P系统,也就是可以避免不需要的类似于暂时下线的修 复, 另外也没有 EC码中懒修复的三个缺点即:
1 ) 必须选择一个阈值从而使得系统易受攻击;
2 ) 必须选择一个大的 n值来处理类似于这种的攻击;
3 ) 引入过重的网络带宽负载。
SRC码在基于编码的分布式存储系统中是非常有效的, 可以大幅 度降低修复过程所使用的带宽。 对于系统中不同参数的选择, EC码 中的懒修复可能在总共带宽消耗上要优于 SRC码, 但是 EC码限制 了系统的实际应用范围。
SRC码另外一个优点是可以同时独立并发的修复不同的丟失模块。 如果修复不够快, 可能在修复过程中会有新的节点失效,从而使得性 能退化, 更严重的后果可能是会丟失所存储的文件。
假设在存储网络中每个节点的上下链路容量在每个单位时间内都 为 1个分组, 并且网络总的带宽比较大, 这种假设在不同的网络存储 系统环境中是合理的。 对于实施例 1 , n值取 nmax, 也就是使用一个 (15, 3)HSRC码。 由于类似于懒修复或相互关联的失效等原因, 我们 可以假设 p(l),…,; Hw6)这 7个模块失效, 而 ρ(νν7),· · ·, ρ(νν15)这些模块可 用, 下面列出了修复每个丟失模块可能的分组对。
一个可能的计划 (在不同的节点上下载可用的模块来重构丟失的
模块)如下: 在第一个时隙, 想要构造各自的 ρ(1),· · ·, ρ(νν6)中的一个 模块的 7 个节点分别独立下载 Ww Ww Ww12) , 空, p(w13 ), p(w7 ), p(ws ) ; 在 第 二 个 时 隙 分 别 下 载
Ww12), /^^8), /^^7), /^^10), /^^11), /^^13), /^^14) (可以看出除了 p(w3)所有丟 失模块都可修复); 在第三个时隙, 下载 p(w12)来构造 p(w3)。 从这例 子可以看出, 在两个时隙内所下载的模块就可以重构丟失模块中的 6 个, 最后一个模块可以通过下一时隙来修复, 这主要是取决于任意节 点在每个单位时间内只能上传或下载一个模块的限制。 如果系统内存在一个关于原始文件的完整副本(如 EC码中的混 合策略), 那么修复 7个丟失的模块需要 7个时隙; 如果用 EC码则 至少需要 9个时隙。 因此可以证明 SRC码可以允许失效的模块快速 修复。
在本实施例中, SRC码和 HC码不同的是: 在 HC码中不同的编码 模块的地位不同,因而修复丟失的模块所需要的模块数不仅仅取决于 丟失了多少模块数, 还与具体哪些模块被丟失有关, 同样重构原始文 件所需要的模块数可能也因不同的丟失模块而不同, 而 SRC码修复过 程与具体丟失模块无关。 RGC码将网络编码应用到一个(n,fc ) 纠错 码, 并基于 NC最小割最大流定理来支持最小修复负载, RGC码中要 重构任意一个模块, 至少需要和其他个节点通信, 当只有一个模块 丟失, 所需要的最小通信量是与所有活动的 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的数据 0 用 正整数 分为 k 份 , 每份的数据量为 M/k , 即 0 = (o1 , - , ok ), oi F2Mlk (i = - , k) ; 其中, 0,是等分数据 0后得到的每份 数据, 是以 2M "为阶的有限域; 多项式系数设置单元 1122用于使 上述 0,为多项式尸 (Χ) = ^,Χ 2'的系数, 即 =。;+1, = 0,..., - 1; 编码数 据取得单元 1123 用于 有限域 中任取 n 个不同的非零元素值 ¾,···,«„, 代入上述多项式变量, 分别计算每个值代入后上述多项式
的值,得到存储在各存储节点的编码数据; 其中, n≤2M'k-1 ;编码数 据存储单元 1124用于分别存储上述得到的编码数据到各存储节点。
解码模块 1103包括编码数据取得单元 1131和多项式恢复及数据 取得单元 1132; 编码数据取得单元 1131用于由不同的存储节点取得 k个线性无关的编码数据,计算上述 k个编码数据的 2k -1 的线性组合; 其中, ≥2;多项式恢复及数据取得单元 1132用于在上述 2 -1个线性 组合中任取 2^+1 个, 通过恢复多 项 式 Ρ Χ、 = ^ΡιΧ2' ,
Pi =oi+1, = 0,.. - 1得到数据 0, 0 = (0l,---,ok)0
在本实施例中, 数据修复模块 1104包括: 编码数据可修复判断 单元 1141、 编码数据失效判断单元 1142、 失效编码数据量判断单元 1143和失效编码数据修复单元 1144; 其中, 编码数据可修复判断单 元 1141用于通过取得分布存储的编码数据的码字形式 (;;(《 ,···, ρ(«„)) , 并判断当 Μ = 2μ" -1时, 所述 是否都在集合 Β中, 来判断数据 编码是否可修复; 编码数据失效判断单元 1142用于判断在存储上述 数据编码的多个节点上是否存在失效的数据编码;失效编码数据量判 断单元 1143用于判断上述失效的数据编码是否达到设定的修复阈值; 失效编码数据修复单元 1144用于在失效的数据编码达到设定阈值时, 通过 d个与所述失效的编码相关的、存储在不同存储节点的编码数据 之间的运算得到的结果, 修复所述失效节点中的编码数据。 体和详细, 但并不能因此而理解为对本发明专利范围的限制。应当指 出的是, 对于本领域的普通技术人员来说, 在不脱离本发明构思的前 提下, 还可以做出若干变形和改进, 这些都属于本发明的保护范围。 因此, 本发明专利的保护范围应以所附权利要求为准。
Claims (6)
- 权利要求书1、 一种基于同态的自修复码的编码方法, 其特征在于, 包括如 下步骤:A )将数据量为 M的数据 0用正整数 k分为 k份, 每份的数 据量为 M/fc, 即 > = (0l, £ „Λ( = 1,·· ); 其中, 0l是等分数据 0 后得到的每份数据, 是以 2M "为阶的有限域;B ) 使所述 0, 为多 项式 p(x、 = Pix2' 的 系数, 即 i 0Pi = oi+1 , = 0,···,&— 1;C)在有限域 中任取 n个不同的非零元素值 A, ···,«„, 代 入所述多项式变量, 分别计算每个值代入后所述多项式的值, 得到存 储在各存储节点的编码数据; 其中, "≤2Μ"-1 ;D )分别存储所述得到的编码数据到各存储节点。
- 2、 根据权利要求 1所述基于同态的自修复码的编码方法, 其特 征在于, 所述步骤 C) 中, 所述 η个不同非零元素值为所述有限域的 生成元的不同阶数。
- 3、一种用于如权利要求 1所述基于同态的自修复码的解码方法, 其特征在于, 包括如下步骤:Μ )取得 k个线性无关的编码数据, 计算所述 k个编码数据 的 2 -1 的线性组合; 其中, ≥2;N )在所述 2 -1个线性组合中任取 +1个,通过恢复多项式P(X) = JPIX2' , Pi =oi+1, = 0,...,yt— 1得到数据 0, O = ( ···, )。i 0
- 4、 一种修复使用如权利要求 1所述的编码方法得到的编码数据 的方法, 其特征在于, 包括如下步骤:I)判断存储编码数据的节点上的编码数据是否失效, 如是, 执行下一步骤; 否则, 退出; J )判断存在失效编码数据的节点是否达到设定修复阈值, 如 是执行下一步骤; 否则, 退出;K )通过 d个与所述失效的编码相关的、 存储在不同存储节 点的编码数据之间的运算得到的结果,得到所述失效编码数据节点中 的数据并修复。5、 根据权利要求 4所述的方法, 其特征在于, 所述步骤 J )中, 系统最大能够容忍 (n-l)/2个节点失效而不丟失数据,所述设定的修复 阈值最大不超过 (n-l)/2, n是节点个数; 具体还包括:J1 )如果阈值设置为 1 , 系统进行饿修复;J2 )如果阈值设置为大于 1且不超过 (n-l)/2, 系统进行懒修复。6、根据权利要求 4所述的方法,其特征在于,所述步骤 K )中, d值代表修复一个失效的节点所需下载的节点数,在自修复码中 d等 于 2, 并可通过依次逐个修复或并发修复所述失效节点丟失的数据。7、根据权利要求 6所述的方法,其特征在于,还包括如下步骤: 取得分布存储的编码数据的码字形式 (ρ(αι),···,ρ( )) , 并判断 当 Μ = 2μ" -1时, 所述 是否都在集合 Β 中, 如是退出, 否则, 执行步骤 I ); 其中, 集合 Β是有限域 中的一个 F2基,该基由 M/fc 个线性无关的元素组成, 即8={1)1, bM/fe}。
- 8、 根据权利要求 7所述的方法, 其特征在于, 所述步骤 K )进 一步包括如下步骤:K1 )确定已失效的编码存储数据的存储节点;K2 )通过利用有限域 中的乘法群 的生成元的特性, 分解所述失效存储节点中表示其存储编码数据内容的多项式为其他 存储节点编码数据的多项式,找到与所述已失效的编码存储数据相关 的存储节点;K3 ) 下载所述相关节点的编码数据并按照步骤 K2 ) 中的多 项式运算得到所述已失效的编码数据。 9、 一种基于同态的自修复码的分布式存储系统, 包括多个存储 节点, 其特征在于, 还包括至少一个编码模块、 至少一个解码模块和 至少一个数据修复模块;所述编码模块用于将数据转换为多个基于同 态的自修复编码数据并分别存储在不同的存储节点上;所述解码模块 用于由所述多个存储节点中取得编码数据并恢复数据;所述数据修复 模块用于修复所述存储节点上失效的编码数据;所述数据修复模块还 包括:编码数据可修复判断单元: 用于通过取得分布存储的编码数 据的码字形式 (/Ηί ,. ,/ΗίΟ), 并判断当" = 2Μ"-1时, 所述 是 否都在集合 Β中, 来判断所述数据编码是否可修复;编码数据失效判断单元: 用于判断在存储所述数据编码的多 个节点上是否存在失效的数据编码;失效编码数据量判断单元: 用于判断失效的数据编码是否达 到设定的修复阈值;失效编码数据修复单元: 用于在失效的数据编码达到设定的 修复阈值时, 通过 d个与所述失效的编码相关的、存储在不同存储节 点的编码数据之间的运算得到的结果,修复所述失效节点中的编码数 据。
- 10、根据权利要求 9所述的基于同态的自修复码的分布式存储系 统, 其特征在于, 所述编码模块进一步包括:数据等分单元: 用于将数据量为 M的数据 0用正整数 k分 为 份,每份的数据量为 M/k,即 > = ( = υ);其中, 0l是等分数据 0后得到的每份数据, 是以 2M "为阶的有限域; 多项式系数设置单元: 用于使所述 为多项式 Ρ(Χ) = ^ΡιΧ2'的系数, 即 Pi = oi+l ,i = 0,...,k-l ;'― °编码数据取得单元:用于在有限域 中任取 n个不同的非 零元素值^…,^, 代入所述多项式变量, 分别计算每个值代入后所 述多项式的值,得到存储在各存储节点的编码数据; 其中, n≤2M'k -1 编码数据存储单元:用于将所述得到的编码数据分别存储到 各节点;所述解码模块进一步包括:编码数据取得单元:用于由不同的存储节点取得 k个线性无 关的编码数据, 计算所述 个编码数据的 2 -1 的线性组合; 其中, k>2;多项式恢复及数据取得单元: 用于在所述 2 -1个线性组合 中任取 2"+1个,通过恢复多项式尸 (Χ) = ^,Χ2' , Pi =oi+1,i = 0,...,k- ^ 到数据 O, O = ( ···, )。 ' °
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 true CN103650462A (zh) | 2014-03-19 |
CN103650462B 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) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105681425A (zh) * | 2016-01-22 | 2016-06-15 | 广东顺德中山大学卡内基梅隆大学国际联合研究院 | 基于分布式存储系统的多节点修复方法及其系统 |
CN108432170A (zh) * | 2016-01-29 | 2018-08-21 | 麻省理工学院 | 用于多码分布式存储的装置和方法 |
WO2018166078A1 (zh) * | 2017-03-16 | 2018-09-20 | 东莞理工学院 | 修复多节点失效的mds阵列码编码以及解码方法 |
CN111585581A (zh) * | 2020-05-14 | 2020-08-25 | 成都信息工程大学 | 一种基于二元域运算且支持任意码距的编码方法 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017041233A1 (zh) * | 2015-09-08 | 2017-03-16 | 广东超算数据安全技术有限公司 | 一种功能修复再生码的编码和存储节点修复方法 |
CN105955839B (zh) * | 2016-05-09 | 2018-12-14 | 东南大学 | 一种基于有限域二进制加法移位的再生码容错方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070093261A1 (en) * | 2005-10-24 | 2007-04-26 | Jilei Hou | Iterative interference cancellation system and method |
CN101261318A (zh) * | 2008-04-03 | 2008-09-10 | 北京航空航天大学 | 高动态扩频精密测距接收机 |
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 |
CN101834898A (zh) * | 2010-04-29 | 2010-09-15 | 中科院成都信息技术有限公司 | 一种网络分布式编码存储方法 |
Family Cites Families (3)
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 |
CN100579016C (zh) * | 2006-01-24 | 2010-01-06 | 华为技术有限公司 | 一种网络数据的分布式存储下载系统、设备及方法 |
US8589637B2 (en) * | 2009-10-30 | 2013-11-19 | Cleversafe, Inc. | Concurrent set storage in distributed storage network |
-
2012
- 2012-04-27 CN CN201280032802.XA patent/CN103650462B/zh not_active Expired - Fee Related
- 2012-04-27 WO PCT/CN2012/074837 patent/WO2013159341A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070093261A1 (en) * | 2005-10-24 | 2007-04-26 | Jilei Hou | Iterative interference cancellation system and method |
CN101261318A (zh) * | 2008-04-03 | 2008-09-10 | 北京航空航天大学 | 高动态扩频精密测距接收机 |
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 |
CN101834898A (zh) * | 2010-04-29 | 2010-09-15 | 中科院成都信息技术有限公司 | 一种网络分布式编码存储方法 |
Non-Patent Citations (1)
Title |
---|
王禹: "《分布式存储系统中的数据冗余与维护技术研究》", 9 April 2012, article "《分布式存储系统中的数据冗余与维护技术研究》" * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105681425A (zh) * | 2016-01-22 | 2016-06-15 | 广东顺德中山大学卡内基梅隆大学国际联合研究院 | 基于分布式存储系统的多节点修复方法及其系统 |
CN105681425B (zh) * | 2016-01-22 | 2019-01-22 | 广东顺德中山大学卡内基梅隆大学国际联合研究院 | 基于分布式存储系统的多节点修复方法及其系统 |
CN108432170A (zh) * | 2016-01-29 | 2018-08-21 | 麻省理工学院 | 用于多码分布式存储的装置和方法 |
CN108432170B (zh) * | 2016-01-29 | 2021-08-17 | 麻省理工学院 | 用于多码分布式存储的装置和方法 |
US11463113B2 (en) | 2016-01-29 | 2022-10-04 | Massachusetts Institute Of Technology | Apparatus and method for multi-code distributed storage |
WO2018166078A1 (zh) * | 2017-03-16 | 2018-09-20 | 东莞理工学院 | 修复多节点失效的mds阵列码编码以及解码方法 |
CN111585581A (zh) * | 2020-05-14 | 2020-08-25 | 成都信息工程大学 | 一种基于二元域运算且支持任意码距的编码方法 |
CN111585581B (zh) * | 2020-05-14 | 2023-04-07 | 成都信息工程大学 | 一种基于二元域运算且支持任意码距的编码方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103650462B (zh) | 2016-12-14 |
WO2013159341A1 (zh) | 2013-10-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104052576B (zh) | 一种云存储下基于纠错码的数据恢复方法 | |
Rashmi et al. | Explicit construction of optimal exact regenerating codes for distributed storage | |
CN103688515B (zh) | 一种最小带宽再生码的编码和存储节点修复方法 | |
Oggier et al. | Self-repairing homomorphic codes for distributed storage systems | |
US9961142B2 (en) | Data storage method, device and distributed network storage system | |
CN103688514B (zh) | 一种最小存储再生码的编码和存储节点修复方法 | |
CN111149093B (zh) | 分布式存储系统的数据编码、解码及修复方法 | |
US11500725B2 (en) | Methods for data recovery of a distributed storage system and storage medium thereof | |
CN103650462A (zh) | 基于同态的自修复码的编码、解码和数据修复方法及其存储系统 | |
CN107656832A (zh) | 一种低数据重建开销的纠删码方法 | |
Oggier et al. | Self-repairing codes for distributed storage—A projective geometric construction | |
WO2013191658A1 (en) | System and methods for distributed data storage | |
CN107003933B (zh) | 部分复制码的构建方法、装置及其数据修复的方法 | |
WO2012008921A1 (en) | Data encoding methods, data decoding methods, data reconstruction methods, data encoding devices, data decoding devices, and data reconstruction devices | |
CN109491835A (zh) | 一种基于动态分组码的数据容错方法 | |
CN106484559A (zh) | 一种校验矩阵的构造方法及水平阵列纠删码的构造方法 | |
Hollmann | Storage codes—Coding rate and repair locality | |
CN102843212B (zh) | 编解码处理方法及装置 | |
CN103703446A (zh) | 网络存储中抗拜占庭失效的数据重构、失效数据恢复方法及装置 | |
CN107153661A (zh) | 一种基于hdfs系统的数据的存储、读取方法及其装置 | |
CN104782101B (zh) | 用于分布式网络存储的自修复码的编码、重构和恢复方法 | |
WO2014059651A1 (zh) | 一种射影自修复码的编码、数据重构及修复方法 | |
CN111224747A (zh) | 可降低修复带宽和磁盘读取开销的编码方法及其修复方法 | |
CN108199720B (zh) | 一种减小存储开销和提高修复效率的节点修复方法及系统 | |
WO2018209541A1 (zh) | 基于t-设计的部分重复码的编码结构以及构造方法 |
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 |