Data migration across tiers in a multi-tiered storage area network

A storage volume functioning at least in part as cache for a tiered storage system, the storage volume having an in-memory write extent consisting of write-accessed grains retrieved from a plurality of hot extents in a first tier of the tiered storage system, where the in-memory write extent is a same size as a block erase size of a solid-state drive tier of the tiered storage system. The storage volume further having an in-memory read extent consisting of read-accessed grains retrieved from the plurality of hot extents in the first tier of the tiered storage system.

BACKGROUND

The present disclosure relates to data storage, and, more specifically, to data migration in a tiered storage system.

Storage controllers can manage tiered storage systems having different types of storage volumes with different performance characteristics in different tiers. Frequently accessed data can be stored in a storage tier having higher performance storage volumes (e.g., solid-state drives) and infrequently accessed data can be stored in a storage tier having lower performance storage volumes (e.g., tape drives). Separating data according to a storage tiering policy can result in adequate performance and reduced cost.

SUMMARY

Aspects of the present disclosure are directed toward a computer-implemented method for migrating data in a tiered storage system comprising a hard disk drive tier and a solid-state drive tier, the method comprising characterizing grains in a first extent and a second extent in the hard disk drive tier by identifying a first grain in the first extent and a second grain in the second extent with write accesses and identifying a third grain in the first extent and a fourth grain in the second extent with read accesses, where the first extent and the second extent are hot extents. The method further comprises migrating the first grain and the second grain from the first extent and the second extent to an in-memory write extent stored in an in-memory cache of the tiered storage system. The method further comprises migrating the third grain and the fourth grain from the first extent and the second extent to an in-memory read extent stored in the in-memory cache of the tiered storage system.

Additional aspects of the present disclosure are directed to systems and computer program products configured to perform the method described above.

Further aspects of the present disclosure are directed toward a tiered storage system including a first tier comprising a plurality of hot extents, where a respective hot extent comprises write-accessed grains, read-accessed grains, and un-accessed grains. The tiered storage system further including a cache, the cache comprising a write extent consisting of write-accessed grains from a plurality of hot extents in the first tier and a read extent consisting of read-accessed grains from the plurality of hot extents in the first tier. The tiered storage system further including a second tier comprising solid-state drives, a respective solid-state drive comprising an extent consisting of write-accessed grains from the write extent.

Further aspects of the present disclosure are directed toward a storage volume functioning at least in part as cache for a tiered storage system, the storage volume comprising an in-memory write extent consisting of write-accessed grains retrieved from a plurality of hot extents in a first tier of the tiered storage system, where the in-memory write extent is a same size as a block erase size of a solid-state drive tier of the tiered storage system. The storage volume further comprising an in-memory read extent consisting of read-accessed grains retrieved from the plurality of hot extents in the first tier of the tiered storage system.

The present summary is not intended to illustrate each aspect of, every implementation of, and/or every embodiment of the present disclosure.

DETAILED DESCRIPTION

Aspects of the present disclosure are directed toward data storage, and, more specifically, to data migration in a tiered storage system (e.g., a storage area network (SAN)). While not limited to such applications, embodiments of the present disclosure may be better understood in light of the aforementioned context.

Aspects of the present disclosure track in-memory data structures for read and write grains, where these grains are written in-memory based on the access pattern such as read-only (e.g., read-accessed) grains being written to an in-memory read extent and read-write (e.g., write-accessed) grains being written to an in-memory write extent. Further aspects of the present disclosure are configured to dynamically align the grain/extent size of the in-memory write extent and the in-memory read extent to a solid-state drive (SSD) block erase size based on different SSD types in a hybrid SSD environment. Further aspects of the present disclosure are directed to a tiering mechanism to tier the data back to a hard disk drive (HDD) tier by forming the original HDD extent or grain on the original location in the extent using the in-memory data structure for grains of the extent.

