Power-safe data management system
First Claim
Patent Images
1. A method performed by a controller of a data storage subsystem for protecting against power loss, comprising:
- maintaining a record of drive status corresponding to a write process in a volatile memory of the storage subsystem, the record including, for the write process, data related to a first superblock and a second superblock, the first superblock designated as a current superblock to which the write process is writing, and the second superblock designated as a next superblock to which the write process will write after the first superblock has been written to, wherein the first and second superblocks designate address locations in a non-volatile solid-state storage array;
sequentially writing to the first superblock;
upon writing to a last write address in the first superblock, designating the second superblock as the current superblock to be written by the write process, the designation being reflected in the record of drive status;
initiating a flush of the record of drive status from the volatile memory to non-volatile memory of the data storage subsystem after the designating, the flush including saving the record of drive status to a portion of the non-volatile solid-state storage array; and
writing to the second superblock prior to the completion of the flush of the record, whereby the write process is not delayed by the flush of the record,said method performed by a controller of the storage subsystem.
10 Assignments
0 Petitions
Accused Products
Abstract
Embodiments of the invention include systems and methods for recovering the system status and maintaining drive coherency after an unexpected power loss. In particular, these systems and methods reduce overhead for maintaining drive coherency by providing for pre-allocation of groups of write addresses and recording the pre-allocated groups of addresses to the non-volatile memory. Write processes can write to the pre-allocated group of addresses while the next group of addresses are pre-allocated and recorded to non-volatile memory.
-
Citations
19 Claims
-
1. A method performed by a controller of a data storage subsystem for protecting against power loss, comprising:
-
maintaining a record of drive status corresponding to a write process in a volatile memory of the storage subsystem, the record including, for the write process, data related to a first superblock and a second superblock, the first superblock designated as a current superblock to which the write process is writing, and the second superblock designated as a next superblock to which the write process will write after the first superblock has been written to, wherein the first and second superblocks designate address locations in a non-volatile solid-state storage array;
sequentially writing to the first superblock;upon writing to a last write address in the first superblock, designating the second superblock as the current superblock to be written by the write process, the designation being reflected in the record of drive status; initiating a flush of the record of drive status from the volatile memory to non-volatile memory of the data storage subsystem after the designating, the flush including saving the record of drive status to a portion of the non-volatile solid-state storage array; and writing to the second superblock prior to the completion of the flush of the record, whereby the write process is not delayed by the flush of the record, said method performed by a controller of the storage subsystem. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A data storage system configured to preserve system status information in anticipation of power loss, comprising:
-
a non-volatile solid-state memory array, including a plurality of superblocks, each superblock comprising a plurality of physical write addresses; a controller configured to control a plurality of write processes for writing data to the non-volatile solid-state memory array, the plurality of write processes including a user data write process and an internal system write process, each of the write processes sequentially writing to portions of the non-volatile solid-state memory array according to a superblock assigned to the write process; and an interface to a host system through which the system receives memory commands to be executed by the user data write process; wherein the controller is configured to; for a write process of the plurality of write processes, maintain a record of drive status in a volatile memory of the data storage system, comprising data indicative of drive activity status corresponding to the write process, the record containing data related to the superblock assigned to the write process and a next superblock, the next superblock indicating a superblock to which the write process will write after the physical write addresses in the assigned superblock are exhausted; and flush the record of drive status from the volatile memory to the non-volatile solid-state memory array, the flushing including saving the record in the volatile memory to a portion of the non-volatile solid-state storage array and being performed independent of any write process of the plurality of write processes completing writing to its assigned superblock and beginning to write to the next superblock, so that the writing to a next superblock by a write process of the write processes is not contingent on a completion of a flushing of the record to the non-volatile solid-state memory array. - View Dependent Claims (11, 12, 13, 14, 15, 16)
-
-
17. A method of recording the status of a data storage system, comprising:
-
modifying, by a process executed by a controller of the data storage system, data at a first superblock in a solid-state storage array; allocating, for the process, a second superblock in the solid-state storage array, such that the second superblock is not modified by the process until the process has completed modifying data at the first superblock; storing, in the solid-state storage array, a record corresponding to the process, the record including data reflective of the first and second superblocks, wherein the first and second superblocks are designated as a current and next superblock for the process; modifying, by the process, data at the second superblock, wherein the modifying of data at the second superblock begins prior to completion of the storing step so that the modification to the data at the second superblock is not reflected in the record stored in the solid-state storage array; retrieving the record stored on the solid-state storage array in response to an unexpected power loss of the data storage system; and identifying a last data modified by the process before the unexpected power loss, comprising; scanning the first superblock reflected by the data in the retrieved record for the last data modified by the process before the unexpected power loss; and scanning the second superblock reflected by the data in the retrieved record for the last record written in response to not identifying the last data modified in the first superblock. - View Dependent Claims (18, 19)
-
Specification