SYSTEM AND METHOD OF RECOVERING DATA IN A FLASH STORAGE SYSTEM
A flash storage system includes a system controller that generates redundant data based on data stored in flash storage devices of the flash storage system. The system controller stores the redundant data in one or more of the flash storage devices. Additionally, the system controller identifies data that has become unavailable in one or more of the flash storage device, recovers the unavailable data based on the redundant data, and stores the recovered data into one or more other flash storage devices of the flash storage system.
1 . A data storage system comprising:
a plurality of flash storage devices; and
a system controller coupled to the plurality of flash storage devices, the system controller configured to store a plurality of data units in the plurality of flash storage devices, the system controller further configured to generate a plurality of redundant data units based on the plurality of data units and to store the plurality of redundant data units in at least one flash storage device the plurality of flash storage devices for recovering at least one data unit of the plurality of data units based on at least one redundant data unit of the plurality of redundant data units.
2 . The data storage system of claim 1 , wherein the system controller is further configured to generate the plurality of redundant data units by mirroring the plurality of data units.
3 . The data storage system of claim 1 , wherein the system controller is further configured to generate the plurality of redundant data units based on at least two data units of the plurality of data units, the at least two data units being distributed among at least two flash storage devices of the plurality of flash storage devices.
4 . The data storage system of claim 3 further configured to recover one of the at least two data units of the plurality of data units based on at least one other data unit of the at least two data units and at least one redundant data unit of the plurality of redundant data units.
5 . The data storage system of claim 4 , wherein the plurality of redundant data units is stored in one flash storage device of the plurality of flash storage devices.
6 . The data storage system of claim 4 , wherein the plurality of redundant data units is distributed among at least two flash storage devices of the plurality of flash storage devices.
7 . The data storage system of claim 4 , wherein each flash storage device of the plurality of flash storage devices comprises:
a plurality of storage blocks for storing data units;
at least one spare storage block; and
a flash controller coupled to the plurality of storage blocks comprising at least one spare storage block, the flash controller configured to identify a corrupt data unit stored in a storage block of the plurality of storage blocks, the flash controller further configured to recover the corrupt data unit and to store the recovered data unit in the at least one spare storage block of the plurality of storage blocks.
8 . The data storage system of claim 1 , wherein the redundant data comprises parity data.
9 . A method for storing data comprising:
storing a plurality of data units in a plurality of flash storage devices;
generating a plurality of redundant data units based on the plurality of data units; and
storing the plurality of redundant data units in at least one flash storage device of the plurality of flash storage devices for recovering at least one data unit of the plurality of data units based on at least one redundant data unit of the plurality of redundant data units.
10 . The method of claim 9 , further comprising generating the plurality of redundant data units by mirroring the plurality of data units.
11 . The method of claim 9 , further comprising generating the plurality of redundant data units based on at least two data units of the plurality of data units, the at least two data units being distributed among at least two flash storage devices of the plurality of flash storage devices.
12 . The method claim 11 , further comprising:
identifying at least one unavailable data unit of the plurality of data units;
recovering the at least one unavailable data unit based on at least one other data unit of the plurality of data units and at least one redundant data unit of the plurality of redundant data units.
13 . The method of claim 12 , wherein the plurality of redundant data units is stored in one flash storage device of the plurality of flash storage devices.
14 . The method of claim 12 , wherein the plurality of redundant data units is distributed among at least two flash storage devices of the plurality of flash storage devices.
15 . The method of claim 12 , wherein each flash storage device of the plurality of flash storage devices comprises a plurality of storage blocks comprising at least one spare storage block, the method further comprising:
identifying a corrupt data unit stored in a storage block of the plurality of storage blocks;
recovering the corrupt data unit; and
storing the recovered data unit into the at least one spare storage block.
16 . The method of claim 9 , wherein the redundant data comprises parity data.
17 . A data storage system comprising:
a plurality of flash storage devices;
means for storing a plurality of data units in the plurality of flash storage devices;
means for generating a plurality of redundant data units based on the plurality of data units; and
means for storing the plurality of redundant data units in at least one flash storage device of the plurality of flash storage devices for recovering at least one data unit of the plurality of data units based on at least one redundant data unit of the plurality of redundant data units.
18 . The data storage system of claim 17 , further comprising means for generating the plurality of redundant data units by mirroring the plurality of data units.
19 . The data storage system of claim 17 , further comprising means for generating the plurality of redundant data units based on at least two data units of the plurality of data units, the at least two data units being distributed among at least two flash storage devices of the plurality of flash storage devices.
20 . The data storage system of claim 19 , further comprising:
means for identifying at least one unavailable data unit of the plurality of data units; and
means for recovering the at least one unavailable data unit of the plurality of data units based on at least one other data unit of the plurality of data units and at least one redundant data unit of the plurality of redundant data units.