Storage volumes can be split into many logical units such as extents. Extents are divided into smaller units such as grains (also referred to as granules, chunks, sub-extents, etc.). Extents can be classified as hot extents or cold extents, where hot extents receive more input/output (I/O) operations relative to cold extents. In other words, hot extents are accessed, used, and/or modified more often compared to cold extents. Storage controllers can move hot extents to higher performance tiers (e.g., promotion) and colder extents to lower-performance tiers (e.g., demotion) as part of a storage tiering policy.

In tiered storage systems having, for example, solid state drives (SSDs) in a first tier, hard disk drives (HDDs) in a second tier, and/or tape drives in a third tier, data can be strategically distributed throughout the tiers in order to realize an economical system with appropriate performance. For example, hot extents are typically stored in SSDs because SSDs exhibit improved performance for data that is accessed frequently relative to other types of storage volumes. In contrast, cold extents are typically stored in tape drives because tape drives are a less expensive method of storing data that is accessed infrequently. Furthermore, extents can be migrated between tiers as different extents transition from hot extents to cold extents, or vice versa, as a result of changing usage of the data in the storage system.

Despite the performance improvements associated with SSDs such as lower latency relative to HDDs, SSDs nonetheless have disadvantages. A first disadvantage is that SSDs do not overwrite data, but rather first erase the data block and then rewrite data to the erased data block. A second disadvantage is that SSDs are associated with a finite number of program erase cycles (referred to as write endurance). As a result, a data block can only be erased and re-written a certain number of times before it is worn out and the associated SSD storage volume must be replaced.

SSDs are typically divided into a number of blocks, where each block is further divided into a number of pages. In SSDs, the unit of writing is a page, whereas the unit of erasing is a block. This results in a technical challenge: if the SSD needs to erase a single page of data (e.g., as a result of a garbage collection operation), the SSD must erase the entire block associated with the single page of data, thereby erasing multiple pages of data that do not necessarily need to be erased. Garbage collection is performed by first identifying a data block having a number of invalid pages above a customizable threshold, then moving the valid pages of that data block to another data block, then erasing the identified data block, and finally by moving the valid pages from the other data block back to the identified and erased data block. Garbage collection and wear leveling (e.g., the even distribution of data within or between SSD volumes) can collectively result in writing valid data multiple times on an SSD, thereby reducing its working life. This excessive writing to SSDs is referred to as write amplification.

Some aspects of the present disclosure include techniques for reducing write amplification and improving SSD lifespans in tiered storage systems. Aspects of the present disclosure can improve SSD lifespans by classifying grains in a plurality of hot extents as write-accessed grains, read-accessed grains, or un-accessed grains. Aspects of the present disclosure can then transfer the write-accessed grains from multiple hot extents to an in-memory write extent and can transfer the read-accessed grains from multiple hot extents to an in-memory read extent. The size of the in-memory read extent and the in-memory write extent can be configured in such a way that it matches the size of the SSD erase block size in the tiered storage system where the data can be stored according to hotness. The un-accessed grains are not transferred. Once the in-memory write extent is filled above a threshold with write-accessed grains, the data can be transferred to an extent of the SSD tier of the tiered storage system. Once the in-memory read extent is filled above a threshold with read-accessed grains, the data can be transferred to a cache of the tiered storage system. Thus, aspects of the present disclosure can reduce write amplification by selectively migrating write-accessed grains to the SSD tier via an in-memory write extent in order to improve the erase cycle and reduce write amplification. As another example, aspects of the present disclosure can preserve SSD storage space by holding read-accessed grains in cache. The aforementioned advantages (and any advantages discussed hereafter) are example advantages, and embodiments of the present disclosure can exist with that realize all, some, or none of the aforementioned advantages while remaining within the spirit and scope of the present disclosure.

