System and method for data error recovery in a solid state subsystem
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; and
a volatile memory for temporarily storing data to be written to the non-volatile memory array and parity data for one or more of the data stripes in the non-volatile memory array, wherein each of the plurality of data stripes is of a pre-defined stripe size and wherein the controller is configured to write parity data for a data stripe to the non-volatile memory array when data already written to the non-volatile memory for the data stripe reaches the pre-defined stripe size;
wherein the controller is further configured to;
detect 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; and
in response to detecting an occurrence of a data access error, move the parity data for the data stripe causing the error from the volatile memory to the non-volatile memory array ahead of a scheduled writing of the parity data, andattempt to correct the data access error with the newly written parity data.
10 Assignments
0 Petitions
Accused Products
Abstract
Systems and methods are disclosed for recovering from a data access error encountered in data stripes implemented in a data redundancy scheme (e.g., RAID) in a solid state storage device. In one embodiment, the storage device holds parity data in a temporary, volatile memory such as a RAM and writes the parity data to the non-volatile memory when a full stripe'"'"'s worth of new write data has been written to the non-volatile memory. In one embodiment, upon detecting that a data access error has occurred in a partially written stripe, the storage device initiates a write of the parity data for the partially written stripe to the non-volatile memory and executes a RAID recovery procedure using the newly written parity data to attempt to recover from the detected error. This approach allows for a recovery from the data access error without waiting for the full stripe to be written.
-
Citations
15 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; and a volatile memory for temporarily storing data to be written to the non-volatile memory array and parity data for one or more of the data stripes in the non-volatile memory array, wherein each of the plurality of data stripes is of a pre-defined stripe size and wherein the controller is configured to write parity data for a data stripe to the non-volatile memory array when data already written to the non-volatile memory for the data stripe reaches the pre-defined stripe size; wherein the controller is further configured to; detect 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; and in response to detecting an occurrence of a data access error, move the parity data for the data stripe causing the error from the volatile memory to the non-volatile memory array ahead of a scheduled writing of the parity data, and attempt to correct the data access error with the newly written parity data. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. 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; 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 said data to be written; detecting 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; and in response to detecting the occurrence of a data access error, moving the parity data for said data stripe in which the data access error occurred from the volatile memory to the non-volatile memory array to make said parity data available for attempting to correct the data access error in advance of a scheduled write for the parity data, the scheduled write corresponding to a time when the data already written to the non-volatile memory for said data stripe reaches a pre-defined stripe size. - View Dependent Claims (8, 9, 10, 11)
-
-
12. 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; and volatile memory for temporarily storing data to be written to the non-volatile memory array and parity data for one or more of the data stripes in the non-volatile memory array; wherein the controller is further configured to; detect 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; and in response to detecting an occurrence of a data access error, move the parity data for the data stripe in which the data access error occurred from the volatile memory to the non-volatile memory array, in advance of a time when the data written to the non-volatile memory for the data stripe reaches a pre-defined stripe size, whereby the data access error can be corrected with the parity data. - View Dependent Claims (13, 14, 15)
-
Specification