Apparatus, System, and Method for Storing Metadata
Apparatuses, systems, and methods are disclosed for storing metadata. A mapping module is configured to maintain a mapping structure for logical addresses of a non-volatile device. A metadata module is configured to store membership metadata for the logical addresses with logical-to-physical mappings for the logical addresses in the mapping structure.
1 . A method for storing metadata, the method comprising:
mapping a logical address for data of a non-volatile storage device to a physical location for the data in a non-volatile storage medium of the non-volatile storage device using a mapping structure;
storing membership metadata for the data in one or more entries of the mapping structure, the membership metadata based on one or more storage requests for the data; and
managing the data of the non-volatile storage device based on the membership metadata for the data.
2 . The method of claim 1 , further comprising synchronizing the mapping structure with a validity map for the data such that membership of an entry for the data in the mapping structure indicates that the data is identified as valid in the validity map and stored by the non-volatile storage device.
3 . The method of claim 1 , wherein managing the data comprises selecting a storage region of the data for storage capacity recovery based on the membership metadata.
4 . The method of claim 1 , wherein managing the data comprises selecting data for eviction from the non-volatile memory device based on the membership metadata.
5 . The method of claim 1 , wherein managing the data comprises selecting data for destaging from the non-volatile storage device to a backing store based on the membership metadata, the non-volatile storage device caching the data for the backing store.
6 . The method of claim 1 , wherein managing the data comprises determining whether to cache data in the non-volatile storage device based on the membership metadata in the mapping structure in response to a storage request for the data.
7 . The method of claim 1 , wherein the membership metadata identifies one or more cache pools associated with the data, the one or more cache pools comprising one or more of a read pool, a clean write pool, a dirty write pool, a frequent read pool, and a recent read pool.
8 . The method of claim 1 , further comprising:
evicting the data from the non-volatile storage medium, the non-volatile storage medium comprising a cache;
maintaining, in the mapping structure, the membership metadata for the evicted data.
9 . The method of claim 8 , wherein the membership metadata for the evicted data indicates that the non-volatile storage medium of the cache does not currently store the evicted data.
10 . The method of claim 8 , further comprising adding the evicted data to a frequent read pool of the cache, based on the membership metadata for the evicted data, in response to a read request for the evicted data.
11 . The method of claim 1 , wherein the membership metadata comprises one or more of a frequency count, a recent/frequent indicator, a read/write indicator, a dirty/clean indicator, a valid/invalid indicator, eviction metadata, preadmission metadata, a timestamp, and a sequence number for the data.
12 . The method of claim 11 , wherein the recent/frequent indicator identifies the logical address as one of a high frequency use address and a low frequency use address based on a history of access for the data.
13 . The method of claim 1 , wherein the entries of the mapping structure are associated with variable sized ranges of logical addresses.
14 . An apparatus for storing metadata, the apparatus comprising:
a mapping module configured to maintain a mapping structure for logical addresses of a non-volatile cache;
a metadata module configured to store membership metadata for the logical addresses with logical-to-physical mappings for the logical addresses in the mapping structure, the membership metadata associating data of the non-volatile cache with a plurality of cache pools; and
a direct cache module configured to manage the cache pools based on the membership metadata.
15 . The apparatus of claim 14 , wherein the membership metadata comprises a history of access for the logical addresses.
16 . The apparatus of claim 14 , wherein the direct cache module is configured to manage the cache pools by one or more of determining whether to cache data of a storage request in the cache, selecting a storage region of the cache for storage capacity recovery, selecting data for eviction from the cache, and selecting data for destaging from the cache to a backing store, each based on the membership metadata.
17 . The apparatus of claim 14 , further comprising an eviction module configured to select data for eviction from the cache based on one or more differences between actual pool sizes for the cache pools and target pool sizes for the cache pools indicated by the membership metadata.
18 . The apparatus of claim 14 , wherein the metadata module is further configured to update the membership metadata in response to a storage request for one or more of the logical addresses.
19 . A system for storing metadata, the system comprising:
a non-volatile storage device comprising a non-volatile storage medium;
a storage controller for the non-volatile storage device, the storage controller comprising,
a mapping module configured to map, using a sparsely populated mapping structure, logical addresses for data to physical locations for the data in a sequential log of the non-volatile storage medium; and
a metadata module configured to maintain membership metadata for the data in entries for variable sized ranges of the logical addresses in the mapping structure.
20 . The system of claim 19 , further comprising a host computer system in communication with the non-volatile storage device, the storage controller comprising a device driver executing on the host computer system.
21 . A computer program product comprising a computer readable storage medium storing computer usable program code executable to perform operations for storing metadata, the operations comprising:
associating frequency counts, in a logical-to-physical mapping structure, with entries mapping logical addresses for data to physical locations of the data in a non-volatile memory medium; and
performing an operation on the data based on the associated frequency counts in the logical-to-physical mapping structure.
22 . The computer program product of claim 21 , wherein the operation comprises one or more of a storage capacity recovery operation, a destaging operation, and an eviction operation for the non-volatile memory medium.
23 . The computer program product of claim 19 , wherein the operations further comprise maintaining a frequency count in the logical-to-physical mapping structure in response to evicting data associated with the maintained frequency count from the non-volatile memory medium.
24 . An apparatus for storing metadata, the apparatus comprising:
means for maintaining mappings between logical addresses for data and physical locations for the data in a non-volatile storage medium;
means for storing, with the mappings, membership metadata for the data, the membership metadata based on one or more storage requests for the data; and
means for updating the membership metadata in response to an operation performed for the data.
25 . The apparatus of claim 24 , further comprising means for maintaining metadata, with the mappings, for data evicted from the non-volatile storage medium.