System and method for improving a data redundancy scheme in a solid state subsystem with additional metadata
First Claim
1. A solid-state storage subsystem comprising:
- a non-volatile memory array;
a controller configured to implement a data redundancy configuration with a plurality of data stripes in the non-volatile memory array, wherein each of the plurality of data stripes is of a pre-defined stripe size comprising a pre-defined number of data elements and wherein the controller is configured to write parity data to the non-volatile memory array for a data stripe in the non-volatile memory array that has reached the pre-defined strip size; and
a volatile memory for temporarily storing;
data to be written to the non-volatile memory array; and
parity data associated with partial data stripes in the non-volatile memory that have not yet reached the pre-defined stripe size;
wherein the controller is further configured to;
detect (1) an occurrence of a data access error in one of the plurality of data stripes for which parity data has not been written to the non-volatile memory array or (2) a power failure of the solid-state storage subsystem; and
in response to detecting the occurrence of data access error or power failure, write to the non-volatile memory array (1) metadata indicating validity of one or more data elements in a partial data stripe associated with the parity data and (2) the parity data for the partial data stripe,whereby the metadata enables a delay of a re-writing of the partial data stripe into a full data stripe of the pre-defined size.
8 Assignments
0 Petitions
Accused Products
Abstract
In one embodiment of the invention, a flash-based/solid-state storage system with an implemented data redundancy scheme such as RAID is configured to hold parity data in a volatile memory such as RAM and write such parity data to the non-volatile flash media when a full stripe of data has been written to the media. Other embodiments in certain situations force an early write of the parity for a partial stripe that has not been fully written to the non-volatile media. Those situations may include a data access error on data in a partial stripe and a detected power loss event with a partial stripe present. Embodiments are directed to writing additional data with the parity data for the partial stripe and then later using the additional data in data recovery. This approach allows the controller to easily detect the presence of a partial stripe and handle such a stripe accordingly.
241 Citations
21 Claims
-
1. A solid-state storage subsystem comprising:
-
a non-volatile memory array; a controller configured to implement a data redundancy configuration with a plurality of data stripes in the non-volatile memory array, wherein each of the plurality of data stripes is of a pre-defined stripe size comprising a pre-defined number of data elements and wherein the controller is configured to write parity data to the non-volatile memory array for a data stripe in the non-volatile memory array that has reached the pre-defined strip size; and a volatile memory for temporarily storing; data to be written to the non-volatile memory array; and parity data associated with partial data stripes in the non-volatile memory that have not yet reached the pre-defined stripe size; wherein the controller is further configured to; detect (1) an occurrence of a data access error in one of the plurality of data stripes for which parity data has not been written to the non-volatile memory array or (2) a power failure of the solid-state storage subsystem; and in response to detecting the occurrence of data access error or power failure, write to the non-volatile memory array (1) metadata indicating validity of one or more data elements in a partial data stripe associated with the parity data and (2) the parity data for the partial data stripe, whereby the metadata enables a delay of a re-writing of the partial data stripe into a full data stripe of the pre-defined size. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A method of recovering from a data access error in a solid-state storage subsystem, the method comprising:
-
implementing a data redundancy configuration with a plurality of data stripes in a non-volatile memory array of the solid-state storage subsystem, wherein each of the plurality of data stripes is of a pre-defined stripe size comprising a pre-defined number of data elements; temporarily storing, in a volatile memory of the solid-state storage subsystem, data to be written to the non-volatile memory array and parity data associated with partial data stripes in the non-volatile memory that have not yet reached the pre-defined stripe size; detecting (1) an occurrence of a data access error in one of the plurality of data stripes for which parity data has not been written to the non-volatile memory array or (2) a power failure of the solid-state storage subsystem; and in response to detecting the occurrence of data access error or power failure, writing to the non-volatile memory (1) metadata indicating validity of one or more data elements in a partial data stripe associated with the parity data and (2) the parity data for the partial data stripe. - View Dependent Claims (9, 10, 11, 12, 13, 14)
-
-
15. A solid-state storage subsystem, comprising:
-
a non-volatile memory array; and a controller configured to implement a data redundancy configuration with a plurality of data stripes in the non-volatile memory array, the controller configured to respond to at least one type of failure event by creating a partial data stripe that contains (1) metadata that specifies which of data elements of the partial data stripe are valid, (2) parity data, and (3) both valid and invalid data elements, the controller further configured to use the metadata to determine which data elements of the partial data stripe are valid. - View Dependent Claims (16, 17, 18, 19, 20, 21)
-
Specification