FIG. 1illustrates a first instance100of a tiered storage system having an HDD tier102, an SSD tier124, and an in-memory cache136. As seen inFIG. 1, the HDD tier102includes numerous extents such as extent1104through extent10122. Likewise, SSD tier124includes numerous extents such as extent1126through extent5134. Each of the extents is associated with multiple grains. Although nine grains are shown in each of extents1104through extent10122and extent1126through extent5134, this is purely for illustration and more or fewer grains can be present in more or fewer extents than illustrated in HDD tier102and SSD tier124. Furthermore, individual drives/disks are not shown in either HDD tier102or SSD tier124for clarity, but in reality, the extents illustrated in each of HDD tier102and SSD tier124exist within one or more storage volumes (e.g., disks, drives, etc.).

As shown in key142, each grain can be classified as not accessed (white), read-accessed (cross-hatched), or write-accessed (black). The classifications of respective grains in each extent can be determined based on permissions or access rights associated with previous or current uses of the data in respective grains. While write-accessed, read-accessed, and un-accessed are discussed above, other variations are also possible, such as, but not limited to, no permissions, read-permissioned, write-permissioned, and/or execute-permissioned.

In addition to grains being classified as write-accessed, read-accessed, or un-accessed, extents1104through extent10122in HDD tier102can also be classified as hot extents or cold extents. In various embodiments, classifications of hot extents and cold extents can use or not use the grain classifications discussed above. As one example using the aforementioned grain classifications, if an extent has a proportion of grains classified as write-accessed and/or read-accessed, the extent can be classified as a hot extent, otherwise it can be classified as a cold extent. As an example of not using the aforementioned grain classifications, if an extent has a number of input/output (I/O) operations above a threshold, regardless of the type of I/O operations or the distribution of I/O operations between grains in the extent, the extent can be classified as a hot extent, otherwise it can be classified as a cold extent. As will be appreciated by one skilled in the art, many variations on the above-mentioned techniques, in addition to other techniques, strategies, and methodologies known in the art, can be utilized in classifying extents as hot extents or cold extents.

For purposes of explanation alone and without any suggested limitation, assume extent3108, extent8118, and extent9120are classified as hot extents.

Some aspects of the present disclosure generally relate to one or more of the following non-limiting examples:(1) migrating write-accessed grains in hot extents of HDD tier102to an in-memory write extent138and migrating read-accessed grains in hot extents of HDD tier102to an in-memory read extent140(discussed hereinafter with respect toFIGS. 2 and 5); and/or(2) migrating write-accessed grains from an in-memory write extent138to the SSD tier124(discussed hereinafter with respect toFIGS. 3 and 5); and/or(3) storing read-accessed grains from filled in-memory read extent140to in-memory cache136(discussed hereinafter with respect toFIGS. 3 and 5); and/or(4) storing a modified write-accessed grain from SSD tier124in the in-memory write extent138(discussed hereinafter with respect toFIGS. 4 and 6); and/or(5) demoting cold extents from the SSD tier124to a lower tier (discussed hereinafter with respect toFIG. 7); and/or(6) configuring extent sizes and/or block erase sizes of storage devices in the tiered storage system (discussed hereinafter with respect toFIG. 8).

WhileFIG. 1illustrates all grains in HDD tier102classified as un-accessed, read-accessed, or write-accessed, embodiments also exist where only grains in hot extents of HDD tier102are classified as un-accessed, read-accessed, or write-accessed. Such embodiments may be beneficial where hot extents and cold extents are classified according to a classification scheme that does not utilize the grain classifications discussed above. In such embodiments, memory and/or processing power can be reduced by only classifying grains within hot extents rather than grains in all extents.

Each of HDD tier102, SSD tier124, and in-memory cache136are communicatively coupled to one another. In some embodiments, a storage controller (not shown) is communicatively coupled to each of HDD tier102, SSD tier124, and in-memory cache136, and the storage controller is configured to classify extents as hot extents or cold extents, classify grains within at least the hot extents, manage migrations of write-accessed grains from hot extents in HDD tier102to SSD tier124via in-memory write extents138, manage migrations of read-accessed grains from hot extents in HDD tier102to in-memory cache136via in-memory read extent140, and/or implement other variations of the present disclosure discussed hereafter.

