System and method for optimized management of operation data in a solid-state memory
First Claim
1. A method of managing operation data in a non-volatile solid-state storage subsystem, the method comprising:
- maintaining a data table in a volatile memory of the solid-state storage subsystem, the data table including information related to a plurality of logical groupings of memory blocks in a non-volatile memory array of the solid-state storage subsystem, the data table used by a controller of the solid-state storage subsystem to control memory access operations;
storing a first plurality of portions of the data table in the non-volatile memory array, at least one portion reflecting an update to the data table that renders outdated a previous update to a portion of the data table;
creating a plurality of snapshots of the data table portions stored in the non-volatile memory array, a snapshot of the plurality of snapshots comprising information related to a plurality of physical memory locations in which the updated data table portions are stored at a time of creation of the snapshot, wherein the snapshot is stored in a separate memory location in the non-volatile memory array from the data table portions and does not comprise data of the data table portions;
storing a second plurality of portions of the data table in the non-volatile memory array, the second plurality of portions of the data table reflecting updates to the data table that occurred after the time of creation of a most recently created snapshot; and
following an intervening power loss event that causes the data table to be lost from the volatile memory;
using the most recently created snapshot to locate at least some data table portions of the first plurality of portions of the data table in the non-volatile memory array,traversing from the most recently updated snapshot forward to locate the second plurality of portions of the data table, andusing the located at least some data table portions and the second plurality of portions of the data table to reconstruct the data table in the volatile memory.
8 Assignments
0 Petitions
Accused Products
Abstract
Embodiments of the invention are directed to optimizing reconstruction of operation data in volatile memory of solid-state storage subsystems. In various embodiments, operation data is stored in the volatile memory with persistent backup data of the operation data in the non-volatile memory. In one embodiment, operation data includes a superblock table that is used to identify most or all groups of blocks (superblocks) within the storage device that certain firmware components operate on. Sometimes operation data in the volatile memory is lost or corrupted due to a power interruption or system shutdown. To optimize the reconstruction of the superblock table or other similar operation data in the volatile memory, embodiments of the invention use a “snapshot entry” to identify the latest entry information, allowing the controller to quickly identify the most updated physical locations of the operation data portions and complete the reconstruction in an efficient manner.
22 Citations
16 Claims
-
1. A method of managing operation data in a non-volatile solid-state storage subsystem, the method comprising:
-
maintaining a data table in a volatile memory of the solid-state storage subsystem, the data table including information related to a plurality of logical groupings of memory blocks in a non-volatile memory array of the solid-state storage subsystem, the data table used by a controller of the solid-state storage subsystem to control memory access operations; storing a first plurality of portions of the data table in the non-volatile memory array, at least one portion reflecting an update to the data table that renders outdated a previous update to a portion of the data table; creating a plurality of snapshots of the data table portions stored in the non-volatile memory array, a snapshot of the plurality of snapshots comprising information related to a plurality of physical memory locations in which the updated data table portions are stored at a time of creation of the snapshot, wherein the snapshot is stored in a separate memory location in the non-volatile memory array from the data table portions and does not comprise data of the data table portions; storing a second plurality of portions of the data table in the non-volatile memory array, the second plurality of portions of the data table reflecting updates to the data table that occurred after the time of creation of a most recently created snapshot; and following an intervening power loss event that causes the data table to be lost from the volatile memory; using the most recently created snapshot to locate at least some data table portions of the first plurality of portions of the data table in the non-volatile memory array, traversing from the most recently updated snapshot forward to locate the second plurality of portions of the data table, and using the located at least some data table portions and the second plurality of portions of the data table to reconstruct the data table in the volatile memory. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A storage subsystem comprising:
-
a non-volatile memory array; a volatile memory configured to store a data table, the data table including information related to a plurality of logical groupings of memory blocks in the non-volatile memory array of the storage subsystem; a controller configured to; store a first plurality of portions of the data table in the non-volatile memory array, at least one portion reflecting an update to the data table that renders outdated a previous update to a portion of the data table; create a plurality of snapshots of the data table portions stored in the non-volatile memory array, a snapshot of the plurality of snapshots comprising information related to a plurality of physical memory locations in which the updated data table portions are stored at a time of creation of the snapshot, wherein the snapshot is stored in a separate memory location in the non-volatile memory array from the data table portions and does not comprise data of the data table; store a second plurality of portions of the data table in the non-volatile memory array, the second plurality of portions of the data table reflecting updates to the data table that occurred after the time of creation of a most recently created snapshot; and reconstruct, as part of a recovery process, the data table in the volatile memory by at least; using the most recently created snapshot to locate at least some data table portions of the first plurality of portions of the data table in the non-volatile memory array, traversing from the most recently updated snapshot forward to locate the second plurality of portions of the data table, and using the located at least some data table portions and the second plurality of portions of the data table to reconstruct the data table in the volatile memory. - View Dependent Claims (9, 10, 11, 12, 13, 14)
-
-
15. A method of managing operation data in a non-volatile solid-state storage subsystem, the method comprising:
-
maintaining a data table in a volatile memory of the solid-state storage subsystem, the data table including operation data for the solid-state storage subsystem; moving a first plurality of portions of the data table to a non-volatile memory of the solid-state storage subsystem, at least one portion reflecting an update to the data table that renders outdated a previous update to a portion of the data table; storing a plurality of location data, wherein a location data of the plurality of location data is related to a plurality of physical memory locations in which portions of the updated data table are stored, the location data not comprising data of the data table, the location data stored in a single memory location of the non-volatile memory and in a separate data entry from the data of the data table; moving a second plurality of portions of the data table to the non-volatile memory, the second plurality of portions of the data table reflecting updates to the data table that occurred after the time of creation of a most recently stored location data; and using the physical memory location data to reconstruct the data table in the volatile memory, the reconstruction comprising; using the most recently stored location data to locate at least some data table portions of the first plurality of portions of the data table in the non-volatile memory, traversing from the most recently stored location data forward to locate the second plurality of portions of the data table, and using the located at least some data table portions and the second plurality of portions of the data table to reconstruct the data table in the volatile memory.
-
-
16. A storage subsystem comprising:
-
a non-volatile memory array; a volatile memory configured to store a data table that comprises operation data for the storage subsystem; a controller configured to; store a first plurality of portions of the data table to the non-volatile memory array, at least one portion reflecting an update to the data table that renders outdated a previous update to a portion of the data table; store a plurality of location data, wherein a location data of the plurality of location data is related to a plurality of physical memory locations in which portions of the updated data table are stored, the location data not comprising data of the data table, the location data stored in a single memory location of the non-volatile memory array and in a separate data entry from the data of the data table; store a second plurality of portions of the data table to the non-volatile memory array, the second plurality of portions of the data table reflecting updates to the data table that occurred after the time of creation of a most recently stored location data; and use the location data to reconstruct the data table in the volatile memory, the controller further configured to; use the most recently stored location data to locate at least some data table portions of the first plurality of portions of the data table in the non-volatile memory array, traverse from the most recently stored location data forward to locate the second plurality of portions of the data table, and use the located at least some data table portions and the second plurality of portions of the data table to reconstruct the data table in the volatile memory.
-
Specification