A data storage apparatus comprising: a striped redundant storage array comprising: a plurality of data devices configured to store data blocks in a plurality of memory blocks on the data devices; and one or more protection devices configured to store protection blocks in a plurality of memory blocks on protection devices, wherein the data devices and the protection devices are associated by a plurality of stripes, wherein each stripe comprises a single memory block on each data device and a single memory block on each protection device, and wherein each protection block in a corresponding protection device comprises a value for reconstructing damaged blocks within the same stripe; and a controller coupled to the striped redundant storage array, the controller configured to: select a data device for data write access; store a set of data blocks sequentially in sequential memory blocks in the selected data device over a plurality of stripes; and generate a set of protection blocks based on the values of the data blocks for each updated stripe; store the generated protection blocks to the corresponding memory blocks of the stripe in the protection devices; read data blocks sequentially from the selected data device; reconstruct data blocks for one or more damaged data devices and store the reconstructed data blocks on replacement storage devices, wherein a data block is a sequential grouping of bits of a predefined size taken from a data flow. a striped redundant storage array comprising: a plurality of data devices configured to store data blocks in a plurality of memory blocks on the data devices; and one or more protection devices configured to store protection blocks in a plurality of memory blocks on protection devices, wherein the data devices and the protection devices are associated by a plurality of stripes, wherein each stripe comprises a single memory block on each data device and a single memory block on each protection device, and wherein each protection block in a corresponding protection device comprises a value for reconstructing damaged blocks within the same stripe; and a plurality of data devices configured to store data blocks in a plurality of memory blocks on the data devices; and one or more protection devices configured to store protection blocks in a plurality of memory blocks on protection devices, wherein the data devices and the protection devices are associated by a plurality of stripes, wherein each stripe comprises a single memory block on each data device and a single memory block on each protection device, and wherein each protection block in a corresponding protection device comprises a value for reconstructing damaged blocks within the same stripe; and a controller coupled to the striped redundant storage array, the controller configured to: select a data device for data write access; store a set of data blocks sequentially in sequential memory blocks in the selected data device over a plurality of stripes; and generate a set of protection blocks based on the values of the data blocks for each updated stripe; store the generated protection blocks to the corresponding memory blocks of the stripe in the protection devices; read data blocks sequentially from the selected data device; reconstruct data blocks for one or more damaged data devices and store the reconstructed data blocks on replacement storage devices, wherein a data block is a sequential grouping of bits of a predefined size taken from a data flow. select a data device for data write access; store a set of data blocks sequentially in sequential memory blocks in the selected data device over a plurality of stripes; and generate a set of protection blocks based on the values of the data blocks for each updated stripe; store the generated protection blocks to the corresponding memory blocks of the stripe in the protection devices; read data blocks sequentially from the selected data device; reconstruct data blocks for one or more damaged data devices and store the reconstructed data blocks on replacement storage devices, wherein a data block is a sequential grouping of bits of a predefined size taken from a data flow.