In-memory cache136can be a working memory associated with the tiered storage system. In various embodiments, in-memory cache136can reside within, or be designated by, a storage controller (not shown). In some embodiments, in-memory cache136can be a relatively high-performance memory (e.g., SSD, flash, etc.). In some embodiments, in-memory cache136is a designated storage volume, a portion of a storage volume, or a collection of multiple storage volumes. In some embodiments, in-memory cache136is a designated portion of SSD tier124.

FIG. 2illustrates a second instance200(e.g., at a time after the first instance100) of the tiered storage system having write-accessed grains migrated from extent3108, extent8118, and extent9120(e.g., the hot extents) of HDD tier102to an in-memory write extent138. Likewise, read-accessed grains are migrated from extent3108, extent8118, and extent9120(e.g., the hot extents) to an in-memory read extent140.

Advantageously, and as shown inFIG. 2, the un-accessed grains in the extents3108,8118, and9120are not migrated with the write-accessed grains and the read-accessed grains. By not migrating un-accessed grains, storage is conserved on the higher-performance SSD tier124and in the in-memory cache136.

As will be noted, key142inFIG. 2illustrates the additional grain status of migrated (dotted patterning). The migrated status is used to illustrate the transition of grains between tiers in the tiered storage system. However, the migrated status may mean several different things according to various embodiments. For example, grains with the migrated status may be unchanged (e.g., copied to in-memory write extent138and in-memory read extent140and not erased), deleted (e.g., copied to in-memory write extent138and in-memory read extent140and erased), overwritten (e.g., copied to in-memory write extent138and in-memory read extent140and then either (1) erased and new data written or (2) erased by overwriting the original data with new data), and so on.

FIG. 3illustrates a third instance300(e.g., at a time after the second instance200) of the tiered storage system having write-accessed grains migrated from the in-memory write extent138to an extent1126of the SSD tier124.FIG. 3also illustrates read-accessed grains from a filled in-memory read extent140being stored in the in-memory cache136.

Holding read-write (e.g., write-accessed) grains in in-memory write extents138prior to writing them to extent1126in SSD tier124improves SSD life by storing a full extent of write-accessed grains on extent1126of SSD tier124in embodiments where in-memory write extent138is similarly sized to extent1126. Likewise, holding read-accessed grains from filled in-memory read extents140in the in-memory cache136rather than writing them to SSD tier124preserves storage resources of the SSD tier124.

Nonetheless, whileFIG. 3illustrates the read-accessed grains of filled in-memory read extents140stored to in-memory cache136, aspects of the present disclosure also allow for the read-accessed grains to be migrated from in-memory read extent140to an extent of the SSD tier124(e.g., in situations where the in-memory cache136is full).

FIG. 3additionally illustrates additional write-accessed grains being stored in a new in-memory write extent138and additional read-accessed grains being store in a new in-memory read extent140.

FIG. 4illustrates a fourth instance400(e.g., at a time after the third instance300) of the tiered storage system having a modified write-accessed grain in extent1126of SSD tier124stored in the in-memory write extent138of in-memory cache136and further having the original write-accessed grain de-referenced in extent1126of SSD tier124. De-referencing the original write-accessed grain is shown for illustrative purposes inFIG. 4by vertical cross-hatching (e.g., see updated key142ofFIG. 4). Writing the modified write-accessed grain to in-memory write extent138and de-referencing the original write-accessed grain in extent1126of SSD tier124can reduce the write amplification on volumes of SSD tier124.

As used herein, de-referencing can mean changing a pointer in a data map to point to the modified write-accessed grain newly stored in the in-memory write extent138rather than the original write-accessed grain in extent1126. Thus, the original write-accessed grain in extent1126is not necessarily deleted, but rather can remain in extent1126, even though it is no longer pointed to as the current version of the related data.

