Log-based storage for different data types in non-volatile memory

An illustrative embodiment disclosed herein is an apparatus including a processor having programmed instructions that write data having mixed deletion characteristics sequentially to a plurality of data entries of a first physical erase block (PEB) in intermediate storage. The data having the mixed deletion characteristics includes first data having a first deletion characteristic. The processor has programmed instructions that maintain metadata in a plurality of metadata entries in a log. The metadata corresponds to the data having the mixed deletion characteristics. The processor has programmed instructions that identify, using the log, the first data having the first deletion characteristic and evacuate the first data having the first deletion characteristic to a second PEB in main memory.

BACKGROUND

In non-volatile memory systems, a file system may control how data from multiple log file system is stored and retrieved through interactions with a flash translation layer. In certain embodiments, due to hardware constraints, the file system may interact with the flash translation layer to write the data from the multiple log file system logs to a single physical erase block.

SUMMARY

The present disclosure, in various embodiments, relates to non-volatile memory and more particularly relates to separating mixed data with different data types.

An illustrative embodiment disclosed herein is an apparatus including a processor having programmed instructions that write data having mixed deletion characteristics sequentially to a plurality of data entries of a first physical erase block (PEB) in intermediate storage. The data having the mixed deletion characteristics includes first data having a first deletion characteristic. The processor has programmed instructions that maintain metadata in a plurality of metadata entries in a log. The metadata corresponds to the data having the mixed deletion characteristics. The processor has programmed instructions that identify, using the log, the first data having the first deletion characteristic and evacuate the first data having the first deletion characteristic to a second PEB in main memory.

Another illustrative embodiment disclosed herein is a system including a host log history (HLH) log and a controller coupled to the HLH log. The controller writes data having mixed deletion characteristics sequentially to a plurality of data entries of a first physical erase block (PEB) in intermediate storage. The data having the mixed deletion characteristics includes first data having a first deletion characteristic. The controller maintains metadata in a plurality of metadata entries in the HLH log. The metadata corresponds to the data having the mixed deletion characteristics. The controller identifies, using the HLH log, the first data having the first deletion characteristic and evacuates the first data having the first deletion characteristic to a second PEB in main memory.

Another illustrative embodiment disclosed herein is a method including writing, by a controller, data having mixed deletion characteristics sequentially to a plurality of data entries of a first physical erase block (PEB) in intermediate storage. The data having the mixed deletion characteristics includes first data having a first deletion characteristic. The method includes maintaining, by the controller, metadata in a plurality of metadata entries in a log. The metadata corresponds to the data having the mixed deletion characteristics. The method includes identifying, by the controller and using the log, the first data having the first deletion characteristic and evacuating, by the controller, the first data having the first deletion characteristic to a second PEB in main memory.

DETAILED DESCRIPTION

A multi-log file system manages several log file system (LFS) logs to separate data with different data types. Flash storage devices interface with the multi-log file systems to store the data of the several LFS logs. In the mobile and embedded storage segment, due to resource constraints, it is not practical to have an open physical erase block (PEB) per LFS log in the flash transition layer (FTL) of the flash storage device. Thus, in some embodiments, all LFS logs are written into a single open PEB, and the corresponding data is mixed in the physical media.

Mixing several LFS logs in one PEB increases fragmentation of the logically sequential data in the PEB. The first impact of fragmentation is due to caching efficiency. When data from a log is written sequentially to a PEB, a logical to physical (L2P) mapping of data in the PEB can be compressed with a given compression ratio and cached to RAM. Serving multiple read requests with the L2P accessible in RAM can result in improved read performance. However, fragmentation reduces the compression ratio and the efficiency in caching the L2P in RAM, which, in turn, negatively impacts overall read performance.

The second impact of fragmentation is due to FTL Data Path (DP) pipe efficiency. The DP includes N dies performing sequential reads in parallel. However, not all dies are utilized when the data is not physically contiguous. Mixing all logs in a single block results in data that is not logically contiguous, and by consequence, not physically contiguous, resulting in degraded sequential read performance.

Mixing several LFS logs increases a number of discarded data in multiple physical blocks. The increase of discarded data in multiple physical blocks leads to excessive FTL metadata updates and multiple relocations of valid data by FTL garbage collection (GC). The excessive metadata updates and relocations increase write amplification and reduce flash device performance. What is needed is a system and method that can operate under the resource constraints to separate the different data types of the several LFS logs and store data of each data type in dedicated storage to ensure that logically contiguous data is also physically contiguous.

