WO2014153716A1 - 一种最小带宽再生码的编码和存储节点修复方法 - Google Patents
一种最小带宽再生码的编码和存储节点修复方法 Download PDFInfo
- Publication number
- WO2014153716A1 WO2014153716A1 PCT/CN2013/073180 CN2013073180W WO2014153716A1 WO 2014153716 A1 WO2014153716 A1 WO 2014153716A1 CN 2013073180 W CN2013073180 W CN 2013073180W WO 2014153716 A1 WO2014153716 A1 WO 2014153716A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- data
- data packet
- node
- column
- encoding
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 67
- 230000001172 regenerating effect Effects 0.000 title claims abstract description 15
- 239000011159 matrix material Substances 0.000 claims abstract description 183
- 230000008439 repair process Effects 0.000 claims abstract description 74
- 230000008929 regeneration Effects 0.000 claims description 18
- 238000011069 regeneration method Methods 0.000 claims description 18
- 230000009286 beneficial effect Effects 0.000 abstract description 2
- 230000008569 process Effects 0.000 description 31
- 238000010276 construction Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 238000011084 recovery Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 150000001768 cations Chemical class 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/61—Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
- H03M13/615—Use of computational or mathematical techniques
- H03M13/616—Matrix operations, especially for generator matrices or check matrices, e.g. column or row permutations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/1088—Reconstruction on already foreseen single or plurality of spare disks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/1515—Reed-Solomon codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/373—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with erasure correction and erasure determination, e.g. for packet loss recovery or setting of erasures for the decoding of Reed-Solomon codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/3761—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 using code combining, i.e. using combining of codeword portions which may have been transmitted separately, e.g. Digital Fountain codes, Raptor codes or Luby Transform [LT] codes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/10—Indexing scheme relating to G06F11/10
- G06F2211/1002—Indexing scheme relating to G06F11/1076
- G06F2211/1028—Distributed, i.e. distributed RAID systems with parity
Definitions
- the present invention relates to the field of distributed storage, and more particularly to an encoding and storage node repairing method for a minimum bandwidth regenerated code.
- the encoding method In the current storage system, the encoding method generally adopts the MDS code (Maximum Distance Separable), and the MDS code can achieve the best storage space efficiency.
- MDS error correction code needs to divide an original file into one. Equal-sized modules, and linearly coding to generate an unrelated coding module, which stores different modules and satisfies the MDS attributes (any one of the coding 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.
- data of size S is stored in a storage node, and each storage node stores a data size of ⁇ .
- the data receiver only needs to connect and download the data of any f storage nodes in the storage node to recover the original data B.
- This process is called data reconstruction process.
- the RS (Reed-Solomon) code is a code word that satisfies the characteristics of the MDS code.
- Figure 1 shows that as long as the number of effective nodes in the system d ⁇ , the original file can be obtained from the existing node;
- Figure 2 shows the process of restoring the content stored in the failed node. It can be seen from Figure 1 and Figure 2 that the entire recovery can be seen.
- the complex process is: 1) first downloading data from the f storage nodes in the system and reconstructing the original file; 2) re-encoding the new module from the original file and storing it on the new node.
- the recovery process indicates that the network load required to repair any failed node is at least the content stored by the nodes.
- RGC codes also satisfy the MDS code characteristics. During the repair of the regenerated code, the new node needs to connect the storage nodes in the remaining storage nodes and download the ⁇ -size data from the storage nodes respectively, so the repair bandwidth of the RGC code is ⁇ ? .
- the model of RGC code function repair is given and two kinds of best codes of RGC code are proposed: Minimum-storage Regenerating (MSR) and Minimum-bandwidth Regenerating (MBR) RGC codes.
- the repair bandwidth is better than the RS code, but the RGC repair process needs to connect d(d>k) storage nodes (called repair nodes).
- the repair node needs to perform a random linear network encoding operation on the data it stores. In order to satisfy that all coded packets are independent of each other, the operation of the RGC code needs to be in a large finite field.
- Patent PCT/CN2012/083174 proposes a practical projective self-healing code encoding, data reconstruction and repair method.
- PPS C Practice Projective Self-repairing Codes
- Lost encoding modules can be repaired from other encoding modules with less than the entire file;
- the encoding module is fixed from a given number of modules, which is only related to how many modules are lost, regardless of which modules are lost.
- These attributes make the repair of a lost module relatively low, and because the nodes in the system have the same status and balance, the different lost modules can be repaired independently and concurrently at different locations in the network.
- the codeword has the following characteristics: When a node fails, there may be (n - 1 ) /2 pairs of repair nodes available for selection; when (n - l ) /2 nodes fail simultaneously, We can still repair the failed node using 2 of the remaining (n+l)/2 nodes.
- PPSRC codes only involves XOR operations. Unlike general self-repairing codes, the encoding requires computational polynomials to be relatively complex. The computational complexity of PPSRC codes is smaller than PSRC codes (Projective Self-repairing Codes). ). At the same time, the repair bandwidth and repair node of the PPSRC code is better than the MSR code. The redundancy of the PPSRC code is controllable and suitable for general storage systems. The reconstruction bandwidth of the PPSRC code is optimal.
- the PPSRC code effectively reduces the data storage node, reduces the redundancy of the system data storage, and greatly improves the use value of the utility self-repair code.
- PPSRC codes also have certain deficiencies.
- the coding and decoding process of PPSRC code is more complicated, the division operation of finite field and its sub-domain is relatively large, and the data reconstruction process is cumbersome.
- the coding module is inseparable, so it is repaired. Coding module Must be no longer subdivided.
- the entire codec process of the PPSRC code has a high computational complexity, and although the amount of redundancy is controllable, it is still quite large.
- the number of PPSRC code storage nodes is very large, which is completely unnecessary for relatively small files.
- any two module information can be used to repair the third module in the literature [A. Dumi nuco, E. B i ersack, "H i erarchi ca l Codes : How to Make Erasure Codes At t ract for Peer- to- Peer S torage Sys tems " , Peer- to- Peer Comput i ng (P2P), 2008.
- a HC code (Hierarchical Codes).
- the HC code is an iterative construction that gradually forms a large code starting from a small EC code, generated by XOR submodules constructed from EC codes.
- the main idea is: Consider a file size, divide the file into subgroups, and each subgroup contains unencoded modules.
- One (E EC code is used to generate ⁇ local redundant coding modules in each subgroup.
- R global redundancy coding modules are further generated by all uncoded modules by coding scheme. Therefore, a coding group is formed, ⁇ Uncoded modules are encoded into (sxr) encoding modules.
- the local redundancy module can be used to repair the failure of nodes in a subgroup, so only need to access modules smaller than the entire file size to be repaired;
- the module provides further repair guarantees, that is, when there are too many modules in a subgroup that cannot be self-repaired, they can be repaired by the global redundancy module.
- the status of some modules may be better than other modules. To be high makes it difficult to do an in-depth resilience analysis (affecting an understanding of the validity of the code); in practical systems, if the code is used, more complex algorithms (whether reconstructed or fixed) are needed; in HC code
- the status of different coding modules is different, so the number of modules required to repair a lost module depends not only on The number of lost modules is also related to which modules are lost; similarly, the number of modules required to reconstruct the original file may also vary depending on the missing module.
- Patent PCT/CN2012/071177 proposes an RGC code in which repairing a lost coding module requires only a small amount of data, without the need to reconstruct the entire file.
- the RGC code applies the linear network coding idea, and uses the NC (Network Coding) attribute (ie, the maximum stream minimum cut) to improve the overhead required to repair an encoding module. From the network information theory, the network overhead of using the same amount of data as the lost module can be proved. Repairable missing modules.
- the main idea of the RGC code is to use the MDS attribute.
- MDS attribute When some storage nodes in the network fail, it is equivalent to storing data loss. It is necessary to download information from the existing effective nodes to make the lost data repair the lost data modules and store them. 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.
- Figure 2 depicts the regeneration process when a node fails. In the distributed system, n storage nodes each store "data.
- each node When one node fails, the new node downloads data from other surviving nodes and uses it for node regeneration.
- the load of each node is for each storage node i.
- the pair of nodes By means of a pair of nodes ⁇ "' ⁇ ⁇ . "', the pair of nodes are connected by an edge whose capacity is the amount of storage (ie ") of the node.
- the regeneration process is described by an information flow diagram, Xi «any from the system d nodes each available data collected by ⁇ 3 ⁇ 4 ⁇ ⁇ . "'in ⁇ . "Storing" data, any recipient can access ⁇ .”'.
- the maximum information flow from the source to the sink is determined by the minimum cut set in the graph.
- the size of the stream cannot be smaller than the size of the original file.
- MMR minimum bandwidth regenerating code
- MSR minimum bandwidth regenerating code
- the technical problem to be solved by the present invention is to provide a coding and storage of a minimum bandwidth regenerated code with simple operation, low overhead, and small repair bandwidth, which is complicated by the above-mentioned operations, large overhead, and large repair bandwidth. Node repair method.
- the technical solution adopted by the present invention to solve the technical problem thereof is: constructing a coding method of a minimum bandwidth reproduction code, comprising the following steps:
- each code identification code including k elements; respectively, respectively, the first data packet in one column of the system matrix according to the value of an element corresponding to the first data packet number in one identification code Adding a set number of bits 0 to the data header or the tail of the first data packet to obtain k second data packets, and computing the k second data packets to obtain an encoded data packet; for the system matrix
- step C) further comprises the following steps:
- C2 obtaining a coded identification code, selecting a column of the system matrix, and determining, for each of the k first data packets of the selected column, the maximum value of the element in the coded identification code and the number of rows of the first data packet in the column
- Corresponding code identification code element values are respectively added with a set number of bits 0 in the data header or the tail of the first data packet of the column to obtain k second data packets; and the k second data packets are calculated to obtain An encoded data packet;
- step C1) further includes:
- step C11 determining whether k is a prime number, if yes, performing step C12); otherwise, performing step C13);
- step C4) further includes:
- step B) further includes:
- B1 taking the obtained first data packet according to its number, and sequentially filling the upper triangular portion of the system matrix S row by row according to the order of the elements in the system matrix S, to obtain an upper triangle of the system matrix;
- B k (k + O/ 2 ;
- the check matrix of C E is expressed as: P ; where S to / 3 hail ⁇ 4 is each of the above steps
- step D) the method further includes the following steps: the system matrix and the face moment
- the array is arranged as a data matrix, and each row of the data matrix is stored in each storage node; the data matrix is expressed as: M
- the present invention also relates to a method for repairing and storing the above-described encoded data storage node, comprising the following steps:
- step J) further includes:
- J2 selecting and storing a coded data packet stored by a check node that generates a coded data packet set by the system matrix column/column, and performing an inverse operation of the coding operation by using the coded data packet and the coded identification code.
- step K) further includes:
- the encoded code identification code is used to encode the data, and the data stored in the failed node is obtained.
- step ⁇ 3) further includes:
- the coding and storage node repair method for implementing the minimum bandwidth reproduction code of the present invention has the following beneficial effects:
- the construction of the traditional RGC code is based on the finite field GF (3 ⁇ 4, finite field addition, subtraction, and multiplication designed in the codec process; finite field
- the theoretical research is mature, the practical application is cumbersome and time consuming.
- the finite field is replaced by a simple and easy to implement XOR operation because the computational complexity in the encoding and decoding process is reduced.
- the operation of the codec is limited to the fast XOR operation (that is, the above addition), which greatly improves the rate of node repair and data block regeneration; the binary minimum bandwidth reproduction code (BMBR Binary Minimum) in this embodiment -bandwidth Regenerating ) not only reduces the computational complexity of the system, but also ensures that the bandwidth consumed during node repair is minimal (ie the original file) Size), does not consume excess bandwidth.
- BMBR Binary Minimum binary minimum bandwidth reproduction code
- the BMBR code can guarantee that: the lost coding block can be directly downloaded to several subsets of other coding modules for repair; the lost coding block can be repaired by a fixed number of coding modules, and the fixed number is only related to how many modules are lost by the system.
- FIG. 1 is a schematic diagram of data reconstruction of an EC code in the prior art
- FIG. 2 is a schematic diagram of repairing a failed storage node 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 flowchart of an encoding method in an embodiment of a method for encoding and storing a minimum bandwidth regenerated code of the present invention
- FIG. 5 is a flowchart of obtaining an encoded data packet in the embodiment
- Figure 8 is a schematic diagram of the acquisition of encoded data packets in the embodiment.
- the encoding method of the minimum bandwidth regenerating code includes the following steps:
- Step S41 divides the original data to obtain the first data packet:
- the original data of size B is equally divided into (fe + l)/2 data blocks, and each data block size is L bits, and the a data packet;
- Step S42 constructing a system matrix using the obtained first data packet:
- a symmetric system matrix S of size fe x is constructed by using the first data packet obtained in the above step; wherein, the first is obtained according to the number thereof The data packet, and the obtained first data packet is sequentially filled into the upper triangle of the system matrix S row by row according to the order of the elements in the system matrix S, to obtain the upper triangle of the system matrix S. That is, in this step, a system matrix S is obtained by using the first data packet obtained in the above steps.
- the system matrix is a symmetric matrix, that is, the diagonal elements of the matrix are axes, and the matrix elements on both sides of the axis are symmetrical.
- a method of obtaining the upper triangle of the system matrix and then folding it in half to obtain the entire system matrix is employed.
- the first data packet is placed at the position of the second row and the second column element of the system matrix S.
- the k+2 first data packet is placed in the second row and the third column of the system matrix S. ..., when the second row and the kth column are placed, the 2k-1th first data packet is placed.
- the first line of the system matrix S is filled with k first data packets (to) according to the above method, the second line Fill in k-1 packets (c k+1 to c 2i — i ), line 3 fills in k-2 first packets (c lk to c 3i — 2 ), ...
- the obtained first data packet is taken out according to its number, and the upper triangular portion of the system matrix S is sequentially filled in the order of the columns of the elements in the system matrix S.
- Step S43 constructs a coded identification code, and obtains a coded data packet set by using the coded identification code:
- k coded identification codes are constructed, and each coded identification code includes k elements (the construction method of the coded identification code is detailed later)
- the first data packet in one column of the system matrix S is respectively added to the set number in the data header or the tail of the first data packet according to the value of the element corresponding to the first data packet number in one identification code.
- Bit 0 obtain k second data packets, operate the k second data packets to obtain an encoded data packet; repeat the above steps to obtain k encoded data packets by using different coding identification codes for the column in the system matrix S
- n - k , / ⁇ is the encoded data packet obtained by the g-th coded identification code and the k-th column of the system matrix S; then, the columns of the nk different system matrices S are respectively selected to repeat the above steps to obtain nk Encoded data packet sets.
- one column in the system matrix S is selected, and one of the obtained nk coded identification codes (for example, numbered 1 coded identification code) is first used to add bit 0 to obtain k second data packets, performing an exclusive-OR operation on the obtained k second data packets to obtain an encoded data packet; respectively performing the same processing on the column using different coding identification codes according to the number of the coded identification code, k coded data packets are obtained; the obtained coded data packets are sequentially arranged according to the coded identification codes used in the processing, and a coded data packet set is obtained.
- the nk-1 different columns in the above system matrix S are respectively selected to perform the above steps, and a total of nk encoded data packet sets are obtained. It is worth mentioning that, in this embodiment, it is generally possible to start from the first column of the system matrix S and continue to select the nk column to run the above steps.
- Step S44 constructing a check matrix using the encoded data packet set: In this step, constructing a check matrix P of size _k)xk, and the coded data packet set of the check matrix P is sequentially arranged; that is, the school
- Each row of the proof matrix P is a set of encoded data packets obtained as described above; ⁇ 1 column of each row is an encoded data packet obtained by using the first coded identification code, and the second column is a code obtained by using ⁇ 2 coded identification codes.
- the kth column is an encoded data packet obtained using the kth coded identification code
- the different rows in the check matrix P are coded data packet sets obtained by selecting different columns of the system matrix S
- the rows of the check matrix P are arranged in the order of the column numbers of the system matrices S selected; for example, the encoded data packet set obtained by the first column of the system matrix S is a row of the check matrix P, and is determined by the system matrix S.
- the encoded data packet set obtained in the second column is a checksum In the second row of the matrix P, the encoded data packet set obtained from the third column of the system matrix S is the third row of the check matrix P, and so on.
- Step S45 storing each row of data in the system matrix and the face matrix to different storage nodes: In this step, storing the first data packet included in each row in the system matrix S to a storage node, respectively, to obtain k Each system node stores each row in the face matrix P to a storage node, and obtains nk check nodes to implement data encoding and storage. Where n is the total number of storage nodes.
- step S43 in this embodiment the obtaining of the encoded data packet specifically includes the following steps:
- Step S51 obtains the coded identification code:
- k coded identification codes are obtained (the specific steps of obtaining the coded identification code are detailed later).
- Each coded identification code includes k values (or elements) indicating that the coded identification code is used to generate a second data packet with the column operation of the system matrix S, and should be in the value (code identification code) The number of bits of the first packet corresponding to the value is added to the number of bits 0.
- Step S52 adds a set number of bits 0 to the data header or the tail of each of the first data packets according to the coded identification code to obtain k second data packets:
- the process is as follows: Obtain the first first data packet of the first column, and add the bit 0 of the first element value in the code identification code before; obtain the maximum value of the element value in all the code identification codes, and Subtracting from the value of the first element in the above code identification code to obtain a value; adding the above-mentioned subtraction to obtain the bit number of the number of bits at the end of the first first data packet of the column; obtaining a second data packet; Adding r max - / bits 0 to the end of the data packet, where r max maxO 1 , ,..., r n ) is the maximum value of the element values in all coded identification codes, which is obtained in advance , usually its maximum value is k-1; is the element value of the corresponding code identification code of the first data packet in this operation.
- a second data packet (for example, corresponding to the first data packet of the first row of the first row of the system matrix S) is obtained; in the column of the selected system matrix S, the first data located in different rows respectively is obtained.
- the packet repeats the above steps to obtain k second data packets.
- Step S53 calculating the k second data packets to obtain an encoded data packet:
- k second data can be obtained.
- Packet in this step, the k obtained in the above can be operated by the second data packet to obtain an encoded data packet.
- the operation or addition means that the data packets are mutually exclusive or different.
- Step S54 obtains n-k encoded data packet sets: selecting columns of different system matrices S, repeating the above steps S52 to S53 until n-k encoded data packet sets are obtained; the n-k encoded data packet sets constitute redundant symbols.
- the obtained encoded data packet sets are arranged in a column according to the column numbers of the system matrix S selected at the time of generation (usually, the first, 2, 3 n-k columns of the system matrix S are sequentially selected), thereby obtaining an encoding matrix.
- Figure 8 illustrates, from one side, the transformation (conversion) relationship between the first data packet, the second data packet, and the encoded data packet.
- FIG. 6 shows the specific steps of obtaining the encoded identification code in this embodiment, including:
- Step S61 determines whether k is a prime number, if yes, step S62 is performed; otherwise, step S63 is performed; in this embodiment, k is an average of the original data is allocated to the portion of + ⁇ )/2, which is based on the original data.
- the size is set in advance.
- Identification code Each alpha is substituted into a sequence and subjected to modulo processing to obtain a coded identification code, wherein the value of ⁇ is the sequence number of the coded identification code.
- nodes In an actual distributed storage system, nodes often fail. At this time, it is necessary to introduce a new node and replace the failed node to ensure that the system redundancy is maintained within a certain range. This process is called node regeneration. Regenerating a failed node in the minimum bandwidth code in this embodiment and minimizing the required repair bandwidth can be performed as follows:
- Step S71 Confirming that the node is invalid: In this step, it is confirmed that the storage node is invalid.
- Step S72 determining the type of the failed node:
- the type of the storage node includes two types: one is a system node, and one system node stores the system matrix S. a row of data, a total of k system nodes; one is a check node, a check node stores a row of data in the check matrix P, a total of nk check nodes; in this step, it is determined that the failed node is a system
- the node is also a check node. If it is a system node, it also determines the number of the failed storage node in the system node. For example, the system node fails.
- Step S73 is performed; if it is a check node, it is also determined that the number of the failed storage node in the check node is, for example, the i-th check node is invalid. At this time, i takes a value between 1 and nk. Then step S74 is performed. It is worth mentioning that the judgment method in this step is combined with the actual node deployment. For example, in the present embodiment, n storage nodes are selected, the first k are system nodes, and the following n-k nodes are check nodes. Since the system records the information about the nodes stored in the storage node or the storage node, it is usually stored in the form of metadata.
- the system here can be understood as a server, which is responsible for scheduling, management, and the node failure judgment. Therefore, information about whether the storage node is a system node or a check node can be obtained from the system, and the original coded column corresponding to the node can also be obtained.
- Step S73 selecting the remaining k-1 system nodes, respectively downloading the fth data therein, and selecting the corresponding check node to download the data, and obtaining the data stored by the failed node: in this step, the remaining The f th data stored by the storage node is downloaded from each normal system node, that is, the data of the system node located in the fth column of the system matrix (the f data of a failed node is missing), and the k stored in the failed node is obtained.
- the check node corresponding to the column data downloads the stored data (that is, the check data calculated by the system matrix, the above-mentioned downloaded column and the coded identification code), and uses the data and code downloaded by the check node.
- the identification code operation is combined with the downloaded data of a column in the system matrix stored in the obtained failed system node (that is, the column in which the k-1 data is downloaded); all the data in the failed system node is obtained;
- the resulting data is stored in a new storage node and the storage node replaces the failed system node.
- the relevant coding information of the failed node can be obtained by the system described in the above steps, for each failed check node, the corresponding original coded column data can always be found.
- the number of rows of the failed system node in the system matrix is obtained, and for each remaining system node, the first data packet located in the fth column of the system matrix is respectively downloaded;
- Step S74 obtains the system matrix column number corresponding to the failed node, and downloads the column data, and encodes the data stored by the invalidation check node:
- the system matrix corresponding to the coded data packet set stored by the invalidation check node is obtained.
- the column number e, e l, 2, -, n - k (the coded data packet set stored by the check node is obtained by the column data of the system matrix and the code identification code), and is determined by all the system nodes respectively.
- a data is downloaded, and the downloaded data is a complete column corresponding to the obtained column number in the system matrix (and the e-th column of the system matrix); the downloaded column data is separately encoded (and encoded) using all the coded identification codes.
- the data stored by the fail check node is obtained, stored in a new storage node and replaced with a failed check node.
- Step S75 The node repair is completed. After the step S73 or the step S74 is performed, the step is performed, so that the obtained new storage node replaces the failed node detected in the above step, and the node is repaired.
- the coded identification code encodes the data to obtain data stored in the failed node.
- r max max(r 1 a , r 2 a ,..., ); the yth first data packet of the selected column of the system matrix
- g Is the column of the selected system matrix, g is
- One of 1, 2, .., ?7 - is added; the obtained k second data packets are added (that is, XORed), and an encoded data packet p gj generated by the current coded identification code is obtained.
- the original data packet (length Z bits)
- the challenge is to successfully find a separate encoding package so that any one of the data packets (including the data packet and the encoding package) is linearly independent.
- a packet that satisfies the above conditions ( , 1) independent.
- the total number of redundant bits added per packet ⁇ head is r max maxic , coding block.
- k is not a prime number, but a positive integer fc. You can choose the smallest prime number and the code ID can be expressed as:
- P is a prime number
- n+k, k linearly independent packets.
- it is not a prime number it is also possible to construct a +k, k) linearly independent packet, except that (p-2) bit data is added to each original packet at this time.
- the MBR code with the parameters k, d) contains n nodes, denoted as ⁇ , ⁇ 2 , ..., ⁇ .
- the BMBR code is applied to a system containing two nodes, each of which stores a block of data.
- the data stored by any fe node ( ⁇ , ⁇ , ... ⁇ ) covers all the original data of the file, and is usually referred to as the system code.
- the remaining w-fe nodes, often referred to as check nodes, store the encoded data blocks.
- the file of size ⁇ is equally divided into & (fc + l)/2 copies, each size being L bits.
- Let s be a (fcx) symmetric system matrix whose upper triangular data comes from the set ⁇ c ; ⁇ ; 1 2 ,..., s . Because S is strictly symmetric matrix, a complete system matrix can be constructed accordingly.
- the matrix of the coded block stored by the check node is a corpse, and its specific form is:
- the BMBR code can always achieve accurate repair of the failed node while meeting the bandwidth limit specified by the minimum cut. Therefore, in terms of repairing bandwidth, the repair process of BMBR is optimal.
- the BMBR code is also an MBR code that satisfies the characteristics of all MDS codes. That is to say, the original data ⁇ can be recovered by downloading data from any k nodes. Usually, the bandwidth required for downloading during the regeneration process is fe 2 , which is obviously not optimal. Below we will give the optimal regeneration process, which can minimize the bandwidth required for planting during the repair process.
- the data collector can select any k data in the first column of the data matrix M, the second column any data, the third column any-2) data, until the fc column Plant a data. It can be known from the construction process of the BMBR code that any data of any column of the matrix M is independent of each other. At the same time, the matrix S is symmetrical. It can be seen that we only select the lower triangular data of the matrix 5" and the data of the matrix P. Therefore, the DC can obtain ⁇ linear independent packets, and finally decode the original file.
- the system has a total of -fc) check nodes, each check node stores fe coded data packets, and each data packet is k original data packets obtained by XOR operation. Therefore, the coding computational complexity is fe -fe) -1) XOR operation.
- RGC For RGC (based on GF(3 ⁇ 4), the same system has a check node, and each check node stores fe coded packets. The difference is that the code packet is passed through k raw packets in the finite field G ⁇ (g) The corresponding polynomial coefficients are selected and XORed.
- the traditional RGC encoding computes an exclusive-OR operation of fe—fe) (k- ⁇ ) and a multiplication operation on the finite field of y (w-t).
- each node stores only one packet.
- the amount of data required for the code is usually, in order to store a file of size ⁇ , it is necessary to store (+1)/2 times the RSO, :) the amount of data required for the code.
- the RS code encoding process is similar to RGC, so its computational complexity is finite field multiplication of + l)(n -k)11, and the exclusive-OR operation of (J - l)(k + ⁇ ) ⁇ n -k)ll.
- the system node can be understood as having a higher priority than the check node. That is, the system first repairs the system node and then repairs the check node. To repair a system node, at least one polling node is needed, and at most one check node is needed, thus repairing the XOR of a system node with a computational complexity of at least (-1) and at most 1). To repair a check node requires a system node, then the check node's repair computational complexity is an exclusive OR of k(k-1).
- the assisting node collects the data packets into the newly introduced node, and computes the data packet to regenerate the previously invalid data packet by computing. Therefore, the computational complexity of the entire repair process is at least 2 & 2 finite field multiplication, (2fc ( _l)) XOR.
- repairing a failed node requires the amount of data of the original file size to be reconstructed to reconstruct the original file, and then encodes the data packet stored by the failed node.
- the computational complexity of the repair process is a finite field multiplication of (fe 2 ( + l)/2 + W, an exclusive OR of ( 2 ( + 1)/2 + - 1).
- the BMBR code In order to recover the original file, the BMBR code requires an exclusive OR operation of &(fc - l)( +l)/2. Similarly, the decoding complexity of RGC ⁇ 3 of finite field multiplication, k 3 XOR operation.
- the decoding operation complexity of the RS code is a finite field multiplication operation of 2 ( + 1) / 2, and an exclusive OR operation of k z (k + l)/2.
- the minimum bandwidth regenerative code (BMBR) in this embodiment has the greatest advantage in that it greatly reduces the computational complexity in the codec process, and replaces the finite field complex operation with a simple and easy to implement XOR operation.
- the construction of the traditional RGC code is based on the finite field GF( ), the finite field addition, subtraction and multiplication designed in the encoding and decoding process.
- the binary minimum bandwidth reproducing code is different.
- the decoding code operation is limited to fast XOR operation, which greatly improves the rate of node repair and data block regeneration.
- the minimum bandwidth regenerated code not only reduces the computational complexity of the system, but also ensures that the bandwidth consumed during the node repair process is the smallest (ie, the original file size) and does not consume redundant bandwidth.
- bandwidth resources become more and more valuable, the benefits of BMBR codes are obvious.
- the BMBR code can guarantee that: the lost coding block can be directly downloaded to several subsets of other coding modules for repair; the lost coding block can be repaired by a fixed number of coding modules, and the fixed number is only related to how many modules are lost by the system. It has nothing to do with which modules are lost. Simultaneously,
- the data stored by the BMBR code repaired node is completely consistent with the failed node, that is, the exact repair, which greatly reduces the system operation complexity (such as metadata update, updated data broadcast, etc.).
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Algebra (AREA)
- Computing Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及一种最小带宽再生码的编码方法,包括如下步骤:将大小为B的原始数据平均分为k(k+1)/2个数据块,得到第一数据包;使用第一数据包构建尺寸为k×k的、对称的系统矩阵S;构建k个编码标识码,每个编码标识码包括k个元素;分别将所述系统矩阵的一列与编码标识码运算得到的编码数据包;分别选择n-k个不同的系统矩阵的列重复上述步骤,得到n-k个编码数据包集;以所述编码数据包集Pg的编码标识码编号g为其列号,构建大小为(n-k)×k的校验矩阵P;分别将所述系统矩阵和编码矩阵的每行存储到一个存储节点。本发明还涉及一种上述存储节点的修复方法。实施本发明的最小带宽再生码的编码和存储节点修复方法,具有以下有益效果:运算简单、开销小、修复带宽较小。
Description
一种最小带宽再生码的编码和存储节点修复方法
技术领域
本发明涉及分布式存储领域, 更具体地说, 涉及一种最小带宽再生码的编码和存储节点修复方法。
背景技术
随着计算机网络应用的迅速发展, 网络信息数据量变得越来越大, 海量信息存储变得尤为重要。 传统意义 的文件存储系统已经不能满足现有应用的大容量、 高可靠性、 高性能等方面的要求, 分布式存储系统以其高效的 可扩展性和高可用性成为存储海量数据的有效系统。 然而在分布式存储系统中, 存储数据的节点是不可靠的。 为 了能够由不可靠的存储节点提供可靠的存储服务, 需要在存储系统中引入冗余。 引入冗余最简单的方法就是对原 始数据直接备份,直接备份虽然简单但是其存储效率和系统可靠性不高, 而通过编码引入冗余的方法可以提高其 存储效率。 在目前的存储系统中, 编码方法一般采用 MDS码 (Maximum Distance Separable 最大距离可分 离), MDS码可以达到存储空间效率的最佳, 一个(A 1) MDS糾错码需要将一个原始文件分成 个大小相等的模 块, 并通过线性编码生成 个互不相关的编码模块, 由 ;个节点存储不同的模块, 并满足 MDS属性( 个编码模 块中任意 个就可重构原始文件)。 这种编码技术在提供有效的网络存储冗余中占有重要的地位, 特别适合存储 大的文件以及档案数据备份应用。 在分布式存储系统中, 把大小为 S的数据存储在 个存储节点中, 每个存储节点存储的数据大小为 α。 数据 接收者只需要连接并下栽 个存储节点中的任意 f个存储节点的数据即可恢复出原始数据 B, 这一过程称为数据 重建过程。 RS ( Reed-Solomon 里德-所罗门)码是满足 MDS码特性的一种码字。 当存储系统中的存储节点失 效时, 为了保持存储系统的冗余量, 需要恢复该失效节点存储的数据并将该数据存储在新节点中, 该过程称为修 复过程。 然而, 在修复过程中, RS码首先需要下栽 :个存储节点的数据并恢复出原始数据, 之后为新节点编码 出失效节点的存储数据。 为了恢复一个存储节点的数据而解码出整个原始数据显然对传输带宽是一种浪费。 然而, 系统节点失效或者文件损耗, 系统的冗余度会随着时间而逐渐减小, 因此需要一种机制来保证系统的 冗余。 文献 [R. Rodr igues and B. Li skov, "Hi gh Ava i l abi l i ty in DHTs: Erasure Coding vs. Repl i cat ion" , Workshop on Peer— to— Peer Sys tems (IPTPS) 2005. ]中提出的 EC码 ( Erasure Codes 纠措码) , 该码在存储 开销上是比较有效的,然而支持冗余恢复所需要的通信开销也比较大。 图 1表示只要系统中有效节点数 d≥ , 就可以从现有节点中获得原始文件; 图 2表示恢复失效节点所存储内容的过程。从图 1和图 2中可以看出整个恢
复过程是: 1 )首先从系统中的 f个存储节点中下栽数据并重构原始文件; 2 )由原始文件再重新编码出新的模块, 存储在新节点上。 该恢复过程表明修复任何一个失效节点所需要的网络负载至少为 个节点所存储的内容。
同时, 为了降低修复过程中所使用的带宽, 文献 [A. G. Dimaki s , P. G. Godfrey, M. J. Wainwr ight , K. Ramchandran, "Network coding for di s tr ibuted s torage sys tems" , IEEE Proc. INFOCOM, Anchorage , Al aska, May 2007. ]利用网络编码理论的思想提出了再生码 (RGC, Regenerating Codes), RGC码也满足 MDS码特性。 再生 码的修复过程中,新节点需要在剩下的存储节点中连接 个存储节点并分别从这 个存储节点中下栽 β大小的数 据, 所以 RGC码的修复带宽为 ύ? 。 同时给出了 RGC码功能修复的模型并提出了 RGC码的两类最佳码: 最小带宽 再生码 (MSR, Minimum-storage Regenerating)和最小修复带宽再生码 (MBR, Minimum-bandwidth Regenerating) RGC码的修复带宽优于 RS码, 但 RGC的修复过程需要连接 d(d>k)个存储节点 W称为修复节点)。 另外, 修复节 点需要对其存储的数据执行随机线性网络编码操作。 为了满足所有编码包是相互独立的, RGC码的运算需要在一 个较大的有限域内。
专利 PCT/CN2012/ 083174 中提出了一种实用射影自修复码的编码、数据重构及修复方法。 实用射影自修复码 ( PPS C , Practical Projective Self-repairing Codes ) 同样具有自修复码的两个典型属性: 丢失的编码模块可从其 他编码模块中下栽少于整个文件的数据进行修复; 丢失的编码模块从一个给定数的模块中修复,该给定数只与丢 失了多少模块数有关, 而与具体哪些模块丢失无关。 这些属性使得修复一个丢失模块的负栽比较低, 另外由于系 统中各节点地位相同、 负栽均衡使得在网络的不同位置, 可以独立并发地修复不同丢失模块。
该码字除了满足以上条件外还有以下特性: 当一个节点失效时, 可以有 (n - 1 ) /2 对修复节点可供选择; 当有(n - l ) /2 个节点同时失效时,我们仍然可以使用剩下的(n+l ) /2个节点中的 2 两个节点来修复失效节点。
PPSRC码的编码以及自修复过程仅涉及异或运算,并不像一般自修复码,其编码需要计算多项式相对较复杂, PPSRC码的计算复杂度小于 PSRC码( Projective Self-repairing Codes 射影自修复码) 。 同时, PPSRC码的修复带宽 和修复节点优于 MSR码。 PPSRC码的冗余是可控的, 适用于一般的存储系统, PPSRC码的重建带宽达到最佳。
总而言之, PPSRC码有效地减少了数据存储节点, 降低了系统数据存储的冗余度, 很大程度上提高了实用自 修复码的使用价值。
然而, PPSRC码也存在一定的不足之处。 首先, PPSRC码的编解码过程较为复杂, 有限域及其子域的划分运算 量相对较大, 并且数据重构过程比较繁瑣; 其次, 在 PPSRC码中, 编码模块是不可再分的, 因此修复编码模块也
必须是不可再分的。 同时, PPSRC码的整个编解码过程运算复杂度较高, 冗余量虽然可控但其实还是相当大的。 通常 PPSRC码存储节点数选取非常大, 对于相对小一些的文件来说就显得完全没有必要了。 这些均增加了 PPSRC 码在实际分布式存储系统中实施难度, 该射影自修复码通用性不强。 通过属性 当任意一个模块所存储的信息是由两个其他模块的信息异或而得到的情况下,任意两个模块 信息就可用来修复第三个模块,在文献 [A. Dumi nuco, E. B i ersack, "H i erarchi ca l Codes : How to Make Erasure Codes At t ract ive for Peer- to- Peer S torage Sys tems " , Peer- to- Peer Comput i ng (P2P) , 2008. ]中提出了 一种 HC码 ( Hierarchical Codes 分层码) 。 HC码是一种迭代构造, 从小的 EC码开始逐渐构成一个大的编码, 通 过异或由 EC码构造的子模块而产生。
其主要思想是: 考虑一个大小为 文件, 将文件分成 个子群, 每个子群包含 个未编码模块。 在每个 子群中使用一个(A EC码来产生 ^ 个局部冗余编码模块。 通过编码计划进一步由所有的 个未编码模块来 产生 r个全局冗余编码模块。 因此形成一个编码群, 将 ·?χ 个未编码模块编码成(s x r ) 个编码模块。 局部冗 余模块可以用来修复子群中节点的失效, 因此只需要访问少于整个文件大小的模块就可以进行修复; 而全局冗余 模块提供进一步修复保证, 即当一个子群中失效的模块太多而不能自修复时可通过全局冗余模块进行修复。 由于 HC码中系统结构不对称, 使得有些模块的地位或许比其他模块地位要高, 使得很难做一个深入的恢复力分析(影 响对编码有效性的理解) ; 在实际系统中如果利用该编码则需要更复杂的算法 (不管是重构还是修复) ; 在 HC 码中不同编码模块的地位不同, 因而修复丢失的模块所需要的模块数不仅仅取决于丢失的模块数,还与具体哪些 模块丟失有关; 同样地, 重构原始文件所需要的模块数可能也因不同的丢失模块而不同。
专利 PCT/CN2012/ 071177 中提出了一种 RGC码,该方案中修复一个丢失的编码模块只需要一小部分的数据量, 而不需要重构整个文件。 RGC码应用线性网络编码思想, 利用 NC ( Network Coding )属性(即最大流最小割) 来 改善修复一个编码模块所需要的开销,从网络信息论上可以证明用和丢失模块相同数据量的网络开销就可修复丢 失模块。
RGC码主要思想还是利用 MDS属性, 当网络中一些存储节点失效, 也就相当于存储数据丢失, 需要从现有有效 节点中下栽信息来使得丢失的数据修复丢失的数据模块, 并将其存储在新的节点上。 随着时间的推移, 很多原始 节点可能都会失效, 一些再生的新节点可以在自身再重新执行再生过程, 继而生成更多的新节点。 因此再生过程 需要确保两点: 1 )失效的节点间是相互独立的, 再生过程可以循环递推; 2 )任意 k个节点就足够恢复原始文件。 图 2描述了当一个节点失效后的再生过程。 分布式系统中 n个存储节点各自存储 "个数据, 当有一个节点失 效, 新节点通过从其他 个存活节点中下栽数据并用于节点再生, 每个节点的下栽量为 每个存储节点 i
通过一对节点 Χ " ' Χ Ι。"'来表示, 这对节点通过一个容量为该节点的存储量(即")的边连接。 再生过程通过一 个信息流图描述, Xi«从系统中任意 d个可用节点中各自收集 个数据, 通过 Χ¾ ^^ Χ。"'在 Χ。《'中存储 "个 数据, 任何一个接收者都可以访问 χ。"'。 从信源到信宿的最大信息流是由图中最小割集决定, 当信宿要重构原 始文件时, 这个流的大小不能低于原始文件的大小。 每个节点存储量 "和再生一个节点所需要的带宽 ^之间存在一个折中, 因此又引入最小带宽再生码 (MBR ) 和最小带宽再生码 (MSR ) 。 对于最小存储点可以知道每个节点至少存储 M/k比特, 因此可推出 MSR码中 M Md
yMSR)= (―, ) , 当 d取最大值即一个新来者同时和所有存活的 n-l个节点通信时, 修复带宽 k k(d— k + Ϊ) n = M n -l
««最小即 k n - k 而 MBR码拥有最小修复带宽, 可以推出当 d=n-l时, 获得最小修复负栽
对于节点失效修复问题, 考虑了三种修复模型: 精确修复: 失效的模块需要正确构造, 恢复的信息和丢失的 一样(核心技术为干扰队列和 NC ); 功能修复: 新产生的模块可以包含不同于丢失节点的数据, 只要修复的系统 支持 MDS码属性(核心技术为 NC ) ; 系统部分精确修复: 是介于精确修复和功能修复之间的一个混合修复模型, 在这个混合模型中, 对于系统节点(存储未编码数据)要求必须精确恢复, 即恢复的信息和失效节点所存储的信 息一样, 对于非系统节点 (存储编码模块) , 则不需要精确修复, 只需要功能修复使得恢复的信息能够满则 MDS 码属性 (核心技术为干扰队列和 NC ) 为了使 RGC码运用到实际的分布式系统中,即使不是最优情况也至少需要从 k个节点下栽数据才能修复丢失 模块, 因此即使修复过程所需要的数据传输量比较低, RGC码也需要高的协议负栽和系统设计(NC技术)复杂度 来实现。 另外 RGC码中未考虑工程解决方法, 如懒修复过程, 因此不能避免临时失效所带来的修复负栽。 最后基 于 NC的 RGC码的编解码实现所需要的计算开销比较大, 比传统的 EC码要高一个阶数。
发明内容
本发明要解决的技术问题在于, 针对现有技术的上述运算复杂、 开销大、 修复带宽较大的缺陷, 提供一种 运算简单、 开销小、 修复带宽较小的最小带宽再生码的编码和存储节点修复方法。
本发明解决其技术问题所采用的技术方案是: 构造一种最小带宽再生码的编码方法, 包括如下步驟:
A )将大小为 B的原始数据平均分为 ( + 1)/2个数据块, 每个数据块大小为 L比特, 得到第一数 据包; 所述第一数据包表示为 C; = Α,2.. ,,£,ί· = 1,2, , ^^ + 1)/2 ;
B )使用所述第一数据包构建尺寸为 kxk的、 对称的系统矩阵 S; 其中, 按照其编号依次取得第一数 据包,并将取得的第一数据包按照所述系统矩阵中元素所在列的顺序、逐行依次填入所述系统矩阵 S的上三角中, 得到所述系统矩阵 S的上三角;
C )构建 k个编码标识码, 每个编码标识码包括 k个元素; 分别将所述系统矩阵的一列中的第一数据 包按照一个标识编码中对应于该第一数据包编号的元素的值在该第一数据包的数据头或尾部加入设定数量的比 特 0, 得到 k个第二数据包, 运算所述 k个第二数据包得到一个编码数据包; 对所述系统矩阵中的该列使用不同 的编码标识码重复上述步骤得到 k个编码数据包;所述 k个编码数据包按使用的编码数据包的编号排列而得到一 个编码数据包集 Pg = Pg,lPg,2...pg,k, 其中, g =1,2,. 是由所述第 k个编码标识码和所述系统矩 阵的第 g列得到的编码数据包; 分别选择 n-k个不同的系统矩阵的列重复上述步骤, 得到 n-k个编码数据包集;
D )构建大小为 - k)x k的校验 阵 P,所述校验 阵 p的各行为依次排列的所述编码数据包集 Pg;
E)分别将所述系统矩阵中的每一行包括的第一数据包存储到一个存储节点, 得到 k个系统节点; 分 别将所述校验矩阵中的每一行存储到一个存储节点, 得到 n-k个校粉节点, 所述 n是存储节点总数。
更进一步地, 所述步骤 C)进一步包括如下步骤:
C1 )得到 k个编码标识码;
C2)取得一个编码标识码, 选择所述系统矩阵的一列, 对所选择的列的 k个第一数据包分别依据该编 码标识码中元素的最大值和该列中第一数据包所在行数对应的编码标识码元素值在该列第一数据包的数据头部 或尾部分别添加设定数量的比特 0, 得到 k个第二数据包; 对所述 k个第二数据包进行运算, 得到一个编码数据 包;
C3 )依次使用不同的编码标识码依次分别对所选择的系统矩阵的列重复步 * C2 ), 直到得到 n-k个编 码数据包; 将得到的编码数据包依次排列得到一个编码数据包集;
C4 )分别依次逸择所述系统矩阵中 k个不同的列并使用所述编码标识码重复步骤 C2 )和 C3 ), 得到 n-k 个编码数据包集。
更进一步地, 所述步驟 C1 )进一步包括:
C11)判断 k是否素数, 如是, 执行步骤 C12); 否则, 执行步驟 C13);
C12)按照(r/% ,···, ) = (0,iz,2fl"..,(&— l)a)mod ,i2 = l,2,...,w &, 分别将 α = 1,2,·.·,Μ ^带 入数列 (0,α,2β,...,(Α; - 1)£ζ) , 并对得到的数列中的元素分别取 k的模, 得到 n-k个编码标识码;
( ^:!取大于!^的最小素数 ,并按照^ /^,…,/^二 — ^^— …,^!— !!^ p,a = l,2,...,n-k , 分别将 <3 = 1, 2,...,n- k带入数列 - 1,2α - \,2α,-·Μ - 1) , 并对得到的数列中的元素分别取 p的模, 得到 n-k 个编码标识码。
更进一步地, 所述步驟 C2)进一步包括:
C21 )取得所述编码标识码中的最大值, 即 rmax = maxC^,^ ,..., ^);
C22 )在该系统矩阵被选择的列的第: V个第一数据包的数据头部添加等于当前使用的编码标识码中第 y个元素值的比特 0 , 而在该第一数据包的数据尾部添加 rmax - r 个比特 0, 得到一个第二数据包, 其中, y ^ l,2,...,k ; 依次分别对该列的 k-1 个第一数据包按照其在该列的行数取相同的 y值并重复上述步骤, 得到 k 个第二数据包; g是被选择的系统矩阵的列, g是 1,2,..,π _ 中的一个;
C23 )将得到的 k个第二数据包相加, 得到由当前编码标识码产生的一个编码数据包 pg j , 表示通过系 统矩阵的第 g列数据和第 j编码标识码运算得到的编码数据包。
更进一步地, 所述步骤 C4 ) 中进一步包括:
C41 )选择所述步骤 C2 ) 中编码标识码的相邻的下一个编码标识码;
C42 )将所述取得的编码标识码作为当前使用的编码标识码, 并重复步骤 C2 )和 C3 ), 直到所有的编 码标识码均已使用。
更进一步地, 所述步骤 B ) 中进一步包括:
B1 )将得到的第一数据包按照其编号取出, 并按照所述系统矩阵 S中元素所在列的顺序、 逐行依次填入 所述系统矩阵 S的上三角部分, 得到系统矩阵的上三角 ; 其中, B=k (k +O/ 2 ;
B2 )将上述步骤中得到上三角部分沿其对角线对折而得到该系统矩阵的下三角部分, 系统矩阵表示为: …
S
重复步骤 C3 ) 时分别得到的编码数据包集; 所述步骤 D ) 中, 还包括如下步驟: 将所述系统矩阵和所述校臉矩
S
阵排列为一个数据矩阵,并将该数据矩阵的每一行分别存储在各存储节点中;所述数据矩阵表示为: M
P 本发明还涉及一种修复存储上述编码数据存储节点的方法, 包括如下步骤:
I )确认存储节点失效, 判断失效存储节点的类型是否系统节点, 如是, 执行下一步骤; 否则, 执行步骤
K );
J )由剩余的每个正常的系统节点中下栽该存储节点存储的第 f个数据,即该系统节点位于系统矩阵第 f 列的数据,得到该失效节点中存储的 k-1个数据,所述/是失效的系统节点位于系统矩阵的行数; / = 1,2,..., ; 选择该列数据对应的校验节点下栽其存储的数据,使用所述由校臉节点下栽的数据和编码标识码运算, 并结合所 得到所述失效系统节点中存储的系统矩阵中一列的数据; 得到所述失效系统节点中的全部数据; 将得到的数据存
储在新的存储节点并使存储节点取代失效的系统节点;
K )取得产生失效校验节点所存储编码数据包集对应的系统矩阵的列号, 由所有系统节点中分别下栽一 个数据, 所述下载的数据是系统矩阵中一个完整的、 对应于所述取得列号的列; 使用所有编码标识码对所述下栽 的数据进行编码, 得到所述失效校验节点存储的数据 , 将其存储到新的存储节点并使其取代失效的校验节点。
更进一步地, 所述步驟 J )进一步包括:
J1 )取得失效系统节点在系统矩阵中的行数 / , 对于剩余正常的每个系统节点, 分别下栽其位于系统 矩阵的第/列的第一数据包;
J2 )选择存储由所述系统矩阵第 /列产生编码数据包集的校验节点下栽其存储的编码数据包, 使用下 栽的编码数据包和编码标识码进行编码运算的逆运算, 得到所述系统矩阵第 f列的第一数据包;
J3 ) 由所述系统矩阵的行、 列间的对应关系得到所述失效的系统节点存储的第一数据包。
更进一步地, 所述步驟 K )进一步包括:
K1 )确定失效的校验节点在编码矩阵中行数 e , e = l,2,.., n - k; 取得 k个编码标识码;
K2 )分别下栽 k个系统节点的第 e个第一数据包, 得到所述系统矩阵的第 e列数据; 取得编码标识码中 的最大值, 即 rmax = max^ , );
K3 )对于得到的系统矩阵第 e列数据, 分别使用取得的编码标识码对其进行编码处理, 得到存储在所述 失效节点的数据。
更进一步地, 所述步骤 Κ3 )进一步包括:
K31 )取得所述编码标识码中的最大值, 即 rmax = maxO , r2 fl,..., );
K32 )在该系统矩阵被选择的列的第 y个第一数据包的数据头部添加等于当前使用的编码标识码中第 y个元素值的比特 0 , 而在该第一数据包的数据尾部添加 rmax - r 个比特 0, 得到一个笫二数据包, 其中, y = l,2,...,k ; 依次分别对该列的 k-1 个第一数据包按照其在该列的行数取相同的 y值并重复上述步骤, 得到 k 个第二数据包; g是被选择的系统矩阵的列, g是 1,2,.., π _ 中的一个;
K33 )将得到的 k个第二数据包相加, 得到由当前编码标识码产生的一个编码数据包 pg j , 表示通过系 统矩阵的第 g列数据和第 j编码标识码运算得到的编码数据包。
实施本发明的最小带宽再生码的编码和存储节点修复方法, 具有以下有益效果: 传统 RGC码的构造基于有 限域 GF(¾ , 编解码过程中设计到的有限域加法、 减法以及乘法; 有限域的运算虽然理论研究比较成熟, 但实 际运用起来比较繁琐、 时间消耗大; 而在本实施例中, 由于减小了编解码过程中计算复杂度, 以简单易于实施的 异或运算取代了有限域复杂的运算。 其编解码的运算仅仅限于快速的异或运算(即上述的相加), 大大提高了节 点修复及数据块再生的速率; 本实施例中的二进制最小带宽再生码 (BMBR Binary Minimum-bandwidth Regenerating ) 不仅降低了系统运算复杂度, 同时可以保证节点修复过程中所消耗的带宽是最小的 (即原始文件
大小), 并不消耗多余的带宽。 在带宽资源越来越宝贵的今天, 上述 BMBR码带来的裨益是显然的。 BMBR码可以 保证: 丢失的编码块可以直接下栽其他编码模块的若干子集进行修复; 丢失的编码块可以通过固定数目的编码模 块进行修复, 该固定数目只与系统丢失了多少模块数有关, 而与具体哪些模块丢失无关。 同时, BMBR码修复后 的节点存储的数据和失效节点是完全一致的, 也就是精确修复, 很大程度上减少了系统操作复杂度因此。 综上, 其运算简单、 开销小、 修复带宽较小。
附图说明
图 1是现有技术中 EC码的数据重构示意图;
图 2是现有技术中 EC码的失效存储节点修复示意图;
图 3是现有技术中 RGC码的数据重构示意图;
图 4是本发明最小带宽再生码的编码和存储节点修复方法实施例中编码方法的流程图;
图 5是所述实施例中编码数据包的取得流程图;
图 6是所述是实施例中编码标识码的取得流程图;
图 7是所述实施例中存储节点的修复流程图;
图 8是所述实施例中编码数据包的取得示意图。
具体实施方式
下面将结合附图对本发明实施例作进一步说明。
如图 4所示, 在本发明最小带宽再生码的编码和存储节点修复方法实施例中, 该最小带宽再生码的编码方 法包括如下步骤:
步骤 S41 均分原始数据, 得到第一数据包: 在本步骤中, 将大小为 B的原始数据平均分为 (fe + l)/2个 数据块 , 每个数据块大 小 为 L 比特 , 得到 第 一数据 包; 所述第 一数据 包表示 为 = ,Α,2..Λ,£,ζ' = 1,2,〜, (^ + 1)/2 ; 在本实施例中' 为了简单起见' 作为一个例子' 设上述得到数据块 的大小为 1比特, 这样, 每个第一数据包中包括了一个比特的数据, 即 C; = b; 1; 这样, 在本实施例中, 上述参 数 B和 +ι)/2在数量上是相等的, 即 +ι)/2。
步骤 S42 使用得到的第一数据包构建系统矩阵: 在本步骤中, 使用上述步骤中得到的第一数据包构建尺 寸为 fe x 的、 对称的系统矩阵 S; 其中, 按照其编号依次取得第一数据包, 并将取得的第一数据包按照系统矩 阵 S中元素所在列的顺序、 逐行依次填入系统矩阵 S的上三角中, 得到系统矩阵 S的上三角。 也就是说, 在本 步骤中,通过使用上述步骤中得到的第一数据包,得到一个系统矩阵 S。在本实施例中,该系统矩阵是对称矩阵, 即以该矩阵的对角线为轴, 轴两侧的矩阵元素是对称的。 为此, 在本实施例中, 采用了先得到该系统矩阵的上三 角, 然后再将其对折, 得到整个系统矩阵的方法。 得到系统矩阵上三角的方法为: 按照第一数据包的编号(即在 其表达式中的下标 i )将其取出, 将 i=l的第一数据包放置在系统矩阵第 1行中的第 1列元素的位置上, 将 i=2 的第一数据包放置在系统矩阵第 1行中的第 2列元素的位置上,将 i=3的第一数据包放置在系统矩阵第 1行中的 第 3列元素的位置上, 以此类推, 放置到第 k个第一数据包时, 得到系统数据包的第 1行; 由于是构建系统矩阵 的上三角, 所以, 第 i=k+l个第一数据包放置到该系统矩阵 S的第 2行第 2列元素的位置, 按照上述方法, 第 k+2个第一数据包放置在该系统矩阵 S的第 2行第 3列, ......, 到第 2行第 k列时, 放置的是第 2k-l个第一数 据包。 总之, 在构建上述上三角时, 系统矩阵 S的第 1行按照上述方法填入 k个第一数据包( 到 ), 第 2行
填入 k-1个数据包( ck+1到 c2i— i ), 第 3行填入 k-2个第一数据包( clk到 c3i— 2 ), ...... , 第 k行填入 1个第一数 据包 ( ), 于是, 系统錄阵 S 的上三角共使用 fe x(fc l)x(fe 2)χ ( — 3)χ · · · χ 2χ 1 = ( — 1)/ 2 , 刚好将上 述步骤中得到的第一数据包用完。 得到系统矩阵的上三角后, 将其沿对角线对折, 得到系统矩阵 S。 也就是说, 在本实施例中, 将得到的第一数据包按照其编号取出, 并按照系统矩阵 S中元素所在列的顺序、逐行依次填入所 述系统矩阵 S的上三角部分, 得到系统矩阵 S的上三角部分为 ; 其中, B= ( k + O/2 ; 然后,将上述步骤中得到上三角部分沿其对角线对折而得到该系统矩阵 S的下三角部分,于是,系统矩阵表示为: s
步骤 S43 构建编码标识码, 并使用编码标识码得到编码数据包集: 在本步骤中, 构建 k个编码标识码, 每 个编码标识码包括 k个元素 (编码标识码的构建方法在稍后详述); 之后, 分别将系统矩阵 S的一列中的第一数 据包按照一个标识编码中对应于该第一数据包编号的元素的值在该第一数据包的数据头或尾部加入设定数量的 比特 0, 得到 k个第二数据包, 运算所述 k个第二数据包得到一个编码数据包; 对系统矩阵 S中的该列使用不同 的编码标识码重复上述步骤得到 k个编码数据包;所述 k个编码数据包按使用的编码数据包的编号排列而得到一 个编码数据包集/^ = Vg, Pg,i -Vg,k , 其中, g = l,2,..,n - k , / Α是由所述第 g个编码标识码和系统矩阵 S 的第 k列得到的编码数据包; 然后, 分别选择 n-k个不同的系统矩阵 S的列重复上述步骤, 得到 n-k个编码数据 包集。 也就是说, 在本实施例中, 选择系统矩阵 S中的一列, 先使用得到的 n-k个编码标识码中的一个(例如, 编号为 1编码标识码)对其进行添加比特 0的处理, 得到 k个第二数据包, 对得到的 k个第二数据包进行异或运 算, 得到一个编码数据包; 按照编码标识码的编号依次使用不同的编码标识码分别对该列进行相同的处理, 共得 到 k个编码数据包;将这些得到的编码数据包按照其处理时使用的编码标识码依次排列,得到一个编码数据包集。 分别再选择上述系统矩阵 S中 n-k-1个不同的列进行上述步驟, 共得到 n-k个编码数据包集。 值得一提的是, 在 本实施例中, 通常可以由系统矩阵 S的第一列开始, 一直选择到第 n-k列来运行上述步骤。
步骤 S44 使用编码数据包集构建校验矩阵: 在本步骤中, 构建大小为 _ k)x k的校验矩阵 P, 校验矩阵 P的各行为依次排列的所述编码数据包集 ; 即该校验矩阵 P的每行是一个上述得到的编码数据包集; 每行的 笫 1列是使用第 1个编码标识码得到的编码数据包, 第 2列是使用笫 2个编码标识码得到的编码数据包, 以此类 推, 第 k列是使用第 k个编码标识码得到的编码数据包; 校验矩阵 P中不同的行是选择系统矩阵 S不同的列而 得到的编码数据包集; 通常, 校验矩阵 P的行是按照别选择的系统矩阵 S的列号顺序排列的; 例如, 由系统矩 阵 S的笫一列得到的编码数据包集是校验矩阵 P的笫一行, 由系统矩阵 S的第二列得到的编码数据包集是校验
矩阵 P的第二行, 由系统矩阵 S的第三列得到的编码数据包集是校验矩阵 P的第三行, 并以此类推。 步骤 S45 将系统矩阵和校臉矩阵中的每行数据分别存储到不同的存储节点: 在本步骤中,分别将系统矩阵 S中的每一行包括的第一数据包存储到一个存储节点, 得到 k个系统节点; 分别将校臉矩阵 P中的每一行存储到 一个存储节点, 得到 n-k个校验节点, 以实现数据编码及存储。 其中, n是存储节点总数。
在本实施例中的步骤 S43中, 其编码数据包的取得具体包括如下步骤:
步骤 S51得到编码标识码: 在本步驟中, 得到 k个编码标识码 (取得编码标识码的具体步驟在稍后详述)。 每个编码标识码中包括 k个数值(或元素), 这些数值指示出该编码标识码用于与系统矩阵 S的列运算产生第二 数据包时, 应该在与该数值(编码识别码中的数值)位置对应的第一数据包的数据头部添加比特 0的个数。
步骤 S52按照所述编码标识码对所述每个笫一数据包在其数据头部或尾部添加设定数量的比特 0,得到 k个 第二数据包: 在本步骤中, 首先选择一个系统矩阵 S的列, 例如, 系统矩阵 S的第一列; 然后, 选择一个编码 识别码, 例如, 包括了 k个元素的第一个编码识别码, 使用该第一个编码识別码对该选择的列进行处理, 得到 k 个第二数据包。 处理过程如下: 取得该第一列的第一个第一数据包, 在其前面加该编码识别码中第一个元素值的 比特 0; 得到所有编码识别码中元素值的最大值, 将其与上述编码识别码中第一个元素值相减, 得到一个数值; 在该列第一个第一数据包的尾部增加上述相减得到数值个数的比特 0; 得到一个笫二数据包; 其中, 在该数据包 的数据尾部加入 rmax - / 个比特 0, 其中, rmax maxO 1 , ,..., rn ) , 为所有编码标识码中元素值的最大值, 是事先求得的, 通常其最大值为 k-1 ; 是该第一数据包在本次操作中对应的编码标识码的元素值。 如此, 得到 一个(例如, 系统矩阵 S第 1列第 1行的第一数据包对应的) 第二数据包; 在上述选择的系统矩阵 S的列中, 分别对其中位于不同行的第一数据包重复上述步骤, 得到 k个第二数据包。
步骤 S53对所述 k个第二数据包进行运算, 得到其编码数据包: 在本步驟中, 如上所述, 在选择的系统矩 阵列上, 使用一个编码识别码, 可以得到 k个第二数据包, 在本步骤中, 将上述得到的 k可第二数据包运算, 得 到一个编码数据包。 值得一提的是, 在本步骤中, 运算或相加都是指将这些数据包彼此相互异或。 对上述逸择的 系统矩阵 S的列分别使用剩余的 k-1个编码标识码重复上述步骤 S53和 S53 , 得到 k个编码数据包, 这 k个编码 数据包是在相同的系统矩阵 S的列上,使用不同的编码标识码而得到的。将得到 k个编码数据包按其使用的编码 标识码序号排列为一行, 得到一个编码数据包集。
步骤 S54得到 n-k个编码数据包集: 选择不同的系统矩阵 S的列, 重复上述步骤 S52到步骤 S53 , 直到得 到 n-k个编码数据包集; 所述 n-k个编码数据包集构成冗余符号。 将这些得到的编码数据包集按照其产生时选择 的系统矩阵 S的列号 (通常, 顺序选择系统矩阵 S的第 1、 2、 3 n-k列)排列为一列, 即可得到编码矩阵
P。
此外, 在本实施例中, 编码数据包的取得过程请参见图 8。 图 8从一个侧面表明了第一数据包、 第二数据包 及编码数据包之间的变换(转换) 关系。
图 6示出了在本实施例中得到编码标识码的具体步骤, 包括:
步骤 S61 判断 k是否为素数, 如果是, 执行步骤 S62; 否则, 执行步骤 S63; 在本实施例中, 这个 k就是 将原始数据平均分配为 + ι)/2部分的 k, 是依据原始数据的大小事先设定的。
步骤 S62按照 ) = (0, β,2β .., 0— mod , a = 1,2,..., fc ,得到 k个编码标识码: 在本实施 例中, 按照上述记栽, 分别将^! = 1,2,..., 带入数列(0,《,2 ,...,^ _ 1)^ , 并分别对得到的数列中的元素分別取 k的模, 得到 k个编码标识码。 每个 α分别代入数列并对其进行求模处理, 得到一个编码标识码, 其中, α的数 值就是该编码标识码的序号。
步骤 S63取大于 k的最小素数 ρ,并按照( r/1 , r2 a = (α - 1,2α - 1,..., ka - 1) mod ρ, α = 1,2,..., ρ - \ , 得到 k个编码标识码: 分别将 α = 1,2,..., ρ - 1带入数列 (α _ 1,2ο - 1,2β,..., β _ 1) , 并分别对得到的数列中的元 素分别取 Ρ的模,得到 k个编码标识码。每个 β分别代入数列并对其进行求模处理,得到一个编码标识码,其中, a的数值就是该编码标识码的序号。
实际的分布式存储系统中, 节点经常会发生失效。 这时需要引入新的节点, 替换失效的节点以保证系统冗余 维持在一定的范围内。 这一过程称为节点再生。 在本实施例中的最小带宽码中再生一个失效的节点, 并且最小化 所需的修复带宽, 可以通过如下方式进行:
步骤 S71 确认节点失效: 在本步骤中, 确认有存储节点失效。
步骤 S72 判断该失效节点的类型: 在本步骤中, 判断失效节点的类型, 就本实施例而言, 存储节点的类型 包括两种:一种是系统节点,一个系统节点存储系统矩阵 S中的一行数据,共有 k个系统节点;一种是校验节点, 一个校验节点存储所述校验矩阵 P中的一行数据, 共有 n-k个校验节点; 在本步骤中, 判断该失效节点是系统节 点还是校验节点, 如果是系统节点, 还要判断该失效的存储节点在系统节点中的编号, 例如, 是第/个系统节 点失效, 此时, /在 1到 k之间取值, 然后执行步骤 S73; 如果是校验节点, 还要判断该失效的存储节点在校验 节点中的编号,例如,是第 i个校验节点失效,此时, i在 1到 n-k之间取值, 然后执行步骤 S74。值得一提的是, 在本步骤的判断方法是结合实际的节点部署而得的。 例如, 在本实施例中, 选择 n个存储节点, 前 k个是系统节 点, 后面的 n-k个节点为校验节点。 由于系统在分配存储节点或分配存储节点所存储的数据时会记录相关节点分 S己信息, 通常是以元数据的形式存储。 这里的系统, 可以理解为一个服务器, 它负责调度、 管理以及所述节点失 效判断。 所以, 可以由系统中得到一个存储节点是系统节点还是校验节点的信息, 同时, 也可以得到该节点对应 的原始编码的列。
步骤 S73 选择剩余的 k-1个系统节点,分别下栽其中的第 f个数据,并选择对应的校验节点下栽其数据, 得到失效节点所存储的数据:在本步骤中,由剩余的每个正常的系统节点中下载该存储节点存储的第 f个数据, 即该系统节点位于系统矩阵第 f列的数据 (缺少一个失效节点的第 f个数据 ), 得到该失效节点中存储的 k-1个 数据 (在本实施例中,设发现一个失效节点就立即进行修复),其中, f是失效的系统节点位于系统矩阵的行数; f = l,2,...,k ; 选择该列数据对应的校验节点下栽其存储的数据(也就是由系统矩阵的、 上述下载的列与编码标 识码运算得到的校验数据 ), 使用所述由校验节点下载的数据和编码标识码运算, 并结合所得到失效系统节点中 存储的系统矩阵中一列 (即上述下栽了 k-1个数据的列)的已下栽数据; 得到失效系统节点中的全部数据; 将得
到的数据存储在新的存储节点并使存储节点取代失效的系统节点。在本步骤中, 由于可以由上述步骤中所述的系 统得到失效节点的相关编码信息, 对于每一个失效的校验节点, 总是可以找到其对应的原始编码的列数据。
也就是说, 在本步骤中, 取得失效系统节点在系统矩阵中的行数 / , 对于剩余正常的每个系统节点, 分别 下栽其位于系统矩阵的第 f列的第一数据包; 选择存储由所述系统矩阵第 f列产生编码数据包集的校验节点下 栽其存储的编码数据包,使用下栽的编码数据包和编码标识码进行编码运算的逆运算,得到所述系统矩阵第 f列 的第一数据包; 由所述系统矩阵的行、 列间的对应关系得到所述失效的系统节点存储的第一数据包。
步骤 S74取得失效节点对应的系统矩阵列号, 下栽该列数据, 编码得到失效校验节点存储的数据: 在本 步骤中, 取得产生失效校验节点所存储编码数据包集对应的系统矩阵的列号 e , e = l,2,-, n - k (该校验节点存 储的编码数据包集是由系统矩阵的该列数据和编码识别码运算而得到的),由所有系统节点中分別下栽一个数据, 下栽的数据是系统矩阵中一个完整的、 对应于取得列号的列 (及系统矩阵的第 e列); 使用所有编码标识码分别 对下载的列数据进行编码(与编码时的运算相同), 得到所述失效校验节点存储的数据, 将其存储到新的存储节 点并使其取代失效的校验节点。
步骤 S75 节点修复完成: 在执行完上述步骤 S73或步骤 S74之后, 执行本步驟, 使得到的新的存储节点 代替上述步骤中检测到的失效节点 , 完成节点的修复。
也就是说, 对于校验节点失效而言, 需要确定失效的校验节点在编码矩阵中行数 e , e = \,2,..,n - k ; 并 取得 k个编码标识码 (编码识别码是事先已知并存储的); 然后, 分别下栽 k个系统节点的第 e个第一数据包, 得到系统矩阵的第 e列数据; 对于得到的系统矩阵第 e列数据, 分别使用取得的编码标识码对其进行编码处理, 得到存储在所述失效节点的数据。
编码时, 取得所述编码标识码中的最大值, 即 rmax = max(r1 a , r2 a,..., ); 在该系统矩阵被选择的列的第 y 个第一数据包的数据头部添加等于当前使用的编码标识码中第 y个元素值的比特 0, 而在该第一数据包的数据尾 部添加 rmax - 个比特 0, 得到一个第二数据包, 其中, y = l,2,... ; 依次分别对该列的 k-1个第一数据包按照 其在该列的行数取相同的 y值并重复上述步骤, 得到 k 个第二数据包; g是被选择的系统矩阵的列, g是
1,2, .., ?7 - 中的一个; 将得到的 k个第二数据包相加 (也就是将其异或), 得到由当前编码标识码产生的一个编 码数据包 pg j , 表示通过系统矩阵的第 g列数据和第 j编码标识码运算得到的编码数据包。
在本实施例中, 对于 个原始的数据包(长度为 Z比特), 不妨记为 C;二 , ^… , = l, 2, ...,fc。 难点 在于成功找到 个独立的编码包, 使得 个数据包(包括数据包和编码包)中的任意 个数据包是线性独立的。 一般情况下, 我们把满足以上条件的数据包称为( , 1)独立。
例如, 取一个文件 S = 包含两个数据包 、 c2。 明显可以看出, 运用异或编码, 存在三个线性独 立的数据包 ®c2}。 然而, 这并不能满足分布式存储系统的要求。 如果我们在数据包 头部添加一个 比特 " 0" , 在数据包¾尾部添加一个比特 " 0"。 记变动后的数据包为 其中 是在数据包 头部添加的比 特数。 就上述三个数据包而言, 变动后的数据包和编码包是线性独立的。
一般来讲, k个原始的数据包 (长度为 L比特), 不妨记为 c,. = bi Xbi 2..bi L , i = 1, 2, ..., k , 编码包 ya通过 如下方式给出: ya = c101) e c2(r2)㊉…㊉ (rfc)。 每个数据包 ς·头部总共添加的冗余比特数目为
rmax maxic , 编码块 。唯一的标识符 (即编码标识码) 为 /)a =«, ,..·, )。 可以看出' 在数据包 ς·头部添加的 冗余比特等效于操作 (ζ·) = 2r^~r'ci。 如果 k 是任意素数 k, 编码块 y。 唯一的标识符 (即编码标识码) 可以通过如下方式得到, 即: ID = (r" ,r2°,..., γ ) = (0, a, 2α, ..., (k - ϊ)α) mod^, a = l,2,...,k.通过上述编码方式编码出的 n 个数 据 包 {CpC^,...,^,;^,}^..., yn_k)是线性独立的 。 例如 , 当 =5 , 编码标识相应地为 ID, = (0, 1, 2, 3, 4 , ID2 = (0, 2, 4, 1, 3)2,
/D3 =(0,3, 1,4, 2)3, / =(0, 4, 3, 2,1)4, /D5 = (0,0,0,0,0)5. 如果 k不是素数, 而是一个正整数 fc, 可以选择最小的素数 并且满 此时编码标识可以表示为:
( 。, r2。, ..., ) - (a -\,2a- 1, ka - 1) mod ρ,α- 1,2,..., p-l.
(^,^,...,^) = (0,0,...,0).
例 如 , 当 fe=4 时 , 取 ρ=5 , 编 码 标 识 相 应 地 为 ZD =(0,1,2, S^H^ =(1,3,0,2)2,
ID3 =(2,0, 3, 1)3 , ID4 = (3, 2, 1, 0)4 , ID5 = (0, 0, 0, 0)5. 综上所述, 对于任意正整数 fc: 如果 是素数的话, 通过在 fe个原始数据包头前添加 (p-l ) 比特数据 (P是 素数, 我们可以构造出 n+k, k) 线性独立的数据包。 如果 不是素数的话, 同样可以构造出 +k, k)线性独立的数据包, 只是此时在每个原始数据包添加 (p-2) 比特数据。 通常, 参数为 , k, d) 的 MBR码包含 n个节点, 记为 {Λ^,Ν2,...,Λ^}。 BMBR码应用于包含 Μ个节 点的系统中, 每个节点存储 个数据块。 任意 fe个节点存储的数据( {^},^^,...^ )涵盖了文件的所有原始数 据, 通常也将这种编码称为系统码。 剩下的 w-fe个节点, 通常称之为校验节点, 存储的是编码后的数据块。 将大小为 β的文件等分成& (fc + l)/2份, 每份大小为 L比特。 记 s为(fcx )对称的系统矩阵, 该矩阵的 上三角数据来自集合 {c;};=1 2,...,s。 因为 S严格对称矩阵, 所以相应地可以构造出完整的系统矩阵
其中, 是标识符为(0,ί',2ί',...,( — 1)ϊ),.πκκ1 的数据包相异或后的编码包。 比如说, 当 fc=3 时,
S =
当- -个系统节点 = 1,2,
别下载一个数据包进行修复。 具体地做法是, 所有选中的节点将其第 块数据包传输给该新引入的节点。 如果校 验节点尸 , = 1,2,..., η - k) 失效了, 同样需要引入新的节点进行替换, 此时可以从每个系统节点中分别 下栽一个数据包并进行相应的编码。编码的过程釆用失效节点的标识符,将编码成功后的数据块传送给新引入的 节点。 由于编码过程所采用的标识符与失效节点的标识符一样, 明显可以看出, 修复后的节点存储的数据和失效 节点是完全一致的。
无论是系统节点还是校验节点失效, BMBR码总是可以实现失效节点的精确修复, 同时满足最小割所规定 的带宽界限。 因此, 就修复带宽而言, BMBR的修复过程是最优的。
BMBR码同样是一种 MBR码, 满足所有 MDS码的特性。 也就是说, 从任意 k个节点下栽数据就可以恢复 出原始数据 β。 通常, 再生过程中下载所需要的带宽为 fe2, 这显然不是最优的。 下面我们将给出最优再生过程, 可以使得修复过程中下栽所需要的带宽最小。
最优再生过程如下:数据采集者 ( DC)可以逸择下栽数据矩阵 M第一列的任意 k个数据,第二列任意 ) 数据, 第三列任意 -2)个数据, 直到第 fc列下栽一个数据。 从 BMBR码的构造过程可以知道, 矩阵 M的任意 一列任意 个数据是相互独立的。 同时, 矩阵 S是对称的, 可以看出我们选择的只是矩阵 5"的下三角数据的以及 矩阵 P的数据。 因此, DC可以获得 β个线性独立的数据包, 最终解码出原始的文件。
由以上再生过程可以看出, 整个再生过程 DC下栽的数据总量为原始数据大小 B, 达到了理论上最优的修复 带宽。
BMBR码性能评估时, 主要分析比较本专利所提出的 BMBR码与传统 RGC、 RS码在编码、 解码以及修复
过程中的计算复杂度。
编码计算复杂度:
对于 BMBR码, 系统总共有 -fc) 个校验节点, 每个校验节点存储 fe个编码数据包, 每个数据包是 k个原 始数据包通过异或运算得到。 因此, 编码计算复杂度为 fe -fe) -1)异或运算。
对于 RGC (基于 GF(¾ ), 同样系统有 个校验节点, 每个校验节点存储 fe个编码数据包。 不同的是, 编码包是通过 k个原始数据包在有限域 G^(g)选择相应多项式系数, 进行异或运算得到的。 因而, 传统 RGC 编码计算复杂度为 fe —fe) (k-\ ) 的异或运算, 同时 y (w- t)的有限域 上的乘法运算。
对于 RS 码, 原始文件大小为 = (& + 1)/2, 每个节点仅仅存储一个数据包。 通常为了存储大小为 β 的文件, 需要存储( +1)/2倍的 RSO, :)码所需的数据量。 RS码编码过程和 RGC相似, 因此其计算复杂 度为 + l)(n -k)ll的有限域乘法运算, (J - l)(k + \){n -k)ll的异或运算。
修复计算复杂度:
对于 BMBR码的修复过程, 如果系统中同时有系统节点和校验节点失效的话, 系统节点可以理解为优先级 高于校验节点。 也就是说, 系统先修复系统节点然后在修复校验节点。 为修复一个系统节点, 至少需要一个校粉 节点、 至多需要 个校验节点, 因而修复一个系统节点的计算复杂度为至少( — 1)、 至多 1)的异或运 算。 修复一个校验节点需要 个系统节点, 则校验节点的修复计算复杂度为 k(k—l)的异或运算。
为了修复 RGC的一个节点, 个协助节点将 个数据包汇集于新引入的节点, 通过运算该节点通过运算将 个数据包再生成之前失效的数据包。 所以, 整个修复过程的计算复杂度至少为 2&2的有限域乘法运算、 (2fc( _l))的异或运算。
而对于 RS码, 修复一个失效的节点需要下栽原始文件大小的数据量以重建原始文件, 再编码生成失效节点 存储的数据包。 修复过程的计算复杂度为(fe2( + l)/2 + W的有限域乘法运算、 ( 2( + 1)/2 + — 1)的 异或运算。
解码计算复杂度:
为了恢复出原始文件, BMBR码需要&(fc—l)( +l)/2的异或运算。 相似地, RGC的解码复杂度为^ 3 的有限域乘法运算、 k3的异或运算。 RS码的解码运算复杂度为 2( + 1) / 2的有限域乘法运算、 kz(k + l)/2 的异或运算。
总结 BMBR码与传统 RGC、 RS码在编码、 解码以及修复过程中的计算复杂度, 如下表所示, 其中, X代表 异或运算, M代表有限域乘法运算:
本实施例中的最小带宽再生码 (BMBR )相比传统 RGC码, 最大的优势在于其大大减小了编解码过程中计 算复杂度, 以简单易于实施的异或运算取代了有限域复杂的运算。 传统 RGC码的构造基于有限域 GF( ), 编 解码过程中设计到的有限域加法、 减法以及乘法。 有限城的运算虽然理论研究比较成熟, 但实际运用起来比较繁 琐、 时间消耗大, 明显不能符合当今分布式存储系统快速可靠的设计指标。 二进制最小带宽再生码则不同, 编解 码的运算仅仅限于快速的异或运算, 大大提高了节点修复及数据块再生的速率, 在实际的分布式存储系统中具有 很高的应用价值和发展潜力。 本实施例中最小带宽再生码不仅降低了系统运算复杂度, 同时可以保证节点修复过程中所消耗的带宽是最 小的(即原始文件大小),并不消耗多余的带宽。在带宽资源越来越宝贵的今天, BMBR码带来的裨益是显然的。
BMBR码可以保证: 丢失的编码块可以直接下栽其他编码模块的若干子集进行修复; 丢失的编码块可以通过固 定数目的编码模块进行修复, 该固定数目只与系统丢失了多少模块数有关, 而与具体哪些模块丢失无关。 同时,
BMBR码修复后的节点存储的数据和失效节点是完全一致的, 也就是精确修复, 很大程度上减少了系统操作复 杂度(如元数据更新、 更新后的数据广播等)。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明 专利范围的限制。 应当指出的是, 对于本领域的普通技术人员来说, 在不脱离本发明构思的前提下, 还可以做出 若干变形和改进, 这些都属于本发明的保护范围。 因此, 本发明专利的保护范围应以所附权利要求为准。
Claims
1、 一种最小带宽再生码的编码方法, 其特征在于, 包括如下步骤:
A)将大小为 B的原始数据平均分为 + 个数据块, 每个数据块大小为 L比特, 得到第一数 据包; 所述笫一数据包表示为 c; = b; 1b;, ..b,,L ' = 1,2,..., + 1)/2 ;
B )使用所述第一数据包构建尺寸为 kxk的、 对称的系统矩阵 S; 其中, 按照其编号依次取得第一数 据包,并将取得的第一数据包按照所述系统矩阵中元素所在列的顺序、逐行依次填入所述系统矩阵 S的上三角中, 得到所述系统矩阵 S的上三角;
C )构建 k个编码标识码, 每个编码标识码包括 k个元素; 分别将所述系统矩阵的一列中的第一数据 包按照一个标识编码中对应于该第一数据包编号的元素的值在该第一数据包的数据头或尾部加入设定数量的比 特 0, 得到 k个第二数据包, 运算所述 k个第二数据包得到一个编码数据包; 对所述系统矩阵中的该列使用不同 的编码标识码重复上述步骤得到 k个编码数据包;所述 k个编码数据包按使用的编码数据包的编号排列而得到一 个编码数据包集 Pg = Pg lpg 2...pg k , 其中, g =l2,..,n-k , ρ 是由所述第 g个编码标识码和所述系统矩 阵的第 k列得到的编码数据包; 分别选择 n-k个不同的系统矩阵的列重复上述步骤, 得到 n-k个编码数据包集;
D ) 以所述编码数据包集 Pg的编码标识码编号 g为其列号, 构建大小为 - k)x k的校验矩阵 P;
E)分别将所述系统矩阵中的每一行包括的第一数据包存储到一个存储节点, 得到 k个系统节点; 分 别将所述校验矩阵中的每一行存储到一个存储节点, 得到 n-k个校验节点, 所述 n是存储节点总数。
2、根据权利要求 1所述的最小带宽再生码的编码方法, 其特征在于, 所述步骤 C)进一步包括如下步骤:
C1 )得到 k个编码标识码;
C2)取得一个编码标识码, 选择所述系统矩阵的一列, 对所选择的列的 k个第一数据包分别依据该编 码标识码中元素的最大值和该列中第一数据包所在行数对应的编码标识码元素值在该列第一数据包的数据头部 或尾部分别添加设定数量的比特 0, 得到 k个第二数据包; 对所述 k个第二数据包进行运算, 得到一个编码数据 包;
C3)依次使用不同的编码标识码依次分别对所选择的系统矩阵的列重复步 *C2), 直到得到 n-k个编 码数据包; 将得到的编码数据包依次排列得到一个编码数据包集;
C4 )分别依次逸择所述系统矩阵中 k个不同的列并使用所述编码标识码重复步骤 C2 )和 C3 ), 得到 n-k 个编码数据包集。
3、 根据权利要求 2所述的最小带宽再生码的编码方法, 其特征在于, 所述步驟 C1 )进一步包括:
C11)判断 k是否素数, 如是, 执行步骤 C12); 否则, 执行步骤 C13);
C12)按照(/ , ,...,/。) = (0,iz,2fl"..,(&— l)a)mod ,i2 = l,2,...,w &, 分别将 α = 1,2,·.·,"— ^带 入数列 (0,α,2β,...,(Α; - 1)α) , 并对得到的数列中的元素分别取 k的模, 得到 n-k个编码标识码;
( ^:!取大于!^的最小素数 ,并按照^ /^,…,/^二 — ^^— …,^!— !!^ p,a = l,2,...,n-k , 分别将 <3 = 1, 2,...,n- k带入数列 - 1,2α - \,2α,-·Μ - 1) , 并对得到的数列中的元素分别取 p的模, 得到 n-k
个编码标识码。
4、 根据权利要求 3所述的最小带宽再生码的编码方法, 其特征在于, 所述步骤 C2)进一步包括:
C21 )取得所述编码标识码中的最大值, 即 rmax = max(ri a,r^...,rk a);
C22 )在该系统矩阵被选择的列的第: V个第一数据包的数据头部添加等于当前使用的编码标识码中第 y个元素值的比特 0, 而在该第一数据包的数据尾部添加 r x -r 个比特 0, 得到一个第二数据包, 其中, y^l,2,...,k; 依次分别对该列的 k-1 个第一数据包按照其在该列的行数取相同的 y值并重复上述步骤, 得到 k 个第二数据包; g是被选择的系统矩阵的列, g是 l,2,..,w_ 中的一个;
C23 )将得到的 k个第二数据包相加, 得到由当前编码标识码产生的一个编码数据包 pg j , 表示通过系 统矩阵的第 g列数据和第 j编码标识码运算得到的编码数据包。
5、 根据权利要求 4所述的最小带宽再生码的编码方法, 其特征在于, 所述步骤 C4) 中进一步包括: C41 )选择所述步骤 C2) 中编码标识码的相邻的下一个编码标识码;
C42)将所述取得的编码标识码作为当前使用的编码标识码, 并重复步骤 C2)和 C3), 直到所有的编 码标识码均已使用。
6、 根据权利要求 5所述的最小带宽再生码的编码方法, 其特征在于, 所述步骤 B) 中进一步包括:
B1)将得到的第一数据包按照其编号取出, 并按照所述系统矩阵 S中元素所在列的顺序、 逐行依次填入 所述系统矩阵 S的上三角部分, 得到系统矩阵的上三角 ; 其中, B=k +ι)/2;
B2 )将上述步骤中得到上三角部分沿其对角线对折而得到该系统矩阵的下三角部分, 系统矩阵表示为: s k+
重复步骤 C3) 时分别得到的编码数据包集; 所述步驟 D) 中, 还包括如下步骤: 将所述系统矩阵和所述校验矩
S
阵排列为一个数据矩阵,并将该数据矩阵的每一行分别存储在各存储节点中;所述数据矩阵表示为: M
P
7、一种修复如权利要求 1所述的编码方法中存储节点的存储节点修复方法,其特征在于, 包括如下步骤: I)确认存储节点失效, 判断失效存储节点的类型是否系统节点, 如是, 执行下一步骤; 否则, 执行步骤
K);
J )由剩余的每个正常的系统节点中下栽该存储节点存储的第 f个数据,即该系统节点位于系统矩阵第 f 列的数据,得到该失效节点中存储的 k-1个数据,所述/是失效的系统节点位于系统矩阵的行数; / =1,2,..., ;
选择该列数据对应的校验节点下栽其存储的数据,使用所述由校验节点下栽的数据和编码标识码运算, 并结合所 得到所述失效系统节点中存储的系统矩阵中一列的数据; 得到所述失效系统节点中的全部数据; 将得到的数据存 储在新的存储节点并使存储节点取代失效的系统节点;
Κ )取得产生失效校验节点所存储编码数据包集对应的系统矩阵的列号, 由所有系统节点中分别下栽一 个数据, 所述下栽的数据是系统矩阵中一个完整的、 对应于所述取得列号的列; 使用所有编码标识码对所述下栽 的数据进行编码, 得到所述失效校验节点存储的数据 , 将其存储到新的存储节点并使其取代失效的校验节点。
8、 根据权利要求 7所述的存储节点修复方法, 其特征在于, 所述步骤 J )进一步包括:
J1 )取得失效系统节点在系统矩阵中的行数 / , 对于剩余正常的每个系统节点, 分别下栽其位于系统 矩阵的第/列的第一数据包;
J2 )选择存储由所述系统矩阵第 /列产生编码数据包集的校验节点下栽其存储的编码数据包, 使用下 栽的编码数据包和编码标识码进行编码运算的逆运算, 得到所述系统矩阵第 f列的第一数据包;
J3 ) 由所述系统矩阵的行、 列间的对应关系得到所述失效的系统节点存储的第一数据包。
9、 根据权利要求 8所述的存储节点修复方法, 其特征在于, 所述步骤 K )进一步包括:
K1 )确定失效的校验节点在编码矩阵中行数 e , e = l,2,..,n - k ; 取得 k个编码标识码;
K2 )分别下栽 k个系统节点的第 e个第一数据包, 得到所述系统矩阵的第 e列数据; 取得编码标识码中 的最大值, 即 rmax = maxO , /^ ,..., / 11 );
K3 )对于得到的系统矩阵第 e列数据, 分别使用取得的编码标识码对其进行编码处理, 得到存储在所述 失效节点的数据。
10、 根据权利要求 9所述的存储节点修复方法, 其特征在于, 所述步骤 K3 )进一步包括:
K31 )取得所述编码标识码中的最大值, 即 rmax = msLx(ri a , r^ ,..., rk a );
K32 )在该系统矩阵被选择的列的第 y个第一数据包的数据头部添加等于当前使用的编码标识码中第 y个元素值的比特 0 , 而在该第一数据包的数据尾部添加 r x - r 个比特 0, 得到一个笫二数据包, 其中, y = l,2,...,k ; 依次分别对该列的 k-1 个第一数据包按照其在该列的行数取相同的 y值并重复上述步驟, 得到 k 个第二数据包; g是被选择的系统矩阵的列, g是 1,2,.., M 中的一个;
K33 )将得到的 k个第二数据包相加, 得到由当前编码标识码产生的一个编码数据包 pg j , 表示通过系 统矩阵的第 g列数据和第 j编码标识码运算得到的编码数据包。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/996,825 US9722637B2 (en) | 2013-03-26 | 2013-03-26 | Construction of MBR (minimum bandwidth regenerating) codes and a method to repair the storage nodes |
CN201380001964.1A CN103688515B (zh) | 2013-03-26 | 2013-03-26 | 一种最小带宽再生码的编码和存储节点修复方法 |
PCT/CN2013/073180 WO2014153716A1 (zh) | 2013-03-26 | 2013-03-26 | 一种最小带宽再生码的编码和存储节点修复方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2013/073180 WO2014153716A1 (zh) | 2013-03-26 | 2013-03-26 | 一种最小带宽再生码的编码和存储节点修复方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2014153716A1 true WO2014153716A1 (zh) | 2014-10-02 |
Family
ID=50323345
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/CN2013/073180 WO2014153716A1 (zh) | 2013-03-26 | 2013-03-26 | 一种最小带宽再生码的编码和存储节点修复方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9722637B2 (zh) |
CN (1) | CN103688515B (zh) |
WO (1) | WO2014153716A1 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110268397A (zh) * | 2016-12-30 | 2019-09-20 | 日彩电子科技(深圳)有限公司 | 应用于数据仓库系统的高效优化数据布局方法 |
CN110750382A (zh) * | 2019-09-18 | 2020-02-04 | 华中科技大学 | 用于提高数据修复性能的最小存储再生码编码方法及系统 |
CN110781024A (zh) * | 2019-09-29 | 2020-02-11 | 长安大学 | 对称部分重复码的矩阵构造方法及故障节点修复方法 |
CN111475330A (zh) * | 2020-03-10 | 2020-07-31 | 长安大学 | 基于Harary图生成树的FRSH码的系统、构造及故障节点修复方法 |
CN113708780A (zh) * | 2021-08-13 | 2021-11-26 | 长安大学 | 一种基于shadow的部分重复码构造方法 |
Families Citing this family (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102624866B (zh) * | 2012-01-13 | 2014-08-20 | 北京大学深圳研究生院 | 一种存储数据的方法、装置及分布式网络存储系统 |
WO2013191658A1 (en) * | 2012-06-20 | 2013-12-27 | Singapore University Of Technology And Design | System and methods for distributed data storage |
US10187088B2 (en) * | 2014-04-21 | 2019-01-22 | The Regents Of The University Of California | Cost-efficient repair for storage systems using progressive engagement |
US8850108B1 (en) * | 2014-06-04 | 2014-09-30 | Pure Storage, Inc. | Storage cluster |
US10437525B2 (en) * | 2015-05-27 | 2019-10-08 | California Institute Of Technology | Communication efficient secret sharing |
CN105187159A (zh) * | 2015-09-07 | 2015-12-23 | 香港中文大学深圳研究院 | 一种用于代数交换引擎数据包分组重组的解码方法 |
CN105187160A (zh) * | 2015-09-07 | 2015-12-23 | 香港中文大学深圳研究院 | 一种用于代数交换引擎数据包分组重组的编码方法 |
WO2017041231A1 (zh) * | 2015-09-08 | 2017-03-16 | 广东超算数据安全技术有限公司 | 一种精确修复的二进制再生码编解码 |
CN105260259B (zh) * | 2015-09-16 | 2018-01-02 | 长安大学 | 一种基于系统最小存储再生码的局部性修复编码方法 |
CN105353974B (zh) * | 2015-10-08 | 2018-02-02 | 华东交通大学 | 一种适用于磁盘阵列及分布式存储系统的二容错编码方法 |
CN105245314B (zh) * | 2015-10-20 | 2019-07-30 | 北京中电普华信息技术有限公司 | 分布式存储系统中的混合冗余容错编解码方法及系统 |
CN105808170B (zh) * | 2016-03-22 | 2018-06-26 | 华东交通大学 | 一种能够修复单磁盘错误的raid6编码方法 |
CN106788891A (zh) * | 2016-12-16 | 2017-05-31 | 陕西尚品信息科技有限公司 | 一种适用于分布式存储的最优局部修复码构造方法 |
CN107086870B (zh) * | 2017-03-16 | 2019-10-22 | 东莞理工学院 | 修复多节点失效的mds阵列码编码以及解码方法 |
US10579495B2 (en) | 2017-05-18 | 2020-03-03 | California Institute Of Technology | Systems and methods for transmitting data using encoder cooperation in the presence of state information |
WO2019008748A1 (ja) * | 2017-07-07 | 2019-01-10 | 株式会社Asj | データ処理システムおよびこれを用いた分散データシステム |
CN108199720B (zh) * | 2017-12-15 | 2021-02-19 | 深圳大学 | 一种减小存储开销和提高修复效率的节点修复方法及系统 |
CN108512553B (zh) * | 2018-03-09 | 2022-09-27 | 哈尔滨工业大学深圳研究生院 | 一种降低带宽消耗的截短再生码构造方法 |
WO2020010505A1 (zh) * | 2018-07-10 | 2020-01-16 | 深圳花儿数据技术有限公司 | 分布式存储系统的数据同步修复方法及存储介质 |
US11531593B2 (en) * | 2018-09-03 | 2022-12-20 | Here Data Technology | Data encoding, decoding and recovering method for a distributed storage system |
WO2020199162A1 (zh) * | 2019-04-03 | 2020-10-08 | 东莞理工学院 | 一种用于数据中心的机架感知再生码 |
US11513898B2 (en) * | 2019-06-19 | 2022-11-29 | Regents Of The University Of Minnesota | Exact repair regenerating codes for distributed storage systems |
CN110990375B (zh) * | 2019-11-19 | 2023-01-31 | 长安大学 | 一种基于调节矩阵的异构部分重复码的构造方法 |
CN111125014B (zh) * | 2019-11-19 | 2023-02-28 | 长安大学 | 一种基于u-型设计的柔性部分重复码的构造方法 |
CN111224747A (zh) * | 2019-12-19 | 2020-06-02 | 湖北大学 | 可降低修复带宽和磁盘读取开销的编码方法及其修复方法 |
CN111385200B (zh) * | 2020-03-04 | 2022-03-04 | 中国人民解放军国防科技大学 | 用于数据块修复的控制方法和装置 |
CN111585581B (zh) * | 2020-05-14 | 2023-04-07 | 成都信息工程大学 | 一种基于二元域运算且支持任意码距的编码方法 |
CN111585582B (zh) * | 2020-05-14 | 2023-04-07 | 成都信息工程大学 | 一种基于阵列运算且码距自由确定的编码方法 |
CN112732203B (zh) * | 2021-03-31 | 2021-06-22 | 中南大学 | 一种再生码构造方法、文件重构方法及节点修复方法 |
CN113315525B (zh) * | 2021-06-03 | 2024-02-27 | 深圳市正粤知识产权服务有限公司 | 基于超立方体的局部修复码的构造及故障码元修复方法 |
CN113391948B (zh) * | 2021-06-29 | 2022-10-21 | 西安电子科技大学 | 一种折叠式可扩展分布式存储编码及修复、扩展方法 |
CN113553212B (zh) * | 2021-07-28 | 2023-07-18 | 哈尔滨工业大学(深圳) | 用于卫星集群存储网络的混合再生编码修复方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010033644A1 (en) * | 2008-09-16 | 2010-03-25 | File System Labs Llc | Matrix-based error correction and erasure code methods and apparatus and applications thereof |
CN101834898A (zh) * | 2010-04-29 | 2010-09-15 | 中科院成都信息技术有限公司 | 一种网络分布式编码存储方法 |
CN102624866A (zh) * | 2012-01-13 | 2012-08-01 | 北京大学深圳研究生院 | 一种存储数据的方法、装置及分布式网络存储系统 |
Family Cites Families (8)
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 |
EP2413506A1 (en) * | 2010-07-26 | 2012-02-01 | Thomson Licensing | Method for adding redundancy data to a distributed data storage system and corresponding device |
US20120266044A1 (en) * | 2011-04-18 | 2012-10-18 | The Chinese University Of Hong Kong | Network-coding-based distributed file system |
EP2570925A1 (en) * | 2011-09-19 | 2013-03-20 | Thomson Licensing | Method of exact repair of pairs of failed storage nodes in a distributed data storage system and corresponding device |
WO2013164228A1 (en) * | 2012-05-04 | 2013-11-07 | Thomson Licensing | Method of storing a data item in a distributed data storage system, corresponding storage device failure repair method and corresponding devices |
WO2013191658A1 (en) * | 2012-06-20 | 2013-12-27 | Singapore University Of Technology And Design | System and methods for distributed data storage |
US9271229B2 (en) * | 2012-07-20 | 2016-02-23 | The Trustees Of Columbia University In The City Of New York | Methods, systems, and media for partial downloading in wireless distributed networks |
US9647698B2 (en) * | 2013-02-26 | 2017-05-09 | Peking University Shenzhen Graduate School | Method for encoding MSR (minimum-storage regenerating) codes and repairing storage nodes |
-
2013
- 2013-03-26 CN CN201380001964.1A patent/CN103688515B/zh not_active Expired - Fee Related
- 2013-03-26 US US13/996,825 patent/US9722637B2/en active Active
- 2013-03-26 WO PCT/CN2013/073180 patent/WO2014153716A1/zh active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010033644A1 (en) * | 2008-09-16 | 2010-03-25 | File System Labs Llc | Matrix-based error correction and erasure code methods and apparatus and applications thereof |
CN101834898A (zh) * | 2010-04-29 | 2010-09-15 | 中科院成都信息技术有限公司 | 一种网络分布式编码存储方法 |
CN102624866A (zh) * | 2012-01-13 | 2012-08-01 | 北京大学深圳研究生院 | 一种存储数据的方法、装置及分布式网络存储系统 |
Non-Patent Citations (1)
Title |
---|
HAO, JIE ET AL.: "Survey for Regenerating Codes for Distributed Storage.", JOURNAL OF CHONGQING UNIVERSITY OF POSTS AND TELECOMMUNICATIONS ( NATURAL SCIENCE EDITION)., vol. 25, no. 1, February 2013 (2013-02-01), pages 30 - 37 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110268397A (zh) * | 2016-12-30 | 2019-09-20 | 日彩电子科技(深圳)有限公司 | 应用于数据仓库系统的高效优化数据布局方法 |
CN110750382A (zh) * | 2019-09-18 | 2020-02-04 | 华中科技大学 | 用于提高数据修复性能的最小存储再生码编码方法及系统 |
CN110750382B (zh) * | 2019-09-18 | 2020-10-30 | 华中科技大学 | 用于提高数据修复性能的最小存储再生码编码方法及系统 |
CN110781024A (zh) * | 2019-09-29 | 2020-02-11 | 长安大学 | 对称部分重复码的矩阵构造方法及故障节点修复方法 |
CN111475330A (zh) * | 2020-03-10 | 2020-07-31 | 长安大学 | 基于Harary图生成树的FRSH码的系统、构造及故障节点修复方法 |
CN113708780A (zh) * | 2021-08-13 | 2021-11-26 | 长安大学 | 一种基于shadow的部分重复码构造方法 |
CN113708780B (zh) * | 2021-08-13 | 2024-02-02 | 上海映盛网络技术股份有限公司 | 一种基于shadow的部分重复码构造方法 |
Also Published As
Publication number | Publication date |
---|---|
US9722637B2 (en) | 2017-08-01 |
US20160006463A1 (en) | 2016-01-07 |
CN103688515B (zh) | 2016-10-05 |
CN103688515A (zh) | 2014-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2014153716A1 (zh) | 一种最小带宽再生码的编码和存储节点修复方法 | |
CN103688514B (zh) | 一种最小存储再生码的编码和存储节点修复方法 | |
CN103124182B (zh) | 文件下载和流系统 | |
KR101355761B1 (ko) | 통신 시스템의 다중 필드 기반 코드 발생기 및 디코더 | |
JP5485008B2 (ja) | 連鎖的暗号化反応の系統的記号化および復号化 | |
US11500725B2 (en) | Methods for data recovery of a distributed storage system and storage medium thereof | |
WO2016058262A1 (zh) | 一种基于二进制域里德所罗门码的数据编解码方法 | |
CN113391946B (zh) | 一种分布式存储中的纠删码的编解码方法 | |
CN103650462B (zh) | 基于同态的自修复码的编码、解码和数据修复方法及其存储系统 | |
WO2014059651A1 (zh) | 一种射影自修复码的编码、数据重构及修复方法 | |
WO2017041232A1 (zh) | 一种二进制循环码的编解码框架 | |
WO2014012246A1 (zh) | 用于分布式网络存储的自修复码的编码、重构和恢复方法 | |
WO2017041233A1 (zh) | 一种功能修复再生码的编码和存储节点修复方法 | |
Yang et al. | Hierarchical coding to enable scalability and flexibility in heterogeneous cloud storage | |
CN115061640B (zh) | 一种容错分布存储系统、方法、电子设备及介质 | |
CN108199720B (zh) | 一种减小存储开销和提高修复效率的节点修复方法及系统 | |
WO2014005279A1 (zh) | 一种可精确再生的分布式存储码的构建方法及装置 | |
WO2017041231A1 (zh) | 一种精确修复的二进制再生码编解码 | |
CN110781025B (zh) | 基于完全图的对称部分重复码构造及故障节点修复方法 | |
CN104838626B (zh) | 一种通用射影自修复码的编码、数据重构和修复方法 | |
CN111475330B (zh) | 基于Harary图生成树的FRSH码的系统、构造及故障节点修复方法 | |
Pamies-Juarez et al. | Spider Codes: Practical erasure codes for distributed storage systems | |
CN114879904B (zh) | 一种数据存储纠删方法、装置、设备及可读存储介质 | |
Bhuvaneshwari et al. | LDPC Codes for Distributed Storage systems | |
Xie et al. | Two-layer locally repairable codes for distributed storage systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WWE | Wipo information: entry into national phase |
Ref document number: 13996825 Country of ref document: US |
|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 13880553 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: 13880553 Country of ref document: EP Kind code of ref document: A1 |