In the event a read-accessed grain stored in in-memory cache136is modified, the modification can be stored directly in the in-memory cache136.

Referring now toFIG. 5, illustrated is a flowchart of an example method500for migrating write-accessed grains and read-accessed grains from hot extents, in accordance with embodiments of the present disclosure. The method500can be performed by any combination of hardware and/or software configured to manage a tiered storage system (e.g., storage controller900ofFIG. 9).

Operation502includes characterizing grain access patterns in a tiered storage system. In some embodiments, operation502includes classifying grains in at least hot extents in a lower tier (e.g., an HDD tier) as un-accessed (e.g., not accessed), read-accessed, or write-accessed. Extents can be classified as hot extents or cold extents based on types of I/O operations and/or numbers of I/O operations associated with various grains in respective extents.

Operation504includes migrating write-accessed grains from the hot extents of the lower tier to in-memory write extents. Operation506includes writing an in-memory write extent to an SSD extent of an SSD in the SSD tier of the tiered storage system. In some embodiments, operation506is triggered an the in-memory write extent is filled. In some embodiments, each in-memory write extent is similarly sized as the extents of the SSD tier.

Operation508includes migrating read-accessed grains in at least hot extents of the lower tier to an in-memory read extent stored in a working memory of the tiered storage system.

Operation510includes determining if the cache of the working memory of the tiered storage system is full. In the event that the cache is not full (510: NO), the method500proceeds to operation512and stores the in-memory read extent to the cache of the tiered storage system. In some embodiments, operation512is triggered when the in-memory read extent is determined to be full. In some embodiments, the in-memory read extent is similarly sized to extents in the cache of the working memory.

In the event that the cache is full (510: YES), the method500proceeds to operation514and writes the in-memory read extent to an SSD extent of an SSD volume in the SSD tier of the tiered storage system. In some embodiments, operation514is triggered when the in-memory read extent is determined to be full. In some embodiments, the in-memory read extent is similarly sized to extents in the SSD tier.

As shown inFIG. 5, operations504-506can occur in parallel with operations508-514. In various embodiments, only operations504-506occur and operations508-514do not occur, or vice versa. In some embodiments, operations504-506occur sequentially (e.g., before or after) operations508-514.

Referring now toFIG. 6, illustrated is a flowchart of an example method600for generating a data map, in accordance with embodiments of the present disclosure. The method600can be performed by any combination of hardware and/or software configured to manage a tiered storage system (e.g., storage controller900ofFIG. 9).

Operation602includes generating a data map of grains, extents, and/or tiers for respective data stored by the tiered storage system. The map can include classifications of grains (e.g., un-accessed, write-accessed, read-accessed, etc.), classifications of extents (e.g., hot, cold, etc.), locations of respective grains in a lower tier (e.g., an HDD tier), a higher tier (e.g., an SSD tier), an in-memory write extent, an in-memory read extent, and/or an in-memory cache, and so on.

Operation604includes writing a modified write-accessed grain to an in-memory write extent, where the unmodified write-accessed grain is stored in an extent of the SSD tier. Writing the modified write-accessed grain to the in-memory write extent (as opposed to updating it in the SSD tier) can reduce write amplification by avoiding writing updated data to the SSD tier.

Operation606includes updating the data map generated in operation602to reflect the new location of the modified write-accessed grain in the in-memory write extent and de-referencing the original write-accessed grain in the extent of the SSD tier. As previously discussed, de-referencing can mean changing a pointer in the data map to point to the modified write-accessed grain newly stored in the in-memory write extent rather than the unmodified write-accessed grain in the SSD tier. Thus, the unmodified write-accessed grain in the SSD tier is not necessarily deleted, but rather can remain in the SSD tier even though it is no longer pointed to as the current version of the related data in the data map.

