Patent ID: 8719675

Claim:
A method performed by one or more processors, the method comprising: receiving a block of data comprising m rows and n columns of data chunks; for each row in the block of data, generating (c-n) columns of error-correcting row code chunks using a first linear error-correcting code in systematic form and the particular row's data chunks; and for each column in the block of data and for each generated column, allocating the particular column and (r-m) error-correcting column code chunks for the particular column to a distinct group of storage nodes, wherein: the column code chunks are generated using a second linear error-correcting code in systematic form and the particular column's data chunks or row code chunks; each group of storage nodes is within a respective different data center in a different geographic location; allocating each column of chunks comprises allocating a first column of chunks to a first data center and each chunk of the first column of chunks to a distinct storage node of the first data center, and allocating a second column of chunks to a second data center; m and n are greater than one; and c is greater than n and r is greater than m.