In embodiments of the disclosure described herein, a system and method for separating data of different data types is shown. In one embodiment, the system tracks the data with metadata entries in a host logs history (HLH) log. In one embodiment, portion of the HLH log is cached into RAM for faster reads. In one embodiment, the system selects a log candidate to be evacuated to main memory based on a data type identified in the metadata entries. In one embodiment, the system uses a “biggest first” evacuation policy to evacuate multiple data entries having a common data type to a physical erase block assigned to the data type.

In some embodiments of the present disclosure, the system improves spacial locality of the LFS logs. As a consequence, the system and method improves performance due to a better L2P cache compression ratio and a better utilization of the FTL DP pipe when logically contiguous data is also physically contiguous. In some embodiments, the system reduces write amplification in FTL GC actions.

In certain embodiments, a file system, as used herein may refer to a system that controls how data or units of data are stored and retrieved through interactions with a flash translation layer (FTL). As described herein, data may refer to information that has been codified so as to be storable in a computer readable medium. Further, the file system may manage files and perform operations on the files. In certain implementations, the file system refers to a logical file system, where the file system is responsible for file and file-level operations between the memory and a user application. Further, the file system may pass requested operations to a flash translation layer for processing. In at least one implementation, the file system may be a log structured file system.

As used herein, a flash translation layer (FTL) may refer to a driver or controller that controls the flash memory as to cause a linear flash memory to appear to the file or operating system like a disk drive. To cause flash memory to appear as a disk drive, the FTL may create “virtual” small blocks of data out of the larger erase blocks of the flash memory. Also, the FTL may manage data on the flash memory such that it appears to be “write in place” when the managed data is actually stored in different locations in the flash memory. Further, the FTL may manage the flash memory so there are clean/erased places to store data.

FIG. 1depicts one embodiment of a logical address space120, and a sequential, log-based, append-only writing structure140such as found in a log structured file system. The logical address space120of a non-volatile memory device, in the depicted embodiment, may be larger than the physical storage capacity and corresponding storage device address space of the non-volatile memory device. In the depicted embodiment, the non-volatile memory device has a 64-bit logical address space120beginning at logical address “0” 322 and extending to logical address “264-1” 326. As illustrated, the logical address space120may store data at the locations marked by an “X” and may have available locations for storing data at the locations lacking an “X”. Because the storage device address space corresponds to only a subset of the logical address space120of the non-volatile memory device, the rest of the logical address space120may be restricted or used for other functions of the non-volatile memory device.

The sequential, log-based, append-only writing structure140, in the depicted embodiment, is a logical representation of physical storage media of the non-volatile memory device. In certain embodiments, the non-volatile memory device stores data sequentially, appending data to the log-based writing structure140at an append point144. Non-volatile storage media storing deallocated/unused logical blocks, in the depicted embodiment, is added to an available storage pool146for the non-volatile memory device. By clearing invalid data from the non-volatile memory device, and adding the physical storage capacity corresponding to the cleared data back to the available storage pool146, in one embodiment, the log-based writing structure140is cyclic, ring-like, and has a theoretically infinite capacity.

In the depicted embodiment, the append point144progresses around the log-based, append-only writing structure140in a circular pattern142storing data “A” through “M”. In one embodiment, the circular pattern142wear balances the non-volatile memory media, increasing a usable life of the non-volatile memory media. In the depicted embodiment, the file system may mark several blocks148,150,152,154as invalid, represented by an “X” marking on the blocks148,150,152,154. The file system, in one embodiment, may recover the physical storage capacity of the invalid blocks148,150,152,154and may add the recovered capacity to the available storage pool146. The file system may overwrite the invalid blocks with new data. In the depicted embodiment, modified versions of the blocks148,150,152,354have been appended to the log-based writing structure340as new blocks156,158,160,162in a read, modify, write operation or the like, allowing the original blocks148,150,152,154to be recovered.

In certain embodiments, the log-based writing structure such as log-based writing structure140maintains multiple logs. In at least one embodiment, data may be saved into one of the multiple logs based on different factors. For example, data may be saved into different logs based on a data type. As used herein, a data type is a characterization of data. A data type may describe a source of the data, frequency or recency at which the data is updated and/or deleted (e.g. a deletion characteristic), and the like. In at least one implementation, where the data may be saved into different logs based on a data type that describes the frequency at which the data is updated and/or deleted, the data may be saved into a hot log, a warm log, and a cold log.