Referring now toFIG. 7, illustrated is a flowchart of an example method700for demoting cold extents, in accordance with embodiments of the present disclosure. The method700can be performed by any combination of hardware and/or software configured to manage a tiered storage system (e.g., storage controller900ofFIG. 9).

Operation702includes identifying a cold extent for demotion from an SSD tier to a lower tier (e.g., an HDD tier, a tape drive tier, etc.). An extent can be identified as a cold extent based on a number of I/O operations, a type of I/O operations, and/or a distribution of I/O operations on respective grains stored in the extent.

Operation704includes writing the cold extent to the lower tier. In some embodiments, the cold extent is written in its entirety to a single, similarly sized extent in the lower tier. In some embodiments, the cold extent is written to multiple extents in the lower tier. In embodiments where the cold extent is written to multiple extents in the lower tier, the multiple extents in the lower tier can be the original locations that the respective grains were originally stored before being aggregated and collectively migrated to the SSD tier via an in-memory write extent.

Operation706includes sending a TRIM command to the SSD layer to reclaim the invalid extent space resulting from returning the cold extent to the lower tier. Although a TRIM command is previously discussed, other commands are within the spirit and scope of the present disclosure such as, for example, a garbage collection command, an UNMAP command, and/or other commands.

Referring now toFIG. 8, illustrated is a flowchart of an example method800for configuring extent sizes, in accordance with embodiments of the present disclosure. The method800can be performed by any combination of hardware and/or software configured to manage a tiered storage system (e.g., storage controller900ofFIG. 9).

Operation802includes identifying storage devices in a storage environment. Storage devices can include tape drives, HDDs, SSDs, working memories, and so on. Each of the storage devices can be configured with a predetermined or customizable extent size and/or grain size. SSDs can also contain a predetermined or customizable block erase size.

Operation804includes configuring the in-memory write extent size and in-memory read extent size to match a block erase size of an SSD in the SSD tier. In some embodiments, extent sizes and block erase sizes are configured to be approximately equal to one another. In some embodiments, extent sizes between different storage devices (e.g., HDDs vs. SSDs, different classes of SSDs, etc.) are configured to be approximately equal to one another. Although extent sizes are discussed above, some embodiments include configuring grain sizes.

Operation806includes applying the configured extent sizes to the in-memory write extent, the in-memory read extent, and/or the block erase size of the SSD(s) in the SSD tier.

FIG. 9illustrates a block diagram of an example storage controller900in accordance with some embodiments of the present disclosure. Storage controller900can be a combination of hardware and/or software configured to manage a physical or virtual storage system having multiple tiers.

In various embodiments, storage controller900can perform the methods described inFIGS. 5-8and/or the functionality discussed inFIGS. 1-4. In some embodiments, the storage controller900receives instructions related to aforementioned methods and functionalities by downloading processor-executable instructions from a remote data processing system via a network950. In other embodiments, storage controller900provides instructions for the aforementioned methods and/or functionalities to a client machine such that the client machine executes the method, or a portion of the method, based on the instructions provided by the storage controller900.

The storage controller900includes a memory925, storage930, an interconnect920(e.g., BUS), one or more CPUs905(e.g., processors), an I/O device interface910, I/O devices912, and a network interface915.

Each CPU905retrieves and executes programming instructions stored in the memory925or storage930. The interconnect920is used to move data, such as programming instructions, between the CPUs905, I/O device interface910, storage930, network interface915, and memory925. The interconnect920can be implemented using one or more busses. The CPUs905can be a single CPU, multiple CPUs, or a single CPU having multiple processing cores in various embodiments. In some embodiments, a CPU905can be a digital signal processor (DSP). In some embodiments, CPU905includes one or more 3D integrated circuits (3DICs) (e.g., 3D wafer-level packaging (3DWLP), 3D interposer based integration, 3D stacked ICs (3D-SICs), monolithic 3D ICs, 3D heterogeneous integration, 3D system in package (3DSiP), and/or package on package (PoP) CPU configurations). Memory925is generally included to be representative of a random access memory (e.g., static random access memory (SRAM), dynamic random access memory (DRAM), or Flash). The storage930is generally included to be representative of a non-volatile memory, such as a hard disk drive, solid state device (SSD), removable memory cards, optical storage, or flash memory devices. In an alternative embodiment, the storage930can be replaced by storage area-network (SAN) devices, the cloud, or other devices connected to the storage controller900via the I/O device interface910or a network950via the network interface915.

