APPARATUS, SYSTEM, AND METHOD FOR RECONFIGURING AN ARRAY TO OPERATE WITH LESS STORAGE ELEMENTS
First Claim
1. An apparatus to reconfigure an array of solid-state storage elements protected:
- using parity data, the apparatus comprising;
a storage element error module that determines that one or more storage elements are unavailable to store data (“
unavailable storage elements”
), the storage element in an array of three or more storage elements, each storage element in the array comprising non-volatile solid-state storage, wherein data is written to a logical page of the array, a logical page of the array comprising a page on each of the storage elements in the array and wherein the array comprises N number of storage elements storing a first ECC chunk and P number of storage elements storing first parity data generated from the first ECC chunk, the ECC chunk comprising data (“
stored data”
) and a first error correcting code (“
ECC”
) generated from the stored data, a portion of the first ECC chunk is stored on each of N number of storage elements;
a reconfigure data read module that reads data from storage elements other than the unavailable storage elements (“
available data”
), the available data comprising data from a logical page;
a data regeneration module that, in response to the available data comprising first parity data, uses the first parity data to regenerate missing data from the first ECC chunk (“
missing data”
);
a data reconfiguration module that generates second ECC from one or more of the available data, the missing data, and data received by a storage controller (“
new data”
), the second ECC together with data used to create the second ECC comprise a second ECC chunk, and that generates second parity data from the second ECC chunk, the storage controller controlling data storage on the array storage elements; and
a new configuration storage module that stores a portion of the second ECC chunk and associated second parity data on (N+P)−
Z number of storage elements, wherein 1≦
Z≦
P.
11 Assignments
0 Petitions
Accused Products
Abstract
An apparatus, system, and method are disclosed for reconfiguring an array of solid-state storage elements protected using parity data. The storage element error module determines that one or more storage elements are unavailable to store data (“unavailable storage elements”). The storage element resides in an array with N number of storage elements storing a first ECC chunk and P number of storage elements storing first parity data. The reconfigure data read module reads data from storage elements other than the unavailable storage elements. The data regeneration module uses the first parity data to regenerate missing data from the first ECC chunk. The data reconfiguration module creates a second ECC chunk. The new configuration storage module stores a portion of the second ECC chunk and associated second parity data on (N+P)−Z number of storage elements, wherein 1≦Z≦P.
179 Citations
21 Claims
-
1. An apparatus to reconfigure an array of solid-state storage elements protected:
- using parity data, the apparatus comprising;
a storage element error module that determines that one or more storage elements are unavailable to store data (“
unavailable storage elements”
), the storage element in an array of three or more storage elements, each storage element in the array comprising non-volatile solid-state storage, wherein data is written to a logical page of the array, a logical page of the array comprising a page on each of the storage elements in the array and wherein the array comprises N number of storage elements storing a first ECC chunk and P number of storage elements storing first parity data generated from the first ECC chunk, the ECC chunk comprising data (“
stored data”
) and a first error correcting code (“
ECC”
) generated from the stored data, a portion of the first ECC chunk is stored on each of N number of storage elements;a reconfigure data read module that reads data from storage elements other than the unavailable storage elements (“
available data”
), the available data comprising data from a logical page;a data regeneration module that, in response to the available data comprising first parity data, uses the first parity data to regenerate missing data from the first ECC chunk (“
missing data”
);a data reconfiguration module that generates second ECC from one or more of the available data, the missing data, and data received by a storage controller (“
new data”
), the second ECC together with data used to create the second ECC comprise a second ECC chunk, and that generates second parity data from the second ECC chunk, the storage controller controlling data storage on the array storage elements; anda new configuration storage module that stores a portion of the second ECC chunk and associated second parity data on (N+P)−
Z number of storage elements, wherein 1≦
Z≦
P. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18)
- using parity data, the apparatus comprising;
-
19. A system to reconfigure an array of solid-state storage elements protected using parity data, the system comprising:
-
a storage device comprising a storage controller and an array of storage elements controlled by the storage controller, the storage element in an array of three or more storage elements, each storage element in the array comprising non-volatile solid-state storage, wherein data is written to a logical page of the array, a logical page of the array comprising a page on each of the storage elements in the array and wherein the array comprises N number of storage elements storing a first ECC chunk and P number of storage elements storing first parity data generated from the first ECC chunk, the ECC chunk comprising data (“
stored data”
) and a first error correcting code (“
ECC”
) generated from the stored data, a portion of the first ECC chunk is stored on each of N number of storage elementsa storage element error module that determines that one or more storage elements are unavailable to store data (“
unavailable storage elements”
);a reconfigure data read module that reads data from storage elements other than the unavailable storage elements (“
available data”
), the available data comprising data from a logical page;a data regeneration module that, in response to the available data comprising first parity data, uses the first parity data to regenerate missing data from the first ECC chunk (“
missing data”
);a data reconfiguration module that generates second ECC from one or more of the available data, the missing data, and data received by a storage controller (“
new data”
), the second ECC together with data used to create the second ECC comprise a second ECC chunk, and that generates second parity data from the second ECC chunk, the storage controller controlling data storage on the array storage elements; anda new configuration storage module that stores a portion of the second ECC chunk and associated second parity data on (N+P)−
Z number of storage elements, wherein 1≦
Z≦
P. - View Dependent Claims (20)
-
-
21. A computer program product comprising a computer readable medium having computer usable program code executable to perform operations for reconfiguring an array of solid-state storage elements protected using parity data, the operations of the computer program product comprising:
-
determining that one or more storage elements are unavailable to store data (“
unavailable storage elements”
), the storage element in an array of three or more storage elements, each storage element in the array comprising non-volatile solid-state storage, wherein data is written to a logical page of the array, a logical page of the array comprising a page on each of the storage elements in the array and wherein the array comprises N number of storage elements storing a first ECC chunk and P number of storage elements storing first parity data generated from the first ECC chunk, the ECC chunk comprising data (“
stored data”
) and a first error correcting code (“
ECC”
) generated from the stored data, a portion of the first ECC chunk is stored on each of N number of storage elements;reading data from storage elements other than the unavailable storage elements (“
available data”
), the available data comprising data from a logical page;in response to the available data comprising first parity data, using the first parity data to regenerate missing data from the first ECC chunk (“
missing data”
);generating second ECC from one or more of the available data, the missing data, and data received by a storage controller (“
new data”
), the second ECC together with data used to create the second ECC comprise a second ECC chunk, and that generates second parity data from the second ECC chunk, the storage controller controlling data storage on the array storage elements; andstoring a portion of the second ECC chunk and associated second parity data on (N+P)−
Z number of storage elements, wherein 1≦
Z≦
P.
-
Specification