IP Library Granted Patent US 8,694,866
Granted Patent B2
US 8,694,866 · App. 13/421,723 · Granted Apr 8, 2014

MDS array codes with optimal building

Inventors: Itzhak Tamo (Pasadena, CA); Zhiying Wang (Pasadena, CA); Jehoshua Bruck (La Canada, CA)
Assignee: California Institute of Technology
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,694,866
App. No.
13/421,723
Granted
Apr 8, 2014
Kind
B2
Abstract

MDS (maximum distance separable) array codes are widely used in storage systems to protect data against erasures. The rebuilding ratio problem is addressed and efficient parity codes are proposed. A controller as disclosed is configured for receiving configuration data at the controller that indicates operating features of the array and determining a parity code for operation of the array according to a permutation, wherein the configuration data specifies the array as comprising nodes defined by A=(a i,j ) with size r m ×k for some integers k,m, and wherein for T={v 0 , . . . , V k-1 } ⊂ Z r m a subset of vectors of size k, where for each v=(v 1 , . . . , v m )∈T, gcd (v 1 , . . . , v m , r), where gcd is the greatest common divisor, such that for any l, 0≦l≦r−1, and v ∈T, the code values are determined by the permutation f v l :[0,r m −1]→[0,r m −1]by f v l (x)=x+lv.

Claims (495)

1. A computer method of operating a controller of an array of storage nodes, the method comprising:

receiving configuration data at the controller that indicates operating features of the array; and

determining a parity code for operation of the array according to a permutation, wherein the configuration data specifies the array as comprising nodes defined by A=(a i,j ) with size r m ×k for some integers k,m, and wherein for T={v 0 , . . . , v k−1 } ⊂ Z r m a subset of vectors of size k, where for each v=(v 1 , . . . , v m ) ∈T, gcd(v 1 , . . . , v m ,r), where gcd is the greatest common divisor, such that for any l, 0≦l≦r−1, and v ∈T, the code values are determined by the permutation f v l :[0,r m −1]→[0,r m −1] by f v l (x)=x+lv.

2. The computer method of claim 1 , wherein A specified by the configuration data comprises A=(a i,j ), an array of size 2 m ×k for some integers k, m, and k≦2 m , and wherein for T ∈ F 2 m is a subset of vectors of size k that does not contain the zero vector, and for v ∈T the permutation is given by f v :[0,2 m −1]→[0,2 m −1] by f v (x)=x+v, where x is represented in its binary representation.

3. The computer method of claim 2 , wherein for the permutations f 0 , . . . , f m and for sets X 0 , . . . , X m constructed by the vectors {e i } i+0 m , the set X 0 is modified to be X 0 ={x ∈F 2 m :x·(1,1, . . . , 1)=0}.

4. The computer method of claim 2 , further comprising generating an s-duplication code of the code values, such that generating the s-duplication code comprises assigning α i,j (t) =1 for all i, j, t, such that for odd q, and s≦q−1 and assigning for all t∈[0,s−1]

β

i

,

j

(

t

)

=