In some embodiments, the memory925stores instructions960and storage930stores data map932. However, in various embodiments, the instructions960and data map932are stored partially in memory925and partially in storage930, or they are stored entirely in memory925or entirely in storage930, or they are accessed over a network950via the network interface915.

Instructions960can be processor-executable instructions for performing any portion of, or all of, any of the methods ofFIGS. 5-8and/or any of the functionality discussed inFIGS. 1-4. Data map932can be a map configured to store extent classifications, grain classifications, grain locations (historical, current, and/or projected), and so on. In some embodiments, data map932stores pointers to relevant grains of data and updates the pointers as grains are migrated between tiers.

In various embodiments, the I/O devices912include an interface capable of presenting information and receiving input. For example, I/O devices912can present information to a user interacting with storage controller900and receive input from the user.

Storage controller900is connected to the network950via the network interface915. Network950can comprise a physical, wireless, cellular, or different network.

Characteristics are as follows:

Service Models are as follows:

Deployment Models are as follows:

Embodiments of the present invention can also be delivered as part of a service engagement with a client corporation, nonprofit organization, government entity, internal organizational structure, or the like. These embodiments can include configuring a computer system to perform, and deploying software, hardware, and web services that implement, some or all of the methods described herein. These embodiments can also include analyzing the client's operations, creating recommendations responsive to the analysis, building systems that implement subsets of the recommendations, integrating the systems into existing processes and infrastructure, metering use of the systems, allocating expenses to users of the systems, and billing, invoicing (e.g., generating an invoice), or otherwise receiving payment for use of the systems.

Different instances of the word “embodiment” as used within this specification do not necessarily refer to the same embodiment, but they can. Any data and data structures illustrated or described herein are examples only, and in other embodiments, different amounts of data, types of data, fields, numbers and types of fields, field names, numbers and types of rows, records, entries, or organizations of data can be used. In addition, any data can be combined with logic, so that a separate data structure may not be necessary. The previous detailed description is, therefore, not to be taken in a limiting sense.

To further illustrate aspects of the present disclosure, several variations of the present disclosure will now be discussed.

A first variation relates to a method for migrating data in a tiered storage system comprising a hard disk drive tier and a solid-state drive tier, the method comprising characterizing grains in a first extent and a second extent in the hard disk drive tier by identifying a first grain in the first extent and a second grain in the second extent with write accesses and identifying a third grain in the first extent and a fourth grain in the second extent with read accesses, where the first extent and the second extent are hot extents. The method further comprises migrating the first grain and the second grain from the first extent and the second extent to an in-memory write extent stored in an in-memory cache of the tiered storage system. The method further comprises migrating the third grain and the fourth grain from the first extent and the second extent to an in-memory read extent stored in the in-memory cache of the tiered storage system.

A second variation including the limitations of the first variation further comprises migrating data from the in-memory write extent to an extent of a solid-state drive storage volume in the solid-state drive tier.

A third variation including the limitations of the second variation further includes the extent of the solid-state drive storage volume consisting of write-accessed grains migrated from a plurality of hot extents in the hard disk drive tier via the in-memory write extent.

A fourth variation including the limitations of the second and/or third variations further includes the first grain being updated to a modified first grain, and the method further comprising storing the modified first grain in the in-memory write extent, and updating a pointer in a data map associated with the first grain to point to the modified first grain in the in-memory write extent and deleting a previous pointer in the data map associated with the first grain and pointing to the extent of the solid-state drive storage volume.

