A data storage method includes partitioning a data into an array having a plurality of data blocks and storing the data blocks across a plurality of storage nodes. Parity blocks are encoded based on the data array by performing a shift operation on the data array to produce a shifted array and performing an exclusive OR (XOR) operation on the elements in each row of the shifted array to produce a parity block. The method further includes storing the parity blocks across a plurality of the storage nodes. Systems are configured to recover data from a data array in the event that the data array is at least partly inaccessible.