WO2014012246A1 - Encoding, reconstructing, and recovering methods used for self-repairing code stored by distributed network - Google Patents

Encoding, reconstructing, and recovering methods used for self-repairing code stored by distributed network Download PDF

Info

Publication number
WO2014012246A1
WO2014012246A1 PCT/CN2012/078927 CN2012078927W WO2014012246A1 WO 2014012246 A1 WO2014012246 A1 WO 2014012246A1 CN 2012078927 W CN2012078927 W CN 2012078927W WO 2014012246 A1 WO2014012246 A1 WO 2014012246A1
Authority
WO
WIPO (PCT)
Prior art keywords
storage
finite field
storage node
data
node
Prior art date
Application number
PCT/CN2012/078927
Other languages
French (fr)
Chinese (zh)
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 CN201280074817.2A priority Critical patent/CN104782101B/en
Priority to PCT/CN2012/078927 priority patent/WO2014012246A1/en
Publication of WO2014012246A1 publication Critical patent/WO2014012246A1/en

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/3761Decoding 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

Definitions

  • the present invention relates to the field of distributed network storage, and more particularly to a method for encoding, reconstructing and recovering self-healing codes for distributed network storage.
  • Network storage systems have received much attention in recent years, and storage systems contain different types: such as P2P-based distributed storage systems and dedicated infrastructure systems based on data center and storage area networks. Since storage node failure or file transmission loss often occurs in distributed storage systems, 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 different from previous replication.
  • An (n, k) 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 nodes. Store different modules and meet 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.
  • the EC code was originally designed to make the communication robust, that is, the failure of some modules can be tolerated in one communication channel.
  • Network storage treats the EC code as a black box, providing an efficient distributed data storage and a data recovery device via EC code.
  • the different challenges that are not addressed in the EC code faced in network storage, especially the repair problem.
  • nodes may fail or go online frequently. There must be new nodes to provide coding modules to compensate for the situation when a node leaves the system (failure) and ensure system redundancy (in order to Tolerate additional node failures afterwards).
  • any two module information can be used to repair the third module, in the literature [A. Duminuco, E. Biersack, “ Hierarchical Codes: How to Make Erasure Codes Attractive for Peer-to-Peer Storage Systems", Peer-to-Peer Computing (P2P), 2008.] proposes a HC code (Hierarchical Codes).
  • the HC code is an iterative construct that gradually forms a large code starting from a small EC code, generated by a submodule constructed by an EC code or by an EC code.
  • the local redundancy module can be used to repair the failure of the nodes in the subgroup, so only need to access the module with less than the entire file size to repair; and the global redundancy module provides further repair guarantee, that is, the module that 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 make an in-depth resilience analysis (affecting the understanding of coding effectiveness); Encoding requires more complex algorithms (whether refactoring or repairing); different encoding modules have different status in HC code, so the number of modules needed to repair a lost module depends not only on the number of modules lost, but also on which Module loss is related; likewise, the number of modules needed to reconstruct the original file may also be different The missing module is different.
  • RGC code Regenerating Codes
  • PCT/CN2012/071177 An RGC code (Regenerating Codes) is proposed in the patent PCT/CN2012/071177, which requires only a small amount of data to be repaired for a lost coding module without first reconstructing the entire file.
  • the RGC code uses a linear network coding technique to improve the overhead required to repair an encoding module through the NC (Network Coding Network Coding) attribute (ie, maximum stream minimum cut).
  • NC Network Coding Network Coding
  • the network information theory can prove the same amount of data as the lost module.
  • 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 storing data loss. It is necessary to download information from the existing valid 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 k nodes are enough to recover the original file.
  • Figure 3 depicts the regeneration process when a node fails.
  • n storage nodes each store "data.
  • the download amount of each node is a pair for each storage node i.
  • the nodes X ' «, X '.w indicate that the pair of nodes are connected by an edge whose capacity is the storage amount of the node (ie, " ).
  • the regeneration process is described by an information flow graph, from any of the available nodes in the system. Collect each of the beta data by ⁇ « ⁇ .”'in ⁇ . "" stores a data, any one of the recipients can access 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, the size of the stream cannot be smaller than the size of the original file.
  • MSR Minimum-bandwidth Regenerating
  • MSR Minimum-Storage Regenerating
  • the repair bandwidth ⁇ is the smallest, ie MSS_T ' ⁇ .
  • exact repair the failed module needs to be constructed correctly, the recovered information is the same as the lost one (the core technology is interference queue and NC); function repair: the newly generated module can contain different from the missing Node data, as long as the repaired system supports MDS code attributes (core technology is NC); system part exact repair: is a hybrid repair model between exact repair and function repair, in this hybrid model, for system nodes ( The storage of unencoded data requires accurate recovery, ie the recovered information is the same as the information stored by the failed node. For non-system nodes (storage encoding module), no exact repair is required, only functional repair is required to make the recovered information full. MDS code attributes (core technology is interference queue and NC).
  • the RGC code In order to apply the RGC code to the actual distributed system, even if it is not optimal, at least the data needs to be downloaded from the k nodes to repair the lost module. Therefore, even if the data transmission amount required for the repair process is relatively low, the RGC code needs to be high.
  • the protocol load and system design (NC technology) complexity is achieved.
  • engineering solutions are not considered in the RGC code, such as the lazy repair process, so the repair load caused by temporary failure cannot be avoided.
  • the computational cost of the codec implementation of the NC-based RGC code is relatively large, which is one order higher than the traditional EC code.
  • the HSRC code mainly has the following two attributes: 1) The missing encoding module can download less than the entire file data from other encoding modules for repair; 2) The missing encoding module is repaired from a given number of modules, the given number is only It is related to how many modules are lost, and it is not related to which modules are lost. These attributes make the load of repairing a lost module relatively low. In addition, because the nodes in the system have the same status and load balancing, different lost modules can be repaired independently and concurrently in different locations of the network.
  • the codeword has the following characteristics: 1) When a node fails, there may be (n-1)/2 pairs of repair nodes available for selection; 2) when there are (n-1)/2 nodes At the same time, we can still use the remaining 2 nodes of (n+1) / nodes to repair the failed nodes.
  • HSRC codes require computational polynomials to be relatively complex.
  • the coding modules are not subdividable, so the repair coding modules must also be inseparable; in addition, in order to reproduce a specific storage Node, once a node is randomly selected as a help node, and for the HSRC code, There is only one node left to choose from.
  • the technical problem to be solved by the present invention is to provide a computing operation with a relatively simple operation and a small overhead for distributed network storage in view of the above-mentioned problems of repairing data or reconstructing data in the prior art.
  • Self-healing code encoding, reconstruction and recovery methods are provided.
  • a generator element which is a multiplicative group of the first finite field
  • step B) further includes the following steps:
  • the elements in the second finite field F m are represented as m-tuples. Further, the division of the second finite field multiplicative group / represents the second finite field F as a form of multiplication of elements of the first finite field multiplicative group / and the second finite field multiplicative group / ⁇ .
  • step C) further includes:
  • C2 were selected coding vector t + 1 th sub-space as the corresponding storage node of each of the elements in a sub-space.
  • step D) further includes:
  • each storage node stores t+1 stored coded data blocks determined by t+1 coding modules.
  • the present invention also relates to a method of reconstructing data in a storage system employing the self-healing code encoding method described above, comprising the steps of:
  • step J) further comprises: respectively obtaining, by the server, a coding vector of the selected storage node or obtaining the coding vector by the selected storage node.
  • the present invention also relates to a method for repairing a failed storage node in a storage system employing the self-healing code encoding method described above, comprising the steps of:
  • the coding vector of the relevant node is obtained by performing operation on the coding vector of the failed storage node and the selected storage node, and then the related node is found; or.
  • the data stored by the failed storage node is obtained by reorganizing data stored by the selected storage node and the associated storage node.
  • the method for encoding, reconstructing and restoring the self-repairing code for distributed network storage of the present invention has the following beneficial effects: the second finite field obtained according to the number of stored file encoding modules is divided into a plurality of subspaces, and Each subspace corresponds to a storage node, and determines the location of the encoded data module stored by the storage node.
  • the failed node is repaired, only one storage node is selected, and the storage node corresponding to the selected storage node is found, and the storage is downloaded.
  • the data of the node is reorganized to obtain the data stored by the failed storage node. Therefore, the calculation is relatively simple and the overhead is small.
  • FIG. 1 is a schematic diagram of data reconstruction of an EC code in the prior art
  • FIG. 2 is a schematic diagram of data repair of an EC code in the prior art
  • FIG. 3 is a schematic diagram of data reconstruction of an RGC code in the prior art
  • FIG. 4 is a coding flow chart of an embodiment of a method for encoding, reconstructing, and recovering a self-healing code for distributed network storage according to the present invention
  • Figure 5 is a flow chart of a method for data reconstruction in the embodiment
  • FIG. 6 is a flow chart of a method for data repair in the embodiment
  • Figure 7 is a graphical illustration of the comparison of the static restoring force encoded in the embodiment and the static restoring force of the EC code. detailed description
  • the encoding process includes the following steps:
  • Step S41 setting a basic finite field having an inclusion relationship, a first finite field, and a second finite field: In this step, first setting a basic finite field of q order, and then dividing the projective space of the basic finite field into t Dimension space, that is, do t-stretch; then get a first finite field whose order is 1 .
  • q is the power of a prime p
  • m-dimensional vector on the finite field is represented as PG ( m-1 , q ), which is called the projective space.
  • the storage file to be stored in each storage node is composed of a plurality of encoded data modules, and Q ⁇ 7 ⁇ is actually the number of encoded data modules included in the storage file.
  • the vectors in this implementation are all row vectors.
  • Projective space is the most unique type of geometric object in algebraic geometry. It is defined as: in the n-dimensional affine space k n on the field k, the set of all the straight lines of the origin is called the projective space on the field k. .
  • the field k can take the complex field and so on. From a basic mathematical concept, a coordinate system corresponds to an affine space (Affine Space). When a vector is transformed from one coordinate system to another, linear transformation is performed.
  • P the projective space
  • the t-stretch of the projective space P is the t-dimensional subspace of the projective space P
  • the set of t-dimensional subspaces is S, which divides the projective space P into several t
  • each point in the projective space P belongs to only one t-dimensional subspace in the set S.
  • the relationship between finite fields is
  • Step S42 divides the second finite field into a plurality of subspaces in a coset manner:
  • the second finite field F2 is divided into a plurality of subspaces in a coset manner.
  • the finite field Fl is the (t+1)-dimensional subspace of the space V, that is, the t-dimensional shadow space of the projective space P.
  • the coset in the finite field is a special case of the projective space.
  • the coset is ⁇ 1, 3 2 (ie, a is the element of the second finite field F2 ), the coset divides the multiplicative group in the second finite field F2 into parts. This constitutes a t-extension of the space P.
  • the step specifically includes: obtaining a first finite field multiplicative group F +1 , let V be a generator of the first finite field multiplicative group F +1 ; obtaining a second finite field multiplicative group /, and let w be Generator of the second finite field multiplicative group; using cosets
  • Step S43 Obtain a basic vector of each subspace, and select t+1 of the coding vectors as the storage nodes corresponding to the subspace:
  • this step respectively obtain the basics of each of the subspaces (ie, one of the cosets) A vector, and in which a linearly independent t+1 basic vector is selected as the coding vector of the storage node.
  • the one subspace corresponds to a storage node, and the basic vector selected by the subspace is used as the coding vector of the storage node.
  • this step comprises: each subspace separately acquire the element 1; t + 1 respectively take any storage node as a sub-space corresponding to the m elements in each of the subspace Coding vector.
  • Step S44 Obtain an encoding module of the file according to the encoding vector of each storage node and store:
  • the encoding data module of each storage node obtained according to the above steps obtains the corresponding encoded data module, and is stored on the storage node. .
  • the storage file coded data blocks corresponding to the positions of the elements having the element of 1 in each coding vector are sequentially obtained and added as the storage determined by the coding vector.
  • the coded data block is stored in the storage node; each storage node stores t+1 stored coded data blocks determined by t+1 coding modules.
  • the second finite field F2 can be directly decomposed into several basic finite field F0 addition forms:
  • the elements in the field F2 can be written as a 4-tuple.
  • the size of the file is B, and the file B needs to be stored in n storage nodes.
  • the storage size of each storage node is ", when there is a storage node failure, the remaining connections need to be connected (n -1) d of the storage nodes and download data from each of the d nodes, represented by PSRC(n, k) as a projective self-repair code, where parameters n and k are parameters in the stretch of the construct.
  • VF; ⁇ (0100), (0011), (0111 ) ⁇
  • V 2 F: ⁇ (0010), ( 1101 ), ( 1111 ) ⁇
  • the data stored by each storage node is as follows: Node base vector stores data
  • the present embodiment also relates to a method of reconstructing data from a storage module obtained by storing the above method. Including the following steps:
  • Step S51 Select k among n storage nodes: In this step, k are randomly selected from n storage nodes storing stored file encoded data, where k ⁇ mt + V) , where m and t It has the same meaning as in the encoding step described above.
  • Step S52 Download the data in the selected storage node and reconstruct the data:
  • the data of the selected storage node is separately downloaded and the storage file is reconstructed according to the coding vectors of the storage nodes.
  • the server obtains the code vector of the selected storage node.
  • the code vector can also be obtained by the selected storage node.
  • Step S53 Is the reconstruction completed? It is judged whether the file reconstruction is completed, that is, whether the file is reconstructed, and if so, step S54 is executed to exit the file data reconstruction; otherwise, the process goes to step S55.
  • Step S54 Exit this data reconstruction: In this step, the stored file has been obtained and exited.
  • Step S55 Select one of the unselected storage nodes: In this step, since the data downloaded by the selected storage node does not reconstruct the file data, one of the unselected storage nodes is selected, so that The number of selected storage nodes is increased by one, and the flow jumps to step S52.
  • the vector stored by the two storage nodes N and N is arbitrarily selected as (Vi, . . . , v a ), and the vector stored by the node N′ is ( Ul , ... , M J . It is assumed that there is a vector in the storage node N V , vector V is linearly related to some vectors in node N', that is, V can be written as:
  • the method further relates to a data recovery method for recovering the code obtained by the foregoing method, including the following Steps:
  • Step S61 Confirming that the storage node is invalid and obtaining the coding vector of the storage node: In this step, it is confirmed that one storage node has failed, and the stored data needs to be repaired and stored on another storage node; meanwhile, obtained by the server The encoding vector of the storage node.
  • Step S62 selects an un-failed storage node and obtains its coding vector: arbitrarily selects a node among the non-failed storage nodes, and obtains the coding vector of the storage node from the server.
  • Step S63 Finding a storage node associated with the selected storage node: In this step, performing at least one storage node related to the selected storage node by performing operation on the coded vector of the failed storage node and the selected storage node The node coding vector, and then the storage node corresponding to the coding vector is found on the server; in this step, the operation taken is an exclusive OR operation.
  • Step S64 downloading the selected storage node and its associated storage node data, and obtaining data stored by the failed node and saving: In this step, downloading data stored by the selected storage node and its associated storage node, and according to the data Corresponding coding vector (including the coding vector of the failed storage node, selecting the coding vector of the storage node and the coding vector of the above-mentioned storage node), reorganizing the data, obtaining the data stored by the failed node, and storing it on a new storage node .
  • the data Corresponding coding vector including the coding vector of the failed storage node, selecting the coding vector of the storage node and the coding vector of the above-mentioned storage node
  • each storage node stores "the amount of encoded data.
  • at least one storage node Nj can recover the data stored by the failed node by downloading the data of the storage node and Nj.
  • a new node replaces the failed node Ni.
  • the new node selects any storage node.
  • the data stored by the N l storage node is ⁇ .
  • V ' F 2 U VF ; can repair the data stored in the node Ni.
  • the self-repair capability of the PSRC code is stronger than the self-repair capability of the HSRC code.
  • the new node can repair the data stored by the failed node (N 4 , N 12 ), (N 4 , N 10 ) by connecting and downloading any of the following three pairs of nodes (the three pairs of nodes all contain the node N 4 ), ( N 4 , N 5 ).
  • static resilience refers to the probability that once the data is stored in the system, the stored original data can be recovered without further repairing the failed node.
  • p n be .
  • De is the effective probability of any given node. Since there are no two different data modules stored in the same node in the system, we can assume that the validity of the module stored by any node is p n . De .
  • Figure 7 compares the probability of static restoring forces for PSRC (21, 3) codes and MDS (21, 3) codes.
  • the values in the figure are calculated by the computer by evaluating the value of ⁇ . From this figure we can see that the MDS code may not have any (n, k) characteristics. More importantly, although the PSRC (21, 3) code loses a bit of static resilience, it has more self-healing capabilities than the MDS code. It is not to be understood as limiting the scope of the invention. It should be noted that a number of variations and modifications may be made by those skilled in the art without departing from the spirit and scope of the invention. Therefore, the scope of the invention should be determined by the appended claims.

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

The present invention relates to an encoding method used for a self-repairing code stored by a distributed network, comprising the following steps of: setting a basic finite field Fq , and obtaining a first finite field being Equation (I); obtaining a second finite field being Equation (II), Fq⊆Equation (I)⊆Equation (II); dividing, in a form of a coset being Equation (III), a space represented by the second finite field being Equation (II) into sub-spaces with the number being Equation (IV); respectively selecting t+1 basic vectors from basic vectors represented by elements of the basic finite field of each sub-space to be used as encoding vectors of one storage node, the storage node being corresponding to the sub-space, and the encoding vector being corresponding to a position of an encoding data block in a storage file; and obtaining the encoding data block on the corresponding position in the storage file according to the encoding vector of each storage node, and storing the encoding data block in the storage node. The present invention further relates to methods for reconstructing data and recovering data in a storage system adopting the foregoing encoding method. The encoding, reconstructing, and recovering methods used for a self-repairing code stored by a distributed network of the present invention have the following beneficial effects that the operation is relatively simple, and the overhead is relatively small.

Description

用于分布式网络存储的自修复码的编码、 重构和恢复方法  Coding, reconstruction and recovery method for self-repairing codes for distributed network storage
技术领域 Technical field
本发明涉及分布式网络存储领域, 更具体地说, 涉及一种用于分布式网络存储 的自修复码的编码、 重构和恢复方法。  The present invention relates to the field of distributed network storage, and more particularly to a method for encoding, reconstructing and recovering self-healing codes for distributed network storage.
背景技术 Background technique
网络存储系统在最近几年一直备受关注,存储系统包含不同的类型: 如基于 P2P 分布式存储系统和基于数据中心与存储区域网的专用的基础设施系统。 由于在分布 式存储系统中, 经常出现存储节点失效或者文件传输损耗, 因此在该网络存储系统 中必须要有冗余。 冗余可以通过一种筒单的复制数据来实现, 但是存储效应不高, 纠错码提供一种不同于以往复制的有效存储方案。 一个 (n,k)MDS ( Maximum Distance Separable 最大距离可分离)纠错码需要将一个原始文件分成 k个大小相等的模块, 并通过线性编码生成 n个互不相关的编码模块, 由 n个节点存储不同的模块, 并满 足 MDS属性(n个编码模块中任意 k个就可重构原始文件) 。 这种编码技术在提供 有效的网络存储冗余中占有重要的地位, 特别适合存储大的文件以及档案数据备份 应用。  Network storage systems have received much attention in recent years, and storage systems contain different types: such as P2P-based distributed storage systems and dedicated infrastructure systems based on data center and storage area networks. Since storage node failure or file transmission loss often occurs in distributed storage systems, 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 different from previous replication. An (n, k) 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 nodes. Store different modules and meet 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.
由于节点失效或者文件损耗, 系统的冗余度会随着时间而逐渐丧失, 因此需要一 种装备来保证系统的冗余。文献 [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个节点所存储的内容。  Due to node failure or file loss, system redundancy is gradually lost over time, so an equipment is needed to ensure system redundancy. The EC code (Erasure Codes) proposed in the literature [R. Rodrigues and B. Liskov, "High Availability in DHTs: Erasure Coding vs. Replication", Workshop on Peer-to-Peer Systems (IPTPS) 2005. It is more efficient in terms of storage overhead, but the communication overhead required to support redundant recovery is also relatively large. Figure 1 shows that the original file can be obtained from the existing node as long as the number of valid nodes in the system d ≥ ; Figure 2 shows the process of restoring the contents stored in the failed node. It can be seen from Figure 1 and Figure 2 that the entire recovery process is: 1) First download data from the k storage nodes in the system and reconstruct the original file; 2) Re-encode the new module from the original file, store it in the new On the node. This recovery process indicates that the network load required to repair any failed node is at least the content stored by k nodes.
对于 EC码修复过程所需要的通信负载高, 目前已有两种措施来弥补: 1 )使用混 合策略, 要求对整个原始文件进行一个额外的备份, 使得修复过程所需要的网络负 载等于所丟失的数据量, 但是该策略增加了存储负载并使得系统复杂, 且节点负载 不能均衡; 2 )使用懒修复(修复过程延迟到有若干个节点失效后再一同修复)可以 有效避免由于临时的失效而带来的额外修复负载, 但是延迟修复可能使得系统易受 攻击, 从而系统需要一个更大的冗余量, 另外在网络有限资源的使用过程中可能会 阻止修复过程。 There are two measures to compensate for the high communication load required for the EC code repair process: 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 lost The amount of data, but this strategy increases the storage load and makes the system complex, and the node load Can not be balanced; 2) using lazy repair (the repair process is delayed until several nodes fail to repair together) can effectively avoid the extra repair load caused by temporary failure, but delay repair may make the system vulnerable, so the system A larger amount of redundancy is required, and the repair process may be blocked during the use of limited resources on the network.
值得注意的是 EC码一开始设计时是为了使得通信具有鲁棒性, 即在一个通信渠 道中可以容忍一些模块的失效。 网络存储将 EC码看成一个黑盒子, 通过 EC码提供 一种有效的分布式数据存储和一种数据修复装备。然而网络存储中面临的 EC码中未 提出的不同挑战, 尤其是修复问题。 在一个易受攻击的网络中, 节点可能失效或者 频繁地上下线, 必须要有新节点来提供编码模块以弥补当有节点离开系统(失效) 的情况, 并保证系统冗余度不变(为了容忍以后另外的节点失效)。  It is worth noting that the EC code was originally designed to make the communication robust, that is, the failure of some modules can be tolerated in one communication channel. Network storage treats the EC code as a black box, providing an efficient distributed data storage and a data recovery device via EC code. However, the different challenges that are not addressed in the EC code faced in network storage, especially the repair problem. In a vulnerable network, nodes may fail or go online frequently. There must be new nodes to provide coding modules to compensate for the situation when a node leaves the system (failure) and ensure system redundancy (in order to Tolerate additional node failures afterwards).
当任意一个模块所存储的信息是由两个其他模块的信息异或而得到的情况下, 任意两个模块信息就可用来修复第三个模块, 在文献 [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 个编码模块。 局部冗余模块可以用来修复子群中节点的失效, 因此只需要访问少于 整个文件大小的模块就可以进行修复; 而全局冗余模块提供进一步修复保证, 即当 一个子群中失效的模块太多而不能自修复时可通过全局冗余模块进行修复。  In the case where the information stored in any one module is obtained by XORing the information of two other modules, any two module information can be used to repair the third module, in the literature [A. Duminuco, E. Biersack, " Hierarchical Codes: How to Make Erasure Codes Attractive for Peer-to-Peer Storage Systems", Peer-to-Peer Computing (P2P), 2008.] proposes a HC code (Hierarchical Codes). The HC code is an iterative construct that gradually forms a large code starting from a small EC code, generated by a submodule constructed by an EC code or by an EC code. The main idea is: Consider a file of size s x k, divide the file into s subgroups, each subgroup contains k uncoded modules. An (n, k) EC code is used in each subgroup to generate n-k partial redundancy coding modules. Further, r global redundancy coding modules are generated by all s k uncoded modules by the coding scheme. Therefore, a coding group is formed, and s k uncoded modules are coded into s n+r coding modules. The local redundancy module can be used to repair the failure of the nodes in the subgroup, so only need to access the module with less than the entire file size to repair; and the global redundancy module provides further repair guarantee, that is, the module that fails in a subgroup It can be fixed by the global redundancy module when there are too many to fix itself.
由于 HC码中系统结构不对称, 使得有些模块的地位或许比其他模块地位要高, 使得 4艮难做一个深入的恢复力分析(影响对编码有效性的理解) ; 在实际系统中如 果利用该编码则需要更复杂的算法(不管是重构还是修复) ; 在 HC码中不同编码模 块的地位不同, 因而修复丟失的模块所需要的模块数不仅仅取决于丟失的模块数, 还与具体哪些模块丟失有关; 同样地, 重构原始文件所需要的模块数可能也因不同 的丟失模块而不同。 Due to the asymmetry of the system structure in the HC code, the status of some modules may be higher than that of other modules, making it difficult to make an in-depth resilience analysis (affecting the understanding of coding effectiveness); Encoding requires more complex algorithms (whether refactoring or repairing); different encoding modules have different status in HC code, so the number of modules needed to repair a lost module depends not only on the number of modules lost, but also on which Module loss is related; likewise, the number of modules needed to reconstruct the original file may also be different The missing module is different.
专利 PCT/CN2012/071177 中提出了一种 RGC码( Regenerating Codes 再生码) , 使 得修复一个丟失的编码模块只需要一小部分的数据量, 而不需要先重构整个文件。 RGC码应用线性网络编码技术, 通过 NC ( Network Coding 网络编码)属性(即最大 流最小割) 来改善修复一个编码模块所需要的开销, 从网络信息论上可以证明用和 丟失模块相同的数据量的网络开销就可修复原丟失模块。 RGC码主要思想还是利用 MDS属性, 当一些存储节点失效, 也就相当于存储数据丟失, 需要从现有有效节点 中下载信息来使得丟失的数据再生, 并存储在新的节点上。 随着时间的推移, 很多 原始节点可能都会失效, 一些再生的新节点可以在自身再重新执行再生过程, 继而 生成更多的新节点。 因此再生过程需要确保两点: 1 ) 失效的节点间是相互独立的, 再生过程可以循环递推; 2 )任意 k个节点就足够恢复原始文件。  An RGC code (Regenerating Codes) is proposed in the patent PCT/CN2012/071177, which requires only a small amount of data to be repaired for a lost coding module without first reconstructing the entire file. The RGC code uses a linear network coding technique to improve the overhead required to repair an encoding module through the NC (Network Coding Network Coding) attribute (ie, maximum stream minimum cut). The network information theory can prove the same amount of data as the lost module. 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 storing data loss. It is necessary to download information from the existing valid nodes to regenerate the lost data and store it on the new node. Over time, many of the original nodes may fail, and some of the regenerated new nodes can re-execute the regeneration process on their own, and then generate more new nodes. Therefore, 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 k nodes are enough to recover the original file.
图 3描述了当一个节点失效后的再生过程。 分布式系统中 n个存储节点各自存储" 个数据, 当有一个节点失效,新节点通过从其他 ≥ 个存活节点中下载数据来再生, 每个节点的下载量为 每个存储节点 i通过一对节点 X'«,X'。w来表示, 这对节点通过 一个容量为该节点的存储量(即《 )的边连接。再生过程通过一个信息流图描述, 从系统中任意 d个可用节点中各自收集 β个数据,通过 χ« χ。"'在 Χ。"'中存储 a个数 据, 任何一个接收者都可以访问 X。"'。 从信源到信宿的最大信息流是由图中最小割集 决定, 当信宿要重构原始文件时, 这个流的大小不能低于原始文件的大小。 Figure 3 depicts the regeneration process when a node fails. In the distributed system, n storage nodes each store "data. When one node fails, the new node is regenerated by downloading data from other ≥ surviving nodes. The download amount of each node is a pair for each storage node i. The nodes X '«, X '.w indicate that the pair of nodes are connected by an edge whose capacity is the storage amount of the node (ie, " ). The regeneration process is described by an information flow graph, from any of the available nodes in the system. Collect each of the beta data by χ « χ ."'in Χ . "" stores a data, any one of the recipients can access 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, the size of the stream cannot be smaller than the size of the original file.
每个节点存储量 "和再生一个节点所需要的带宽 ^之间存在一个折中, 因此又引 入最小带宽再生码 ( MBR, Minimum-bandwidth Regenerating )和最小存储再生码 ( MSR, Minimum-storage Regenerating ) 。 对于最小存储点可以知道每个节点至少存储 M/k比特, 因此可推出 MSR码中( ss,^s)= (― ^ ) , 当 d取最大值即一个新来者同时和 k k(d - k + Y) min = M_ W _ l There is a trade-off between the amount of storage per node and the bandwidth required to regenerate a node, thus introducing Minimum-bandwidth Regenerating (MBR) and Minimum-Storage Regenerating (MSR). For the minimum storage point, you can know that each node stores at least M/k bits, so you can derive the MSR code ( ss , ^ s ) = ( ― ^ ), when d takes the maximum value, that is, a newcomer and kk (d - k + Y) min = M_ W _ l
所有存活的 n-1个节点通信时,修复带宽^^最小即 MSS_T'^。 而 MBR码拥有最小 修复带宽, 可以推出当 d=n-l时, 获得最小修复负载 对于节点失效修复问题,通常有三种修复:精确修复:失效的模块需要正确构造, 恢复的信息和丟失的一样(核心技术为干扰队列和 NC ) ; 功能修复: 新产生的模块 可以包含不同于丟失节点的数据,只要修复的系统支持 MDS码属性(核心技术为 NC ); 系统部分精确修复: 是介于精确修复和功能修复之间的一个混合修复模型, 在这个 混合模型中, 对于系统节点 (存储未编码数据)要求必须精确恢复, 即恢复的信息 和失效节点所存储的信息一样, 对于非系统节点 (存储编码模块) , 则不需要精确 修复, 只需要功能修复使得恢复的信息能够满则 MDS码属性(核心技术为干扰队列 和 NC ) 。 When all the surviving n-1 nodes communicate, the repair bandwidth ^^ is the smallest, ie MSS_T '^. The MBR code has a minimum repair bandwidth, and it can be introduced to obtain a minimum repair load when d=nl. For node failure repair problems, there are usually three fixes: exact repair: the failed module needs to be constructed correctly, the recovered information is the same as the lost one (the core technology is interference queue and NC); function repair: the newly generated module can contain different from the missing Node data, as long as the repaired system supports MDS code attributes (core technology is NC); system part exact repair: is a hybrid repair model between exact repair and function repair, in this hybrid model, for system nodes ( The storage of unencoded data requires accurate recovery, ie the recovered information is the same as the information stored by the failed node. For non-system nodes (storage encoding module), no exact repair is required, only functional repair is required to make the recovered information full. MDS code attributes (core technology is interference queue and NC).
为了使 RGC码运用到实际的分布式系统中, 即使不是最优情况也至少需要从 k个 节点下载数据才能修复丟失模块, 因此即使修复过程所需要的数据传输量比较低, RGC码也需要高的协议负载和系统设计(NC技术)复杂度来实现。 另外 RGC码中未 考虑工程解决方法, 如懒修复过程, 因此不能避免临时失效所带来的修复负载。 最 后基于 NC的 RGC码的编解码实现所需要的计算开销比较大, 比传统的 EC码要高一个 阶数。  In order to apply the RGC code to the actual distributed system, even if it is not optimal, at least the data needs to be downloaded from the k nodes to repair the lost module. Therefore, even if the data transmission amount required for the repair process is relatively low, the RGC code needs to be high. The protocol load and system design (NC technology) complexity is achieved. In addition, engineering solutions are not considered in the RGC code, such as the lazy repair process, so the repair load caused by temporary failure cannot be avoided. Finally, the computational cost of the codec implementation of the NC-based RGC code is relatively large, which is one order higher than the traditional EC code.
而专利 PCT/CN2012/074837中提出了一种 HSRC码( Homomorphic Self-Repairing Codes 同态自修复码) 。 HSRC码主要具有下面两个属性: 1 )丟失的编码模块可从 其他编码模块中下载少于整个文件的数据进行修复; 2 )丟失的编码模块从一个给定 数的模块中修复, 该给定数只与丟失了多少模块数有关, 而与具体哪些模块丟失无 关。 这些属性使得修复一个丟失模块的负载比较低, 另外由于系统中各节点地位相 同、 负载均衡使得在网络的不同位置, 可以独立并发地修复不同丟失模块。 该码字 除了满足以上条件外还有以下特性: 1 ) 当一个节点失效时, 可以有(n-1 ) /2对修复 节点可供选择; 2 )当有(n-1 )/2个节点同时失效时,我们仍然可以使用剩下的(n+1 ) /个节点中的 2两个节点来修复失效节点。  An HSRC code (Homomorphic Self-Repairing Codes) is proposed in the patent PCT/CN2012/074837. The HSRC code mainly has the following two attributes: 1) The missing encoding module can download less than the entire file data from other encoding modules for repair; 2) The missing encoding module is repaired from a given number of modules, the given number is only It is related to how many modules are lost, and it is not related to which modules are lost. These attributes make the load of repairing a lost module relatively low. In addition, because the nodes in the system have the same status and load balancing, different lost modules can be repaired independently and concurrently in different locations of the network. In addition to the above conditions, the codeword has the following characteristics: 1) When a node fails, there may be (n-1)/2 pairs of repair nodes available for selection; 2) when there are (n-1)/2 nodes At the same time, we can still use the remaining 2 nodes of (n+1) / nodes to repair the failed nodes.
但是, HSRC码的编码需要计算多项式相对较复杂; 其次, 在 HSRC码中, 编 码模块是不可再分的, 因此修复编码模块也必须是不可再分的; 再者, 为了再生出 一个特定的存储节点, 一旦随机的选择了一个节点为帮助节点, 而对于 HSRC码, 就只剩下一个节点可供选。 However, the encoding of HSRC codes requires computational polynomials to be relatively complex. Secondly, in HSRC codes, the coding modules are not subdividable, so the repair coding modules must also be inseparable; in addition, in order to reproduce a specific storage Node, once a node is randomly selected as a help node, and for the HSRC code, There is only one node left to choose from.
发明内容 Summary of the invention
本发明要解决的技术问题在于, 针对现有技术的上述修复数据或重构数据时运 算较为复杂、 开销较大的缺陷, 提供一种运算较为筒单、 开销较小的用于分布式网 络存储的自修复码的编码、 重构和恢复方法。  The technical problem to be solved by the present invention is to provide a computing operation with a relatively simple operation and a small overhead for distributed network storage in view of the above-mentioned problems of repairing data or reconstructing data in the prior art. Self-healing code encoding, reconstruction and recovery methods.
本发明解决其技术问题所采用的技术方案是: 构造一种用于分布式网络存储的 自修复码的编码方法, 包括如下步骤:  The technical solution adopted by the present invention to solve the technical problem is: Constructing a coding method for a self-repairing code for distributed network storage, comprising the following steps:
A )设置基本有限域 ; 依据存储文件中编码数据块的数量 m, 得到, 并设 置第二有限域 F 的 m维空间的 t维子空间形成的 t-伸展集合 S,其中 t+1 I m;按照 所述基本有限域的 t-伸展,利用所述 t-伸展得到第一有限域 ;其中, F^F F ,  A) setting a basic finite field; obtaining, according to the number m of encoded data blocks in the storage file, and setting a t-extension set S formed by the t-dimensional subspace of the m-dimensional space of the second finite field F, where t+1 I m Obtaining a first finite field using the t-stretching according to the t-stretching of the basic finite field; wherein, F^FF,
B ) 将所述第二有限域 F 表示的空间使用其陪集的形式 M F "划分为  B) dividing the space represented by the second finite field F into its coset form M F "
^TTTJ个子空间; 其中, i=0, 1, ..., , w 是所述第二有限域的乘法群 F d^TTTJ subspaces; where i=0, 1, ..., , w is the multiplicative group F d of the second finite field
Figure imgf000007_0001
Figure imgf000007_0001
的生成元, 是所述第一有限域的乘法群; a generator element, which is a multiplicative group of the first finite field;
C)分别在所述每个子空间的用所述基本有限域元素表示的元素中选择 t+1 个作为一个存储节点的编码向量; 所述一个存储节点对应于所述一个子空间; 所述 编码向量对应于所述存储文件中编码数据块的位置; C) respectively selecting t+1 encoding vectors as one storage node among the elements represented by the basic finite field elements of each subspace; the one storage node corresponding to the one subspace; the encoding a vector corresponding to a location of the encoded data block in the stored file;
D )按照所述每个存储节点编码向量取得的存储文件中对应位置的编码数据 块并存储在该存储节点。  D) an encoded data block corresponding to a location in the storage file obtained according to each storage node coding vector and stored in the storage node.
更进一步地, 所述步骤 B)进一步包括如下步骤:  Further, the step B) further includes the following steps:
B1 )取得所述第一有限域乘法群 F +1 ,设 V是所述第一有限域乘法群 F +1的 生成元; 取得所述第二有限域的乘法群/ τ, 设 w是所述第二有限域乘法群/ 的 生成元; B1) obtaining the first finite field multiplicative group F +1 , let V be the generator of the first finite field multiplicative group F +1 ; obtaining the multiplicative group / τ of the second finite field, and setting w to be a generator of the second finite field multiplicative group /
Β2 ) 使用陪集 M F "划分所述第二有限域的乘法群 的空间, 即  Β 2) using the coset M F " to divide the space of the multiplicative group of the second finite field, ie
F = Ljw - , 其中符号 υ表示对有限域的划分; F = Ljw - , where the symbol υ denotes the division of the finite field;
Β3)依据上述划分, 将所述第二有限域 F m 中的元素表示为 m-元组。 更进一步地, 所述第二有限域乘法群/ 的划分将所述第二有限域 F 表示为 第一有限域乘法群/ 、 第二有限域乘法群 / τ的元素相乘的形式。 Β 3) According to the above division, the elements in the second finite field F m are represented as m-tuples. Further, the division of the second finite field multiplicative group / represents the second finite field F as a form of multiplication of elements of the first finite field multiplicative group / and the second finite field multiplicative group / τ.
更进一步地, 所述步骤 C )进一步包括:  Further, the step C) further includes:
C1 )分别取得所述每个子空间中的 +1个元素; C1) respectively obtaining +1 elements in each of the subspaces;
C2 )分别在所述每个子空间的 1个元素中选取 t+1个作为该子空间所对应 的存储节点的编码向量。 C2) were selected coding vector t + 1 th sub-space as the corresponding storage node of each of the elements in a sub-space.
更进一步地, 所述步骤 D ) 中进一步包括:  Further, the step D) further includes:
在所述每个存储节点所对应的 t+1个编码向量中,依次取得每个编码向量中 元素为 1 的项对应位置的存储文件编码数据块相加后作为该编码向量决定的存储编 码数据块存入该存储节点;每个存储节点中存储有由 t+1个编码模块决定的 t+1个存 储编码数据块。  And in the t+1 coding vectors corresponding to each of the storage nodes, sequentially acquiring the stored file coded data blocks corresponding to the positions corresponding to the items of the elements in each code vector and storing the coded data determined as the code vector The block is stored in the storage node; each storage node stores t+1 stored coded data blocks determined by t+1 coding modules.
本发明还涉及一种在采用上述的自修复码编码方法的存储系统中重构数据的方 法, 包括如下步骤:  The present invention also relates to a method of reconstructing data in a storage system employing the self-healing code encoding method described above, comprising the steps of:
I )在 n个存储节点中任意选择 k个; 其中, ≥m/(i + l) ;  I) arbitrarily select k among n storage nodes; wherein, ≥ m / (i + l);
J ) 下载所选择节点的数据并依据其编码向量重构数据;  J) downloading data of the selected node and reconstructing the data according to its coding vector;
K )判断是否完成数据重构, 如是, 退出本次数据重构; 否则, 执行下一步 骤;  K) judging whether the data reconstruction is completed, and if so, exiting the data reconstruction; otherwise, performing the next step;
L )在尚未被选择的存储节点任意选择一个, 使得被选择的存储节点增加一 个, 并返回步骤 J )。  L) arbitrarily selecting one of the storage nodes that have not been selected, so that the selected storage node is incremented by one, and returns to step J).
更近一步地, 所述步骤 J )中进一步包括: 由服务器分别取得所选择存储节点的 编码向量或由所述选择的存储节点取得其编码向量。  Further, the step J) further comprises: respectively obtaining, by the server, a coding vector of the selected storage node or obtaining the coding vector by the selected storage node.
本发明还涉及一种在采用上述述的自修复码编码方法的存储系统中修复失效存 储节点的方法, 包括如下步骤:,  The present invention also relates to a method for repairing a failed storage node in a storage system employing the self-healing code encoding method described above, comprising the steps of:
M )确认一存储节点已经失效并由服务器得到该存储节点的编码向量; M) confirming that a storage node has failed and obtaining a code vector of the storage node by the server;
N )任选一个未失效的存储节点并得到其编码向量; N) opt-in a non-failed storage node and get its code vector;
0 )得到与所述被选择的存储节点相关的至少一个存储节点;  0) obtaining at least one storage node associated with the selected storage node;
P )下载所述被选择的存储节点及其相关的存储节点的数据, 并依据这些数 据得到失效存储节点的数据, 存储在一个新存储节点中, 完成数据恢复。 P) downloading data of the selected storage node and its associated storage node, and based on these numbers According to the data of the failed storage node, it is stored in a new storage node to complete data recovery.
更进一步地, 所述步骤 0 ) 中, 通过对所述失效存储节点及选择的存储节点的 编码向量进行运算得到所述相关节点的编码向量, 进而查找到所述相关节点; 所述 运算为异或。  Further, in the step 0), the coding vector of the relevant node is obtained by performing operation on the coding vector of the failed storage node and the selected storage node, and then the related node is found; or.
更进一步地, 所述步骤 P )中, 通过对所述选择的存储节点和相关的存储节点存 储的数据进行重组而得到所述失效存储节点存储的数据。  Further, in the step P), the data stored by the failed storage node is obtained by reorganizing data stored by the selected storage node and the associated storage node.
实施本发明的用于分布式网络存储的自修复码的编码、 重构和恢复方法, 具有 以下有益效果: 由于将依据存储文件编码模块数而得到的第二有限域划分为多个子 空间, 且每个子空间对应于一个存储节点, 并决定该存储节点所存储编码数据模块 的位置, 在修复失效节点时只要任选一个存储节点, 并找到与该选择的存储节点对 应的存储节点, 下载这些存储节点的数据并重组即可得到失效的存储节点所存储的 数据。 所以, 其运算较为筒单、 开销较小。  The method for encoding, reconstructing and restoring the self-repairing code for distributed network storage of the present invention has the following beneficial effects: the second finite field obtained according to the number of stored file encoding modules is divided into a plurality of subspaces, and Each subspace corresponds to a storage node, and determines the location of the encoded data module stored by the storage node. When the failed node is repaired, only one storage node is selected, and the storage node corresponding to the selected storage node is found, and the storage is downloaded. The data of the node is reorganized to obtain the data stored by the failed storage node. Therefore, the calculation is relatively simple and the overhead is small.
附图说明 DRAWINGS
图 1是现有技术中 EC码的数据重构示意图;  1 is a schematic diagram of data reconstruction of an EC code in the prior art;
图 2是现有技术中 EC码的数据修复示意图;  2 is a schematic diagram of data repair of an EC code in the prior art;
图 3是现有技术中 RGC码的数据重构示意图;  3 is a schematic diagram of data reconstruction of an RGC code in the prior art;
图 4是本发明用于分布式网络存储的自修复码的编码、 重构和恢复方法实施例 的编码流程图;  4 is a coding flow chart of an embodiment of a method for encoding, reconstructing, and recovering a self-healing code for distributed network storage according to the present invention;
图 5是所述实施例中数据重构的方法流程图;  Figure 5 is a flow chart of a method for data reconstruction in the embodiment;
图 6是所述实施例中数据修复的方法流程图;  6 is a flow chart of a method for data repair in the embodiment;
图 7是所述实施例中编码的静态恢复力与 EC码的静态恢复力的比较示意图。 具体实施方式  Figure 7 is a graphical illustration of the comparison of the static restoring force encoded in the embodiment and the static restoring force of the EC code. detailed description
下面将结合附图对本发明实施例作进一步说明。  The embodiments of the present invention will be further described below in conjunction with the accompanying drawings.
如图 4所示, 在本发明用于分布式网络存储的自修复码的编码、 重构和恢复方 法实施例中, 其编码流程包括如下步骤:  As shown in FIG. 4, in the embodiment of the encoding, reconstructing and restoring method for the self-repairing code of the distributed network storage of the present invention, the encoding process includes the following steps:
步骤 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维子空间的点 数整除整个空间的点数, 满足该式子的充
Figure imgf000010_0001
分必要条件是 (i + l) l m。 即在射影空间 P=PG(m-l , q)中, 存在 t-伸展的条件是当且仅 当( l) l m。
Step S41: setting a basic finite field having an inclusion relationship, a first finite field, and a second finite field: In this step, first setting a basic finite field of q order, and then dividing the projective space of the basic finite field into t Dimension space, that is, do t-stretch; then get a first finite field whose order is 1 . For the q-order finite field, q is the power of a prime p, and the m-dimensional vector on the finite field is represented as PG ( m-1 , q ), which is called the projective space. In this embodiment, the storage file to be stored in each storage node is composed of a plurality of encoded data modules, and Q^ 7 ^ is actually the number of encoded data modules included in the storage file. The vectors in this implementation are all row vectors. Projective space is the most unique type of geometric object in algebraic geometry. It is defined as: in the n-dimensional affine space k n on the field k, the set of all the straight lines of the origin is called the projective space on the field k. . Here the field k can take the complex field and so on. From a basic mathematical concept, a coordinate system corresponds to an affine space (Affine Space). When a vector is transformed from one coordinate system to another, linear transformation is performed. Affine Transformation „ Let P be the projective space, the t-stretch of the projective space P is the t-dimensional subspace of the projective space P, and the set of t-dimensional subspaces is S, which divides the projective space P into several t In the dimension space, each point in the projective space P belongs to only one t-dimensional subspace in the set S. If P=PG(ml, q) is a finite projective space, then the condition of t-extension exists: the number of points in the t-dimensional subspace divides the number of points in the whole space, and satisfies the charge of the equation.
Figure imgf000010_0001
The necessary condition is (i + l) lm. That is, in the projective space P = PG (ml, q), the condition that there is t-stretching is if and only if (l) lm.
这样, 设置一个以^为阶的第二有限域。 即设 + 得到 3 个有限域, 基 本有限域 F0= F , 第一有限域 F1= F ^以及第二有限域 Ρ2=^。 有限域之间的关系为
Figure imgf000010_0002
Thus, a second finite field with a step of ^ is set. That is, + get 3 finite fields, the basic finite field F0 = F, the first finite field F1 = F ^ and the second finite field Ρ 2 = ^. The relationship between finite fields is
Figure imgf000010_0002
步骤 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 是第二有限域乘法群 "的生成元; 使用陪集Step S42 divides the second finite field into a plurality of subspaces in a coset manner: In this step, the second finite field F2 is divided into a plurality of subspaces in a coset manner. The second finite field F2 is an m-dimensional space V operated on the basic finite field F0, and the subspace of the space V may constitute a projective space P = PG(m, q). So first The finite field Fl is the (t+1)-dimensional subspace of the space V, that is, the t-dimensional shadow space of the projective space P. The coset in the finite field is a special case of the projective space. For the second finite field F2 and the first finite field F1 of its subset, the coset is ^1, 3 2 (ie, a is the element of the second finite field F2 ), the coset divides the multiplicative group in the second finite field F2 into parts. This constitutes a t-extension of the space P. In this embodiment, the step specifically includes: obtaining a first finite field multiplicative group F +1 , let V be a generator of the first finite field multiplicative group F +1 ; obtaining a second finite field multiplicative group /, and let w be Generator of the second finite field multiplicative group; using cosets
Μ Ρ 划分所述第二有限域的乘法群 "的空间, 即 F = MAF +1 , 其中符号 U表示 对有限域的划分; 依据上述划分, 将所述第二有限域 F 中的元素表示为 m-元组。 Μ 划分 dividing the space of the multiplicative group of the second finite field, that is, F = MAF +1 , where the symbol U represents the division of the finite field; according to the above division, the element in the second finite field F is represented as M-tuple.
步骤 S43 得到每个子空间的基本向量, 选择其中 t+1个作为该子空间对应的存 储节点的编码向量: 在本步骤中, 分别得到上述每个子空间 (即上述陪集的一项) 的基本向量, 并在其中选择线性无关的 t+1个基本向量作为存储节点的编码向量。在 本实施例中, 上述一个子空间对应于一个存储节点, 该子空间选择出来的基本向量 作为该存储节点的编码向量。 在本实施例中, 本步骤具体包括: 分别取得上述每个 子空间中的 1个元素; 分别在所述每个子空间的 m个元素中任取 t+1个作为该子空 间所对应的存储节点的编码向量。 Step S43: Obtain a basic vector of each subspace, and select t+1 of the coding vectors as the storage nodes corresponding to the subspace: In this step, respectively obtain the basics of each of the subspaces (ie, one of the cosets) A vector, and in which a linearly independent t+1 basic vector is selected as the coding vector of the storage node. In this embodiment, the one subspace corresponds to a storage node, and the basic vector selected by the subspace is used as the coding vector of the storage node. In the present embodiment, this step comprises: each subspace separately acquire the element 1; t + 1 respectively take any storage node as a sub-space corresponding to the m elements in each of the subspace Coding vector.
步骤 S44按照每个存储节点的编码向量取得文件的编码模块并存储: 在本步骤 中, 按照上述步骤得到的每个存储节点的编码向量取得其对应的编码数据模块, 并 存储在该储存节点上。 具体而言, 在每个存储节点所对应的 t+1个编码向量中, 依次 取得每个编码向量中元素为 1 的项对应位置的存储文件编码数据块相加后作为该编 码向量决定的存储编码数据块存入该存储节点;每个存储节点中存储有由 t+1个编码 模块决定的 t+1个存储编码数据块。  Step S44: Obtain an encoding module of the file according to the encoding vector of each storage node and store: In this step, the encoding data module of each storage node obtained according to the above steps obtains the corresponding encoded data module, and is stored on the storage node. . Specifically, in the t+1 coding vectors corresponding to each storage node, the storage file coded data blocks corresponding to the positions of the elements having the element of 1 in each coding vector are sequentially obtained and added as the storage determined by the coding vector. The coded data block is stored in the storage node; each storage node stores t+1 stored coded data blocks determined by t+1 coding modules.
一个筒单的例子为: 令基本有限域 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是构造的伸展中的参数。 An example of a single order is: Let the basic finite field F0 = F 2 with elements 0 and 1. Consider 1-stretching, so that the plane can be obtained, t = l, so the first finite field F1 = F 4 , then m = 4, that is, the second finite field F2 = F 16 . Take! ^; expressed as a finite field! The multiplication group of ^ is a cyclic group. Let w and V be the generators of the second finite field multiplicative group and the first finite field multiplicative group, respectively. Since the order of the element V in the second finite field F2 is 3, v = w 5 , so the first finite field multiplicative group can be expressed as Fl* = {1, ^ 5 , ^. } , and the second finite field multiplicative group is expressed as ^2* =^^ = ' + ' . + = ^', we use the symbol U to represent the division of the second finite field F2, and the second finite field F2 into the form of the coset H'F 4 *, i = l, ..., 5. These five cosets define five different planes. More specifically, the second finite field F2 can be directly decomposed into several basic finite field F0 addition forms: F 16 = F 4 ten vF 4 = F 2 ten vF 2 ten wF 2 ten wvF 2 , so, the second limited The elements in the field F2 can be written as a 4-tuple. For example, the set wF 4 * contains the elements w, wv, wv 2 , since v 2 = v + l , so wv 2 can be represented by the other two elements. So let w = (0, 0, 1, 0), wv = (0, 0, 0, 1), so that the plane defined by the coset wF 4 * is {(0010), (0001), (0011)}. In a distributed storage system, the size of the file is B, and the file B needs to be stored in n storage nodes. The storage size of each storage node is ", when there is a storage node failure, the remaining connections need to be connected (n -1) d of the storage nodes and download data from each of the d nodes, represented by PSRC(n, k) as a projective self-repair code, where parameters n and k are parameters in the stretch of the construct.
考虑到构造码字的实用性, 通常基本有限域为 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«, For all practical configuration codeword, it is usually substantially finite field F 2 (i.e., q = 2). First let m=B, that is, the operation domain of the element is F 2B , which is the B-dimensional vector on the finite field F 2 . The finite field F 2B is determined by the file size B. A set of t-stretches S formed by t-dimensional subspaces of space P, where t+llB. Specifically, let the first finite field F1=F, +1 . Since each subspace of the space P is a (t+1)-dimensional vector space on the finite field F 2 , it can be represented by (t+1) vectors on the finite ^. Here t + l = «, and the number n of (t + 1) vector storage nodes stored in each storage node on the finite field F 2 is n = ^ at the maximum. Because αΙΒ, let B=b«,
-1 所以: n= (2^1) = (2ba _ = i + 2« + (2« )2 +… + (2« )w。 ( 1 ) -1 So: n= (2^1) = (2 ba _ = 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个存储节点将会存储的 数据量为 }。 (2"-1) (2"-1) In order to satisfy the client's ability to recover the original data B from k storage nodes, we need b to satisfy b ≤ k. When b = k, this is equivalent to the minimum storage of each storage node. (The first finite field F1 can have multiple choices but must satisfy t+llB). Let ^ denote the vector set of n« stored by n storage nodes, where Vl , ..., ^ are the vectors stored by the first storage node, Va+1 ,..., the vector stored for the second storage node, Other vectors stored by other storage nodes can be obtained. The amount of data that the i-th storage node will store is }.
在本例子中, 有 w4=w+l, IF 1=15, w15=l, v2=v+l, IF I=3, v3=l, v=w5=w2+w。 所以空间最终被划分为 In this example, there are w 4 = w + l, IF 1 = 15, w 15 = l, v 2 = v + l, IF I = 3, v 3 = l, v = w 5 = w 2 + w. So the space is eventually divided into
F;= {( 1000), (0110), ( 1110)}  F;= {( 1000), (0110), ( 1110)}
VF;= {(0100), (0011 ), (0111 )}  VF;= {(0100), (0011), (0111 )}
V 2F:= {(0010), ( 1101 ), ( 1111 )} V 2 F:= {(0010), ( 1101 ), ( 1111 )}
v3F:= {(0001 ), ( 1010), ( 1011 )} v 3 F:= {(0001 ), ( 1010), ( 1011 )}
v4F:= {( 1100), (0101 ), ( 1001 )} v 4 F:= {( 1100), (0101 ), ( 1001 )}
在该例子中, 根据式子(1)可以得到构造码字的参数为 B=4, a =2, n=l+22=5。 5个存储节点分别用 Ν,, i=l, ... ,5表示, 每个存储节点存储数据量为 =2, 需要存 储的原始数据用 o= (0l, o2 , o3, o4)表示。 每个存储节点存储的数据如下: 节点 基本向量 存储数据 In this example, the parameters for constructing the codeword can be obtained according to equation (1) as B = 4, a = 2, n = l + 2 2 = 5. The five storage nodes are represented by Ν,, i=l, ..., 5, each storage node stores the amount of data = 2, and the original data to be stored is used o = ( 0l , o 2 , o 3 , o 4 ) said. The data stored by each storage node is as follows: Node base vector stores data
Ni Vi=( 1000 ),v2=( 0110) {θι, o2+o3 } Ni Vi=( 1000 ),v 2 =( 0110) {θι, o 2 +o 3 }
N2 v3=( 0100 ), v4=( 0011 ) {o2, O3+O4 } N 2 v 3 =( 0100 ), v 4 =( 0011 ) {o 2 , O3+O4 }
N3 v5=( 0010),v6=( 1101 ) { 03, O1+O2+O4 } N 3 v 5 =( 0010),v 6 =( 1101 ) { 03, O1+O2+O4 }
N4 v7=( 0001 ),v8=( 1010) {o4, 01+03} N 4 v 7 = ( 0001 ), v 8 = ( 1010) {o 4 , 01+03}
N5 v9= ( 1100 ) , v10= { O1+O25 O2+O4 } N 5 v 9 = ( 1100 ) , v 10 = { O1+O25 O2+O4 }
(0101 )  (0101)
在本实施例中, 还涉及由存储上述方法中得到编码的存储模块中重构数据的方 法。 包括如下步骤:  In the present embodiment, it also relates to a method of reconstructing data from a storage module obtained by storing the above method. Including the following steps:
步骤 S51 在 n个存储节点中选择 k个: 在本步骤中, 从存储有存储文件编码数 据的 n个存储节点中任意选择 k个, 此处, k≥m t + V) , 其中, m和 t与前面所述的 编码步骤中的意思相同。  Step S51: Select k among n storage nodes: In this step, k are randomly selected from n storage nodes storing stored file encoded data, where k≥mt + V) , where m and t It has the same meaning as in the encoding step described above.
步骤 S52 下载选择的存储节点中的数据并重构数据: 在本步骤中, 分别下载上 述选择的存储节点的数据并依据这些存储节点的编码向量重构存储文件。 在本实施 例中, 是由服务器分别取得所选择存储节点的编码向量的。 在一些情况下, 也可以 由选择的存储节点取得其编码向量。 Step S52: Download the data in the selected storage node and reconstruct the data: In this step, the data of the selected storage node is separately downloaded and the storage file is reconstructed according to the coding vectors of the storage nodes. In this implementation In the example, the server obtains the code vector of the selected storage node. In some cases, the code vector can also be obtained by the selected storage node.
步骤 S53 重构完成? 判断文件重构是否完成, 也就是文件是否被重构出来, 如 是, 执行步骤 S54, 退出本次文件数据重构; 否则跳转到步骤 S55。  Step S53 Is the reconstruction completed? It is judged whether the file reconstruction is completed, that is, whether the file is reconstructed, and if so, step S54 is executed to exit the file data reconstruction; otherwise, the process goes to step S55.
步骤 S54 退出本次数据重构: 在本步骤中, 已取得存储的文件, 退出。  Step S54 Exit this data reconstruction: In this step, the stored file has been obtained and exited.
步骤 S55 在未选择的存储节点中再选择一个: 在本步骤中, 由于上述选择的存 储节点下载的数据并没有重构出文件数据, 所以, 再在未选择的存储节点中选择一 个, 使得被选择的存储节点数增加一个, 并跳转到步骤 S52。  Step S55: Select one of the unselected storage nodes: In this step, since the data downloaded by the selected storage node does not reconstruct the file data, one of the unselected storage nodes is selected, so that The number of selected storage nodes is increased by one, and the flow jumps to step 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可以写成: In this embodiment, if the client connects any k storage nodes, it can obtain up to 1^« data blocks and attempt to reconstruct the original data B from these data blocks. So they must satisfy k ≥ B / «. Arbitrarily select the data of k storage nodes, obviously k≥B/«, first download the data of any B/« storage nodes. If B can be decoded, the reconstruction process ends, otherwise download the data of a storage node until The original data B is decoded. In this embodiment, B is equal to m and α is equal to t+ i. If k = 2, then the original data B can be reconstructed from any k = 2 storage nodes, in which case the PSRC (n, k) code is an MDS code. When k = 2, each storage node stores = B/2 mutually independent vectors. The vector stored by the two storage nodes N and N is arbitrarily selected as (Vi, . . . , v a ), and the vector stored by the node N′ is ( Ul , ... , M J . It is assumed that there is a vector in the storage node N V , vector V is linearly related to some vectors in node N', that is, V can be written as:
¥=∑^ +∑^ 。 ¥ =∑^ +∑^.
!=1 j=l  !=1 j=l
因为 VeN并且 Z^ cm e N , 所以必有 A e N , 这跟伸展的定义中 N和 N'不 相交的性质想矛盾。 注意, 当 k=2时 MDS码也不可以通过下载 d=2节点的数据重建 出原始数据 B。  Because VeN and Z^ cm e N , there must be A e N , which contradicts the nature of N and N' that do not intersect in the definition of stretching. Note that when k=2, the MDS code cannot reconstruct the original data B by downloading the data of the d=2 node.
在本实施中, 还涉及一种恢复上述方法得到的编码的数据恢复方法, 包括如下 步骤: In this implementation, the method further relates to a data recovery method for recovering the code obtained by the foregoing method, including the following Steps:
步骤 S61 确认存储节点失效并得到该存储节点的编码向量: 在本步骤中, 确认 一个存储节点已经失效, 需要对其存储的数据进行修复并存储到另一个存储节点上; 同时, 由服务器上取得该存储节点的编码向量。  Step S61: Confirming that the storage node is invalid and obtaining the coding vector of the storage node: In this step, it is confirmed that one storage node has failed, and the stored data needs to be repaired and stored on another storage node; meanwhile, obtained by the server The encoding vector of the storage node.
步骤 S62任选一未失效的存储节点并得到其编码向量: 在未失效的存储节点中 任意选择一个节点, 同时, 由服务器上取得该存储节点的编码向量。  Step S62 selects an un-failed storage node and obtains its coding vector: arbitrarily selects a node among the non-failed storage nodes, and obtains the coding vector of the storage node from the server.
步骤 S63 查找到与所选择的存储节点相关的存储节点: 在本步骤中, 通过对上 述失效存储节点及选择的存储节点的编码向量进行运算得到至少一个与上述选择存 储节点相关的存储节点的相关节点编码向量, 进而在服务器上查找到这些编码向量 所对应的存储节点; 在本步骤中, 采取的运算为异或运算。  Step S63: Finding a storage node associated with the selected storage node: In this step, performing at least one storage node related to the selected storage node by performing operation on the coded vector of the failed storage node and the selected storage node The node coding vector, and then the storage node corresponding to the coding vector is found on the server; in this step, the operation taken is an exclusive OR operation.
步骤 S64 下载上述选择的存储节点及其相关的存储节点数据, 得到失效节点存 储的数据并保存: 在本步骤中, 将上述选择的存储节点及其相关存储节点所存储的 数据下载, 并依据其对应的编码向量(包括失效存储节点的编码向量、 选择存储节 点的编码向量及上述相关存储节点的编码向量) , 对数据重组, 得到失效节点所存 储的数据, 并存储在一个新的存储节点上。  Step S64: downloading the selected storage node and its associated storage node data, and obtaining data stored by the failed node and saving: In this step, downloading data stored by the selected storage node and its associated storage node, and according to the data Corresponding coding vector (including the coding vector of the failed storage node, selecting the coding vector of the storage node and the coding vector of the above-mentioned storage node), reorganizing the data, obtaining the data stored by the failed node, and storing it on a new storage node .
在一个存储节点失效的情况下, 对于 HSRC码, 当一个存储节点失效时需要下 载两个存储节点的数据来修复该失效节点的数据, 并且有 ( n-1 ) /2对修复节点可供 选择, PSRC码仍然有这种修复特性。  In the case of a storage node failure, for a HSRC code, when a storage node fails, data of two storage nodes needs to be downloaded to repair the data of the failed node, and (n-1)/2 pairs of repair nodes are available for selection. The PSRC code still has this repair feature.
在 PSRC ( n, k )码中,共有 n个存储节点,每个存储节点存储《的编码数据量。 当一个存储节点 ^失效时, 我们可以通过连接并下载 d=2个存储节点即可恢复出失 效节点 存储的数据。 具体的讲, 在现存的 (n-1 )个存储节点中, 任意选择一个存 储节点 至少存在一个存储节点 Nj使得通过下载存储节点 和 Nj的数据就可以 恢复出失效节点 存储的数据。  In the PSRC (n, k) code, there are a total of n storage nodes, and each storage node stores "the amount of encoded data. When a storage node ^ fails, we can recover the data stored by the failed node by connecting and downloading d=2 storage nodes. Specifically, among the existing (n-1) storage nodes, arbitrarily selecting one storage node, at least one storage node Nj can recover the data stored by the failed node by downloading the data of the storage node and 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*。。 The subspace of the first storage node ^ is of the form v'F , 1 = 1, ..., n. Assuming the storage node fails, a new node replaces the failed node Ni. The new node selects any storage node. For example, the data stored by the N l storage node is νΤ. We need to prove that there is at least one storage node Ν" so that V ' F 2 : U VF ; can repair the data stored in the node Ni. Because (v' + v')F 2 *„c V 'F 2 *„Lk'F 2 *„ , so we You can choose j to make =(!'+. By storing the data stored in the storage node ^ and 相互 in combination with each other, we can get V 'F 2 U(v'+v')F 2 , which is the invalid data v' F 2 *.
也就是说, 当任意的一个存储节点 ^失效时, 只需要任意的选择一个存储节点 以及另一个相对应的节点, 即可恢复失效数据。  That is to say, when any one storage node ^ fails, only one storage node and another corresponding node need to be arbitrarily selected to recover the invalid data.
PSRC码的自修复能力比 HSRC码的自修复能力更强。假设存储节点的个数 n=21, 每个存储节点存储的数据量为 =2, 原始数据的大小 B=6, 我们构造的码字为 PSRC (21, 3), 如果节点 失效, 在剩下的 20个存储节点中任意的选择一个存储节点 Ν,, 都会有另外的三个存储节点 N. , N.和 N. , 通过下载存储节点 和 或者 和 N2或者 ^和 3中的数据就可以恢复出失效节点 中存储的数据。 The self-repair capability of the PSRC code is stronger than the self-repair capability of the HSRC code. Suppose the number of storage nodes is n=21, the amount of data stored in each storage node is =2, the size of the original data is B=6, and the codeword we construct is PSRC (21, 3). If the node fails, the rest is left. Any one of the 20 storage nodes selects one storage node, and there will be another three storage nodes N., N. and N., by downloading the storage node and or the data in N 2 or ^ and 3 Restore the data stored in the failed node.
注意 w为循环群 F:的生成元, 存储节点 存储的数据为 v'F:, 同样的, 存储节点 存储的数据为 v'F:。 所以有
Figure imgf000016_0001
Note that w is the generator of the loop group F:, the data stored by the storage node is v'F:, and the data stored by the storage node is v'F:. So have
Figure imgf000016_0001
i . i , I , I i i i , i I I I , I  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 + 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 + v l w, V + v l w + v l , v l w + v l + v l w, v l w + v l ,
V +vlw + vlw,vl +vl +vlw]
Figure imgf000016_0002
V +v l w + v l w,v l +v l +v l w]
Figure imgf000016_0002
令 jl, j2, j3分别满足如下式子 Let jl, j 2 , j 3 satisfy the following formula respectively
νΛιι , vJl = V +vlw , Vh = V +v'w ν Λιι , v Jl = V +v l w , V h = V +v'w
所以有  So have
(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*。 该方法实际上就是寻找不同的修复节点对的一个算法。 (N t , Ν Α ) νΤ 4 * (J (ν' + ν ι )F 4 *] v'F 4 *, (N ; , N ) =>V'F (J (ν' + V'W) F 3 v'F 4 *, (N ; , N ) =>v'F U (ν' + V'W)F 3 v'F 4 *. This method is actually an algorithm for finding different pairs of repair nodes. .
对于在上述编码步骤中所列举的例子而言, 如果节点^失效, 那么也就是说数 据块 (相当于基本向量( 1000))和 o2+o3丟失了 (相当于基本向量(0110))。 新 节点会加入该存储系统并连接存储节点 Ν3和 Ν4,从这两个节点中可以分别得到基本 向量 v5= (0010), v6= ( 1101 )和 v7= (0001 ), v8= ( 1010)。 而通过 v8+v5可以求出 ( 1000), 通过 v8+ ( v6+v7)可以得到(0110)。 从另一方面来讲, 假设节点^失效, 新节点连接节点 N4并下载 V 3F: , 有 For the example listed in the above encoding step, if the node ^ fails, then the data block (equivalent to the basic vector (1000)) and o 2 + o 3 are lost (equivalent to the basic vector (0110)) . The new node will join the storage system and connect the storage nodes Ν 3 and Ν 4 , from which the basics can be obtained separately. Vector v 5 = (0010), v 6 = ( 1101 ) and v 7 = (0001 ), v 8 = ( 1010). Further, (1000) can be obtained by v 8 + v 5 , and (0110) can be obtained by v 8 + ( v 6 + v 7 ). On the other hand, assuming node ^ fails, the new node connects to node N 4 and downloads V 3 F: , there is
1 , i i , 3 21 11 τ 1 , ii , 3 21 11 τ
v+v=l+v=v v =^·  v+v=l+v=v v =^·
1 . i . 3 21 9  1 . i . 3 21 9
v w+v =w+v =v v J 10 v w+v =w+v =vv J 10
1 i 3 21  1 i 3 21
V +VW=1+V W=V N5。  V + VW = 1 + V W = V N5.
因此,新节点可以通过连接并下载以下任意 3对节点( 3对节点均包含有节点 N4 ) 即可修复失效节点存储的数据(N4, N12), (N4, N10), (N4, N5)。 Therefore, the new node can repair the data stored by the failed node (N 4 , N 12 ), (N 4 , N 10 ) by connecting and downloading any of the following three pairs of nodes (the three pairs of nodes all contain the node N 4 ), ( N 4 , N 5 ).
此外, 在分布式存储系统中, 静态恢复力是指数据一旦存储在系统中, 在没有进 一步的修复失效节点的前提下仍然可以恢复出存储的原始数据的概率。 令 pnde为任 意给定节点的有效概率, 由于系统中没有两个不同的数据模块存储在相同节点上, 因此我们可以假设任意节点所存储的模块的有效性为 pnde。 能够恢复出原始数据的 概率 p。bj的概率为 =^ x ¾^(l-;^y", 其中 只一个条件概率,该概率为下载 n个存储节点中的任意 个存储节点中的数据即可恢复出原始数据的概率。 In addition, in a distributed storage system, static resilience refers to the probability that once the data is stored in the system, the stored original data can be recovered without further repairing the failed node. Let p n be . De is the effective probability of any given node. Since there are no two different data modules stored in the same node in the system, we can assume that the validity of the module stored by any node is p n . De . The probability p that the original data can be recovered. The probability of b j is =^ x 3⁄4^(l-;^y", where there is only one conditional probability, which is the probability that the original data can be recovered by downloading data from any of the n storage nodes.
对于(n, k) MDS擦除码, 是确定的并且当 x≥ 时其值等于 1, 其它的情况其 值等于 0。 但是对于自修复码, 其值是不确定的。 在本文构造的 PSRC(21,3)码的例子 中, 其概率值可以计算出来, 对于 x≥ 的情况, 1-A可以通过穷举法计算出来。  For the (n, k) MDS erasure code, it is deterministic and its value is equal to 1 when x ≥ and its value equals 0 in other cases. But for self-healing codes, the value is undefined. In the example of the PSRC (21, 3) code constructed in this paper, the probability value can be calculated. For the case of x ≥, 1-A can be calculated by the exhaustive method.
具体的计算方法,我们可以穷举出由 5个存储节点组成的唯一组,其中有 10个基 本向量产生的矩阵的秩小于 6, 有 5个存储节点组成的唯一组为 =20349。 也就是 For the specific calculation method, we can exhaust a unique group of five storage nodes, in which 10 basic vectors produce a matrix with a rank less than 6, and a unique group of 5 storage nodes is =20349. That is
5 ) 说,如果我们任意的选择 5个存储节点,原始数据仍然不能恢复出来的概率为 0.00083。 同样的, 如果我们选择任意的 3 个存储节点, 那么不能恢复出原始数据的概率为 0.150375。 相反, 对于 MDS码, 下载任意的 3个存储节点的数据即可恢复出原始数 据。 但是, 自修复码在恢复数据上的劣势换来了高效的自修复能力。 对于任意的一 个存储节点, 如果该节点失效了, 任意地选择乘下现存的 20 个存储节点中的一个, 在选择与之对应的三个存储节点中的任何一个存储节点即可再生出失效数据。 图 7比较了 PSRC (21, 3)码和 MDS (21, 3)码的静态恢复力的概率。 图中 的数值是由计算机通过评估 ^值计算出来的。 由该图我们可以看到, MDS码也许并 不存在任意的(n, k)特性。 更重要的是, PSRC (21, 3)码虽然丟失了一点静态恢 复力, 却比 MDS码多了自修复能力。 并不能因此而理解为对本发明专利范围的限制。 应当指出的是, 对于本领域的普通 技术人员来说, 在不脱离本发明构思的前提下, 还可以做出若干变形和改进, 这些 都属于本发明的保护范围。 因此, 本发明专利的保护范围应以所附权利要求为准。 5) Say, if we choose 5 storage nodes arbitrarily, the probability that the original data still cannot be recovered is 0.00083. Similarly, if we choose any of the 3 storage nodes, the probability of not recovering the original data is 0.150375. Conversely, for the MDS code, downloading the data of any three storage nodes can restore the original data. However, the inferiority of self-healing codes in recovering data has resulted in efficient self-healing capabilities. For any one storage node, if the node fails, arbitrarily choose to multiply one of the existing 20 storage nodes, and regenerate the invalid data by selecting any one of the three storage nodes corresponding thereto. . Figure 7 compares the probability of static restoring forces for PSRC (21, 3) codes and MDS (21, 3) codes. The values in the figure are calculated by the computer by evaluating the value of ^. From this figure we can see that the MDS code may not have any (n, k) characteristics. More importantly, although the PSRC (21, 3) code loses a bit of static resilience, it has more self-healing capabilities than the MDS code. It is not to be understood as limiting the scope of the invention. It should be noted that a number of variations and modifications may be made by those skilled in the art without departing from the spirit and scope of the invention. Therefore, the scope of the invention should be determined by the appended claims.

Claims

权利要求书 claims
1、 一种用于分布式网络存储的自修复码的编码方法, 其特征在于, 包括如下步 骤: 1. A self-healing code encoding method for distributed network storage, characterized by including the following steps:
A )设置基本有限域^ ; 依据存储文件中编码数据块的数量 m, 得到第二有 限域 F , 并设置所述第二有限域 F 的 m空间的 t维子空间形成的 t-伸展集合 S, 其中 t+1 I m;按照所述基本有限域的 t-伸展,利用所述 t-伸展得到第一有限域 ; 其中,
Figure imgf000019_0001
A) Set the basic finite field ^; According to the number m of encoded data blocks in the storage file, obtain the second finite field F, and set the t-stretch set S formed by the t-dimensional subspace of the m space of the second finite field F , where t+1 I m; according to the t-stretch of the basic finite field, the first finite field is obtained by using the t-stretch; where,
Figure imgf000019_0001
B ) 将所述第二有限域 F 表示的空间使用其陪集的形式 νι Ρ +1划分为 m 1 m i B) Divide the space represented by the second finite field F into m 1 mi using the form of its coset νι P +1
^TTTJ个子空间; 其中, i=0, 1, ..., , w是所述第二有限域的乘法群 的生
Figure imgf000019_0002
成元, F +1是所述第一有限域的乘法群;
^TTTJ subspace; where, i=0, 1, ..., , w is the generation of the multiplicative group of the second finite field
Figure imgf000019_0002
In yuan, F +1 is the multiplicative group of the first finite field;
C)分别在所述每个子空间的用所述基本有限域元素表示的元素中选择 t+1 个作为一个存储节点的编码向量; 所述一个存储节点对应于所述一个子空间; 所述 编码向量对应于所述存储文件中编码数据块的位置; C) Select t+1 encoding vectors as one storage node among the elements represented by the basic finite field elements in each subspace respectively; the one storage node corresponds to the one subspace; the encoding a vector corresponding to the location of the encoded data block in the storage file;
D )按照所述每个存储节点编码向量取得的存储文件中对应位置的编码数据 块并存储在该存储节点。 D) Obtain the encoded data block corresponding to the position in the storage file according to the encoding vector of each storage node and store it in the storage node.
2、 根据权利要求 1所述的用于分布式网络存储的自修复码的编码方法, 其特征 在于, 所述步骤 B)进一步包括如下步骤: 2. The encoding method of self-healing code for distributed network storage according to claim 1, characterized in that the step B) further includes the following steps:
B1 )取得所述第一有限域乘法群 ,设 V是所述第一有限域乘法群 F +1的 生成元; 取得所述第二有限域的乘法群 F », 设 w是所述第二有限域乘法群 "的 生成元; B1) Obtain the first finite field multiplicative group, let V be the generator of the first finite field multiplicative group F +1 ; Obtain the multiplicative group F » of the second finite field, let w be the second The generator of "finite field multiplicative group";
B2 ) 使用陪集 νι Ρ +1划分所述第二有限域的乘法群 的空间, 即 B2) Use the coset νι P +1 to divide the space of the multiplicative group of the second finite field, that is
F - = LJw - , 其中符号 υ表示对有限域的划分; F - = LJw - , where the symbol υ represents the division of the finite field;
Β3)依据上述划分, 将所述第二有限域 F 中的元素表示为 m-元组。B3) Based on the above division, represent the elements in the second finite field F as m-tuples.
3、 根据权利要求 2所述的用于分布式网络存储的自修复码的编码方法, 其特征 在于,所述第二有限域乘法群 F 的划分将所述第二有限域 F Q M表示为所述第一有限 域乘法群 、 第二有限域乘法群/ 的元素分别相乘的形式。 3. The encoding method of self-healing codes for distributed network storage according to claim 2, characterized in that the division of the second finite field multiplicative group F represents the second finite field F QM as The first finite The form in which the elements of the field multiplicative group and the second finite field multiplicative group / are multiplied respectively.
4、 根据权利要求 3所述的用于分布式网络存储的自修复码的编码方法, 其特征 在于, 所述步骤 C )进一步包括: 4. The encoding method of self-healing code for distributed network storage according to claim 3, characterized in that the step C) further includes:
C1 )分别取得所述每个子空间中的 t+1个基本向量; 所述子空间中包括 1 个元素; C1) Obtain t+1 basic vectors in each subspace respectively; The subspace includes 1 element;
C2 )分别把 t+1个基本向量作为该子空间所对应的存储节点的编码向量。 C2) respectively uses t+1 basic vectors as the encoding vectors of the storage nodes corresponding to the subspace.
5、 根据权利要求 4所述的用于分布式网络存储的自修复码的编码方法, 其特征 在于, 所述步骤 D ) 中进一步包括: 5. The encoding method of self-healing code for distributed network storage according to claim 4, characterized in that the step D) further includes:
在所述每个存储节点所对应的 t+1个编码向量中,依次取得每个编码向量中 元素为 1 的项对应位置的存储文件编码数据块相加后作为该编码向量决定的存储编 码数据块存入该存储节点;每个存储节点中存储有由 t+1个编码模块决定的 t+1个存 储编码数据块。 Among the t+1 coding vectors corresponding to each storage node, the storage file coding data blocks corresponding to the items whose elements are 1 in each coding vector are sequentially obtained and added together as the storage coding data determined by the coding vector. The blocks are stored in the storage node; each storage node stores t+1 storage coded data blocks determined by t+1 coding modules.
6、 一种在采用如权利要求 1所述的自修复码编码方法的存储系统中重构数据的 方法, 其特征在于, 包括如下步骤: 6. A method for reconstructing data in a storage system using the self-healing code encoding method as claimed in claim 1, characterized in that it includes the following steps:
I )在 n个存储节点中任意选择 k个; 其中, ≥m/(i + l) ; I) Randomly select k storage nodes among n; among them, ≥m/(i + l);
J ) 下载所选择节点的数据并依据其编码向量重构数据; J) Download the data of the selected node and reconstruct the data based on its encoding vector;
K )判断是否完成数据重构, 如是, 退出本次数据重构; 否则, 执行下一步 骤; K) Determine whether the data reconstruction is completed, if so, exit this data reconstruction; otherwise, perform the next step;
L )在尚未被选择的存储节点任意选择一个, 使得被选择的存储节点增加一 个, 并返回步骤 J )。 L) Select any storage node that has not yet been selected, increasing the number of selected storage nodes by one, and return to step J).
7、 根据权利要求 5所述的重构数据的方法, 其特征在于, 所述步骤 J ) 中进一 步包括: 由服务器分别取得所选择存储节点的编码向量或由所述选择的存储节点取 得其编码向量。 7. The method of reconstructing data according to claim 5, wherein step J) further includes: obtaining the encoding vector of the selected storage node by the server or obtaining its encoding by the selected storage node. vector.
8、 一种在采用如权利要求 1所述的自修复码编码方法的存储系统中修复失效存 储节点的方法, 其特征在于, 包括如下步骤:, 8. A method for repairing failed storage nodes in a storage system using the self-healing code encoding method as claimed in claim 1, characterized in that it includes the following steps:
M )确认一存储节点已经失效并由服务器得到该存储节点的编码向量; N )任选一个未失效的存储节点并得到其编码向量; O )得到与所述被选择的存储节点相关的至少一个存储节点; M) Confirm that a storage node has failed and obtain the encoding vector of the storage node from the server; N) Select a non-failed storage node and obtain its encoding vector; O) Obtain at least one storage node related to the selected storage node;
P )下载所述被选择的存储节点及其相关的存储节点的数据, 并依据这些数 据得到失效存储节点的数据, 存储在一个新存储节点中, 完成数据恢复。 P) Download the data of the selected storage node and its related storage nodes, and obtain the data of the failed storage node based on these data, and store it in a new storage node to complete data recovery.
9、 根据权利要求 8所述的方法, 其特征在于, 所述步骤 0 ) 中, 通过对所述失 效存储节点及选择的存储节点的编码向量进行运算得到所述相关节点的编码向量, 进而查找到所述相关节点; 所述运算为异或。 9. The method according to claim 8, characterized in that, in step 0), the coding vector of the relevant node is obtained by operating the coding vector of the failed storage node and the selected storage node, and then the coding vector is searched. to the relevant node; the operation is XOR.
10、 根据权利要求 9所述的方法, 其特征在于, 所述步骤 P ) 中, 通过对所述选 择的存储节点和相关的存储节点存储的数据进行重组而得到所述失效存储节点存储 的数据。 10. The method according to claim 9, characterized in that in step P), the data stored in the failed storage node is obtained by reorganizing the data stored in the selected storage node and related storage nodes. .
PCT/CN2012/078927 2012-07-20 2012-07-20 Encoding, reconstructing, and recovering methods used for self-repairing code stored by distributed network WO2014012246A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201280074817.2A CN104782101B (en) 2012-07-20 2012-07-20 Coding, reconstruct and restoration methods for the selfreparing code of distributed network storage
PCT/CN2012/078927 WO2014012246A1 (en) 2012-07-20 2012-07-20 Encoding, reconstructing, and recovering methods used for self-repairing code stored by distributed network

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2012/078927 WO2014012246A1 (en) 2012-07-20 2012-07-20 Encoding, reconstructing, and recovering methods used for self-repairing code stored by distributed network