In certain embodiments, the log-based writing structure may be controlled by a flash friendly file system (F2FS). As part of the F2FS, the file system may maintain multiple logs. In one embodiment, the F2FS may maintain six logs, including a hot node log, a hot data log, a warm node log, a warm data log, a cold node log, and a cold data log. For example, the F2FS may determine that data belongs in a hot node log when the data represents a direct node block for a directory. The F2FS may determine that data belongs in a hot data log when the data is stored in a directory entry block. The F2FS may determine that data belongs in a warm node log, when the data is stored in a direct node block for regular files. The F2FS may determine that data belongs in a warm data log when the data is stored in a data block made by a user. The F2FS may determine that data belongs in a cold node log when the data is stored in an indirect node block. The F2FS may determine that data belongs in a cold data log when the data is stored in a data block moved by cleaning, stored in a data block specified by a user, or multimedia file data. In one embodiment, the F2FS writes random data sequentially into logs in F2FS segments of 2 MB size. In one embodiment, the F2FS cleans (e.g. mark blocks as invalid) sections. A size of a section may be a multiple of a size of a segment. In one embodiment, the size of the segment is equal to the size of a physical erase block in non-volatile memory.

FIG. 2illustrates a system200for separating data with different data types. The system200includes a flash translation layer (FTL)202. The FTL202may translate the logical addresses for the mixed data associated with multiple logs into physical addresses for storage in a main memory (MM)204. As used herein, mixed data refers to data having different data types. As used herein, the main memory204may be a portion of memory on non-volatile memory elements that are used for storing data. In one embodiment, the main memory may include a plurality of multi-level cells, where multiple bits may be stored per cell. Prior to storage in the main memory204, the mixed data may be stored in an intermediate storage206. As used herein, the intermediate storage206may be a portion of memory into which data may be stored before storing the data in the main memory204. In one embodiment, the intermediate storage206may be a single-level cell storage area where a cell stores a single bit per cell. In one embodiment, the main memory204and the intermediate storage206are portions of flash memory.

The FTL202may receive a write request from a file system to write data from multiple logs. In one embodiment, the file system is on a host coupled to the system200. In one embodiment, the system200is a flash storage device that interfaces with the host. The FTL202may write the data from multiple logs to a single open physical erase block (PEB)208(1) in the intermediate storage (IS)206. When the data is written to the PEB208(1) from multiple logs, the data from the multiple logs is intermixed. For example, data from a hot node log, a hot data log, a warm node log, a warm data log, a cold node log, and a cold data log may be written to the PEB208(1). When the PEB208(1) has no available space, the FTL202may close the PEB208(1) and open a second PEB208(2). The FTL202may write further data from multiple logs to the second PEB208(2). In general, the intermediate storage206may have N1PEBs208(1)-208(N1).

The PEB208(1) keeps data entries. Each unit of the data may be written to a separate data entry. For example, the FTL202may write a first data from a first log into a first data entry210(1) of the PEB208(1). Each data entry may be associated with a different data type, such as a different deletion characteristic. For example, data entry210(1) may include data from a hot log, data entry210(2) may include data from a warm log, and data entry210(3) may include data from a cold log. The different deletion characteristic is depicted inFIG. 2with different patterns. Each data entry may be associated with a different input/output type, such as write and discard. For example, data entries210(1)-210(3) may include data that is to be written. Thus, the data of data entries210(1)-210(3) may be of the “write” I/O type. In one embodiment, the write I/O type data is synonymous with valid data. Data entry210(4) may include stale data (e.g. data that is to be written but is superseded by a newer version of the data). Thus, the data entry210(4) may be of the “discard” I/O type. In one embodiment, the discard I/O type data is synonymous with invalid data. In general, each PEB208may have space for N2data entries210(1)-210(N2). In one embodiment, data entries are of a variable size. In one embodiment, each PEB208has a different amount of data entries or data entries of different sizes. In this regard, N2can be different for each PEB208.

As part of receiving the write requests, the FTL202may receive metadata about the data being written to the intermediate storage206. The system200includes a host log history (HLH) log212. In one embodiment, the HLH log212is a portion of the flash memory. The FTL202may write the metadata received as part of the write requests to metadata entries214(1)-214(N3) of the HLH log212. The metadata entry214(1) may be referred to as the head of the HLH log212and the metadata entry214(N3) may be referred to as the tail of the HLH log212. Each metadata entry214points to a data entry210in the intermediate storage206.

