System and method for maintaining a data redundancy scheme in a solid state memory in the event of a power loss
First Claim
1. A solid-state storage subsystem comprising:
- a non-volatile memory array;
a write cache for temporarily storing data to be written to the 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;
move data stored in the write cache to the non-volatile memory array, the data being moved in a size increment matching a pre-defined size of the data stripes in the data redundancy configuration; and
in response to detecting a start of a shutdown of the storage subsystem, move data in the write cache to the non-volatile memory array to create a partial data stripe that is smaller than the pre-defined stripe size when a quantity of the cached data is insufficient to create a data stripe of the pre-defined size, thereby reducing an amount of power needed to enable the controller to move data in the write cache to the non-volatile memory array.
10 Assignments
0 Petitions
Accused Products
Abstract
Embodiments of the invention are directed to systems and methods for reducing an amount of backup power needed to provide power fail safe preservation of a data redundancy scheme such as RAID that is implemented in solid state storage devices where new write data is accumulated and written along with parity data. Because new write data cannot be guaranteed to arrive in integer multiples of stripe size, a full stripe'"'"'s worth of new write data may not exist when power is lost. Various embodiments use truncated RAID stripes (fewer storage elements per stripe) to save cached write data when a power failure occurs. This approach allows the system to maintain RAID parity data protection in a power fail cache flush case even though a full stripe of write data may not exist, thereby reducing the amount of backup power needed to maintain parity protection in the event of power loss.
-
Citations
16 Claims
-
1. A solid-state storage subsystem comprising:
-
a non-volatile memory array; a write cache for temporarily storing data to be written to the 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; move data stored in the write cache to the non-volatile memory array, the data being moved in a size increment matching a pre-defined size of the data stripes in the data redundancy configuration; and in response to detecting a start of a shutdown of the storage subsystem, move data in the write cache to the non-volatile memory array to create a partial data stripe that is smaller than the pre-defined stripe size when a quantity of the cached data is insufficient to create a data stripe of the pre-defined size, thereby reducing an amount of power needed to enable the controller to move data in the write cache to the non-volatile memory array. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A method of maintaining data redundancy in a solid-state storage subsystem in the event of a power interruption, 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 data to be written to the non-volatile memory array in a write cache of the solid-state storage subsystem; moving data stored in the write cache to the non-volatile memory array, the data being moved in a size increment matching a pre-defined size of the data stripes in the data redundancy configuration; and when a shutdown of the storage subsystem begins while a quantity of data in the write cache is less than the pre-defined data stripe size, writing the cached data to the non-volatile memory array to form a partial data stripe of the data redundancy configuration. - View Dependent Claims (9, 10, 11, 12, 13)
-
-
14. A solid-state storage subsystem comprising:
-
a non-volatile memory array; a backup power source for supplying backup power to the storage subsystem in the event of a power interruption; a controller configured to; receive data to be written to the non-volatile memory array; write the received data to the non-volatile memory array as a plurality of data stripes as part of a data redundancy configuration, each data stripe being of a pre-defined stripe size; create parity data for each stripe; and in response to detecting a power interruption to the storage subsystem, use the backup power to write the received data as a partial data stripe that is smaller than the pre-defined stripe size when a quantity of the received data not yet written is insufficient to create a data stripe of the pre-defined size, and create parity data for the partial data stripe, thereby reducing an amount of power in the backup power source needed to enable the controller to provide parity protection for the received data in the event of a power interruption. - View Dependent Claims (15, 16)
-
Specification