{

a

t

+

1

,

if

u

j

·

i

=

1

a

t

,

o

.

w

.

where u j =Σ l=0 j e l and for even q (powers of 2), and s≦q−2 and assigning for all t ∈[0,s−1]

β

i

,

j

(

t

)

=

{

a

-

t

-

1

,

if

u

j

·

i

=

1

a

t

+

1

,

o

.

w

..

5. The computer method of claim 3 , wherein the code comprises a (k+2, k) MDS (maximum distance separable) array code, and the array has size 2 m ×(k+2), wherein the permutations are defined by f j , j ∈[0, k−1] and for systematic information elements a i,j , and for row and zigzag parity elements r i and z i , respectively, for i ∈[0,2 m −1], j ∈[0, k−1] and for row coefficients given by α i,j =1 for all i,j, and zigzag coefficients given by β i,j in some finite field F, the method further comprising:

for a single erasure,

(1) where one parity node is erased, rebuilding the row parity according to

r

i

=

j

=

0

k

-

1

a

i

,

j

,

 and rebuilding the zigzag parity by

z

i

=

j

=

0

k

-

1

β

f

j

-

1

(

i

)

,

j

a

f

j

-

1

(

i

)

,

j

.

;

(2) where one information node j is erased, rebuilding the elements in rows X j and those in rows X j by zigzags; and

for two erasures,

(1) where two parity nodes are erased, rebuilding by the one parity erasure rebuilding,

(2) where one parity node and one information node is erased, and if the row parity node is erased, then rebuild by zigzags; otherwise rebuilding by rows;

(3) where two information nodes j 1 and j 2 are erased, then

if f j 1 =f j 2 , for any i ∈[0,2 m −1], computing

x i =r i −Σ j≠j 1, j 2 a i,j

y i =z f j1 (i) −Σ j≠j 1, j 2 β f j −1 f j 1 (i),j a f j −1 f j 1 (i),j ;

solving a i,j 1 , a i,j 2 from the equations

[

1

1

β

i

,

j

1

β

i

,

j

2

]

[

a

i

,

j

1

a

i

,

j

2

]

=

[

x

i

y

i

]

 else, for any i ∈[0,2 m −1], setting i′=i+f j 1 (0)+f j 2 (0), and computing x i , x i′ , y i , y i′ , according to the two information nodes operation (3) and then solving a i,j 1 , a i,j 2 , a i′,j 1 , a i′,j 2 from equations

[

1

1

0

0

0

0

1

1

β

i

,

j

1

0

0

β

i

,

j

2

0

β

i

,

j

2

β

i

,

j

1

0

]

[

a

i

,

j

1

a

i

,

j

2

a

i

,

j

1

a

i

,

j

2

]

=

[

x

i

x

i

y

i

y

i

]

.

6. A controller of an array of storage nodes, the controller comprising:

a host interface through which the controller communicates with a host computer;

a node interface through which the controller communicates with the array of storage nodes;

a processor that operates a controller application for:

receiving configuration data at the controller that indicates operating features of the array; and

determining a parity code for operation of the array according to a permutation, wherein the configuration data specifies the array as comprising nodes defined by A=(a i,j ) with size r m ×k for some integers k,m, and wherein for T={v 0 , . . . , v k−1 } ⊂ Z r m a subset of vectors of size k, where for each v=(v 1 , . . . , v m )∈T, gcd(v 1 , . . . , v m , r), where gcd is the greatest common divisor, such that for any l, 0≦l≦r−1, and v ∈T, the code values are determined by the permutation f v l :[0, r m −1]→[0,r m −1]by f v l (x)=x+lv.

7. The controller of claim 6 , wherein A specified by the configuration data comprises A=(a i,j ), an array of size 2 m ×k for some integers k, m, and k≦2 m , and wherein for T ⊂ F 2 m is a subset of vectors of size k that does not contain the zero vector, and for v ∈ T the permutation is given by f v :[0,2 m −1]→[0,2 m −1]by f v (x)=x+v, where x is represented in its binary representation.

8. The controller of claim 7 , wherein for the permutations f 0 , . . . , f m and for sets X 0 , . . . , X m constructed by the vectors {e i } i=0 m , the set X 0 is modified to be X 0 ={x ∈F 2 m : x·(1,1, . . . , 1)=0}.

9. The controller of claim 7 , further comprising generating an s-duplication code of the code values, such that generating the s-duplication code comprises assigning α i,j (t) =1 for all i, j, t, such that for odd q, and s≦q−1 and assigning for all t ∈[0,s−1]

β

i

,

j

(

t

)

=

{

a

t

+

1

,

if

u

j

·

i

=

1

a

t

,

o

.

w

where u j =Σ l=0 j e l , and for even q (powers of 2), and s≦q−2 and assigning for all t ∈[0,s−1]

β

i

,

j

(

t

)

=

{

a

-

t

-

1

,

if

u

j

·

i

=

1

a

t

+

1

,

o

.

w

..

10. The controller of claim 8 , wherein the code comprises a (k+2, k) MDS (maximum distance separable) array code, and the array has size 2 m ×(k+2), wherein the permutations are defined by f j , j ∈[0,k−1]and for systematic information elements α i,j , and for row and zigzag parity elements r i and z i , respectively, for i ∈[0,2 m −1], j ∈[0,k−1] and for row coefficients given by α i,j , =1 for all i, j , and zigzag coefficients given by β i,j in some finite field F, the method further comprising:

for a single erasure,

(1) where one parity node is erased, rebuilding the row parity according to

r

i

=

j

=

0

k

-

1

a

i

,

j

,

 and rebuilding the zigzag parity by

z

i

=

j

=

0

k

-

1

β

f

j

-

1

(

i

)

,

j

a

f

j

-

1

(

i

)

,

j

.

;

(2) where one information node j is erased, rebuilding the elements in rows X j and those in rows X j by zigzags; and

for two erasures,

(1) where two parity nodes are erased, rebuilding by the one parity erasure rebuilding,

(2) where one parity node and one information node is erased, and if the row parity node is erased, then rebuild by zigzags; otherwise rebuilding by rows;

(3) where two information nodes j 1 and 1 2 are erased, then if f j 1 =f j 2 , for any i ∈[0,2 m −1], computing

x i =r i −Σ j≠j 1, j 2 a i,j

y i =z f j1 (i) −Σ j≠j 1, j 2 β f j −1 f j 1 (i),j a f j −1 f j 1 (i),j ;

solving a i,j 1 ,a i,j 2 from the equations

[

1

1

β

i

,

j

1

β

i

,

j

2

]

[

a

i

,

j

1

a

i

,

j

2

]

=

[

x

i

y

i

]

 else, for any i ∈[0,2 m −1 ], setting i′=i+f j 1 (0)+f j 2 (0), and computing x i , x i′ , y i , y i′ according to the two information nodes operation (3) and then solving a i,j 1 , a i,j 2 a i′,j 1 , a i′,j 2 from equations

[

1

1

0

0

0

0

1

1

β

i

,

j

1

0

0

β

i

,

j

2

0

β

i

,

j

2

β

i

,

j

1

0

]

[

a

i

,

j

1

a

i

,

j

2

a

i

,

j

1

a

i

,

j

2

]

=

[

x

i

x

i

y

i

y

i

]

.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 26, 2012
From: TAMO, ITZHAK; WANG, ZHIYING; BRUCK, JEHOSHUA
To: CALIFORNIA INSTITUTE OF TECHNOLOGY
Reel/Frame 028447/0380 →
CONFIRMATORY LICENSE Recorded Jun 15, 2012
From: CALIFORNIA INSTITUTE OF TECHNOLOGY
To: NATIONAL SCIENCE FOUNDATION
Reel/Frame 028381/0959 →
Continuity (3)
Provisional Application 61452863 · Mar 15, 2011
Provisional Application 61490503 · May 26, 2011
Related Publication 20120278689A1 · Nov 1, 2012