Referring now to the example embodimentFIG. 3A, a metadata entry214includes a start block address (BA)302of the data entry210, a size304of the data entry210, a log identifier (ID)306of the data entry210, and an I/O type308of the data entry210. In one embodiment, the log ID306indicates a type of deletion characteristic of the data stored in the data entry210. In one embodiment, the I/O type308indicates a type of I/O of the data stored in the data entry210. In one embodiment, the metadata entry214is 4 bytes (4B), the start BA302is 21 bits (21 b), the size304is 7 b, the log ID306is 3 b, and the I/O type308is 1 b. In one embodiment, the BA302is a logical BA (LBA). In one embodiment, the BA302is a physical BA (PBA). In one embodiment, the metadata entries point directly to the data entry physical location. In one embodiment, responsive to the BA302being a PBA, no L2P translation is needed. In one embodiment, the7ballocated for the size304is not large enough to indicate the size of a data entry210. In one embodiment, a single data entry210may be pointed to by multiple metadata entries214.

In one embodiment, a first metadata entry and a second metadata entry adjacent to the first metadata entry may have a same log ID indicating a same deletion characteristic. In one embodiment, the FTL202determines that the first metadata entry and the second metadata entry have a same deletion characteristic and the FTL202concatenates the first metadata entry and the second metadata entry. Referring now to the example embodiment inFIG. 3B, the metadata entry214includes a first start LBA302, a first data size304, a first data I/O type308, a second start LBA302, a second data size304, a second data I/O type308, and the log ID306. Additional, fewer, or different parts may be included in the metadata entries214, and the parts may be arranged in any order, with respect toFIGS. 3A-B, depending on the embodiment.

Referring back toFIG. 2, the system200includes an HLH cache216. The FTL202may write a portion of the HLH log212from the tail into the HLH cache216. In one embodiment, the HLH cache216is a portion of random-access memory (RAM). The FTL202may write a portion of the metadata entries214(1)-214(N3) to the metadata entries218(1)-218(N4) of the HLH cache216.

In one embodiment, the FTL202selects a portion of the data in the intermediate storage206. In one embodiment, the selected portion of the data has a same deletion characteristic. The FTL202may identify the portion of the data by reading the metadata entries218corresponding to (e.g. pointing at the data entries210of) the portion of the data. In one embodiment, the FTL202may determine that the metadata entries218corresponding to the portion of the data have a same log ID306indicating a same deletion characteristic. In one embodiment, the FTL202evacuates the portion of data from the intermediate storage206to the main memory204. In one embodiment, evacuating data refers to writing data to an append point of a PEB in the main memory204.

To cope with fragmentation in the intermediate storage206due to selective evacuation into the main memory204, the FTL202determines an HLH log candidate to select, in one embodiment. Referring toFIG. 4, an HLH cache410is shown. In one embodiment, the FTL202scans (e.g. reads sequentially) metadata entries218(with respect toFIG. 2) within a predetermined window412, starting with the oldest valid metadata entry, for example, the metadata entry218(N4) with respect toFIG. 2. In one embodiment, a length of the predetermined window412is equal to a number of metadata entries218in the HLH cache410. In one embodiment, the length of the predetermined window412is less than the number of metadata entries218in the HLH cache410. The FTL202identifies each log ID306of the metadata entries218within the predetermined window412, in one embodiment. The different log IDs306are represented inFIG. 4by different patterns. In one embodiment, the FTL202determines a data payload corresponding to each identified log ID306. The FTL202computes the data payload corresponding to a log ID306as a sum of the sizes304of the metadata entries218having the log ID306, in one embodiment. In one embodiment, the FTL202computes the data payload a sum of the data entries210pointed to by the metadata entries218having the log ID306. In one embodiment, the FTL202selects the metadata entries218having a first log ID306corresponding to the largest data payload. Thus, in the example embodiment of the HLH cache410with respect toFIG. 4, the FTL202selects the metadata entries414.

The FTL202determines the physical location of the data corresponding to each of the metadata entries414, in one embodiment. The FTL202identifies a start LBA302in each of the metadata entries414, in one embodiment. In one embodiment, the FTL202identifies physical addresses of the data by translating each start LBA302to a physical address using a logical to physical (L2P) mapping structure. In one embodiment, the L2P mapping structure is stored in the RAM of the system200.

The system200includes the main memory204. In one embodiment, the FTL202identifies a PEB220(1) of the main memory204. The identified PEB220(1) is assigned to data having the first log ID306(e.g. having a first deletion characteristic), in one embodiment. In one embodiment, the FTL202evacuates the data located at the identified physical addresses to the PEB220(1) of the main memory204. In one embodiment, the FTL202writes the data located at the identified physical addresses to a portion of data entries222(1)-222(N5). In general, the main memory204includes PEBs220(1)-220(N6).

