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

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

Info

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
Application number
CN201280032802.XA
Other languages
English (en)
Other versions
CN103650462B (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,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个可用节点中各自收集 个数据,通过 ^ 在 xut 中存储 "个数据, 任何一个接收者都可以访问 x。《'。 从信源到信宿的 最大信息流是由图中最小割集决定, 当信宿要重构原始文件时, 这个 流的大小不能低于原始文件的大小。
每个节点存储量 "和再生一个节点所需要的带宽 ^之间存在一个 折中, 因此又引入 MB R码 ( Minimum-bandwidth Regenerating, 最小 带宽再生)和^181码( Minimum-storage Regenerating,最小存储再生)。 对于最小存储点可以知道每个节点至少存储 M/fc比特, 因此可推出
MSR码中(《MSSSS)= (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,£ „Λ( = 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份, 即 > = (,···, ),£ ΜΛ( = 1,···^)。 在本实施例中, 其采取的技术方案是 为网络存储系统设计明确的最优码,所需要的设计装备类似于传统的 EC码。 其整个思路为: 定义 Fq为 q阶有限域, 为除零元素以外的 有限域。如果 q = 2m,元素; ceFq可以通过一个 m维向量; κ = ( ,···,; 表 示,其中 ,eF2 , = l, ,m,来自于一个固定的基域,也就是 , 其中 w为 ^上 m阶不可约首 "多项式的 "个本原才艮, {l,H .',wm1 }构 成^上一组 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+ii = 0,...,K—i。 在本步骤中, 将上述 个分组(即被等分得到的 部分)设置为上述多项式 p (X) 的 个系数, 即 = 1, = 0,..., -1。
步骤 S403 由多项式 p(X)上 n个不同的非零值^… , 来获得 n 个编码模块, 即 n个码字(ρ( ),···,ρ(6 ),每个编码模块由不同的存储 节点存储。 在本步骤中, 取 F2ft中 η个不同的非零值(为了使各个码 字不同, 必须满足公式 (4): «≤2-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, 是在有限域 F2ft上编码。 为了获得有限域 上精确的计算量, 在一些情况下, 通过使用一个乘法群 F2 =F2M/k \{0} 上的生成元 w来衡量将会非常方便。 生成元具有属性 ν' =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 , 而 用 于编码 的 多 项 式为 ρ(Χ) = ^ο^'Χ +^οι+42 + ^οι+^'Χ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 = 2-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 的子空间, 这个选择可以构成一个特定的 对称结构的编码, 也就是类似一种异或结构。 然而需要说明的是, 尽 管编码模块可以通过相互之间的异或获得,但是每个模块所获得的关 于所有其他不同模块的信息,实际上不是通过一个筒单的数据本身的 异或。
此外, 在本实施例中, 从静态恢复力上进行分析(态恢复力主要 是指一个文件一旦存入系统,在没有另外的修复甚至系统中某些个别 的存储节点失效时, 该文件一直有效的概率), 令 pnde为任意给定节 点有效的概率, 由于系统中没有两个不同的模块存储在相同节点上, 因此可以推出任意节点所存储的模块的有效性为 pnde。 上面所 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-pnde来随机均勾地移去矩阵的某些 行,那么将得到一个 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。 这主要是因为在任何 存储系统中, 都有一个修复操作来补充丟失的模块, 使得系统的 pnde 值比较高。 若为了实现和 EC码相同的静态恢复力, SRC码需要在编 码过程中引入额外的冗余,但是通过比较可以知道这个冗余负载是可 接受的。
节点可用性的概率 pnde可以通过下面两种情况增大: 要么执行 一个懒修复,也就是只有当系统的冗余度降低到一个确定阈值时才执 行修复; 要么在执行修复过程前, 有多个相关联的模块失效(这种情 况需要额外分析, 一般用饿修复)。 由于在修复过程未考虑相关联的 模块的失效,可能会实施一个饿修复,即只要任何一个编码模块失效, 就立即进行修复。 由于 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. 权利要求书
    1、 一种基于同态的自修复码的编码方法, 其特征在于, 包括如 下步骤:
    A )将数据量为 M的数据 0用正整数 k分为 k份, 每份的数 据量为 M/fc, 即 > = (0l, £ „Λ( = 1,·· ); 其中, 0l是等分数据 0 后得到的每份数据, 是以 2M "为阶的有限域;
    B ) 使所述 0, 为多 项式 p(x、 = Pix2' 的 系数, 即 i 0
    Pi = oi+1 , = 0,···,&— 1;
    C)在有限域 中任取 n个不同的非零元素值 A, ···,«„, 代 入所述多项式变量, 分别计算每个值代入后所述多项式的值, 得到存 储在各存储节点的编码数据; 其中, "≤2Μ"-1 ;
    D )分别存储所述得到的编码数据到各存储节点。
  2. 2、 根据权利要求 1所述基于同态的自修复码的编码方法, 其特 征在于, 所述步骤 C) 中, 所述 η个不同非零元素值为所述有限域的 生成元的不同阶数。
  3. 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. 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}。
  5. 8、 根据权利要求 7所述的方法, 其特征在于, 所述步骤 K )进 一步包括如下步骤:
    K1 )确定已失效的编码存储数据的存储节点;
    K2 )通过利用有限域 中的乘法群 的生成元的特性, 分解所述失效存储节点中表示其存储编码数据内容的多项式为其他 存储节点编码数据的多项式,找到与所述已失效的编码存储数据相关 的存储节点;
    K3 ) 下载所述相关节点的编码数据并按照步骤 K2 ) 中的多 项式运算得到所述已失效的编码数据。 9、 一种基于同态的自修复码的分布式存储系统, 包括多个存储 节点, 其特征在于, 还包括至少一个编码模块、 至少一个解码模块和 至少一个数据修复模块;所述编码模块用于将数据转换为多个基于同 态的自修复编码数据并分别存储在不同的存储节点上;所述解码模块 用于由所述多个存储节点中取得编码数据并恢复数据;所述数据修复 模块用于修复所述存储节点上失效的编码数据;所述数据修复模块还 包括:
    编码数据可修复判断单元: 用于通过取得分布存储的编码数 据的码字形式 (/Ηί ,. ,/ΗίΟ), 并判断当" = 2Μ"-1时, 所述 是 否都在集合 Β中, 来判断所述数据编码是否可修复;
    编码数据失效判断单元: 用于判断在存储所述数据编码的多 个节点上是否存在失效的数据编码;
    失效编码数据量判断单元: 用于判断失效的数据编码是否达 到设定的修复阈值;
    失效编码数据修复单元: 用于在失效的数据编码达到设定的 修复阈值时, 通过 d个与所述失效的编码相关的、存储在不同存储节 点的编码数据之间的运算得到的结果,修复所述失效节点中的编码数 据。
  6. 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 = ( ···, )。 ' °
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 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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* 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
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

Patent Citations (4)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Title
王禹: "《分布式存储系统中的数据冗余与维护技术研究》", 9 April 2012, article "《分布式存储系统中的数据冗余与维护技术研究》" *

Cited By (8)

* Cited by examiner, † Cited by third party
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