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

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

Info

Publication number
WO2013159341A1
WO2013159341A1 PCT/CN2012/074837 CN2012074837W WO2013159341A1 WO 2013159341 A1 WO2013159341 A1 WO 2013159341A1 CN 2012074837 W CN2012074837 W CN 2012074837W WO 2013159341 A1 WO2013159341 A1 WO 2013159341A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
repair
code
encoded data
node
Prior art date
Application number
PCT/CN2012/074837
Other languages
English (en)
French (fr)
Inventor
李挥
黄显霞
侯韩旭
Original Assignee
北京大学深圳研究生院
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 北京大学深圳研究生院 filed Critical 北京大学深圳研究生院
Priority to PCT/CN2012/074837 priority Critical patent/WO2013159341A1/zh
Priority to CN201280032802.XA priority patent/CN103650462B/zh
Publication of WO2013159341A1 publication Critical patent/WO2013159341A1/zh

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

Definitions

  • This invention relates to distributed data storage and, more particularly, to a method of encoding, decoding and data repair based on homomorphic self-repairing complex codes and a storage system therefor.
  • Network storage systems have received much attention in recent years, with storage systems ranging from P2P-based distributed storage systems to dedicated infrastructure systems based on data center and storage area networks. Since storage node failure or file transmission loss often occurs in a distributed storage system, redundancy must be present in the network storage system. Redundancy can be achieved by copying data from a single cartridge, but the storage effect is not high, and the error correction code provides an efficient storage scheme that is different from previous replication.
  • An (n, fc) MDS (Maximum Distance Separable) error correcting code needs to divide an original file into k equal-sized modules, and generate n mutually uncorrelated encoding modules by linear encoding, by n
  • the node stores different modules and satisfies the MDS properties (any k of the n encoding modules can reconstruct the original file).
  • This coding technology plays an important role in providing effective network storage redundancy, and is particularly suitable for storing large files and archive data backup applications.
  • FIG. 1 shows that the original file can be obtained from the existing node as long as the effective node number d ⁇ in the system;
  • FIG. 2 shows the process of restoring the content stored in the failed node.
  • the entire recovery process is: 1) First download data from the storage nodes in the system and reconstruct the original File; 2) Re-encode the new module from the original file and store it on the new node.
  • the recovery process indicates that the network load required to repair any failed node is at least the content stored by k nodes. Therefore, the communication load required for the above EC code repair process is high.
  • most of the measures are used to make up for: 1) using a hybrid strategy requires an additional backup of the entire original file, so that the network load required for the repair process is equal to the amount of data lost, but this strategy increases the storage load and makes The system is complex, and the node load cannot be balanced.
  • the local redundancy module can be used to repair the failure of the nodes in the subgroup, so only need to access the module less than the entire file size can be repaired; and the global redundancy module provides further repair guarantee, that is, when the module fails in a subgroup It can be fixed by the global redundancy module when there are too many to fix itself.
  • the status of some modules may be higher than that of other modules, making it difficult to perform an in-depth resilience analysis (affecting the understanding of coding effectiveness); In the actual system, if the encoding is used, more complex algorithms (whether reconstructed or repaired) are needed.
  • the different encoding modules have different status in the HC code, so the number of modules needed to repair the lost module depends not only on the missing modules. The number is also related to which modules are lost; similarly, the number of modules required to reconstruct the original file may also vary depending on the missing module.
  • an RGC code (Regenerating Codes) is proposed in the patent PCT/CN2012/071177, so that repairing a lost coding module requires only a small amount of data, without first refactoring the entire file.
  • the RGC code uses linear network coding technology to improve the overhead required to repair an encoding module through NC (Network Coding) attributes (ie, maximum stream minimum cut). The same amount of data can be proved from the network information theory.
  • NC Network Coding
  • the network overhead can repair the original lost module.
  • the main idea of the RGC code is to use the MDS attribute. When some storage nodes fail, it is equivalent to the loss of stored data. It is necessary to download information from the existing active nodes to regenerate the lost data and store it on the new node.
  • the regeneration process needs to ensure two points: 1) The failed nodes are independent of each other, and the regeneration process can be cyclically recursive; 2) Any node is sufficient to recover the original file.
  • Figure 3 depicts the regeneration process when a node fails.
  • n storage nodes each store "data.
  • the new node regenerates by downloading data from other surviving nodes.
  • the download amount of each node is ⁇ , and each storage node i passes one.
  • the pair of nodes are connected by an edge whose capacity is the storage amount (ie "" of the node.
  • the regeneration process is described by an information flow diagram, x » from the system available nodes respective data collected by the ⁇ x. ut stores "data, a recipient can access any x. "'.
  • the maximum information flow from the source to the sink is determined by the minimum cut set in the graph. When the sink is to reconstruct the original file, this The size of the stream cannot be less than the size of the original file.
  • MB-code Minimum-bandwidth Regenerating
  • ⁇ 181 code Min-storage Regenerating
  • the repair bandwidth ⁇ is the minimum SS .
  • Precise repair The failed module needs to be constructed correctly, the recovered information is the same as the lost (the core technology is the interference queue and NC);
  • Functional repair The newly generated modules can contain different For the lost node data, as long as the repaired system supports the MDS code attribute (the core technology is NC); the system part is precisely fixed: it is a hybrid repair model between the exact repair and the function repair, in this hybrid model, for the system
  • the node (storing unencoded data) requires accurate recovery, ie the recovered information is the same as the information stored by the failed node.
  • the technical problem to be solved by the present invention is that, in view of the defects of the prior art that the repair data transmission volume is large, the system overhead is large, and the system is complicated, the repair data volume is small, the system overhead is small, and the system is relatively small.
  • the technical solution adopted by the present invention to solve the technical problem is to construct a coding method based on the homomorphic self-repairing code, including the following steps:
  • the step C) further relates to a decoding method of the homomorphic self-repairing code corresponding to the above encoding method, comprising the following steps:
  • the present invention also relates to a method of repairing encoded data obtained using the above encoding method, comprising the following steps:
  • the system can tolerate (nl)/2 nodes to fail without losing data, so the set repair threshold is not exceeded at most ( Nl)/2, n is the number of nodes, specifically including:
  • threshold If the threshold is set to 1, it indicates that the system is being repaired (if it is invalid, it is repaired);
  • threshold is set to be greater than 1 and does not exceed (n-l)/2, it indicates that the system is lazy repair (repair after reaching a certain number of failures).
  • the step K) further includes the following steps: Kl) determining a storage node of the coded storage data that has failed; K2) decomposing the polynomial representing the content of the stored encoded data in the failed storage node by using the characteristics of the generator of the multiplicative group M , t in the finite field for other storage a polynomial of the node encoded data, finding a storage node associated with the expired encoded storage data;
  • step K3 downloading the encoded data of the relevant node and obtaining the invalidated encoded data according to the polynomial operation in step K2).
  • the present invention also relates to a distributed storage system based on a homomorphic self-healing code, comprising a plurality of storage nodes, further comprising at least one encoding module, at least one decoding module and at least one data repair module; Converting data into a plurality of homomorphic self-healing encoded data and storing them on different storage nodes respectively; the decoding module is configured to obtain encoded data from the plurality of storage nodes and recover data; the data repair module uses And repairing the encoded data that is lost by the failed node; the data repair module further includes:
  • An encoded data failure determining unit configured to determine whether there is a invalid data encoding on a plurality of nodes storing the data encoding
  • the invalid coded data amount determining unit is configured to determine whether the invalidated data code reaches the set repair threshold
  • the fail coded data repair unit is configured to repair the result obtained by an operation between d coded data stored in different storage nodes related to the failed code when the data code of the failure exceeds the repair threshold Coded data in the failed node.
  • the encoding module further includes:
  • coded data acquisition unit for taking n different non-zero element values ⁇ ..., ⁇ in the finite field, substituting the polynomial variables, respectively calculating the value of the polynomial after each value is substituted, and storing Encoded data of each storage node;
  • n ⁇ 2 M ' k -l encoded data storage unit for storing the obtained encoded data to each storage node;
  • the decoding module further includes:
  • Encoded data acquisition unit for acquiring k linearly-independent encoded data by different storage nodes, and calculating a linear combination of 2 -1 of the encoded data; wherein k>2;
  • the encoding, decoding and data repairing method and the storage system thereof based on the homomorphic self-repairing code of the present invention have the following beneficial effects: Since the data encoding is performed in a finite field, the encoded data stored between the storage nodes is used. There is a certain correlation between each other. When the encoded data of one or more storage nodes fails, as long as one pair of the multiple or more pairs of storage nodes associated with it does not fail, the data can be recovered. Since in most cases only one pair of associated storage node coded data can recover the invalid data, the amount of data transmitted is small, the system is not complicated, and at the same time, the XOR operation is used to recover the invalidation between the relevant coded data. The data, the system overhead is also small.
  • FIG. 1 is a schematic diagram of a data download process used in an EC code in the prior art
  • FIG. 2 is a schematic diagram of a data recovery process used in an EC code in the prior art
  • 3 is a schematic diagram of a data recovery process employed in an RGC code in the prior art
  • FIG. 4 is a flow chart of a method for encoding, decoding, and repairing a homomorphic self-healing code according to the present invention and a method for storing the encoded data in the storage system embodiment
  • FIG. 5 is a flowchart of a method for obtaining encoded data in the embodiment
  • FIG. 6 is a flow chart of a method for repairing encoded data in the embodiment
  • FIG. 7 is a flowchart of determining whether the encoded data is repairable in the embodiment
  • FIG. 8 is a schematic diagram of the encoded data stored in the storage node and the repairing manner in the embodiment
  • FIG. 9 is the encoding in the embodiment and the prior art.
  • Figure 10 is a schematic diagram of the repair load of each of the failed data modules for different threshold values in the embodiment
  • Figure 11 is a schematic diagram showing the structure of a storage system based on a homomorphic self-healing code in the embodiment.
  • the technical solution adopted is to design a clear optimal code for the network storage system, and the required design equipment is similar to the traditional EC code.
  • the whole idea is: Define Fq as a q-order finite field, which is a finite field other than the zero element.
  • a linear ( n, k, d ) SRC ( Self-repairing Codes) code on the q-order finite field is a linear mapping C: F k ⁇ F n , s ⁇ c(s) , which will be a dimension
  • the vector s is mapped to an n-dimensional vector c (the set C of codewords, which constitutes the code.
  • the third parameter d represents the minimum distance of the codeword: , where the Hamming distance d(c, y) represents a different number of coefficients X and y. This minimum distance indicates the maximum number of node failures that the SRC code can tolerate.
  • the maximum tolerance is ⁇ -L.
  • the linear coding of the data can be realized by any polynomial.
  • the above-mentioned groups i.e., the portions obtained by aliquoting
  • Step S403 obtains n coding modules, that is, n codewords ( ⁇ ( ), ⁇ , ⁇ (6 ), from n different non-zero values ⁇ ... on the polynomial p(X), each coding module is Different storage node storage.
  • n codewords ⁇ ( ), ⁇ , ⁇ (6 )
  • each coding module is Different storage node storage.
  • take n different non-zero values in F 2 rinse ft in order to make each code word different, formula (4) must be satisfied: « ⁇ 2 M3 ⁇ 4 -1. (4)
  • the variables of the polynomial ⁇ ( ⁇ ) are respectively substituted into the above polynomial.
  • the above k The value of a polynomial represented by some or all of the packets. Substituting a non-zero value yields the value of such a polynomial, and such a value represents an encoded data (or encoding module) that is stored in a store. On the node; the encoded data obtained by substituting different non-zero values is stored on different storage nodes.
  • FIG. 5 is a method of downloading data encoded by the above method and stored in a distributed storage system. In FIG. 5, the following steps are included:
  • Step S501 calculates a linear combination of 2 - 1 by a linearly independent module, and then evaluates the polynomial p value by a linear combination.
  • the stored encoded data is downloaded by each storage node, and the encoded data is downloaded in total, and the encoded data is linearly independent; that is, a linearly independent encoded data is obtained, and the encoded data is calculated.
  • Step S502 Since the polynomial coefficient is in the finite field, it can be known from the Lagrangian interpolation that only 2"+1 points (because when ⁇ 2, 2 -l ⁇ 2 +l) can recover only a single
  • the term p and the data O need to satisfy the formula (5): 2" + 1 ⁇ 2 ⁇ / -1. (5).
  • FIG. 6 is a flowchart of a method for restoring invalid coded data in the embodiment. As shown in FIG. 6, the recovery of the invalid coded data includes the following steps:
  • step S605 is performed; as to how to judge whether the encoded data can be recovered, which will be described in more detail later. Is there invalidated encoded data in step S602? In this step, the judgment is stored in each storage
  • step S605 is performed
  • Step S603 The coded data that has failed reaches the set repair threshold? In this step, judge
  • step S605 is performed. It is worth mentioning that, in this embodiment, since the system can
  • the repair of the encoded data is hungry repair; when the value is greater than 1, the repair of the encoded data is lazy repair.
  • Step S604 repairs the invalid encoded data: In this step, the discovered invalidation
  • Step S605 Exit: In this step, exit this data repair.
  • Fig. 7 shows a specific process for judging whether or not the encoded data can be repaired in the embodiment. In Fig. 7, the following steps are included:
  • Step S701 ⁇ codewords form ( ⁇ ( ⁇ 3 ⁇ 4) constructed by the encoding process, ⁇ , ⁇ (6), in each coefficient F 2Mft, and ⁇ « ⁇ 2 3 ⁇ 4 -1:
  • Step S705 are in the B set? In this step, it is judged that ⁇ ..., ⁇ is all in the B set, and if so, step S707 is performed; otherwise, step S706. is performed.
  • Step S706 (/; ( «, ⁇ , ⁇ ( « caution)) codeword failure can be self-repairing: In this step, the above ⁇ ..., ⁇ are not all in the set, then (;; (", ⁇ , ⁇ ( « caution)) code words can be obtained by linear combination of other code words, so self-repair can be performed.
  • Step S707 The encoded data does not have a self-repairing attribute: in this step, since , ⁇ ⁇ ⁇ , independent of each other, any codeword cannot be obtained by linear combination of other codewords, and the encoding does not have a self-repairing property.
  • can take different values from k+1 to nmax, and can also take a different ⁇ ⁇ , ⁇ , ⁇ « ⁇ to define an SRC code. Select the set "' to form a subspace of size F. This choice can constitute a specific symmetrical structure of the code, that is, an XOR structure.
  • XOR structure a specific symmetrical structure of the code
  • the analysis is performed from the static restoring power (the state resilience mainly means that once a file is stored in the system, the file is always valid when there is no additional repair or even some individual storage nodes in the system fail. Probability), let p n .
  • De is the probability that any given node is valid, because there are no two different modules stored in the same node in the system, Therefore, it is possible to introduce the validity of the module stored by any node as p n .
  • each encoding module;; ; are stored by one node, so there are n nodes in the system, each node stores a length of
  • the binary vector of M/k can also be regarded as a binary matrix A of n Wk, ie, ⁇ . (6)
  • A Equivalent to matrix A, a corresponding row is lost. If multiple nodes (such as nx, indicating that only X are valid nodes) fail, A can be replaced by a sub-matrix A x of XM/k. For any given linear combination of X available coding modules, if we obtain at least one linearly independent row in matrix A x , then the original file can still be reconstructed. It can also be understood that the original file can be reconstructed if the rank of the matrix A x is not less than.
  • the probability p n of node availability. De can be increased by either: Performing a lazy repair, that is, performing repair only when the redundancy of the system is reduced to a certain threshold; or having multiple associated modules fail before performing the repair process (This situation requires additional analysis, usually with hungry repair). Since the failure of the associated module is not considered during the repair process, a hungry repair may be implemented, ie as soon as any of the coding modules fails, the repair is performed immediately. Due to the subspace architecture of the HSRC code, a missing module in the HSRC code can be repaired by two other available modules.
  • Z ⁇ ⁇ ,.
  • D egr 2(n _ 3 ⁇ 4 ). It can be introduced in the SRC code that when the threshold for lazy repair is 3 ⁇ 4 ⁇ + 1) / 2, the total bandwidth used for hungry repair is equal to the bandwidth consumed by lazy repair (both concurrent and sequential).
  • Lemma 2 knows that downloading two modules can repair a lost module; when more modules are lost, consider a repair strategy that is the same as the EC code, that is, download the module first. Refactor the entire file and then construct all the missing modules locally. This shows that the condition that the SRC code reduces the repair bandwidth is that only too many modules are not lost in the system. Define a critical value; ⁇ The total bandwidth required for the lazy repair of the EC code is the same as the SRC code.
  • Figure 10 compares the average network load required to repair each lost module during the lazy repair process for the SRC code and EC code.
  • SRC codes are very efficient in code-based distributed storage systems and can significantly reduce the bandwidth used in the repair process.
  • the lazy repair in the EC code may outperform the SRC code in total bandwidth consumption, but the EC code limits the practical application range of the system.
  • SRC code Another advantage of the SRC code is that it can simultaneously repair different missing modules independently and concurrently. If the repair is not fast enough, there may be new node failures during the repair process, which may degrade performance. A more serious consequence may be the loss of stored files.
  • n max that is, a (15, 3) HSRC code is used. Due to reasons such as lazy repair or interrelated failure, we can assume that the seven modules p(l),...,; Hw 6 ) are invalid, and ⁇ ( ⁇ 7 ), ⁇ ⁇ ⁇ , ⁇ ( ⁇ 15 ) Modules are available, and the possible groupings for repairing each missing module are listed below.
  • the module is as follows: In the first time slot, the seven nodes of a module in which ⁇ (1), ⁇ , ⁇ ( ⁇ 6 ) are to be constructed are independently downloaded Ww Ww Ww 12 ) , null, p (w 13 ), p(w 7 ), p(w s ) ; download separately in the second time slot
  • the difference between the SRC code and the HC code is:
  • the status of different coding modules in the HC code is different, so the number of modules required to repair the lost module depends not only on how many modules are lost, but also The number of modules required to reconstruct the original file may also vary depending on the missing module, and the SRC code repair process is independent of the specific missing module.
  • the RGC code applies the network coding to an (n, fc) error correction code, and supports the minimum repair load based on the NC minimum cut maximum flow theorem. Any module needs to be reconstructed in the RGC code, at least it needs to communicate with other nodes. Only one module is lost, the minimum amount of traffic required is to communicate with all active n-1 nodes, and the SRC code can repair the lost module as long as it communicates with 2 active nodes.
  • the SRC code attribute can be understood as the low communication load required to repair the lost module, and the delay required for the repair is low because the repair can be performed concurrently. These advantageous attributes make The SRC code is particularly well suited for use in practical distributed storage systems.
  • HSRC codes provide an effective solution for repairing lost redundancy, including: 1) The repair bandwidth required to implement hungry repair or lazy repair is relatively low; 2) Lost modules from one In a given number of modules, the given number is only related to how many modules are lost, and it is irrelevant to which modules are lost. Therefore, multiple different modules can be repaired independently, which makes the repair process faster and reduces the repair delay.
  • the embodiment further relates to a storage system for implementing the above-described homology-based self-repairing code encoding and decoding and data repairing method.
  • the storage system includes a plurality of storage nodes 1101, and further includes at least one encoding module 1102. At least one decoding module 1103 and at least one data repairing module 1104; wherein, the encoding module 1102 is configured to convert data into a plurality of homomorphic self-healing encoded data and store them on different storage nodes 1101; respectively, the decoding module 1103
  • the data recovery module 1104 is configured to repair the coded data that is invalid on the storage node 1101.
  • the foregoing coding module 1102, the decoding module 1103, and the data repair module are used.
  • 1104 is a software function module, which may be located on the same or different physical carriers; of course, in some cases, the above modules may also be constructed using specific hardware (usually a dedicated integrated circuit chip), and may be distributed in the same or Different physical carriers.
  • the encoding module 1102 further includes: a data halving unit 1121, a polynomial coefficient setting unit 1122, an encoded data obtaining unit 1123, and an encoded data storage unit 1124; wherein the data halving unit 1121 is configured to use the data amount to be M.
  • the value of the encoded data is stored in each storage node; wherein n ⁇ 2 M ' k -1 ; the encoded data
  • the decoding module 1103 includes an encoded data obtaining unit 1131 and a polynomial recovering and data obtaining unit 1132.
  • the invalid coded data repairing unit 1144 is configured to, when the failed data encoding reaches the set threshold, by d the encoded data associated with the failed encoding and stored in different storage nodes The result of the operation, repairing the encoded data in the failed node.
  • body and detail but can not be understood as The scope of the invention is limited by the scope of the invention. It should be noted that various modifications and improvements can be made by those skilled in the art without departing from the scope of the invention. Therefore, the scope of the invention should be determined by the appended claims.

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,即式(I),式(II);其中,oi是等分数据O后得到的每份数据,式(III)是以2M/k为阶的有限域;使所述oi为多项式(IV)的系数;在有限域式(III)中任取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)
Figure imgf000006_0001
时和所有存活的 n-1个节点通信时,修复带宽^^最小即 SS 。 而 MBR码拥 小修复带宽, 可以推出当 d=n-l时, 获得最小修复负 载 ( c
Figure imgf000006_0002
对于节点失效修复问题, 考虑了三种修复模型: 精确修复: 失效的模块需要正确构造, 恢复的 信息和丟失的一样(核心技术为干扰队列和 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个,通过恢复多项式
Figure imgf000008_0001
= 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,来自于一个固定的基域,也就是
Figure imgf000011_0001
, 其中 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表示码字的最小距离:
Figure imgf000012_0001
, 其中汉明 距离 d(c, y)表示系数 X和 y位置不同的数。这个最小距离表示 SRC码 所能容忍的最大节点失效数, 通过 MDS码可知最大容忍度为 ΪΙ-L· 数据的线性编码可以通过任意的多项式来实现, 当选择有限域 F2 时, 所有操作都是在模 2上进行的。 令 a,beFim , 其中 m≥l , 那么可 λ 推 出 (a + b)2 = a2 +2ab + b2 = a2 +b2 , 因 为
Figure imgf000012_0002
, 得 出
(a + b =a2' +b2' ,i≥l. ( 1 )
Figure imgf000012_0003
因此在 ( q = 2m )上, 一个线性化的多项式 p O可以表示成: p(X) 可以表示成: p X、 e jF2„ , 有下述公 式 :
Figure imgf000012_0004
+b2') = ρ(α) + p(b) ·
( 2 ) 对于公式(2 )可进一步推广, 一个给定的多项式 p( = ft ' , s = 2',l<l<m (当 Z = m时, 是一个线性化多项式), 有下述公式: p{ua + vb) =
Figure imgf000012_0005
+ (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递推, 可 知
Figure imgf000015_0001
(ο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)
Figure imgf000018_0001
在本实施例中, 当 n=4时, 可以得到一个 4维的单位矩阵 A = /4 ,
而当 n=7时, 矩阵为 A 因此一个节点失效可
Figure imgf000018_0002
等效于矩阵 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) =
Figure imgf000019_0001
- x),r < x&r < d
(7)
令 ( ^,r)为在子矩阵 x> ^中, 秩为 r的个数占所有可能的秩的比 例。 由于
2<i-l中选择 X行有 ^-种可能, 而对于每一个 X有 X!中排列方式, 因 u .
j¾l可以
Figure imgf000019_0002
(8)
通过公式(7)和(8)可以推出一个本实施例中的 (n,fc)HSRC码恢 复原始文件的概率;^.为:
n d
Pobj = Σ Σ Ρ(Χ' d' rKPnode (1 -
Figure imgf000019_0003
= 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 ^为:
Figure imgf000021_0001
如果是按照顺序的方式, 则下载所需要的分 组的总负载/ ^为: 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)这些模块可 用, 下面列出了修复每个丟失模块可能的分组对。
Figure imgf000024_0001
一个可能的计划 (在不同的节点上下载可用的模块来重构丟失的 模块)如下: 在第一个时隙, 想要构造各自的 ρ(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

权利要求书
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、 根据权利要求 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,即 > =
Figure imgf000030_0001
( = υ);其中, 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 = ( ···, )。 ' °
PCT/CN2012/074837 2012-04-27 2012-04-27 基于同态的自修复码的编码、解码和数据修复方法及其存储系统 WO2013159341A1 (zh)

Priority Applications (2)

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

Applications Claiming Priority (1)

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

Publications (1)

Publication Number Publication Date
WO2013159341A1 true WO2013159341A1 (zh) 2013-10-31

Family

ID=49482163

Family Applications (1)

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

Country Status (2)

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

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105955839A (zh) * 2016-05-09 2016-09-21 东南大学 一种基于有限域二进制加法移位的再生码容错性方法
WO2017041233A1 (zh) * 2015-09-08 2017-03-16 广东超算数据安全技术有限公司 一种功能修复再生码的编码和存储节点修复方法

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
CN107086870B (zh) * 2017-03-16 2019-10-22 东莞理工学院 修复多节点失效的mds阵列码编码以及解码方法
CN111585581B (zh) * 2020-05-14 2023-04-07 成都信息工程大学 一种基于二元域运算且支持任意码距的编码方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060149753A1 (en) * 2004-12-30 2006-07-06 Muriel Medard A Random linear coding approach to distributed data storage
CN1859115A (zh) * 2006-01-24 2006-11-08 华为技术有限公司 一种网络数据的分布式存储下载系统、设备及方法
CN101834898A (zh) * 2010-04-29 2010-09-15 中科院成都信息技术有限公司 一种网络分布式编码存储方法
US20110107026A1 (en) * 2009-10-30 2011-05-05 Cleversafe, Inc. Concurrent set storage in distributed storage network

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8472877B2 (en) * 2005-10-24 2013-06-25 Qualcomm Incorporated Iterative interference cancellation system and method
CN101261318B (zh) * 2008-04-03 2011-06-08 北京航空航天大学 高动态扩频精密测距接收机
EP2342661A4 (en) * 2008-09-16 2013-02-20 File System Labs Llc METHODS AND DEVICES FOR CORRECTING ERRORS AND ERASER CODE BASED ON MATRIX AND APPLICATIONS THEREOF

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060149753A1 (en) * 2004-12-30 2006-07-06 Muriel Medard A Random linear coding approach to distributed data storage
CN1859115A (zh) * 2006-01-24 2006-11-08 华为技术有限公司 一种网络数据的分布式存储下载系统、设备及方法
US20110107026A1 (en) * 2009-10-30 2011-05-05 Cleversafe, Inc. Concurrent set storage in distributed storage network
CN101834898A (zh) * 2010-04-29 2010-09-15 中科院成都信息技术有限公司 一种网络分布式编码存储方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017041233A1 (zh) * 2015-09-08 2017-03-16 广东超算数据安全技术有限公司 一种功能修复再生码的编码和存储节点修复方法
CN105955839A (zh) * 2016-05-09 2016-09-21 东南大学 一种基于有限域二进制加法移位的再生码容错性方法

Also Published As

Publication number Publication date
CN103650462A (zh) 2014-03-19
CN103650462B (zh) 2016-12-14

Similar Documents

Publication Publication Date Title
Oggier et al. Self-repairing homomorphic codes for distributed storage systems
KR101421286B1 (ko) 인코딩 및 디코딩 프로세스들을 위해 심볼들의 영속적 비활성화에 의한 fec 코드들을 활용하는 방법 및 장치
KR101355761B1 (ko) 통신 시스템의 다중 필드 기반 코드 발생기 및 디코더
US9961142B2 (en) Data storage method, device and distributed network storage system
JP4546246B2 (ja) 連鎖的暗号化反応の系統的記号化および復号化
CN103688515B (zh) 一种最小带宽再生码的编码和存储节点修复方法
CN103124182B (zh) 文件下载和流系统
CN103688514B (zh) 一种最小存储再生码的编码和存储节点修复方法
WO2013159341A1 (zh) 基于同态的自修复码的编码、解码和数据修复方法及其存储系统
WO2011134285A1 (zh) 一种分布式自适应编码存储方法
Oggier et al. Byzantine fault tolerance of regenerating codes
Li et al. Beyond the MDS bound in distributed cloud storage
WO2014019549A1 (zh) 编解码处理方法及装置
WO2014012246A1 (zh) 用于分布式网络存储的自修复码的编码、重构和恢复方法
WO2014059651A1 (zh) 一种射影自修复码的编码、数据重构及修复方法
WO2013185271A1 (zh) 网络存储中抗拜占庭失效的数据重构、失效数据恢复方法及装置
WO2014005279A1 (zh) 一种可精确再生的分布式存储码的构建方法及装置
CN108199720B (zh) 一种减小存储开销和提高修复效率的节点修复方法及系统
Mahdaviani et al. Bandwidth adaptive & error resilient regenerating codes with minimum repair bandwidth
Oggier et al. Homomorphic self-repairing codes for agile maintenance of distributed storage systems
Lei et al. NCStorage: A Prototype of Network Coding-based Distributed Storage System
WO2014106316A1 (zh) 一种通用射影自修复码的编码、数据重构和修复方法
Li Capacity assurance in hostile networks
Ren Beyond the MDS Bound in Distributed Cloud Storage
Metzner Packet-symbol decoding for reliable multipath reception with no sequence numbers

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 12875511

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

32PN Ep: public notification in the ep bulletin as address of the adressee cannot be established

Free format text: NOTING OF LOSS OF RIGHTS PURSUANT TO RULE 112(1) EPC (EPO FORM 1205 DATED 31/03/2015)

122 Ep: pct application non-entry in european phase

Ref document number: 12875511

Country of ref document: EP

Kind code of ref document: A1