Patent ID: 8291162

Claim:
A storage system, comprising: a storage group including a plurality of storage devices; a write controller that divides write-targeted data into a plurality of data units, and writes to the storage group, wherein each of the plurality of data units includes data of a prescribed size; and a restore controller that restores a data element, each of the plurality of data units including a plurality of data elements, wherein a group storage area, which is a storage area of the storage group, includes a plurality of rows, each of the plurality of rows including a plurality of sub-storage areas, wherein respective rows of the sub-storage areas span the plurality of storage devices, and each of the plurality of sub-storage areas of each respective row has a one-to-one correspondence with each of the plurality of storage devices, wherein for a data unit of the plurality of data units, a size of the data unit is smaller than a size of one row of the sub-storage areas, wherein the write controller: (W1) creates a first redundant code based on the plurality of data elements, and respectively writes the plurality of data elements and the first redundant code to a different sub-storage area corresponding to a different storage device; (W2) creates, based on at least two data elements and at least two first redundant codes, which are written to the plurality of sub-storage areas constituting the storage system, a compressed redundant code, which is a code having a size that is smaller than a total size of a plurality of first redundant codes; and (W3) writes the compressed redundant code to a nonvolatile storage area; as the (W1), creates a second redundant code based on the plurality of data elements constituting the data unit, and respectively writes the plurality of data elements and the second redundant code to the different sub-storage area corresponding to the different storage device; as the (W2), for each plurality of data units written to the storage group, creates the plurality of first redundant codes respectively corresponding to the plurality of data units, and creates the compressed redundant code based on the plurality of first redundant codes; and as the (W3), writes the respective compressed redundant codes corresponding to each plurality of data units written to the storage group, to the respective nonvolatile storage areas.