In one embodiment, responsive to evacuating the data corresponding to the metadata entries414, the FTL202indicates in a data structure that the data for those metadata entries has been evacuated. The data structure may be a lookup table having an index corresponding to a metadata entry and a value corresponding to the index indicating whether the data for that metadata entry has been evacuated. In one embodiment, responsive to evacuating the data corresponding to the metadata entries414, the FTL202deletes the metadata entries414. In one embodiment, the metadata entries414are no longer valid metadata entries414.

Referring back toFIG. 4, an HLH cache420is shown as a result of the evacuation of data corresponding to the metadata entries414. In the HLH cache420, the metadata entries414are depicted as having no pattern to indicate that the metadata entries are no longer valid. In one embodiment, the FTL202scans metadata entries within a predetermined window422, starting with the oldest valid metadata entry. The predetermined window422is same as the predetermined window412, in one embodiment. The FTL202identifies each log ID306of the metadata entries within the predetermined window412, excluding any metadata entries for data that has already been evacuated, in one embodiment. In one embodiment, the FTL202determines a data payload corresponding to each identified log ID306. In one embodiment, the FTL202selects the metadata entries having a second log ID306corresponding to the largest data payload of the remaining metadata entries. Thus, in the example embodiment of the HLH cache420, the FTL202selects the metadata entries424. The FTL202evacuates the data corresponding to the metadata entries424to a second PEB220(2) of the main memory204, in one embodiment. The identified PEB220(2) is assigned to data having the second log ID306, in one embodiment.

An HLH cache430is shown as a result of the evacuation of data corresponding to the metadata entries424. In the HLH cache430, the metadata entries414and the metadata entries424are depicted as having no pattern to indicate that the data corresponding to the metadata entries414and the metadata entries424have been evacuated. In one embodiment, the FTL202scans metadata entries within a predetermined window432, starting with the oldest valid metadata entry. In one embodiment, the FTL202determines that the oldest valid metadata entry has changed (e.g. the oldest valid metadata entry of the HLH cache430is different than the oldest valid metadata entry of the HLH cache420). Responsive to determining that the oldest valid metadata entry has changed, the FTL202shifts the window432so that it starts at the oldest valid entry, in one embodiment. Thus, the predetermined window432is same as the predetermined window422except that the window432is shifted, in one embodiment. The FTL202selects the metadata entries434having a third log ID306corresponding to the largest data payload of the remaining metadata entries, in one embodiment. The FTL202evacuates the data corresponding to the metadata entries434to a third PEB220(3) of the main memory204, in one embodiment. The identified PEB220(3) is assigned to data having the third log ID306, in one embodiment.

In one embodiment, upon determining that all of the metadata entries in the HLH cache216becoming invalid (e.g. pointing to data that has already been evacuated or indicating discarded data), the FTL202may delete the metadata entries and/or overwrite the metadata entries with other metadata entries from the HLH log212. In one embodiment, the HLH cache216is refilled from the HLH log212in a sliding manner by writing a portion of the HLH log212starting from the tail of the HLH log212and progressively towards the head of the HLH log212until the HLH cache216is refilled.

The FTL202continues to write data having a certain type of deletion characteristic (having a certain log ID306) to the corresponding assigned PEB220of the main memory204. In one embodiment, the main memory204has at most a number of open PEBs220as a number of log IDs identified by the FTL202within a predetermined time period. In one embodiment, upon filling the assigned PEB220with data of the certain deletion characteristic, the assigned PEB220is closed and a new PEB220is assigned to the data with the certain deletion characteristic. In one embodiment, only some of the data corresponding to a first log ID306is evacuated to the assigned PEB220before the assigned PEB220fills up and is thereby closed. In one embodiment, the FTL202identifies the new PEB220and begins a new scan of a window of the metadata entries218in the HLH cache216. In one embodiment, the FTL202selects a second log ID306corresponding to second data and corresponding to a largest number of metadata entries (e.g. the metadata entries414) in the window of the metadata entries218. In one embodiment, the FTL202writes the second data to the new PEB220.

In one embodiment, responsive first PEB220being open for greater than a predetermined threshold, the FTL202may select a next log ID of next last valid entry in the HLH cache216and evacuate the data corresponding to the next log ID to the first PEB220, even though the first PEB220was not initially assigned to the next log ID. The predetermined condition may be a predetermined amount of time passing, a predetermined number of metadata entries being read, or a predetermined number of data being evacuated to the main memory204.

