CN104782101A - 用于分布式网络存储的自修复码的编码、重构和恢复方法 - Google Patents
用于分布式网络存储的自修复码的编码、重构和恢复方法 Download PDFInfo
- Publication number
- CN104782101A CN104782101A CN201280074817.2A CN201280074817A CN104782101A CN 104782101 A CN104782101 A CN 104782101A CN 201280074817 A CN201280074817 A CN 201280074817A CN 104782101 A CN104782101 A CN 104782101A
- Authority
- CN
- China
- Prior art keywords
- memory node
- finite field
- node
- coding
- data
- 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/3761—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 using code combining, i.e. using combining of codeword portions which may have been transmitted separately, e.g. Digital Fountain codes, Raptor codes or Luby Transform [LT] codes
Landscapes
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种用于分布式网络存储的自修复码的编码方法,包括如下步骤:设置基本有限域Fq,得到第一有限域式(Ⅰ);得到第二有限域式(Ⅱ);其中,Fq式(Ⅰ)式(Ⅱ);将所述第二有限域式(Ⅱ)表示的空间使用其陪集的形式式(Ⅲ)划分为式(Ⅳ)个子空间;分别在所述每个子空间的用所述基本有限域元素表示的基本向量中选择t+1个作为一个存储节点的编码向量;所述一个存储节点对应于所述一个子空间;所述编码向量对应于所述存储文件中编码数据块的位置;按照所述每个存储节点编码向量取得的存储文件中对应位置的编码数据块并存储在该存储节点。本发明还涉及一种在采用上述编码方法存储系统中重构数据和修复数据的方法。实施本发明的用于分布式网络存储的自修复码的编码、重构和恢复方法,具有以下有益效果:运算较为简单、开销较小。
Description
用于分布式网络存储的自修复码的编码、 重构和恢复方法
技术领域
本发明涉及分布式网络存储领域, 更具体地说, 涉及一种用于分布式网络存储 的自修复码的编码、 重构和恢复方法。
背景技术
网络存储系统在最近几年一直备受关注,存储系统包含不同的类型: 如基于 P2P 分布式存储系统和基于数据中心与存储区域网的专用的基础设施系统。 由于在分布 式存储系统中, 经常出现存储节点失效或者文件传输损耗, 因此在该网络存储系统 中必须要有冗余。 冗余可以通过一种筒单的复制数据来实现, 但是存储效应不高, 纠错码提供一种不同于以往复制的有效存储方案。 一个 (n,k)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 表示只要系统中有效节点数 d≥ 就可以从 现有节点中获得原始文件; 图 2表示恢复失效节点所存储内容的过程。 从图 1、 2中 可以看出整个恢复过程是: 1 )首先从系统中的 k个存储节点中下载数据并重构原始 文件; 2 ) 由原始文件再重新编码出新的模块, 存储在新节点上。 该恢复过程表明修 复任何一个失效节点所需要的网络负载至少为 k个节点所存储的内容。
对于 EC码修复过程所需要的通信负载高, 目前已有两种措施来弥补: 1 )使用混 合策略, 要求对整个原始文件进行一个额外的备份, 使得修复过程所需要的网络负 载等于所丟失的数据量, 但是该策略增加了存储负载并使得系统复杂, 且节点负载
不能均衡; 2 )使用懒修复(修复过程延迟到有若干个节点失效后再一同修复)可以 有效避免由于临时的失效而带来的额外修复负载, 但是延迟修复可能使得系统易受 攻击, 从而系统需要一个更大的冗余量, 另外在网络有限资源的使用过程中可能会 阻止修复过程。
值得注意的是 EC码一开始设计时是为了使得通信具有鲁棒性, 即在一个通信渠 道中可以容忍一些模块的失效。 网络存储将 EC码看成一个黑盒子, 通过 EC码提供 一种有效的分布式数据存储和一种数据修复装备。然而网络存储中面临的 EC码中未 提出的不同挑战, 尤其是修复问题。 在一个易受攻击的网络中, 节点可能失效或者 频繁地上下线, 必须要有新节点来提供编码模块以弥补当有节点离开系统(失效) 的情况, 并保证系统冗余度不变(为了容忍以后另外的节点失效)。
当任意一个模块所存储的信息是由两个其他模块的信息异或而得到的情况下, 任意两个模块信息就可用来修复第三个模块, 在文献 [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 k的文件, 将文 件分成 s个子群, 每个子群包含 k个未编码模块。 在每个子群中使用一个 (n,k)EC码来 产生 n-k个局部冗余编码模块。 通过编码计划进一步由所有的 s k个未编码模块来产 生 r个全局冗余编码模块。 因此形成一个编码群, 将 s k个未编码模块编码成 s n+r 个编码模块。 局部冗余模块可以用来修复子群中节点的失效, 因此只需要访问少于 整个文件大小的模块就可以进行修复; 而全局冗余模块提供进一步修复保证, 即当 一个子群中失效的模块太多而不能自修复时可通过全局冗余模块进行修复。
由于 HC码中系统结构不对称, 使得有些模块的地位或许比其他模块地位要高, 使得 4艮难做一个深入的恢复力分析(影响对编码有效性的理解) ; 在实际系统中如 果利用该编码则需要更复杂的算法(不管是重构还是修复) ; 在 HC码中不同编码模 块的地位不同, 因而修复丟失的模块所需要的模块数不仅仅取决于丟失的模块数, 还与具体哪些模块丟失有关; 同样地, 重构原始文件所需要的模块数可能也因不同
的丟失模块而不同。
专利 PCT/CN2012/071177 中提出了一种 RGC码( Regenerating Codes 再生码) , 使 得修复一个丟失的编码模块只需要一小部分的数据量, 而不需要先重构整个文件。 RGC码应用线性网络编码技术, 通过 NC ( Network Coding 网络编码)属性(即最大 流最小割) 来改善修复一个编码模块所需要的开销, 从网络信息论上可以证明用和 丟失模块相同的数据量的网络开销就可修复原丟失模块。 RGC码主要思想还是利用 MDS属性, 当一些存储节点失效, 也就相当于存储数据丟失, 需要从现有有效节点 中下载信息来使得丟失的数据再生, 并存储在新的节点上。 随着时间的推移, 很多 原始节点可能都会失效, 一些再生的新节点可以在自身再重新执行再生过程, 继而 生成更多的新节点。 因此再生过程需要确保两点: 1 ) 失效的节点间是相互独立的, 再生过程可以循环递推; 2 )任意 k个节点就足够恢复原始文件。
图 3描述了当一个节点失效后的再生过程。 分布式系统中 n个存储节点各自存储" 个数据, 当有一个节点失效,新节点通过从其他 ≥ 个存活节点中下载数据来再生, 每个节点的下载量为 每个存储节点 i通过一对节点 X'«,X'。w来表示, 这对节点通过 一个容量为该节点的存储量(即《 )的边连接。再生过程通过一个信息流图描述, 从系统中任意 d个可用节点中各自收集 β个数据,通过 χ« χ。"'在 Χ。"'中存储 a个数 据, 任何一个接收者都可以访问 X。"'。 从信源到信宿的最大信息流是由图中最小割集 决定, 当信宿要重构原始文件时, 这个流的大小不能低于原始文件的大小。
每个节点存储量 "和再生一个节点所需要的带宽 ^之间存在一个折中, 因此又引 入最小带宽再生码 ( MBR, Minimum-bandwidth Regenerating )和最小存储再生码 ( MSR, Minimum-storage Regenerating ) 。 对于最小存储点可以知道每个节点至少存储 M/k比特, 因此可推出 MSR码中( ss,^s)= (― ^ ) , 当 d取最大值即一个新来者同时和 k k(d - k + Y) min = M_ W _ l
所有存活的 n-1个节点通信时,修复带宽^^最小即 MSS_T'^。 而 MBR码拥有最小 修复带宽, 可以推出当 d=n-l时, 获得最小修复负载
对于节点失效修复问题,通常有三种修复:精确修复:失效的模块需要正确构造, 恢复的信息和丟失的一样(核心技术为干扰队列和 NC ) ; 功能修复: 新产生的模块 可以包含不同于丟失节点的数据,只要修复的系统支持 MDS码属性(核心技术为 NC ); 系统部分精确修复: 是介于精确修复和功能修复之间的一个混合修复模型, 在这个 混合模型中, 对于系统节点 (存储未编码数据)要求必须精确恢复, 即恢复的信息 和失效节点所存储的信息一样, 对于非系统节点 (存储编码模块) , 则不需要精确 修复, 只需要功能修复使得恢复的信息能够满则 MDS码属性(核心技术为干扰队列 和 NC ) 。
为了使 RGC码运用到实际的分布式系统中, 即使不是最优情况也至少需要从 k个 节点下载数据才能修复丟失模块, 因此即使修复过程所需要的数据传输量比较低, RGC码也需要高的协议负载和系统设计(NC技术)复杂度来实现。 另外 RGC码中未 考虑工程解决方法, 如懒修复过程, 因此不能避免临时失效所带来的修复负载。 最 后基于 NC的 RGC码的编解码实现所需要的计算开销比较大, 比传统的 EC码要高一个 阶数。
而专利 PCT/CN2012/074837中提出了一种 HSRC码( Homomorphic Self-Repairing Codes 同态自修复码) 。 HSRC码主要具有下面两个属性: 1 )丟失的编码模块可从 其他编码模块中下载少于整个文件的数据进行修复; 2 )丟失的编码模块从一个给定 数的模块中修复, 该给定数只与丟失了多少模块数有关, 而与具体哪些模块丟失无 关。 这些属性使得修复一个丟失模块的负载比较低, 另外由于系统中各节点地位相 同、 负载均衡使得在网络的不同位置, 可以独立并发地修复不同丟失模块。 该码字 除了满足以上条件外还有以下特性: 1 ) 当一个节点失效时, 可以有(n-1 ) /2对修复 节点可供选择; 2 )当有(n-1 )/2个节点同时失效时,我们仍然可以使用剩下的(n+1 ) /个节点中的 2两个节点来修复失效节点。
但是, HSRC码的编码需要计算多项式相对较复杂; 其次, 在 HSRC码中, 编 码模块是不可再分的, 因此修复编码模块也必须是不可再分的; 再者, 为了再生出 一个特定的存储节点, 一旦随机的选择了一个节点为帮助节点, 而对于 HSRC码,
就只剩下一个节点可供选。
发明内容
本发明要解决的技术问题在于, 针对现有技术的上述修复数据或重构数据时运 算较为复杂、 开销较大的缺陷, 提供一种运算较为筒单、 开销较小的用于分布式网 络存储的自修复码的编码、 重构和恢复方法。
本发明解决其技术问题所采用的技术方案是: 构造一种用于分布式网络存储的 自修复码的编码方法, 包括如下步骤:
A )设置基本有限域 ; 依据存储文件中编码数据块的数量 m, 得到, 并设 置第二有限域 F 的 m维空间的 t维子空间形成的 t-伸展集合 S,其中 t+1 I m;按照 所述基本有限域的 t-伸展,利用所述 t-伸展得到第一有限域 ;其中, F^F F ,
B ) 将所述第二有限域 F 表示的空间使用其陪集的形式 M F "划分为
^TTTJ个子空间; 其中, i=0, 1, ..., , w 是所述第二有限域的乘法群 F d
的生成元, 是所述第一有限域的乘法群;
C)分别在所述每个子空间的用所述基本有限域元素表示的元素中选择 t+1 个作为一个存储节点的编码向量; 所述一个存储节点对应于所述一个子空间; 所述 编码向量对应于所述存储文件中编码数据块的位置;
D )按照所述每个存储节点编码向量取得的存储文件中对应位置的编码数据 块并存储在该存储节点。
更进一步地, 所述步骤 B)进一步包括如下步骤:
B1 )取得所述第一有限域乘法群 F +1 ,设 V是所述第一有限域乘法群 F +1的 生成元; 取得所述第二有限域的乘法群/ τ, 设 w是所述第二有限域乘法群/ 的 生成元;
Β2 ) 使用陪集 M F "划分所述第二有限域的乘法群 的空间, 即
F = Ljw - , 其中符号 υ表示对有限域的划分;
Β3)依据上述划分, 将所述第二有限域 F m 中的元素表示为 m-元组。
更进一步地, 所述第二有限域乘法群/ 的划分将所述第二有限域 F 表示为 第一有限域乘法群/ 、 第二有限域乘法群 / τ的元素相乘的形式。
更进一步地, 所述步骤 C )进一步包括:
C1 )分别取得所述每个子空间中的 +1个元素;
C2 )分别在所述每个子空间的 1个元素中选取 t+1个作为该子空间所对应 的存储节点的编码向量。
更进一步地, 所述步骤 D ) 中进一步包括:
在所述每个存储节点所对应的 t+1个编码向量中,依次取得每个编码向量中 元素为 1 的项对应位置的存储文件编码数据块相加后作为该编码向量决定的存储编 码数据块存入该存储节点;每个存储节点中存储有由 t+1个编码模块决定的 t+1个存 储编码数据块。
本发明还涉及一种在采用上述的自修复码编码方法的存储系统中重构数据的方 法, 包括如下步骤:
I )在 n个存储节点中任意选择 k个; 其中, ≥m/(i + l) ;
J ) 下载所选择节点的数据并依据其编码向量重构数据;
K )判断是否完成数据重构, 如是, 退出本次数据重构; 否则, 执行下一步 骤;
L )在尚未被选择的存储节点任意选择一个, 使得被选择的存储节点增加一 个, 并返回步骤 J )。
更近一步地, 所述步骤 J )中进一步包括: 由服务器分别取得所选择存储节点的 编码向量或由所述选择的存储节点取得其编码向量。
本发明还涉及一种在采用上述述的自修复码编码方法的存储系统中修复失效存 储节点的方法, 包括如下步骤:,
M )确认一存储节点已经失效并由服务器得到该存储节点的编码向量;
N )任选一个未失效的存储节点并得到其编码向量;
0 )得到与所述被选择的存储节点相关的至少一个存储节点;
P )下载所述被选择的存储节点及其相关的存储节点的数据, 并依据这些数
据得到失效存储节点的数据, 存储在一个新存储节点中, 完成数据恢复。
更进一步地, 所述步骤 0 ) 中, 通过对所述失效存储节点及选择的存储节点的 编码向量进行运算得到所述相关节点的编码向量, 进而查找到所述相关节点; 所述 运算为异或。
更进一步地, 所述步骤 P )中, 通过对所述选择的存储节点和相关的存储节点存 储的数据进行重组而得到所述失效存储节点存储的数据。
实施本发明的用于分布式网络存储的自修复码的编码、 重构和恢复方法, 具有 以下有益效果: 由于将依据存储文件编码模块数而得到的第二有限域划分为多个子 空间, 且每个子空间对应于一个存储节点, 并决定该存储节点所存储编码数据模块 的位置, 在修复失效节点时只要任选一个存储节点, 并找到与该选择的存储节点对 应的存储节点, 下载这些存储节点的数据并重组即可得到失效的存储节点所存储的 数据。 所以, 其运算较为筒单、 开销较小。
附图说明
图 1是现有技术中 EC码的数据重构示意图;
图 2是现有技术中 EC码的数据修复示意图;
图 3是现有技术中 RGC码的数据重构示意图;
图 4是本发明用于分布式网络存储的自修复码的编码、 重构和恢复方法实施例 的编码流程图;
图 5是所述实施例中数据重构的方法流程图;
图 6是所述实施例中数据修复的方法流程图;
图 7是所述实施例中编码的静态恢复力与 EC码的静态恢复力的比较示意图。 具体实施方式
下面将结合附图对本发明实施例作进一步说明。
如图 4所示, 在本发明用于分布式网络存储的自修复码的编码、 重构和恢复方 法实施例中, 其编码流程包括如下步骤:
步骤 S41 设置具有包含关系的基本有限域、 第一有限域和第二有限域: 在本步 骤中, 首先设置一个 q 阶的基本有限域, 然后将该基本有限域的射影空间划分为 t
维子空间,即做 t-伸展;然后得到一个其阶为 1的第一有限域。对于 q阶有限域 , q为某素数 p的幂次方, 该有限域上的 m维向量表示为 PG ( m-1 , q ) , 称该向量为 射影空间。 在本实施例中, 准备存储在各存储节点的存储文件由多个编码数据模块 组成, Q^7^丄实际上就是存储文件中所具有的编码数据模块的数量。 在本实施中的 向量均为行向量。射影空间是代数几何中最筒单的一类几何对象,其定义为:域 k上 的 n 维仿射空间 kn 中, 所有过原点的直线的全体构成的集合称为域 k上的射影空 间。 这里域 k可以取复数域等等。 从基本数学概念上来说, 一个坐标系对应了一个 仿射空间 (Affine Space) , 当矢量从一个坐标系变换到另一个坐标系时要进行线性变 换 (Linear Transformation)„ 对点来说,要进行仿射更换 (Affine Transformation)„ 令 P为射影空间, 射影空间 P的 t-伸展为射影空间 P的 t维子空间, t维子空间的集合 为 S , 该集合将射影空间 P划分为若干 t维子空间, 射影空间 P中每一点均只属于集 合 S中的一个 t维子空间。 如果 P=PG(m-l , q)是有限射影空间, 那么 t-伸展存在的条件为: t维子空间的点 数整除整个空间的点数, 满足该式子的充
分必要条件是 (i + l) l m。 即在射影空间 P=PG(m-l , q)中, 存在 t-伸展的条件是当且仅 当( l) l m。
这样, 设置一个以^为阶的第二有限域。 即设 + 得到 3 个有限域, 基 本有限域 F0= F , 第一有限域 F1= F ^以及第二有限域 Ρ2=^。 有限域之间的关系为
步骤 S42 以陪集的方式划分第二有限域为多个子空间: 在本步骤中, 将第二有 限域 F2 以陪集的方式划分为多个子空间。 第二有限域 F2是一个在基本有限域 F0 上运算的 m维空间 V, 空间 V的子空间可以构成射影空间 P=PG(m, q)。 所以第一
有限域 Fl为空间 V的 (t+1 ) 维子空间, 也就是射影空间 P的 t维射影子空间。 有 限域中的陪集就是射影空间的一个特例, 对于第二有限域 F2以及其子集的第一有限 域 F1 , 其陪集为^1 , 3 2 (即 a是第二有限域 F2的元素), 陪集将第二有限域 F2 中的乘法群分成若干部分。 因此构成了空间 P的一个 t伸展。 在本实施例中, 本步骤 具体包括: 取得第一有限域乘法群 F +1 , 设 V是第一有限域乘法群 F +1的生成元; 取得第二有限域乘法群/ , 设 w 是第二有限域乘法群 "的生成元; 使用陪集
Μ Ρ 划分所述第二有限域的乘法群 "的空间, 即 F = MAF +1 , 其中符号 U表示 对有限域的划分; 依据上述划分, 将所述第二有限域 F 中的元素表示为 m-元组。
步骤 S43 得到每个子空间的基本向量, 选择其中 t+1个作为该子空间对应的存 储节点的编码向量: 在本步骤中, 分别得到上述每个子空间 (即上述陪集的一项) 的基本向量, 并在其中选择线性无关的 t+1个基本向量作为存储节点的编码向量。在 本实施例中, 上述一个子空间对应于一个存储节点, 该子空间选择出来的基本向量 作为该存储节点的编码向量。 在本实施例中, 本步骤具体包括: 分别取得上述每个 子空间中的 1个元素; 分别在所述每个子空间的 m个元素中任取 t+1个作为该子空 间所对应的存储节点的编码向量。
步骤 S44按照每个存储节点的编码向量取得文件的编码模块并存储: 在本步骤 中, 按照上述步骤得到的每个存储节点的编码向量取得其对应的编码数据模块, 并 存储在该储存节点上。 具体而言, 在每个存储节点所对应的 t+1个编码向量中, 依次 取得每个编码向量中元素为 1 的项对应位置的存储文件编码数据块相加后作为该编 码向量决定的存储编码数据块存入该存储节点;每个存储节点中存储有由 t+1个编码 模块决定的 t+1个存储编码数据块。
一个筒单的例子为: 令基本有限域 F0=F2 , 其元素为 0和 1。 考虑 1-伸展, 这样 可以得到平面, t=l ,所以第一有限域 F1=F4 ,然后设 m=4,也就是第二有限域 F2=F16。 以!^;表示为有限域!^的乘法群, 为循环群。 令 w和 V分别为第二有限域乘法群和 第一有限域乘法群的生成元。 因为元素 V在第二有限域 F2中的阶为 3, 所以 v = w5 , 因此第一有限域乘法群可以表示成 Fl* = {1, ^5 , ^。} , 而第二有限域乘法群表示成
^2* =^^ = ' +' 。+ = ^' , 我们用符号 U表示对第二有限域 F2的划分, 把第二有限域 F2划分为陪集的形式 H'F4*, i=l, ...,5。 这 5个陪集定义了 5个不同的 平面。 更具体地, 第二有限域 F2可以直接分解为几个基本有限域 F0相加的形式: F16 = F4㊉ vF4 = F2㊉ vF2㊉ wF2㊉ wvF2 , 所以, 第二有限域 F2中的元素可以写为 4-元组。 例如, Ρ咅集 wF4*包含了元素 w, wv, wv2, 因为 v 2=v+l , 所以 wv2可以由其它的两个 元素表示。 因此可以让 w= (0, 0, 1, 0), wv= (0, 0, 0, 1), 这样就可以得到由 陪集 wF4*定义的平面为 {(0010), (0001 ), (0011 )}。 在分布式存储系统中, 设文件的大小为 B, 需要将文件 B存储在 n个存储节点 中, 每个存储节点存储的大小为《, 当有存储节点失效时, 需要连接剩下的 (n-1) 个存储节点中的 d个并从这 d个节点中各自下载 数据, 用 PSRC(n, k)表示为射影 自修复码, 其中参数 n和 k是构造的伸展中的参数。
考虑到构造码字的实用性, 通常基本有限域为 F2 (即 q=2)。 首先令 m=B, 也就 是说元素的运算域为 F2B , 这是有限域 F2上的 B 维向量。 有限域 F2B是由文件大小 B 确定的。 由空间 P的 t维子空间形成的 t-伸展集合 S, 其中 t+llB。 具体的, 令第一 有限域 F1=F,+1。 因为空间 P的每一个子空间均是有限域 F2上的 (t+1) 维向量空间, 所以可以用有限^上的 (t+1)个向量表示。 在此令 t+l=« , 并且每个存储节点存储 有限域 F2上的(t+1)个向量存储节点的数量 n最大为 n=^。 因为 αΙΒ,令 B=b«,
-1 所以: n= (2^1) = (2ba _ = i + 2« + (2« )2 +… + (2« )w。 ( 1 )
(2"-1) (2"-1) 为了能够满足客户端能够从 k个存储节点恢复出原始数据 B, 我们需要 b满足 b≤k。 当 b=k时, 这也就相当于每个存储节点的最小存储。(第一有限域 F1可以有多 种选择但必须满足 t+llB )。
令^表示为 n个存储节点存储的 n«的向量集合, 其中 Vl, ... , ^为第一个存 储节点存储的向量, Va+1,…, 为第二个存储节点存储的向量, 依此类推可以获得 其它的存储节点存储的向量。第 i个存储节点将会存储的 数据量为 }。
在本例子中, 有 w4=w+l, IF 1=15, w15=l, v2=v+l, IF I=3, v3=l, v=w5=w2+w。 所以空间最终被划分为
F;= {( 1000), (0110), ( 1110)}
VF;= {(0100), (0011 ), (0111 )}
V 2F:= {(0010), ( 1101 ), ( 1111 )}
v3F:= {(0001 ), ( 1010), ( 1011 )}
v4F:= {( 1100), (0101 ), ( 1001 )}
在该例子中, 根据式子(1)可以得到构造码字的参数为 B=4, a =2, n=l+22=5。 5个存储节点分别用 Ν,, i=l, ... ,5表示, 每个存储节点存储数据量为 =2, 需要存 储的原始数据用 o= (0l, o2 , o3, o4)表示。 每个存储节点存储的数据如下: 节点 基本向量 存储数据
Ni Vi=( 1000 ),v2=( 0110) {θι, o2+o3 }
N2 v3=( 0100 ), v4=( 0011 ) {o2, O3+O4 }
N3 v5=( 0010),v6=( 1101 ) { 03, O1+O2+O4 }
N4 v7=( 0001 ),v8=( 1010) {o4, 01+03}
N5 v9= ( 1100 ) , v10= { O1+O25 O2+O4 }
(0101 )
在本实施例中, 还涉及由存储上述方法中得到编码的存储模块中重构数据的方 法。 包括如下步骤:
步骤 S51 在 n个存储节点中选择 k个: 在本步骤中, 从存储有存储文件编码数 据的 n个存储节点中任意选择 k个, 此处, k≥m t + V) , 其中, m和 t与前面所述的 编码步骤中的意思相同。
步骤 S52 下载选择的存储节点中的数据并重构数据: 在本步骤中, 分别下载上 述选择的存储节点的数据并依据这些存储节点的编码向量重构存储文件。 在本实施
例中, 是由服务器分别取得所选择存储节点的编码向量的。 在一些情况下, 也可以 由选择的存储节点取得其编码向量。
步骤 S53 重构完成? 判断文件重构是否完成, 也就是文件是否被重构出来, 如 是, 执行步骤 S54, 退出本次文件数据重构; 否则跳转到步骤 S55。
步骤 S54 退出本次数据重构: 在本步骤中, 已取得存储的文件, 退出。
步骤 S55 在未选择的存储节点中再选择一个: 在本步骤中, 由于上述选择的存 储节点下载的数据并没有重构出文件数据, 所以, 再在未选择的存储节点中选择一 个, 使得被选择的存储节点数增加一个, 并跳转到步骤 S52。
在本实施例中,如果客户端连接了任意 k个存储节点,那么其最多可以获得 1^«的 数据块, 并试图从这些数据块中重建出原始数据 B。 所以它们必须满足 k≥B/«。 任 意选择 k个存储节点的数据,显然 k≥B/« ,首先下载任意的 B/«个存储节点的数据, 如果能够解码出 B, 则重建过程结束, 否则再下载一个存储节点的数据, 直至解码出 原始数据 B为止。 在本实施例中, B等于 m, 而 α等于 t+i。 如果 k=2, 那么可以从任意的 k=2个存储节点中重建出原始数据 B, 这时, PSRC ( n, k )码就是一个 MDS码。 当 k=2时, 每个存储节点存储 =B/2个相互独立的向 量。 任意选择两个存储节点 N和 节点 N存储的向量为 (Vi, . . . , va ), 节点 N'存 储的向量为(Ul, ... , MJ。假设存储节点 N中存在一个向量 V , 向量 V跟节点 N'中的 某些向量线性相关, 也就是说 V可以写成:
¥=∑^ +∑^ 。
!=1 j=l
因为 VeN并且 Z^ cm e N , 所以必有 A e N , 这跟伸展的定义中 N和 N'不 相交的性质想矛盾。 注意, 当 k=2时 MDS码也不可以通过下载 d=2节点的数据重建 出原始数据 B。
在本实施中, 还涉及一种恢复上述方法得到的编码的数据恢复方法, 包括如下
步骤:
步骤 S61 确认存储节点失效并得到该存储节点的编码向量: 在本步骤中, 确认 一个存储节点已经失效, 需要对其存储的数据进行修复并存储到另一个存储节点上; 同时, 由服务器上取得该存储节点的编码向量。
步骤 S62任选一未失效的存储节点并得到其编码向量: 在未失效的存储节点中 任意选择一个节点, 同时, 由服务器上取得该存储节点的编码向量。
步骤 S63 查找到与所选择的存储节点相关的存储节点: 在本步骤中, 通过对上 述失效存储节点及选择的存储节点的编码向量进行运算得到至少一个与上述选择存 储节点相关的存储节点的相关节点编码向量, 进而在服务器上查找到这些编码向量 所对应的存储节点; 在本步骤中, 采取的运算为异或运算。
步骤 S64 下载上述选择的存储节点及其相关的存储节点数据, 得到失效节点存 储的数据并保存: 在本步骤中, 将上述选择的存储节点及其相关存储节点所存储的 数据下载, 并依据其对应的编码向量(包括失效存储节点的编码向量、 选择存储节 点的编码向量及上述相关存储节点的编码向量) , 对数据重组, 得到失效节点所存 储的数据, 并存储在一个新的存储节点上。
在一个存储节点失效的情况下, 对于 HSRC码, 当一个存储节点失效时需要下 载两个存储节点的数据来修复该失效节点的数据, 并且有 ( n-1 ) /2对修复节点可供 选择, PSRC码仍然有这种修复特性。
在 PSRC ( n, k )码中,共有 n个存储节点,每个存储节点存储《的编码数据量。 当一个存储节点 ^失效时, 我们可以通过连接并下载 d=2个存储节点即可恢复出失 效节点 存储的数据。 具体的讲, 在现存的 (n-1 )个存储节点中, 任意选择一个存 储节点 至少存在一个存储节点 Nj使得通过下载存储节点 和 Nj的数据就可以 恢复出失效节点 存储的数据。
第 1个存储节点 ^存储的子空间的形式为 v'F , 1=1 , ... ,n。 假设该存储节点失 效, 一个新节点会替代该失效节点 Ni。 新节点选择任何一个存储节点, 比如说 Nl 存储节点 存储的数据为 νΤ , 我们需要证明至少存在一个存储节点 Ν」使得 V'F 2: UV F;可以修复出节点 Ni中存储的数据。 因为(v' +v')F2*„c V'F2*„Lk'F2*„ , 所以我们
可以选择 j使得 =(!'+ 。 通过相互组合存储在存储节点 ^和 Ν」的存储数据, 我 们可以得到 V'F2U(v'+v')F2 , 也就是失效的数据 v'F2*。。
也就是说, 当任意的一个存储节点 ^失效时, 只需要任意的选择一个存储节点 以及另一个相对应的节点, 即可恢复失效数据。
PSRC码的自修复能力比 HSRC码的自修复能力更强。假设存储节点的个数 n=21, 每个存储节点存储的数据量为 =2, 原始数据的大小 B=6, 我们构造的码字为 PSRC (21, 3), 如果节点 失效, 在剩下的 20个存储节点中任意的选择一个存储节点 Ν,, 都会有另外的三个存储节点 N. , N.和 N. , 通过下载存储节点 和 或者 和 N2或者 ^和 3中的数据就可以恢复出失效节点 中存储的数据。
注意 w为循环群 F:的生成元, 存储节点 存储的数据为 v'F:, 同样的, 存储节点 存储的数据为 v'F:。 所以有
i . i , I , I i i i , i I I I , I
V + V w + v +v w,v ,v w,v +v w,v ,v w,v +v w,
V + vlw, V +vlw + vl , vlw + vl + vlw, vlw + vl ,
V +vlw + vlw,vl +vl +vlw]
令 jl, j2, j3分别满足如下式子
νΛ =νι +νι , vJl = V +vlw , Vh = V +v'w
所以有
(Nt , ΝΑ ) νΤ4* (J (ν' + νι )F4*〕 v'F4*, (N; , N ) => V'F (J (ν' + V'W)F 3 v'F4*, (N; , N ) => v'F U (ν' + V'W)F 3 v'F4*。 该方法实际上就是寻找不同的修复节点对的一个算法。
对于在上述编码步骤中所列举的例子而言, 如果节点^失效, 那么也就是说数 据块 (相当于基本向量( 1000))和 o2+o3丟失了 (相当于基本向量(0110))。 新 节点会加入该存储系统并连接存储节点 Ν3和 Ν4,从这两个节点中可以分别得到基本
向量 v5= (0010), v6= ( 1101 )和 v7= (0001 ), v8= ( 1010)。 而通过 v8+v5可以求出 ( 1000), 通过 v8+ ( v6+v7)可以得到(0110)。 从另一方面来讲, 假设节点^失效, 新节点连接节点 N4并下载 V 3F: , 有
1 , i i , 3 21 11 τ
v+v=l+v=v v =^·
1 . i . 3 21 9
v w+v =w+v =v v J 10
1 i 3 21
V +VW=1+V W=V N5。
因此,新节点可以通过连接并下载以下任意 3对节点( 3对节点均包含有节点 N4 ) 即可修复失效节点存储的数据(N4, N12), (N4, N10), (N4, N5)。
此外, 在分布式存储系统中, 静态恢复力是指数据一旦存储在系统中, 在没有进 一步的修复失效节点的前提下仍然可以恢复出存储的原始数据的概率。 令 pn。de为任 意给定节点的有效概率, 由于系统中没有两个不同的数据模块存储在相同节点上, 因此我们可以假设任意节点所存储的模块的有效性为 pn。de。 能够恢复出原始数据的 概率 p。bj的概率为 =^ x ¾^(l-;^y", 其中 只一个条件概率,该概率为下载 n个存储节点中的任意 个存储节点中的数据即可恢复出原始数据的概率。
对于(n, k) MDS擦除码, 是确定的并且当 x≥ 时其值等于 1, 其它的情况其 值等于 0。 但是对于自修复码, 其值是不确定的。 在本文构造的 PSRC(21,3)码的例子 中, 其概率值可以计算出来, 对于 x≥ 的情况, 1-A可以通过穷举法计算出来。
具体的计算方法,我们可以穷举出由 5个存储节点组成的唯一组,其中有 10个基 本向量产生的矩阵的秩小于 6, 有 5个存储节点组成的唯一组为 =20349。 也就是
5 ) 说,如果我们任意的选择 5个存储节点,原始数据仍然不能恢复出来的概率为 0.00083。 同样的, 如果我们选择任意的 3 个存储节点, 那么不能恢复出原始数据的概率为 0.150375。 相反, 对于 MDS码, 下载任意的 3个存储节点的数据即可恢复出原始数 据。 但是, 自修复码在恢复数据上的劣势换来了高效的自修复能力。 对于任意的一 个存储节点, 如果该节点失效了, 任意地选择乘下现存的 20 个存储节点中的一个, 在选择与之对应的三个存储节点中的任何一个存储节点即可再生出失效数据。
图 7比较了 PSRC (21, 3)码和 MDS (21, 3)码的静态恢复力的概率。 图中 的数值是由计算机通过评估 ^值计算出来的。 由该图我们可以看到, MDS码也许并 不存在任意的(n, k)特性。 更重要的是, PSRC (21, 3)码虽然丟失了一点静态恢 复力, 却比 MDS码多了自修复能力。 并不能因此而理解为对本发明专利范围的限制。 应当指出的是, 对于本领域的普通 技术人员来说, 在不脱离本发明构思的前提下, 还可以做出若干变形和改进, 这些 都属于本发明的保护范围。 因此, 本发明专利的保护范围应以所附权利要求为准。
Claims (10)
- 权利要求书1、 一种用于分布式网络存储的自修复码的编码方法, 其特征在于, 包括如下步 骤:A )设置基本有限域^ ; 依据存储文件中编码数据块的数量 m, 得到第二有 限域 F , 并设置所述第二有限域 F 的 m空间的 t维子空间形成的 t-伸展集合 S, 其中 t+1 I m;按照所述基本有限域的 t-伸展,利用所述 t-伸展得到第一有限域 ; 其中,B ) 将所述第二有限域 F 表示的空间使用其陪集的形式 νι Ρ +1划分为 m 1 m i^TTTJ个子空间; 其中, i=0, 1, ..., , w是所述第二有限域的乘法群 的生 成元, F +1是所述第一有限域的乘法群;C)分别在所述每个子空间的用所述基本有限域元素表示的元素中选择 t+1 个作为一个存储节点的编码向量; 所述一个存储节点对应于所述一个子空间; 所述 编码向量对应于所述存储文件中编码数据块的位置;D )按照所述每个存储节点编码向量取得的存储文件中对应位置的编码数据 块并存储在该存储节点。
- 2、 根据权利要求 1所述的用于分布式网络存储的自修复码的编码方法, 其特征 在于, 所述步骤 B)进一步包括如下步骤:B1 )取得所述第一有限域乘法群 ,设 V是所述第一有限域乘法群 F +1的 生成元; 取得所述第二有限域的乘法群 F », 设 w是所述第二有限域乘法群 "的 生成元;B2 ) 使用陪集 νι Ρ +1划分所述第二有限域的乘法群 的空间, 即F - = LJw - , 其中符号 υ表示对有限域的划分;Β3)依据上述划分, 将所述第二有限域 F 中的元素表示为 m-元组。
- 3、 根据权利要求 2所述的用于分布式网络存储的自修复码的编码方法, 其特征 在于,所述第二有限域乘法群 F 的划分将所述第二有限域 F <sub>Q M</sub>表示为所述第一有限 域乘法群 、 第二有限域乘法群/ 的元素分别相乘的形式。
- 4、 根据权利要求 3所述的用于分布式网络存储的自修复码的编码方法, 其特征 在于, 所述步骤 C )进一步包括:C1 )分别取得所述每个子空间中的 t+1个基本向量; 所述子空间中包括 1 个元素;C2 )分别把 t+1个基本向量作为该子空间所对应的存储节点的编码向量。
- 5、 根据权利要求 4所述的用于分布式网络存储的自修复码的编码方法, 其特征 在于, 所述步骤 D ) 中进一步包括:在所述每个存储节点所对应的 t+1个编码向量中,依次取得每个编码向量中 元素为 1 的项对应位置的存储文件编码数据块相加后作为该编码向量决定的存储编 码数据块存入该存储节点;每个存储节点中存储有由 t+1个编码模块决定的 t+1个存 储编码数据块。
- 6、 一种在采用如权利要求 1所述的自修复码编码方法的存储系统中重构数据的 方法, 其特征在于, 包括如下步骤:I )在 n个存储节点中任意选择 k个; 其中, ≥m/(i + l) ;J ) 下载所选择节点的数据并依据其编码向量重构数据;K )判断是否完成数据重构, 如是, 退出本次数据重构; 否则, 执行下一步 骤;L )在尚未被选择的存储节点任意选择一个, 使得被选择的存储节点增加一 个, 并返回步骤 J )。
- 7、 根据权利要求 5所述的重构数据的方法, 其特征在于, 所述步骤 J ) 中进一 步包括: 由服务器分别取得所选择存储节点的编码向量或由所述选择的存储节点取 得其编码向量。
- 8、 一种在采用如权利要求 1所述的自修复码编码方法的存储系统中修复失效存 储节点的方法, 其特征在于, 包括如下步骤:,M )确认一存储节点已经失效并由服务器得到该存储节点的编码向量; N )任选一个未失效的存储节点并得到其编码向量; O )得到与所述被选择的存储节点相关的至少一个存储节点;P )下载所述被选择的存储节点及其相关的存储节点的数据, 并依据这些数 据得到失效存储节点的数据, 存储在一个新存储节点中, 完成数据恢复。
- 9、 根据权利要求 8所述的方法, 其特征在于, 所述步骤 0 ) 中, 通过对所述失 效存储节点及选择的存储节点的编码向量进行运算得到所述相关节点的编码向量, 进而查找到所述相关节点; 所述运算为异或。
- 10、 根据权利要求 9所述的方法, 其特征在于, 所述步骤 P ) 中, 通过对所述选 择的存储节点和相关的存储节点存储的数据进行重组而得到所述失效存储节点存储 的数据。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2012/078927 WO2014012246A1 (zh) | 2012-07-20 | 2012-07-20 | 用于分布式网络存储的自修复码的编码、重构和恢复方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104782101A true CN104782101A (zh) | 2015-07-15 |
CN104782101B CN104782101B (zh) | 2018-02-13 |
Family
ID=49948183
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280074817.2A Expired - Fee Related CN104782101B (zh) | 2012-07-20 | 2012-07-20 | 用于分布式网络存储的自修复码的编码、重构和恢复方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN104782101B (zh) |
WO (1) | WO2014012246A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105681425A (zh) * | 2016-01-22 | 2016-06-15 | 广东顺德中山大学卡内基梅隆大学国际联合研究院 | 基于分布式存储系统的多节点修复方法及其系统 |
CN113505021A (zh) * | 2021-05-26 | 2021-10-15 | 南京大学 | 基于多主节点主从分布式架构的容错方法及系统 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017041233A1 (zh) * | 2015-09-08 | 2017-03-16 | 广东超算数据安全技术有限公司 | 一种功能修复再生码的编码和存储节点修复方法 |
CN108182235A (zh) * | 2017-12-27 | 2018-06-19 | 北京奇虎科技有限公司 | 一种用于对用户特征进行分布式编码的方法和系统 |
CN109038575B (zh) * | 2018-09-05 | 2021-06-04 | 东北大学 | 基于改进物种生灭算法的含分布式电源配电网重构方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1859115A (zh) * | 2006-01-24 | 2006-11-08 | 华为技术有限公司 | 一种网络数据的分布式存储下载系统、设备及方法 |
CN101415016A (zh) * | 2007-10-17 | 2009-04-22 | 深圳市亚贝电气技术有限公司 | 一种数据复制方法、系统和存储服务器 |
US20110289351A1 (en) * | 2010-05-21 | 2011-11-24 | Indian Institute Of Science | Distributed storage system and a method thereof |
CN102279777A (zh) * | 2011-08-18 | 2011-12-14 | 成都市华为赛门铁克科技有限公司 | 数据冗余处理方法、装置和分布式存储系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101645038A (zh) * | 2009-05-20 | 2010-02-10 | 中国科学院声学研究所 | 基于彼特森的网络存储结构的数据存储方法 |
-
2012
- 2012-07-20 CN CN201280074817.2A patent/CN104782101B/zh not_active Expired - Fee Related
- 2012-07-20 WO PCT/CN2012/078927 patent/WO2014012246A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1859115A (zh) * | 2006-01-24 | 2006-11-08 | 华为技术有限公司 | 一种网络数据的分布式存储下载系统、设备及方法 |
CN101415016A (zh) * | 2007-10-17 | 2009-04-22 | 深圳市亚贝电气技术有限公司 | 一种数据复制方法、系统和存储服务器 |
US20110289351A1 (en) * | 2010-05-21 | 2011-11-24 | Indian Institute Of Science | Distributed storage system and a method thereof |
CN102279777A (zh) * | 2011-08-18 | 2011-12-14 | 成都市华为赛门铁克科技有限公司 | 数据冗余处理方法、装置和分布式存储系统 |
Non-Patent Citations (1)
Title |
---|
王禹: "分布式存储系统中的数据冗余与维护技术研究", 《中国博士学位论文全文数据库》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105681425A (zh) * | 2016-01-22 | 2016-06-15 | 广东顺德中山大学卡内基梅隆大学国际联合研究院 | 基于分布式存储系统的多节点修复方法及其系统 |
CN105681425B (zh) * | 2016-01-22 | 2019-01-22 | 广东顺德中山大学卡内基梅隆大学国际联合研究院 | 基于分布式存储系统的多节点修复方法及其系统 |
CN113505021A (zh) * | 2021-05-26 | 2021-10-15 | 南京大学 | 基于多主节点主从分布式架构的容错方法及系统 |
CN113505021B (zh) * | 2021-05-26 | 2023-07-18 | 南京大学 | 基于多主节点主从分布式架构的容错方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
WO2014012246A1 (zh) | 2014-01-23 |
CN104782101B (zh) | 2018-02-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103688515B (zh) | 一种最小带宽再生码的编码和存储节点修复方法 | |
Oggier et al. | Self-repairing homomorphic codes for distributed storage systems | |
Shum et al. | Cooperative regenerating codes | |
US9961142B2 (en) | Data storage method, device and distributed network storage system | |
Cadambe et al. | Optimal repair of MDS codes in distributed storage via subspace interference alignment | |
Shum et al. | Exact minimum-repair-bandwidth cooperative regenerating codes for distributed storage systems | |
CN103746774B (zh) | 一种高效数据读取的容错编码方法 | |
CN103688514A (zh) | 一种最小存储再生码的编码和存储节点修复方法 | |
WO2021098665A1 (zh) | 一种纠删码计算方法 | |
CN108132854B (zh) | 一种可同时恢复数据元素及冗余元素的纠删码解码方法 | |
Oggier et al. | Self-repairing codes for distributed storage—A projective geometric construction | |
CN107003933B (zh) | 部分复制码的构建方法、装置及其数据修复的方法 | |
Hollmann | Storage codes—Coding rate and repair locality | |
CN104782101A (zh) | 用于分布式网络存储的自修复码的编码、重构和恢复方法 | |
Hou et al. | A new design of binary MDS array codes with asymptotically weak-optimal repair | |
CN106484559A (zh) | 一种校验矩阵的构造方法及水平阵列纠删码的构造方法 | |
CN110764950A (zh) | 基于rs码和再生码的混合编码方法、数据修复方法、及其系统 | |
CN103650462B (zh) | 基于同态的自修复码的编码、解码和数据修复方法及其存储系统 | |
CN103703446A (zh) | 网络存储中抗拜占庭失效的数据重构、失效数据恢复方法及装置 | |
WO2014059651A1 (zh) | 一种射影自修复码的编码、数据重构及修复方法 | |
CN111224747A (zh) | 可降低修复带宽和磁盘读取开销的编码方法及其修复方法 | |
CN109521955B (zh) | 基于分层交叉设计的异构部分重复码构造及转换方法 | |
CN108628697B (zh) | 一种基于二进制的节点修复方法及系统 | |
CN108199720B (zh) | 一种减小存储开销和提高修复效率的节点修复方法及系统 | |
Calis et al. | Architecture-aware coding for distributed storage: Repairable block failure resilient codes |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180213 Termination date: 20210720 |
|
CF01 | Termination of patent right due to non-payment of annual fee |