A fifth variation including the limitations of one or more of the second through fourth variations further includes the in-memory write extent being a same size as the extent of the solid-state drive storage volume.

A sixth variation including the limitations of the fifth and/or sixth variations further includes migrating data from the in-memory write extent to an extent of a solid-state drive storage volume in the solid-state drive tier is triggered when the in-memory write extent is determined to be filled.

A seventh variation including the limitations of the fifth variation further includes the extent of the solid-state drive storage volume being a same size as a block erase size of the solid-state drive storage volume.

An eighth variation including the limitations of one or more of the first through the seventh variations further includes storing data from the in-memory read extent to an in-memory cache.

A ninth variation including the limitations of the eighth variation further includes the in-memory cache consisting of read-accessed grains from a plurality of hot extents migrated from the hard disk drive tier via the in-memory read extent.

A tenth variation including the limitations of one or more of the first through ninth variations further includes migrating, in response to filling the in-memory read extent and further in response to determining an in-memory cache is full, data from the in-memory read extent to an extent of a solid-state drive (SSD) storage volume in the solid-state drive tier.

An eleventh variation including the limitations of the first variation further includes migrating, in response to filling the in-memory write extent, data from the in-memory write extent to an extent of a solid-state drive storage volume in the solid-state drive tier of the storage system, and storing, in response to filling the in-memory read extent, data from the in-memory read extent to an in-memory cache.

A twelfth variation including the limitations of the eleventh variation further includes identifying a cold extent in the solid-state drive tier of the storage system for demotion to the hard disk drive tier of the storage system, migrating the cold extent to the hard disk drive tier, and sending a TRIM command to the solid-state drive tier related to the cold extent.

A thirteenth variation including the limitations of the twelfth variation further includes the cold extent including the first grain and the second grain, and where migrating the cold extent to the hard disk drive tier further comprises migrating the first grain to the first extent and migrating the second grain to the second extent.

A fourteenth variation including the limitations of one or more of eleventh through thirteenth variations further includes maintaining a data map of respective grains in the hard disk drive tier, the solid-state drive tier, the in-memory write extent, and/or the in-memory read extent.

A fifteenth variation including the limitations of one or more of the first through fourteenth variations further includes the method being performed by a storage controller executing program instructions, and where the instructions are downloaded to the storage controller from a remote data processing system via a network.

A sixteenth variation including the limitations of one or more of the first through fifteenth variations further includes the in-memory read extent and the in-memory write extent being dynamically sized to a same size as an erase block size of a solid-state drive of the tiered storage system.

A seventeenth variation relates to a tiered storage system including a first tier comprising a plurality of hot extents, where a respective hot extent comprises write-accessed grains, read-accessed grains, and un-accessed grains. The tiered storage system further including a cache, the cache comprising a write extent consisting of write-accessed grains from a plurality of hot extents in the first tier and a read extent consisting of read-accessed grains from the plurality of hot extents in the first tier. The tiered storage system further including a second tier comprising solid-state drives, a respective solid-state drive comprising an extent consisting of write-accessed grains from the write extent.

An eighteenth variation including the limitations of the sixteenth variation further includes the write extent being a same size as an extent of a solid-state drive in the second tier, and the write extent being a same size as a block erase size of the solid-state drive in the second tier.

A nineteenth variation generally relates to a storage volume functioning at least in part as cache for a tiered storage system, the storage volume comprising an in-memory write extent consisting of write-accessed grains retrieved from a plurality of hot extents in a first tier of the tiered storage system, where the in-memory write extent is a same size as a block erase size of a solid-state drive tier of the tiered storage system. The storage volume further comprising an in-memory read extent consisting of read-accessed grains retrieved from the plurality of hot extents in the first tier of the tiered storage system.

A twentieth variation including the limitations of the nineteenth variation further includes the in-memory write extent being configured to migrate data to the extent of the solid-state drive in response to filling the in-memory write extent.