The FTL202may be implemented as a hardware circuit comprising custom VLSI circuits or gate arrays, off-the-shelf semiconductors such as logic chips, transistors, or other discrete components. The FTL202may be implemented in programmable hardware devices such as field programmable gate arrays, programmable array logic, programmable logic devices, or the like. The FTL202may also be implemented at least partially in software (e.g. programmed instructions) for execution by various types of processors. The FTL202includes the various types of processors, in one embodiment. The software portions may be stored on one or more computer readable and/or executable storage media including non-transitory storage media.

FIG. 5depicts an example flow chart of a process500for separating data with different data types. The process500may be performed by a controller such as the FTL202with respect toFIG. 2. Additional, fewer, or different operations may be performed in the process500depending on the embodiment. The controller writes mixed data to a first physical erase block (PEB) in intermediate storage (502). Mixed data herein refers to data having mixed data types. In one embodiment, the data types are defined by deletion characteristics. In one embodiment, the controller writes data in units of segments to the first PEB. In one embodiment, a data entry is a unit in the first PEB. The data entry herein is logically contiguous data from one log source (e.g. a hot node log). There may be multiple data entries in one segment.

The controller maintains metadata in a log (504). The metadata corresponds to the mixed data. In one embodiment, the controller writes the metadata in the log as metadata entries. Each metadata entry may point to a different data entry. In one embodiment, the log includes a first log in flash memory and a second log in random-access memory (RAM). In one embodiment, the controller writes the metadata entries to the first log in flash memory. The controller writes a portion of the metadata entries to the second log in RAM, in one embodiment. In one embodiment, the controller uses the second log in RAM to select data to evacuate.

In one embodiment, the controller maintains, in the metadata entries, log IDs identifying different deletion characteristics. The controller may determine that a first metadata entry and a second metadata entry adjacent to the first metadata entry have a same deletion characteristic (e.g. have a same log ID stored in the corresponding log ID field of the metadata entry). The controller may concatenate the first metadata entry and the second metadata entry. The controller maintains, in the metadata entries, input/output (I/O) type identifiers indicating a type of I/O is associated with the data referenced by the metadata entries, in one embodiment. The I/O type identifiers may include write, erase, and discard. In one embodiment, erase is an I/O type wherein data is moved from a mapped address space to an unmapped address space. In one embodiment, discard is a non-secure variant of the erase functionality. In this regard, discard may be an I/O type wherein data is permanently deleted.

The controller identifies, using the log, first data having a first deletion characteristic (506). The controller may scan a window of the metadata entries. In one embodiment, the window has a predetermined length and starts at an oldest valid metadata entry. In one embodiment, the controller may determine a starting location of the window. The controller may, responsive to evacuating data corresponding to the oldest valid metadata entry, shift the window such that the window starts with a next oldest valid metadata entry.

The controller may select a first log ID identifying the first deletion characteristic of first data. In one embodiment, the controller selects the first log ID responsive to the first log ID corresponding to a largest number of metadata entries in the window. The controller determines that a second PEB in main memory is assigned to any data having the first deletion characteristic, in one embodiment. The controller may determine that the second PEB is open for writing.

The controller evacuates the first data to the second PEB in main memory (508). In one embodiment, the controller writes the first data to an append point of the second PEB. In one embodiment, the controller tracks metadata entries in the second log in RAM that point to evacuated data. In one embodiment, responsive to evacuating data corresponding to all the metadata entries in the second log in RAM, the controller overwrite the metadata entries in the second log in RAM with other metadata entries from the first log in flash memory.

In one embodiment, the controller determines that all data entries from the first PEB are evacuated to the main memory. Responsive to the determination, the controller erases the first PEB, in one embodiment. In one embodiment, the controller returns the available space of the first PEB to an available memory pool. In one embodiment, the controller determines that all data entries (from the first PEB) having metadata indicating a write I/O type are evacuated to the main memory. Responsive to the determination, the controller erases the first PEB, in one embodiment.

In one embodiment, the controller determines that all data corresponding to the first log ID is evacuated and that the second PEB has available space (e.g. at the append point). The controller selects a second log ID, in one embodiment. In one embodiment, the second log ID identifies a second deletion characteristic corresponding to second data. The controller writes the second data to the append point of the second PEB, in one embodiment.

Configuration of Exemplary Embodiments