New Repair strategy of Hadamard Minimum Storage Regenerating Code for Distributed Storage System
aa r X i v : . [ c s . I T ] D ec New Repair strategy of Hadamard Minimum Storage Regenerating Codefor Distributed Storage System
Xiaohu Tang,
Member, IEEE , Bin Yang, and Jie Li
Abstract — The newly presented ( k +2 , k ) Hadamard minimum storage regenerating (MSR)code is the first class of high rate storage code with optimal repair property for all single nodefailures. In this paper, we propose a new simple repair strategy, which can considerably reducesthe computation load of the node repair in contrast to the original one. Index Terms —Distributed storage, MSR, Hadamard, repair strategy, computation load.
In distributed storage systems, data is placed on a number of storage nodes with redundancy.Redundancy is the basis for distributed storage systems to provide reliable access service. Nor-mally, there are two mechanisms of redundancy: replication and erasure coding. Compared withreplication, erasure coding is becoming more and more attractive because of much better storageefficiency. Up to now, some famous storage applications, such as Google Colossus (GFS2) [3],Microsoft Azure [5], HDFS Raid [4], and OceanStore [6], have adopted erasure coding.Due to the unreliability of individual storage nodes, node repair will be launched once nodefailures take place, so as to retain the same redundancy. With data growing much faster thanbefore, node repair becomes a regular maintenance operation now. In general, there are severalmetrics to evaluate the cost of node repair, such as disk I/O, network bandwidth, number ofaccessed disks, etc. Among these metrics, the repair bandwidth, defined as the amount of datadownloaded to repair a failed node, is the most useful. In [1], Dimakis et al. established a tradeoffbetween the storage and repair bandwidth where MBR (minimum bandwidth regenerating) codecorresponding to minimum repair bandwidth and MSR (minimum storage regenerating) codecorresponding to minimum storage are the most important.In this study, we focus on MSR codes with high rate. So far, several explicit constructionsof such MSR codes have been proposed based on the interference alignment technique [7, 8, 9].However, it should be noted that in all the aforementioned constructions except the one in [7],only the systematic nodes possess the optimal repair property. In [7], the first ( k, k + 2) MSRcode with optimal repair property for all storage nodes, including both k systematic nodes and2 parity nodes, was presented. Actually, the optimal repair property follows from Hadamarddesign with the help of lattice representation of the symbol extension technique. Therefore, wecall this code Hadamard MSR code throughout this paper.In this paper, we fully explore the fundamental properties of Hadamard design. As a result,we present a generic repair strategy for Hadamard MSR code only based on the elementarymathematics instead of the lattice knowledge. Further, the new generic repair strategy not only The authors are with the Information Security and National Computing Grid Laboratory, Southwest JiaotongUniversity, Chengdu, 610031, China (e-mail: [email protected], [email protected], [email protected]). k + 2 , k ) HadamardMSR code is briefly reviewed. In Section 3, some fundamental properties of Hadamard deignare studied to help the optimal repair. In Section 4, the new repair strategy is proposed forsystematic nodes, the first parity node and the second parity node respectively. The comparisonof computation load between the original strategy in [7] and ours is given in Section 5. Finally,Section 6 concludes this paper. ( k + 2 , k ) Hadamard MSR code
The ( k + 2 , k ) MSR code, consisting of k systematic nodes and 2 parity nodes, is a typicalhigh rate storage code in distributed storage system. Assume that the original data is of size M = kN , it can be equally partitioned into k parts f = [ f T , f T , · · · , f Tk ] T and placed on k systematic nodes, where f i is a N × N × f k +1 and f k +2 , of all the systematic nodes. Table 1 illustrates the structureof a ( k + 2 , k ) MSR code.Table 1: Structure of a ( k + 2 , k ) MSR codeSystematic node Systematic data1 f ... ... k f k Parity node Parity data1 f k +1 = f + · · · + f k f k +2 = A f + · · · + A k f k Let N = 2 k +1 . The ( k +2 , k ) Hadamard MSR code [7] is characterized by the coding matrices A , · · · , A k over finite field F q ( q ≥ k + 3) as A i = a i X i + b i X + I N , ≤ i ≤ kX j = diag( I j , − I j , · · · , I j , − I j | {z } k +1 − j ) , ≤ j ≤ k, (1)where I m is the identity matrix of order m , the elements a i = 0 and b i = 0 over the finite fieldof odd characteristic and order q ≥ k + 3 satisfy a i − b i = − , (2) a i ± a j = b i − b j ,a i ± a i = − ( b i − b j ) , for all 1 ≤ i = j ≤ k [7]. In fact, the matrices in (1) are built on Hadamard design [2].2s the same as other ( k + 2 , k ) MSR codes, this ( k + 2 , k ) Hadamard MSR code can tolerate 2arbitrary node failures [7]. Notably, recall that this Hadamard MSR code has an advantage overother ( k + 2 , k ) MSR codes that both systematic nodes and parity nodes have optimal repairproperty. Indeed, to repair a failed node 1 ≤ i ≤ k + 2, the optimal repair property requiresdownloading N/ k data from each surviving node 1 ≤ l = i ≤ k + 2 by multiplying itsoriginal data f l with a N/ × N matrix [7], which will be discussed in detail in Section 4. Example 1.
For k = 2 , the (4 , Hadamard MSR code has the following coding matrices over F A = diag(1 , , − , − , , , − , −
1) + 3 · diag(1 , − , , − , , − , , −
1) + I A = diag(1 , , , , − , − , − , −
1) + 4 · diag(1 , − , , − , , − , , −
1) + I Its repair matrices will be elaborated in Section 4.
Example 2.
For k = 3 , the (5 , Hadamard MSR code has the following coding matrices over F A = 2 · diag(1 , , − , − , , , − , − , , , − , − , , , − , −
1) +7 · diag(1 , − , , − , , − , , − , , − , , − , , − , , −
1) + I A = 2 · diag(1 , , , , − , − , − , − , , , , , − , − , − , −
1) +4 · diag(1 , − , , − , , − , , − , , − , , − , , − , , −
1) + I A = 6 · diag(1 , , , , , , , , − , − , − , − , − , − , − , −
1) +2 · diag(1 , − , , − , , − , , − , , − , , − , , − , , −
1) + I For 0 ≤ i ≤ k , to characterize the diagonal matrix X i in (1) from Hadamard design, we define x i = ( x ij ) N − j =0 to be the row vector of length N formed by its elements of the main diagonal, i.e., x i = ( i , − i , · · · , i , − i | {z } k +1 − i )where i is the all one row vector of length 2 i . For example, when k = 2, x = (1 , − , , − , , − , , − x = (1 , , − , − , , , − , − x = (1 , , , , − , − , − , − x i are obvious: • Alternative Property : x ij = − x ij +2 i for 0 ≤ j < N − i ; • Periodic Property : x ij = x ij +2 i +1 for 0 ≤ j < N − i +1 , i.e., x i has period 2 i +1 ; • Run Property : x ij = ( − ⌊ j/ i ⌋ for 0 ≤ j < N , i.e., x i has 2 k +1 − i runs of 1 or − i ; 3 Skew-symmetric Property : x ij = − x iN − − j for 0 ≤ j < N .Based on the above properties, we derive the following useful lemmas, which are crucial toour repair strategy. Lemma 1.
For any ≤ i, l ≤ k , j = µ l +1 + ν , ≤ µ < k − l , and ≤ ν < l , x ij = ( − x ij +2 l , i = lx ij +2 l , otherwise (3) Proof : Firstly, when i = l , (3) holds due to the alternative property. Secondly, when i < l ,(3) is true because of the periodic property. Thirdly, when i > l , write µ = µ i − l − + µ where0 ≤ µ < k +1 − i and 0 ≤ µ ≤ i − l − −
1, then ⌊ j i ⌋ = ⌊ j + 2 l i ⌋ = µ since 0 ≤ µ l +1 + 2 l + ν ≤ i − l +1 + 2 l + ν < i , which results in (3) by the run property. (cid:3) Lemma 2.
For any ≤ i ≤ k and ≤ j < N/ , x iN − − j − ( − j = ( x ij , i = 0 − x ij , < i ≤ k Proof : When i = 0, the result directly follows from the periodic property that x has period2 and 2 | ( N − − j − ( − j ).When 0 < i ≤ k , let j = µ i + ν where 0 ≤ µ < k +1 − i and 0 ≤ ν < i . According to therun property, x ij = ( − µ and x iN − − j − ( − j = ( − ⌊ N − − j − ( − j i ⌋ = ( − k +1 − i −⌈ j +( − j i ⌉ = ( − ⌈ j +( − j i ⌉ If j is even, 1 + j + ( − j = j + 2 = µ i + ν + 2, which implies ⌈ j +( − j i ⌉ = µ + 1 since0 ≤ ν ≤ i − j is odd, 1 + j + ( − j = j = µ i + ν , which still gives ⌈ j +( − j i ⌉ = µ + 1 since 1 ≤ ν ≤ i −
1. Therefore we always have x iN − − j − ( − j = ( − µ +1 = − x ij (cid:3) Sylvester Hadamard matrices are one of the earliest infinite family of Hadamard matricesrecursively defined by H = − ! and H k = H k − H k − H k − − H k − ! , k ≥ . (4)Normally, when a 2 k × k matrix, with each entry being 1 or −
1, is multiplied by a columnvector of length 2 k , we do not need multiplication and what we need are 2 k (2 k −
1) additions.But for the Sylvester Hadamard matrix, we can reduce the number of additions by means of therecursive property. 4 emma 3.
Let H k be the Sylvester Hadamard matrix in (4) and z be an arbitrary column vectorof length k where k is a positive integer. Then,(1) To compute H k · z , k · k additions are needed;(2) To compute ( H k − H k − ) z or ( H k − − H k − ) z , k k − k − additions are needed.Proof : Let N k denote the number of additions of H k · z .(1) We prove the first assertion by induction. Obviously, it is true for k = 1, i.e., N = 2.Note that H k z = H k − H k − H k − − H k − ! z z ! = H k − z + H k − z H k − z − H k − z ! (5)where z and z are two column vectors of length 2 k − . Then, we have N k = 2 N k − + 2 k = 2 k − N + ( k − k = k · k . (2) The second assertion follows directly from (5). (cid:3) Let { e , · · · , e k − } be the basis of F k q . For example, it can be simply chosen as the standardbasis e i = (0 , · · · , , , , · · · , | {z } k ) T (6)with only the i th entry being nonzero.In this section, we present our repair strategy respectively for the systematic nodes, the firstparity node, and the second parity node by giving the corresponding repair matrices, and thencheck the optimality. In order to repair the i th systematic node, 1 ≤ i ≤ k , one downloads data S i f l , 1 ≤ l = i ≤ k + 2, where the N/ × N repair matrix S i is S i = ( e , · · · , e i − | {z } i , e , · · · , e i − | {z } i , · · · , e k − i , · · · , e k − | {z } i , e k − i , · · · , e k − | {z } i )Let s ij be the j th column vector of S i . Obviously, s ij = e µ i + ν and s ij +2 i = s ij (7)where j = µ i +1 + ν , 0 ≤ µ < k − i and 0 ≤ ν < i .5hen, the data from two parity nodes are S i S i A i ! f i + k X l =1 ,l = i S i S i A l ! f l (8)where the second term is the interference resulted from systematic nodes except the failed one.To cancel the interference and recover the data f i , the optimal repair strategy requires [7]rank S i S i A i ! = N (9)and rank S i S i A l ! = N ≤ i = l ≤ k .Multiplying A l by S i , 1 ≤ l ≤ k , we get S i A l = (( a l x l + b l x + 1) s i · · · ( a l x lj + b l x j + 1) s ij · · · ( a l x lN − + b l x N − + 1) s iN − ) (11)Consider the submatrix of S i S i A l ! formed by columns j and j + 2 i where j = µ i +1 + ν ,0 ≤ µ < k − i and 0 ≤ ν < i , i.e.,∆ j = s ij s ij +2 i ( a l x lj + b l x j + 1) s ij ( a l x lj +2 i + b l x j +2 i + 1) s ij +2 i ! By Lemma 1, (2) and (7), we then haverank(∆ j ) = ( , if i = l , otherwisewhich results in (9) and (10). Example 3.
When k = 2 , for the (4 , Hadamard MSR code determined by the coding matricesgiven in Example 1, the repair matrices of systematic nodes 1 and 2 are respectively S = , S = In order to repair the first parity node, we need the following transformation y = f + · · · + f k y i = − f i , ≤ i ≤ k y = [ y T , · · · , y Tk ] T . The storage code can then be described as f k +1 − f ... − f k f f k +2 = I N N · · · N N I N · · · N ... ... . . . ...0 N N · · · I N I N I N · · · I N A A − A · · · A − A k · y where the first systematic node and the first parity node are exchanged.Thus, it suffices to repair the new first systematic node by respectively downloading data S f i , 1 ≤ i ≤ k , and ˜ S f k +2 , where the repair matrices S and ˜ S are S = ( e , e , · · · , e k − , e k − | {z } k , e k − , e k − , · · · , e , e | {z } k )˜ S = ( e , e , · · · , e k − , e k − | {z } k , − e k − , − e k − , · · · , − e , − e | {z } k )with the j th columns s j and ˜ s j satisfying s j = s N − − j ˜ s j = − ˜ s N − − j (12)for 0 ≤ j < N .Then, the data from the new first parity node and the second parity node can be expressedas S ˜ SA ! f k +1 − k X l =2 S ˜ S ( A − A l ) ! f l . The optimal repair strategy requires [7]rank S ˜ SA ! = N (13)and rank S ˜ S ( A − A l ) ! = N ≤ l ≤ k .According to (13) and (14), we investigate S ˜ SA ! = s · · · s j · · · s N − ( a x + b x + 1)˜ s · · · ( a x j + b x j + 1)˜ s j · · · ( a x N − + b x N − + 1)˜ s N − ! S ˜ S ( A − A l ) ! = s · · · s j ( a x + ( b − b l ) x − a l x l ) s · · · ( a x j + ( b − b l ) x j − a l x lj )˜ s j · · · s N − · · · ( a x N − + ( b − b l ) x N − − a l x lN − )˜ s N − ! The submatrices formed by columns j and N − − j , 0 ≤ j < N/
2, are respectively∆ j = s j s N − − j ( a x j + b x j + 1)˜ s j ( a x N − − j + b x N − − j + 1)˜ s N − − j ! = s j s j ( a x j + b x j + 1)˜ s j ( a x j + b x j − s j ! andΓ j = s j s N − − j ( a x j + ( b − b l ) x j − a l x lj )˜ s j ( a x N − − j + ( b − b l ) x N − − j − a l x lN − − j )˜ s N − − j ! = s j s j ( a x j + ( b − b l ) x j − a l x lj )˜ s j ( a x j + ( b − b l ) x j − a l x lj )˜ s j ! (15)by the skew-symmetric property and (12). In other words,rank(∆ j ) = 2 , rank(Γ j ) = 1which leads to (13) and (14). Example 4.
When k = 2 , for the (4 , Hadamard MSR code determined by the coding matricesgiven in Example 1, the repair matrices of the first parity node are S = , ˜ S = −
10 1 0 0 0 0 − − − Similar to the repair of the first parity node, the second parity node can be regarded as thefirst systematic node by the following transformation y = A f + · · · + A k f k y i = − A i f i , ≤ i ≤ k y = [ y T , · · · , y Tk ] T . With this transformation, the storage code can be described as f k +2 − A f ... − A k f k A f f k +1 = I N N · · · N N I N · · · N ... ... . . . ...0 N N · · · I N I N I N · · · I N A − A − − A − · · · A − − A − k · y where the three nodes, i.e., the first systematic node, the first parity node and the second paritynode, are cyclically shifted.Hence, it is sufficient to repair the new first systematic node by downloading data SA i f i ,1 ≤ i ≤ k , and ˜ S f k +1 , where the two repair matrices S and ˜ S are S = ( e , e , · · · , e k − , e k − | {z } k , e k − , e k − , · · · , e , e | {z } k )˜ S = ( e , e , · · · , e k − , e k − | {z } k , − e k − , − e k − , · · · , − e , − e | {z } k )with the j th columns s j and ˜ s j being s j = ( e j , ≤ j < N/ e N − − j − ( − j , N/ ≤ j < N ˜ s j = ( e j , ≤ j < N/ − e N − − j − ( − j , N/ ≤ j < N satisfying s j = s N − − j − ( − j ˜ s j = − ˜ s N − − j − ( − j (16)for 0 ≤ j < N/ S ˜ SA − ! f k +2 − k X l =2 S ˜ S ( A − − A − l ) ! A l f l The optimal repair strategy requires [7]rank S ˜ SA − ! = N (17)and rank S ˜ S ( A − − A − l ) ! = N ≤ l ≤ k . 9y (17) and (18), we need to discuss S ˜ SA − ! and S ˜ S ( A − − A − l ) ! where A − i = 2 − ( I N − a − i b i X X i + a − i X i )= 2 − I N + 2 − a − i X i ( I N − b i X ) , ≤ i ≤ k and A − − A − l = 2 − ( a − l b l X X l − a − b X X + a − X − a − l X l )= 2 − a − X ( I N − b X ) − − a − l X l ( I N − b l X ) , ≤ l ≤ k according to [7]. For simplicity of the characterization of the matrices A − and A − − A − l , wedefine p j = 2 − + 2 − a − x j (1 − b x j ) q lj = 2 − a − x j (1 − b x j ) − − a − l x lj (1 − b l x j )where 1 < l ≤ k and 0 ≤ j < N . By Lemma 2, we have p N − − j − ( − j = 2 − − − a − x j (1 − b x j )= − p j + 1and q lN − − j − ( − j = − q lj for 0 ≤ j < N/ ≤ j < N/
2, consider the submatrices formed by columns j and N − − j − ( − j inmatrices S ˜ SA − ! and S ˜ S ( A − − A − l ) ! , i.e.,∆ j = s j s N − − j − ( − j p j ˜ s j p N − − j − ( − j ˜ s N − − j − ( − j ! = s j s j p j ˜ s j p j ˜ s j − ˜ s j ! and Γ j = s j s N − − j − ( − j q lj ˜ s j q lN − − j − ( − j ˜ s N − − j − ( − j ! = s j s j q lj ˜ s j q lj ˜ s j ! That is, rank(∆ j ) = 2 and rank(Γ j ) = 1, which gives (17) and (18). Example 5.
When k = 2 , for the (4 , Hadamard MSR code determined by the coding matricesgiven in Example 1, the repair matrices of the second parity node are S = , ˜ S = − −
10 0 1 0 − − Comparison
In fact, in the original repair strategy [7] the basis { e , · · · , e k − } is chosen as the columnvectors of the Sylvester Hadamard matrix in (4). Whereas, for our strategy, { e , · · · , e k − } canbe any basis of F k q . In this sense, our new repair strategy generalizes the previous one in [7].Most importantly, by choosing the standard basis in (6), our new repair strategy can consid-erably reduce the computation, including both addition and multiplication, in contrast to theoriginal repair strategy in [7]. Indeed, the decrease comes from the fact that in each row, ournew repair matrices have 2 nonzero elements of 1 or − N nonzero elements of 1 or − Case 1. Computation load of the repair of systematic nodes
Since each S i · f l needs N/ k + 1) N/ i = l , note that in (11) S i A l has only two nonzero elements in each row,which indicates that there exists an N/ × N/ B l = diag( p l , · · · , p lN/ − ) (19)where p lµ i + ν = a l x lµ i +1 + ν + b l x µ i +1 + ν + 1, 0 ≤ µ < k − i and 0 ≤ ν < i such that S i A l = B l S i .Hence, the new strategy needs ( k − N additions and at most ( k − N/ N additions and at most 2 N multiplicationsare needed for the new strategy since the matrix S i S i A i ! − still has only two nonzero elementsin the each row. Therefore, totally (3 k + 1) N/ k + 3) N/ k +1)(2 k +1) N/ S i is equivalent to ( H k H k ) with respect to columns permutation; The interference can-cellation phase at most requires ( k − N/ N/ k − N / N ( N −
1) additions and at most N multiplications. Thus, totally( k + 3) N / k + 2 k − N additions and ( k + 3) N / Case 2. Computation load of the repair of the first parity node
Similarly to case 1, the new strategy needs (3 k + 1) N/ k + 3) N/ S · f k +2 needs N/ S · f i , 1 ≤ i ≤ k ; (2) For2 ≤ l ≤ k there exists an N/ × N/ B l = diag( a x + ( b − b l ) x − a l x l , · · · , a x N/ − + ( b − b l ) x N/ − − a l x lN/ − ) (20)such that ˜ S ( A − A l ) = B l S by (15); (3) The matrix S ˜ SA ! − has only two nonzero elementsin the each row.For the original strategy, ( k + 3) N / k + 2 k − N additions and ( k + 3) N / ase 3. Computation load of the repair of the second parity node During the download phase, the new strategy needs ( k + 1) N/ kN multiplications since (1) SA i · f i , 1 ≤ i ≤ k , needs N/ N multiplications;(2) ˜ S · f k +1 needs N/ k + 1) N/ k + 3) N/ k + 3) N / k − N/ k + 3) N / a l , b l , 1 ≤ l ≤ k , and the finite field F q . For the new strategy,the number of multiplications can be further reduced if set a l ± b l = ± a ± ( b − b l ) ± a l = ± − B l given by (19) or (20), which is feasibleby the equations (81) and (82) in [7]. As for the old strategy, it seems hard to be analyzed becausethere are too many nonzeros in the Sylvester Hadamard matrix.Table 2: Comparison between the original and new strategies for ( k, k + 2) Hadamard MSR codeNode Repairto repair strategy ADD MULSystematic New (3 k + 1) N/ ≤ ( k + 3) N/ ≤ ( k + 3) N / k + 2 k − N ≤ ( k + 3) N / k + 1) N/ ≤ ( k + 3) N/ ≤ ( k + 3) N / k + 2 k − N ≤ ( k + 3) N / k + 1) N/ ≤ (3 k + 3) N/ ≤ (3 k + 3) N / k − N/ ≤ (3 k + 3) N / k = 2 and k = 3. It can be seen our new repair strategyneeds much less computation. Example 6.
When k = 2 , for the (4 , Hadamard MSR code determined by the coding matricesgiven in Example 1, the computation load is given in Table 3.
Example 7.
When k = 3 , for the (5 , Hadamard MSR code determined by the coding matricesgiven in Example 2, the computation load is given in Table 4.
In this paper, a new repair strategy of Hadamard MSR code was presented, which can beregarded as a generalization of the original repair strategy. By choosing the standard basis, ourstrategy can dramatically decrease the computation load in contrast to the original one.12able 3: computation load of (4 ,
2) Hadamard MSR codeNode Repairto repair strategy ADD MULSystematic New 28 17node 1 Original 132 28Systematic New 28 17node 2 Original 132 28Parity New 28 15node 1 Original 132 24Parity New 28 20node 2 Original 152 120Table 4: computation load of (5 ,
3) Hadamard MSR codeNode Repairto repair strategy ADD MULSystematic New 80 42node 1 Original 528 128Systematic New 80 42node 2 Original 528 128Systematic New 80 28node 3 Original 528 256Parity New 80 44node 1 Original 528 272Parity New 80 66node 2 Original 736 57613 eferences [1] A.G. Dimakis, P.G. Godfrey, Y. Wu, M.J. Wainwright, and K. Ramchandran, “Networkcoding for distributed storage systems,”
IEEE Trans. Inf. Theory , vol. 56, no. 9, pp. 4539-4551, Sep. 2010.[2] J.H. Dinitz and D.R. Stinson, “A brief introduction to design theory,” in
ContemporaryDesign Theory: A Collection of Surveys , J.H. Dinitz and D.R. Stinson, Eds. New York:Wiley, 1992, chap. 1, pp. 1-12.[3] Google-GFS2 Colossus, , Google, 2012.[4] HDFS-Raid, http://wiki.apache.org/hadoop/HDFS-RAID .[5] C. Huang, H. Simitci, Y. Xu, A. Ogus, B. Calder, P. Gopalan, J. Li, and S. Yekhanin, “Era-sure coding in Windows Azure storage,” in
Proceedings of the USENIX Annual TechnicalConference (ATC) , 2012.[6] J. Kubiatowicz, D. Bindel, Y. Chen, S. Czerwinski, P. Eaton, D. Geels, R. Gummadi, S.Rhea, H. Weatherspoon, W. Weimer, C. Wells, and B. Zhao, “OceanStore: An architecturefor global-scale persistent storage,” in
Proceedings of the 9th ACM International Conferenceon Architectural Support for Programming Languages and Operating Systems , pp. 190-201,Boston, MA, Nov. 2000.[7] D.S. Papailiopoulos, A.G. Dimakis, and V.R. Cadambem, “Repair optimal erasure codesthrough Hadamard designs,”
IEEE Trans. Inf. Theory , vol. 59, no. 5, May. 2013.[8] I. Tamo, Z. Wang, and J. Bruck, “Zigzag codes: MDS array codes with optimal rebuilding,”
IEEE Trans. Inf. Theory , vol. 59, no. 3, Mar. 2013.[9] Z.Y. Wang, I. Tamo, and J. Bruck, “Long MDS codes for optimal repair bandwidth,”in