FILE SYSTEM-AWARE SOLID-STATE STORAGE MANAGEMENT SYSTEM
First Claim
1. A storage system comprising:
- solid-state memory configured to store data persistently;
a controller, coupled to the solid-state memory, that is configured to execute firmware in order to read, program, and erase physical portions of the solid-state memory, the controller associating each different physical portion of the solid-state memory with a different physical logical block address (PLBA); and
a management module configured to;
receive a first input-output request generated by a file system, the file system organizing units of user data and metadata by associating each unit of user data or metadata in the file system with a file system logical block address (FLBA), the first request including an indication of an FLBA associated with a particular unit of data that is a subject of the first request;
translate the indicated FLBA into a PLBA associated with a particular physical portion of the solid-state memory; and
transmit a second input-output request to the controller via a device driver, the second request including an indication of the PLBA in order to indicate which physical portion of the solid-state memory the controller should read, program, or erase in order to fulfill the first request.
1 Assignment
0 Petitions
Accused Products
Abstract
A file system-aware SSD management system including an SSD management module that incorporates both file system information and information related to the underlying physical solid-state storage media into its operations is described. Also described are related methods for performing data management operations in a file system-aware manner. By incorporating both file system and physical storage information, the system may achieve various advantages over conventional systems, such as enhanced I/O performance, simplified SSD firmware, and extended SSD lifespan. Moreover, by moving solid-state management functions above the firmware level, the system may enable the simultaneous management of a pool of multiple SSDs.
-
Citations
53 Claims
-
1. A storage system comprising:
-
solid-state memory configured to store data persistently; a controller, coupled to the solid-state memory, that is configured to execute firmware in order to read, program, and erase physical portions of the solid-state memory, the controller associating each different physical portion of the solid-state memory with a different physical logical block address (PLBA); and a management module configured to; receive a first input-output request generated by a file system, the file system organizing units of user data and metadata by associating each unit of user data or metadata in the file system with a file system logical block address (FLBA), the first request including an indication of an FLBA associated with a particular unit of data that is a subject of the first request; translate the indicated FLBA into a PLBA associated with a particular physical portion of the solid-state memory; and transmit a second input-output request to the controller via a device driver, the second request including an indication of the PLBA in order to indicate which physical portion of the solid-state memory the controller should read, program, or erase in order to fulfill the first request. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
-
-
13. A method for performing a write operation to a solid-state drive (SSD) having solid-state memory, the method comprising the steps of:
-
receiving a request from a file system to perform an operation to write source data to an SSD, the received request including an indication of a file system logical block address (FLBA) associated with the source data in the file system and a data type of the source data; identifying superblocks in the SSD that are available as candidate superblocks to store the source data; selecting a candidate superblock to store at least some of the source data in order to fulfill the requested operation, the selection being based at least on the data type of the source data; determining a physical logical block address (PLBA) associated with a target physical location within the selected superblock; and sending, via a device driver, a write request to the SSD to write the source data at the target physical location. - View Dependent Claims (14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28)
-
-
29. A method for restoring one or more management data structures used by a solid-state drive (SSD) management module, the method comprising the steps of:
-
receiving a request from a file system to perform an operation to write source data to an SSD, the received request including an indication of a file system logical block address (FLBA) associated with the source data in the file system; selecting a superblock to store at least some of the source data in order to fulfill the requested operation; determining a physical logical block address (PLBA) associated with a target page within the selected superblock; determining restoration data, the restoration data including a combination of at least the determined PLBA, a logical write position indicator, a timestamp indicating an approximate time the request was received, and the indicated FLBA; sending, via a device driver, a write request to the SSD to write the source data at a storage space region of the target page and to write the restoration data into a data integrity field header region of the target page; encountering a read error when attempting to read a portion of a management data structure from the SSD; reading the determined restoration data from the data integrity field header region at the target page, including reading the combination of the determined PLBA and indicated FLBA; and analyzing the restoration data from the data integrity field header region to reconstruct at least some of the management data structure. - View Dependent Claims (30, 31)
-
-
32. A method for managing a garbage collection operation for a solid-state drive (SSD), the method comprising:
-
selecting as a source superblock a superblock having a highest number of invalid pages as compared to other superblocks in the SSD; selecting as a target superblock a superblock that stores a same type of data as the source superblock; and copying contents of valid source pages from the source superblock to the target superblock. - View Dependent Claims (33, 34, 35, 36, 37, 38, 39)
-
-
40. A method for wear leveling a solid-state drive (SSD), the method comprising:
-
selecting a worn superblock at least on the basis of a comparison of a wear count of the worn superblock to wear counts of other superblocks; selecting as a target superblock a free superblock from an over-provisioning pool; selecting a fresh superblock on the basis of at least two of the following factors;
a wear count of the fresh superblock, a data type of data stored in the fresh superblock, and a last modification time of the fresh superblock;copying contents of the worn superblock to the target superblock; erasing the worn superblock; copying contents of the fresh superblock to the worn superblock; erasing the fresh superblock; copying contents of the target superblock to the fresh superblock; and erasing the target superblock. - View Dependent Claims (41, 42, 43, 44, 45, 46, 47)
-
-
48. One or more computer memories collectively storing a page status data structure comprising multiple entries, each entry representing a current status of a single page of data stored in solid-state memory, each entry for a page comprising:
-
a logical write position indicator for the page that indicates a relative position of the page within a larger logical write operation requested by a file system, indicating whether the page was a starting page, a middle page, or an end page of the logical write operation; and a page status indicator for the page that indicates whether the page has not been programmed since it was last erased, the page contains valid data that is still in use, or the page contains invalid data that is stale; such that the contents of the page status data structure are useable to identify an invalid page that may be reclaimed during a garbage collection operation. - View Dependent Claims (49)
-
-
50. One or more computer memories collectively storing a mapping data structure comprising multiple entries, each entry representing physical addressing information for a unit of data associated with a particular file system logical block address (FLBA) used by a file system to address the unit of data, each entry for a unit of data comprising:
-
a data type indicator for the unit of data that indicates whether the unit of data is a unit of metadata, user data or raw data; a superblock address indicating a superblock that physically stores the unit of data, the superblock forming a portion of a solid-state memory; a superpage address indicating a superpage that physically stores the unit of data, the superpage forming a portion of the superblock; a page address indicating a page that physically stores the unit of data, the page forming a portion of the superpage; and such that the contents of the mapping data structure are useable to identify a physical location for a unit of data in response to an input-output request. - View Dependent Claims (51, 52)
-
-
53. One or more computer memories collectively storing a superblock data structure comprising multiple entries, each entry representing a current status of a superblock of data stored in solid-state memory, each entry for a superblock comprising:
-
a wear count that indicates how many times the superblock has been erased; a valid page count and an invalid page count that indicate how many pages within the superblock are valid and invalid, respectively; an indication of a physical location of a next page within the superblock that is available for writing new data; a last modification time that indicates approximately the most recent time at which any page within the superblock was invalidated or programmed; and a data type indicator that indicates whether the superblock stores metadata, user data or raw data; such that the contents of the superblock data structure are useable to identify superblocks useable to perform a garbage collection operation, wear leveling operation, or input-output operation.
-
Specification