Publications (1)

Publication Number Publication Date
WO2014012246A1 true WO2014012246A1 (en) 2014-01-23

Family

ID=49948183

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2012/078927 WO2014012246A1 (en) 2012-07-20 2012-07-20 Encoding, reconstructing, and recovering methods used for self-repairing code stored by distributed network

Country Status (2)

Country Link
CN (1) CN104782101B (en)
WO (1) WO2014012246A1 (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017041233A1 (en) * 2015-09-08 2017-03-16 广东超算数据安全技术有限公司 Encoding and storage node repairing method for functional-repair regenerating code
CN108182235A (en) * 2017-12-27 2018-06-19 北京奇虎科技有限公司 A kind of method and system for being used to carry out user characteristics distributed coding
CN109038575A (en) * 2018-09-05 2018-12-18 东北大学 Based on the reconstructing method containing distributed power distribution network for improving the raw algorithm that goes out of species

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105681425B (en) * 2016-01-22 2019-01-22 广东顺德中山大学卡内基梅隆大学国际联合研究院 Multinode restorative procedure and its system based on distributed memory system
CN113505021B (en) * 2021-05-26 2023-07-18 南京大学 Fault tolerance method and system based on multi-master-node master-slave distributed architecture

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101415016A (en) * 2007-10-17 2009-04-22 深圳市亚贝电气技术有限公司 A kind of data copy method, system and storage server
CN100579016C (en) * 2006-01-24 2010-01-06 华为技术有限公司 Distributing storage downloading system, device and method for network data
CN101923558A (en) * 2009-05-20 2010-12-22 中国科学院声学研究所 Storage network structure and reading and writing method for data based on (d, k) Mohr diagram
CN102279777A (en) * 2011-08-18 2011-12-14 成都市华为赛门铁克科技有限公司 Method and device for processing data redundancy and distributed storage system

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8631269B2 (en) * 2010-05-21 2014-01-14 Indian Institute Of Science Methods and system for replacing a failed node in a distributed storage network

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100579016C (en) * 2006-01-24 2010-01-06 华为技术有限公司 Distributing storage downloading system, device and method for network data
CN101415016A (en) * 2007-10-17 2009-04-22 深圳市亚贝电气技术有限公司 A kind of data copy method, system and storage server
CN101923558A (en) * 2009-05-20 2010-12-22 中国科学院声学研究所 Storage network structure and reading and writing method for data based on (d, k) Mohr diagram
CN102279777A (en) * 2011-08-18 2011-12-14 成都市华为赛门铁克科技有限公司 Method and device for processing data redundancy and distributed storage system

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
WANG, YU: "Research on Data Redundancy and Maintenance Technology in Distributed Storage System.", DOCTORAL DISSERTATION OF SOUTH CHINA UNIVERSITY OF TECHNOLOGY., 4 May 2012 (2012-05-04) *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017041233A1 (en) * 2015-09-08 2017-03-16 广东超算数据安全技术有限公司 Encoding and storage node repairing method for functional-repair regenerating code
CN108182235A (en) * 2017-12-27 2018-06-19 北京奇虎科技有限公司 A kind of method and system for being used to carry out user characteristics distributed coding
CN109038575A (en) * 2018-09-05 2018-12-18 东北大学 Based on the reconstructing method containing distributed power distribution network for improving the raw algorithm that goes out of species

Also Published As

Publication number Publication date
CN104782101A (en) 2015-07-15
CN104782101B (en) 2018-02-13

Similar Documents

Publication Publication Date Title
Oggier et al. Self-repairing homomorphic codes for distributed storage systems
US9961142B2 (en) Data storage method, device and distributed network storage system
US9647698B2 (en) Method for encoding MSR (minimum-storage regenerating) codes and repairing storage nodes
Dimakis et al. A survey on network codes for distributed storage
Olmez et al. Fractional repetition codes with flexible repair from combinatorial designs
Cadambe et al. Optimal repair of MDS codes in distributed storage via subspace interference alignment
Sung et al. A ZigZag-decodable code with the MDS property for distributed storage systems
US20140152476A1 (en) Data encoding methods, data decoding methods, data reconstruction methods, data encoding devices, data decoding devices, and data reconstruction devices
Han et al. Exact regenerating codes for byzantine fault tolerance in distributed storage
Oggier et al. Byzantine fault tolerance of regenerating codes
WO2014012246A1 (en) Encoding, reconstructing, and recovering methods used for self-repairing code stored by distributed network
Shahabinejad et al. A class of binary locally repairable codes
Li et al. Beyond the MDS bound in distributed cloud storage
Chiu et al. A new diskless checkpointing approach for multiple processor failures
WO2015180038A1 (en) Partial replica code construction method and device, and data recovery method therefor
Mahdaviani et al. Product matrix MSR codes with bandwidth adaptive exact repair
WO2013159341A1 (en) Coding, decoding and data repairing method based on homomorphic self-repairing code and storage system thereof
WO2014059651A1 (en) Method for encoding, data-restructuring and repairing projective self-repairing codes
Mahdaviani et al. Bandwidth adaptive & error resilient MBR exact repair regenerating codes
WO2017041233A1 (en) Encoding and storage node repairing method for functional-repair regenerating code
Chen et al. A new Zigzag MDS code with optimal encoding and efficient decoding
CN108199720B (en) Node repairing method and system for reducing storage overhead and improving repairing efficiency
Mahdaviani et al. Bandwidth adaptive & error resilient regenerating codes with minimum repair bandwidth
Gastón et al. Quasi-cyclic minimum storage regenerating codes for distributed data compression
WO2017041232A1 (en) Encoding and decoding framework for binary cyclic code

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: 12881204

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 12881204

Country of ref document: EP

Kind code of ref document: A1