Data recovery from multiple failed data blocks and storage units
First Claim
1. A storage system with data recovery from M failed blocks per stripe or J failed storage units comprising N (N>
- 0) data blocks stored on N storage units and a first error correction code that generates M (M>
0) redundant blocks from the N data blocks where the N data blocks and M redundant blocks form a stripe such that K (K less than or equal to M) blocks are regenerated from the remaining N+M−
K blocks of the stripe, where the M redundant blocks are stored on J (J<
M) additional storage units.
0 Assignments
0 Petitions
Accused Products
Abstract
In the present invention a data recovery mechanism used to recover data from failed storage units is used to recover data from failed blocks on storage units. To reduce the impact of the read and write operations, multiple redundant blocks are stored on a storage unit. The storage for redundant blocks is rotated among the storage units so that the block storage requirements are balanced. Rotating the redundant block storage among the storage devices may also balance the storage system accesses. To recover data when the storage units with the redundant blocks fail, redundant blocks are stored with the latest data block update to reduce the impact of writing the redundant blocks. A redundant block may be a copy of a redundant block to protect against storage unit failures or may be a redundant block generated from blocks on the storage unit using a second error correction code and second stripe structure within the storage unit.
-
Citations
18 Claims
-
1. A storage system with data recovery from M failed blocks per stripe or J failed storage units comprising N (N>
- 0) data blocks stored on N storage units and a first error correction code that generates M (M>
0) redundant blocks from the N data blocks where the N data blocks and M redundant blocks form a stripe such that K (K less than or equal to M) blocks are regenerated from the remaining N+M−
K blocks of the stripe, where the M redundant blocks are stored on J (J<
M) additional storage units. - View Dependent Claims (2, 3, 4, 5, 6, 7)
- 0) data blocks stored on N storage units and a first error correction code that generates M (M>
-
8. A storage system with data recovery from L failed blocks per stripe comprising N (N>
- 0) data blocks stored on H (H>
0) storage units and a first error correction code that generates M (M>
0) redundant blocks from the N data blocks where the N data blocks and the M redundant blocks form a stripe such that K (K less than or equal to M) blocks are regenerated from the remaining N+M−
K blocks of the stripe and L (L less than or equal to M) redundant blocks are stored on the storage unit with the most recent data block update such that T (T less than or equal to L) blocks are regenerated from the remaining N+L−
T blocks of the stripe. - View Dependent Claims (9, 10, 11, 12, 13)
- 0) data blocks stored on H (H>
-
14. A storage system with data recovery from R failed blocks per second stripe within a storage unit and J failed storage units or M failed blocks per first stripe across storage units and R failed blocks per second stripe within a storage unit comprising
N (N> - 0) data blocks stored on N storage units and
A first error correction code that generates M (M>
0) redundant blocks from the N data blocks where the N data blocks and M redundant blocks form a first stripe across storage units such that K (K less than or equal to M) blocks are regenerated from the remaining N+M−
K blocks of the first stripe andThe M redundant blocks are stored on J (J less than or equal to M) additional storage units and S blocks stored on a storage unit including one block from the first stripe and a second error correction code that generates R (R>
0) blocks from the S data blocks where the S blocks and R redundant blocks form a second stripe within the storage unit such that V (V less than or equal to R) blocks are regenerated from the remaining S+R−
V blocks of the second stripe andThe R redundant blocks are stored on that storage unit. - View Dependent Claims (15, 16, 17, 18)
- 0) data blocks stored on N storage units and
Specification