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, 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 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, 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;
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, 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 of 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, Z comprises a number of unavailable storage elements, and the storage element error module, the reconfigure data read module, the data regeneration module, the data reconfiguration module, and the new configuration storage module comprise one or more of hardware and executable code, the executable code stored on a computer readable storage medium.
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.
-
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, 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 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, 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; 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, 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 of 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, Z comprises a number of unavailable storage elements, and the storage element error module, the reconfigure data read module, the data regeneration module, the data reconfiguration module, and the new configuration storage module comprise one or more of hardware and executable code, the executable code stored on a computer readable storage medium. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18)
-
-
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 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 storage element error module that determines that one or more storage elements are unavailable to store data; a reconfigure data read module that reads data from storage elements other than the unavailable storage elements, 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; 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, 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 and Z comprises a number of unavailable storage elements. - View Dependent Claims (20)
-
-
21. A computer readable storage medium storing computer usable program code executable to perform operations for reconfiguring an array of solid-state storage elements protected using parity data, the operations comprising:
-
determining that one or more storage elements are unavailable to store data, 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 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, 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; generating second ECC from one or more of the available data, the missing data, and data received by a storage controller, 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 storing a portion of the second ECC chunk and associated second parity data on (N+P)−
Z number of storage elements, wherein 1≦
Z≦
P and Z comprises a number of unavailable storage elements.
-
Specification