Enhancement of Application Performance Using Storage System Optimization
By optimizing flash input/output operations through direct heat map information retrieval from the flash translation layer, the system addresses inefficiencies in existing storage tiering mechanisms, reducing CPU consumption and enhancing application performance in flash drives.
Patent Information
- Application Number
- JP2023531583
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2020-12-02
- Filing Date
- 2021-11-09
- Publication Date
- 2025-07-09
- Estimated Expiration
- 2041-11-09
AI Technical Summary
Existing storage tiering mechanisms for flash drives are inefficient due to heat measurements being taken in the same manner as for hard disks, leading to high CPU consumption and suboptimal application performance, as they do not account for the different operational characteristics of flash drives.
A system and method for optimizing flash input/output operations by directly fetching heat map information from the flash translation layer before tiered migration decisions, reducing CPU consumption and enhancing application performance through improved heat map maintenance and extent balancing.
This approach reduces CPU consumption for heat map maintenance, optimizes memory resources, and enhances application performance by efficiently managing extents in high-speed tiers, thereby improving system resource utilization and performance.
Smart Images

Figure 0007705208000005 
Figure 0007705208000006 
Figure 0007705208000007
Abstract
Description
Technical Field
[0001] The present invention generally relates to the field of computing, and more particularly to storage systems.
Background Art
[0002] A multi-tiered storage approach can be used to store data on various types of storage devices, mainly based on access criteria, usage frequency, security, and data recovery requirements. Storage tiering can have the function of transparently repositioning various types of disks between locations to obtain better system performance.
Summary of the Invention
Means for Solving the Problems
[0003] Embodiments of the present invention disclose a method, a computer system, and a computer program product for tiering migration for storage system optimization. Embodiments of the present invention may include determining to move data based on an access counter to balance the Hierarchy (storage tiers) (hereinafter also referred to as "storage tier") between a storage drive and storage Throughput (workload) (hereinafter also referred to as "workload") . Embodiments of the present invention may include establishing a connection with an interconnected application program interface based on determining to move the data. Embodiments of the present invention may include collecting and converting a physical access counter based on establishing the connection with the interconnected application program interface. Embodiments of the present invention may include collecting heat map data based on collecting and converting the physical access counter. Embodiments of the present invention may include calculating a tiering migration plan for internal map change events based on collecting the heat map data.
[0004] These objects, other objects, features, and advantages of the present invention will become apparent from the following detailed description of the invention under its exemplary embodiments. And the detailed description should be read in relation to the accompanying drawings. The various features of the drawings are not to scale as they are provided to facilitate those skilled in the art to understand the present invention in conjunction with the detailed description of the invention. The drawings are as described below.
Brief Description of the Drawings
[0005]
Figure 1
Figure 2
Figure 3
Figure 4
Figure 5
Figure 6
Figure 7
Best Mode for Carrying Out the Invention
[0006] Detailed embodiments of the structures and methods recited in the claims are disclosed herein. However, it is to be understood that the disclosed embodiments are merely examples of the structures and methods recited in the claims that may be embodied in various forms. The present invention may, however, be embodied in many different forms and should not be construed as limited to the exemplary embodiments set forth herein. Rather, these exemplary embodiments are provided so that this disclosure will be thorough and complete and will fully convey the scope of the invention to those skilled in the art. Well-known features and details of techniques may be omitted in the detailed description of the invention in order to avoid unnecessarily obscuring the presented embodiments.
[0007] As described above, a multi-tiered storage approach can be used to store data on various types of storage devices, primarily based on access criteria, usage frequency, security, and data recovery requirements. Storage tiering can include the function of transparently repositioning various types of disks across locations to obtain better system performance. Storage tiering was initially designed for hard disk drives (HDDs) and for nearline storage disks, such as tape and hard disk drive (HDD) disk systems. The hard disk drive (HDD) and nearline storage disks use different technologies from flash drives, and existing tiering mechanisms for hard disk drives (HDDs) and nearline storage disks have been adapted to operate on flash drives for rebalancing and inter tier migration. A major limitation of existing tiering mechanisms is that heat measurements for flash drives are taken in the same manner as heat measurements for hard disks. Heat measurements for hard disk drives (HDDs) and nearline storage disks do not operate in the same way as in the case of flash drives. Therefore, it can be advantageous to produce improvements in system resource utilization, particularly to reduce the consumption of the central processing unit (CPU) for heat map maintenance and to improve application performance using flash input / output (IO) optimization in the storage system.
[0008] The exemplary embodiments described below provide a system, method, and program product for storage optimization. Thus, embodiments of the present invention have the ability to improve the technical field of storage optimization by optimizing flash input / output (IO) operations in a storage system to improve application performance. More specifically, using an updated system architecture for storage system optimization, enhanced application performance can be obtained during and between tiered migrations and internal map change events. To process the tiered migration, a multi-tier architecture and an extent balancing function are created. The tiered migration on the provided system architecture offers many advantages.
[0009] One advantage includes an improvement in system resource utilization such that the consumption of the central processing unit (CPU) is reduced for heat map maintenance in a storage virtualization system. The heat map maintenance in the storage virtualization system can be used for other input / output (IO) services and purposes, and thus, performance benefits occur at the system level. Additionally, by using flash input / output (IO) optimization in a storage tiering environment, heat map updates for extents present on the flash tier are skipped and application performance is enhanced and optimized by directly fetching heat map information from the flash translation layer (FTL) within the flash prior to tiered migration decisions.
[0010] Another advantage includes the collection of information from a flash drive regarding flash drive access statistics integrated with storage tiering. The collected information can reduce computing requirements in a tiering demon (i.e., tiering executed as a background process in a computing operating system), and free up memory resources consumed for in-line heat map updates for flash extents, thereby resulting in improved optimization of the memory.
[0011] One of the other advantages includes an improved approach for managing the extents in a high-speed tier, which is a space where cost is high and performance is a critical factor. An extent can include a reserved storage area within a file system. Another advantage includes easy implementation and integration into existing storage products, and the fact that no special hardware or software provisions are required. Another advantage includes that application performance meets the desired performance expectations after available resources become available by adjusting or moving the extent or reserved storage area. Many advantages provide important block-level and file system storage solutions for computing services and cloud-based services.
[0012] According to one embodiment, a multi-tier storage architecture is created to store data on multiple types of storage devices based on data access, data usage frequency, and data security and data recovery requirements. As an example, data frequently accessed by applications sensitive to response time can be stored on solid state drives (SSDs). Data with low or infrequent access can be stored on high-capacity 7.2K revolutions per minute (RPM) drives. The lower the access frequency of the data, the longer the response time can be, but due to the low access frequency, the length of the response time can be tolerated. The cost per gigabyte when storing data with high access frequency on solid state drives (SSDs) is significantly higher than the cost when storing other data with low access frequency on 7.2K RPM drives.
[0013] The multi-tier storage architecture can identify, for example, the location to store data based on accessibility, frequency, and recovery requirements. A multi-tier storage optimization program may identify data that has the potential to benefit from a higher cost and higher performance storage tier, and over time, the optimal tier for some data may change. Identifying the data and moving the data to the appropriate tier can be an ongoing process that is adjusted over time based on the access to the data and the frequency at which the data is accessed.
[0014] Access heat temperatures can be used to virtualize multiple types of backend disks and to autonomously move extents between multiple tiers. Flash storage can be located in higher tiers, e.g., the top three tiers or the top three types of tiers, to handle the execution of hot extents. A hot extent can include data that is highly accessible by a host application. A flash drive may be able to support input / output (IO) operations faster than a hard disk drive (HDD) and a nearline storage disk. Therefore, a flash drive can be placed in the top layer of a tiered architecture. A flash drive may also be more expensive and thus may contain limited space with high performance characteristics. By tiering data storage, the extents can be moved based on an access heat count that can be updated for each input / output (IO) operation.
[0015] In addition, the hotness of the extents can be collected by an input / output (IO) monitoring daemon that maintains a counter for each of the extents in a tiering system. Hot extents or cold extents can be metrics related to backend input / output (IO) activity. For example, hot extents (i.e., high activity extents) can be migrated to a higher tier, and cold extents (i.e., low activity extents) may be demoted based on input / output (IO) activity or migrated down to a lower tier. Monitoring the extents can be used for extent balancing. Monitoring the hot and cold extents may be done using a heat map based on heat map data. The heat map may be a metric based on workload activity for each extent. Demotion of the extent and holding the extent in the flash storage may depend on the hotness of the extent. Demotion of the extent can include moving the extent from a faster tier to a slower tier. Demotion typically occurs when data in a faster tier is not accessed frequently, e.g., not accessed as per the last defined cycle, and is thus moved to a slower tier. Updates to the access counter for the extent can be made when any read or write input / output (IO) request is received.
[0016] One example of a tiering model in a storage controller can include a hierarchy of storage capabilities based on cost per gigabyte considering performance. For example, a low-cost and low-performance drive can include a nearline drive. A drive that is slightly higher in cost and performance than the nearline drive can include a high-performance enterprise drive. A drive that is higher in cost and performance than the enterprise drive can include a large-capacity flash drive. A drive that is higher in cost and performance than the large-capacity flash drive can include a high-performance flash or solid-state drive (SSD).
[0017] According to one embodiment, an extent balancing function is created to handle extent migrations. The extent balancing function can handle extent migrations within the same storage tier or different types of storage tiers, and can be provided as a bundled solution with a tiering feature. For example, when the extent migration is between the same tier logical unit (LUN), an in-tier migration can occur for the balancing function. Also, when the utilization rate of a certain disk is high and the utilization rate of other disks on the same tier is low, some hot extents can be moved to the disk with low utilization rate if the disk with low utilization rate does not violate performance limits after the migration.
[0018] An extent balancing function that operates between different types of storage tiers or between the same type of storage tiers can improve performance because hot extents are dispersed or redistributed across multiple disks. The extent balancing function can support an overload scenario, and the extent migration process improves a large amount of performance and thus provides a performance gain.
[0019] Examples of tiering in an appliance stack can include network servers, switches, flash systems, and redundant arrays of independent disk (RAID) storage of various tiers. The appliance stack can have servers connected to storage devices that are directly connected or connected via a switch fabric within a single rack to optimize analytical processing. For example, Tier 1 can include RAID 10 and be a software (SaaS: Software as a Solution) solid state drive (SSD) (400GB SLC) as a write-intensive enterprise solution and can be the most expensive. Tier 2 can include RAID 5 and can be a read-intensive enterprise SAS SSD (1.6TB MLC). Tier 3 can include RAID 6 HDDs (15K, 10K, 7.2K). Data analytics can be distributed, transmitted, and used for data warehouses and analytics operations. The combination of analytics and data can be in the appliance stack and provided for customer use.
[0020] Exemplary systems that can use and benefit from storage optimization programs can include IBM PureData (登録商標) (IBM PureData and all trademarks and logos based on IBM PureData are trademarks or registered trademarks of International Business Machines Corporation and / or its affiliates), Netezza (登録商標) IBM (登録商標) (Netezza and all trademarks and logos based on Netezza are trademarks or registered trademarks of International Business Machines Corporation and / or its affiliates), and many other storage units. IBM PureData (登録商標) is Netezza (登録商標)A system for analytics that uses technology to provide a mechanism for data warehousing and analytics operations on data. The system enables internal utilization of storage management of application data and storage tiering at the cluster level to obtain optimal performance across drives.
[0021] The extents occupied as flash space in a flash drive may require rebalancing to move data across flash drives based on access heat counts. Identification of target disks and overloads in a flash drive may depend on access counters maintained at the virtualization level such that the array maintains access statistics at the virtualization level and extent movement based on the collected data can be performed.
[0022] Current typical scenarios can be described here because extent balancing is limited in existing tiering solutions, heat measurement, and migration for flash drives. A solid state drive (SSD) flash controller or storage virtualization controller within a flash drive comprises a flash translation layer (FTL) that manages solid state drive (SSD) operations and monitors input / output (IO) operations executed on flash drive logical block addressing (LBA). The flash translation layer (FTL) module may fetch for input / output (IO) operations and may maintain a table of input / output (IO) counters and logical block addressing (LBA) location blocks of the drive. The table of data obtained by the flash translation layer (FTL) module may be used to calculate drive writes per day (DWPD), wear leveling predictions, and application data.
[0023] The storage virtualization controller may also maintain input / output (IO) counters based on extents (e.g., extents mapped to logical block addressing (LBA) units), and may be used for tiering movements across multiple tiers. Input / output (IO) counter updates may be performed for each input / output (IO) operation transmitted to the storage system. If an extent is in a faster performance tier, the storage system may expect more input / output (IO) requests to the associated extent. Each input / output (IO) operation may be counted at two locations of the flash drive, and double counting may cause inefficiencies in the architecture across the system when providing highly accessible data within the system. Double counting at two locations may involve one count at the storage tiering level and another count at the flash translation layer (FTL) level. The input / output (IO) counters are updated based on drive-level mapping of physical locations, and are also updated for wear leveling and monitoring of other flash functions with access counters in the flash translation layer (FTL) within the flash drive.
[0024] There are many complexities involved in obtaining retention data from an access counter on a flash drive and using that data to extract information from a flash control unit to a storage virtualization system. One complexity involves mapping the physical logical block addressing (LBA) to multiple virtualized logical block addresses (LBAs) because the mapping is changed at the drive level and the drive level is unaware of the upper layer of the storage virtualization engine. During the change in mapping, the counter disappears and is restarted for the new physical location. Another complexity is that input / output (IO) statistics at the storage system level are counted based on extents and there may be no extent visibility to the drive firmware because the firmware operates at the logical physical logical block addressing (LBA) level. One embodiment presented herein enhances input / output (IO) performance (i.e., a faster performing flash tier), reduces input / output latency, and improves operational efficiency.
[0025] Referring now to FIG. 1, an exemplary networked computer environment 100 according to one embodiment is illustrated. The networked computer environment 100 may include a computer 102, which includes a processor 104 and a data storage device 106 capable of executing a software program 108 and a storage optimization program 110a. The networked computer environment 100 may also include a server 112 capable of executing a storage optimization program 110b that can interact with a database 114 and a communication network 116. The computer 102 may also be known as a client computer, and the server 112 may also be known as a server computer. The networked computer environment 100 may include a plurality of computers 102 and servers 112, only one of which is shown. The communication network 116 may include various types of communication networks, such as, for example, a wide area network (WAN), a local area network (LAN), a telecommunications network, a wireless network, a public switched network or a satellite network, or combinations thereof. It should be understood that FIG. 1 is only an illustration of one implementation and does not imply any limitation with respect to the environments in which different embodiments may be implemented. Many modifications to the illustrated environment may be made based on design and implementation requirements.
[0026] Computer 102 can communicate with server 112 via communication network 116. Communication network 116 may comprise a connection, for example, a wired communication link, a wireless communication link, or an optical fiber cable. As described with reference to FIG. 5, each of servers 112 may comprise internal component 902a and external component 904a, and each of computers 102 may comprise internal component 902b and external component 904b. Servers 112 may also operate in a cloud computing service model, such as Software as a Service (SaaS), Analytics as a Service (AaaS), Blockchain as a Service (BaaS), Platform as a Service (PaaS), or Infrastructure as a Service (IaaS). Servers 112 may also be deployed in a cloud computing deployment model, such as a private cloud, a community cloud, a public cloud, or a hybrid cloud. Computer 102 can be, for example, a mobile device, a telephone, a personal digital assistant, a netbook, a laptop computer, a tablet computer, a desktop computer, or any type of computing device capable of executing a program, accessing a network, and accessing database 114. According to various implementations of this embodiment, storage optimization programs 110a and 110b can interact with database 114, which can be embedded within various storage devices, such as, but not limited to, computer / mobile device 102, server 112, or a cloud storage service.
[0027] According to this embodiment, a user operating computer 102 or server 112 (e.g., a server computer) can use storage optimization programs 110a and 110b (respectively) to improve application performance using storage system optimization. The storage optimization method is described in more detail below with respect to FIGS. 2-4.
[0028] Referring now to FIG. 2, an example of a block diagram of a system architecture 200 for storage system optimization used by storage optimization programs 110a and 110b according to at least one embodiment is illustrated. The system architecture 200 for system storage optimization may cooperate with existing storage tier features, may collect information from a virtualization map about available tiers within a storage pool, and may enable optimized input / output (IO) statistics collection for flash drives in the system.
[0029] Storage optimization programs 110a and 110b can communicate with a system architecture 200 for system storage optimization. Within the system architecture 200 for storage system optimization, host 202 may comprise a computer or server connected to a network of services, and host 202 may transmit information to virtualization system 204. The virtualization system may receive or obtain data from host 202 and may comprise a heat map update 206 module or component, a heat map monitor 208, a tier data relocator 210 module or component, an extent virtualization map 212, and an interconnect application program interface (API) 214 module for components.
[0030] The heat map update 206 module can process and maintain input / output (IO) counters for each extent within the storage pool. Heat map update 206 can also maintain access counters when any input / output (IO) reaches or is sent to the system. The heat map monitor 208 can process monitor workloads on extents for the purpose of performing load balancing for performance improvement and additional tiering migration processes. The tier data relocator 210 module can track which extent is located in which tier and can track the workload to make extents available on the same tier based on the workload. The tier data relocator 210 module can be used to select cases of promotion or demotion, or to select which extents can be promoted or demoted.
[0031] The extent virtualization map 212 can include the extents where data is physically located and the target drives. The extent virtualization map 212 can be used to obtain information related to the local or physical mapping of the data in the storage system. The interconnect application program interface (API) 214 module can enable external entities to perform internal operations using authentication so that internal parameter settings can be controlled from the outside.
[0032] The flash drive 216 may include a flash translation layer (FTL) 218, an access counter update 220 module, and data blocks 222. The flash translation layer (FTL) 218 within a flash solid state drive (SSD) disk controller may fetch an access map of logical block addressing (LBA) (e.g., data blocks 222) from the flash translation layer (FTL) 218 prior to a tiering migration decision. The hard disk drive (HDD) 224 may include a hard disk controller 226 and track and sector addresses 228. The track and sector addresses 228 may be hardware location addresses within the hard disk drive (HDD) where data is stored.
[0033] The data collection demon in an existing tiering feature may be adjusted to directly obtain information from the flash translation layer (FTL) 218 for a plurality of logical block addresses (LBAs) (e.g., data blocks 222) corresponding to the flash drive 216. For example, the function support map in the tiering feature may be represented in Table 1 below.
Table 1
[0034] Once a plurality of flash logical block addresses (LBAs) are collected by the flash translation layer (FTL) 218, the information may be converted into an extent map by the extent virtualization map 212 module by traversing a virtualization map maintained at the storage level. For example, the conversion from one logical block address (LBA) to an extent map may be shown in Table 2 below for a virtualization layer (e.g., virtualization system 204).
[0035]
Table 2
[0036] An example of an extent heat map can be shown in Table 3 below for storage tiering.
[0037]
Table 3
[0038] The collected input / output statistics can be updated for each flash extent contributing to tiering. Changes to the plurality of logical block addresses (LBAs) can be managed at the flash translation layer (FTL) 218 level by pre-emptively signaling a higher-level or upper-level storage system (e.g., virtualization system 204) using message-based communication to the upper-level storage before the data is lost due to internal movement in order to collect the data. The application program interface (API) 214 module can communicate between the storage system (e.g., virtualization system 204) and the drive flash translation layer (FTL) 218, in contrast to the method of garbage collection that is executed as a background process to update the access counter map.
[0039] The communication protocols created by storage optimization programs 110a and 110b may include a data dumping signal to a tiering data collection demon. The data dumping signal may include a special communication message between entities that exchange information. In response to the tiering data collection demon, a data structure (e.g., data block 222) is allocated and stored, and an extent level heat map can be updated for the extent of a solid state drive (e.g., flash drive 216). Storage optimization programs 110a and 110b maintain the correct access counter for each logical block address (LBA) location by maintaining the identification of the internal operations of flash for storage tiering (e.g., garbage collection). The access counter can be maintained at the tiering level, and the physical access counter can be maintained at the drive level (e.g., the access counter for a logical block address (LBA) location). As an example, the access counter is used to determine whether tiering migration should occur or to trigger the tiering migration. The physical access counter can be used for drive-level grooming, such as garbage collection and internal paging of a solid state drive (SSD).
[0040] Some of the latest flash drives can provide an internal input / output (I / O) monitoring function that can be utilized and leveraged through an application program interface (API). The storage tiering data collector demon in storage optimization programs 110a and 110b can identify the location of supported flash and the location of other non-flash storage for extents within the pool. This storage tiering data collector demon, which is this identification function, can be activated only for extents located in flash because storage optimization programs 110a and 110b can distinguish the location of flash storage from the location of non-flash storage.
[0041] Communication transmission between the storage tiering data collector demon and the flash translation layer (FTL) 218 can be performed using inbound and outbound protocols. The inbound implementation can use protocols such as a small computer system interface (SCSI) command descriptor block (CDB) or a non-volatile memory express (NVMe 商標 :non-volatile memory express) (NVMe and all NVMe-based trademarks and logos are trademarks or registered trademarks of NVM Express, Inc. and / or its affiliates) data descriptor. The outbound protocol can use an external host or computing entity to transmit communication between elements, such as between an initiator and a target device.
[0042] When an external storage (e.g., flash drive 216 or hard disk drive (HDD) 224) is virtualized by a storage virtualization engine (e.g., virtualization system 204), storage optimization programs 110a and 110b can identify, use, and transmit information of the flash translation layer (FTL) 218 of the drive (e.g., flash drive 216) to a front-end storage cluster (e.g., storage system or virtualization system 204). The obtained information can be consumed by a tiering feature (e.g., tier data relocator 210 module) to optimize heat count measurements of the entire system (e.g., virtualization system 204). This process can remove unnecessary processes in input / output (IO) processing such that the consumption of the central processing unit (CPU) is reduced. Additionally, since most of the input / output (IO) operations are provided from a tier with higher performance, a significant improvement in the efficiency of input / output (IO) performance is obtained for the higher-speed tier. For example, in a data analytics application, the amount of read workload is less computationally intensive than the write workload in the storage system, and thus, even with fewer changes in intermediate heat updates required due to changes in logical block addressing (LBA) mapping in the flash translation layer (FTL) 218 (i.e., better performance).
[0043] For example, host 202 is reading data, e.g., 1,10,000, from a storage system (e.g., virtualization system 204). The total read data accessed by host 202 is 1,10,000 input / output (IO) operations, and in the flash tier between two tiering cycles in the past 24 hours, the easier-to-access blocks are placed on one or more flash drives (e.g., flash drive 216) and executed in the easy tier. Once the input / output (IO) reaches the storage system (e.g., virtualization system 204), the heat map update 206 is updated for the extent. Thus, 1,00,000 heat map updates are performed by the heat map manager (e.g., heat map monitor 208) in tiering. As a result, 1,00,000 input / output (IO) counter updates are used to calculate the drive writes per day (DWPD), used for read disturbance monitoring, and performed by the flash translation layer (FTL) 218 for other health checkups of the drive.
[0044] Continuing with the same example, a total of 2,00,000 + 10,000 = 2,10,000 operations are counted in the access history management, which is about 2+ operations per input / output (IO). To address this existing limitation, the access counter update 220 and heat map update 206 modules for the 10,000 input / output (IO) operations at non-flash locations can be executed at the storage tiering level (e.g., heat map update 206).
[0045] For all flash input / output (IO) operations, the heat map update module 206 for the tiering monitor is skipped. Before making a tiering decision, information can be collected by querying the drive flash translation layer (FTL) 218. Thus, 1,00,000 + 10,000 = 1,10,000 operations are required to maintain heat statistics. The explicit number of operations required to hold or maintain the heat map enables resource optimization.
[0046] Referring now to Figure 3, an operational flow chart diagram is illustrated showing exemplary enhanced application performance during a tiering migration process 300 used by storage optimization programs 110a and 110b according to at least one embodiment. Storage optimization programs 110a and 110b may be utilized to optimize flash input / output (IO) operations in a storage system during tiering migration by using a system architecture 200 for system storage optimization. This updated system architecture is a multi-tiered architecture, which is utilized to balance extents and to process tiering migrations to achieve a balance in the workload between storage drives and storage tiers.
[0047] Step 302 includes determining to move data based on an access counter. The tier data relocator 210 module may determine to move data based on the access counter. The determination is made based on the input-output (IO) workload at the extent in the last tiering cycle. Determining to move data based on the access counter is done to balance the workload between the drive and the tier. The input-output (IO) workload may include drive threshold-based migration for the workload. For example, when the extent does not remain within the current drive limit where the extent is located, the tiering demon maintains a static threshold and makes a migration decision.
[0048] Step 304 includes the interconnection API 214 module being called to establish a connection. The interconnection API is called, and the interconnection API establishes a connection with a backend drive subsystem, such as a backend solid state drive (SSD). Storage optimization programs 110a and 110b may request the interconnection API to send the data collection based on determining to move data based on the access counter.
[0049] Step 306 includes collecting and converting a physical access counter. Collection of the drive's access counter may be collected for tiering migration. The physical access counter is collected and may be converted to a plurality of virtual logical block addresses (LBAs) in the data block 222 of the flash drive 216. The flash drive 216 may be regarded as hot data, and the data block 222 may hold a physical address. An access table with virtual addresses and heat data may be transferred or transmitted to a storage system (e.g., the virtualization system 204).
[0050] In operation 308, heat map data is collected. The heat map data can be collected by the heat map update 206 module. The heat map update 206 module may include a heat map for each input / output (IO) operation. The collected heat map data from the drive (e.g., flash drive 216) may be analyzed to obtain an extent level mapping. The data structure may be provisioned, and the heat map may be updated by the heat map update 206 module for each extent.
[0051] In operation 310, a tiering migration plan is calculated. The tier data relocator 210 module calculates the tiering migration plan and can move the extents identified by the extent level mapping in operation 308 to their respective storage tiers. The calculation of the tiering migration plan may be calculated using, for example, a tiering manager. The tiering manager may hold a minimum threshold and a maximum threshold for each supported drive type within the storage pool. When a new input / output (IO) is sent to or received by the storage, the tiering manager records the workload. At the time of the tiering cycle, the counter can be matched with a reference counter to either keep the extent on the current drive or move it from the current drive. For example, if the extent received a significantly decreased input / output (IO) in the last tiering cycle, this matching suggests that the extent should be demoted as a significantly decreased amount of input / output (IO) is received, which is less likely, and then the threshold is maintained.
[0052] Referring now to FIG. 4, there is illustrated an operational flowchart diagram showing an exemplary enhancement of application performance during an internal map change event process 400 used by storage optimization programs 110a and 110b, according to at least one embodiment.
[0053] Step 402 includes determining to move a data block to a new location. The flash translation layer 218 within the flash drive 216 may detect that one or more data blocks 222 need to be moved to a new location. Determining to move the data block may include identifying a heat value at the current location and moving the data block. The heat value may be defined by the storage system as a static file. The value may be assigned based on the type of drive supported and the input / output (IO) capabilities of the drive. For example, IBM (登録商標) Easy Tier (登録商標) (IBM Easy Tier and all IBM Easy Tier-based trademarks and logos are trademarks or registered trademarks of International Business Machines Corporation and / or its affiliates) may store a spreadsheet file or an xml file in which the reference values are hard-coded or stored with fixed parameters.
[0054] In step 404, a signal is sent to the storage system to collect data. The signal is sent to the storage system (e.g., the virtualization system 204) based on determining to move a data block to a new location. The flash translation layer 218 may send a signal to the storage system (e.g., the virtualization system 204) to collect data from the access heat counter before the internal logical block address (LBA) movement begins.
[0055] In step 406, data collection is initiated. The data collection is initiated based on a signal sent to collect data from the access heat counter. The data collection can be initiated by the Interconnect API 214 module. The Interconnect API 214 module can receive a signal from a drive (e.g., flash drive 216) and initiate the data collection.
[0056] In step 408, physical addresses are converted to logical addresses. In response to the initiated data collection, the flash translation layer 218 can convert a plurality of physical addresses to a plurality of logical block addresses (LBAs), and then send a tuple to the storage system. The tuple can include one logical block address (LBA) and one heat count. An example of a logical address - physical address translation map inside the flash translation layer 218 can be provided in Table 4 below.
Table 4
[0057] In step 410, heat data is copied to the storage system. The flash translation layer 218 may copy the heat data to the storage system. Once the heat data or heat information is copied to the storage system, block movement operations can be processed.
[0058] In step 412, heat map data is analyzed. The heat map update 206 can analyze the collected heat map from the drive, and analyze the heat map to obtain extent level mapping. The data structure can be provisioned, and the heat map can be updated for each extent.
[0059] Figures 2 to 4 are merely examples of one embodiment and should be understood not to imply any limitation as to how different embodiments may be implemented. Many modifications to the one or more embodiments shown may be made based on design and implementation requirements.
[0060] FIG. 5 is a block diagram 900 of the internal and external components of the computer illustrated in FIG. 1, according to an exemplary embodiment of the present invention. FIG. 5 provides only an illustration of one implementation and should be understood not to imply any limitation as to the environments in which different embodiments may be implemented. Many modifications to the illustrated environment may be made based on design and implementation requirements.
[0061] Data processing systems 902 and 904 represent any electronic device capable of executing machine-readable program instructions. Data processing systems 902 and 904 represent smartphones, computer systems, PDAs, or other electronic devices. Examples of computing systems, environments, or configurations or combinations thereof that may be represented by data processing systems 902 and 904 include, but are not limited to, personal computer systems, server computer systems, thin clients, thick clients, handheld or laptop devices, multiprocessor systems, microprocessor-based systems, network PCs, minicomputer systems, and distributed cloud computing environments incorporating any of the above systems or devices.
[0062] Computer 102 and server 112 may each comprise a set of internal components 902a and 902b and external components 904a and 904b as shown in FIG. 5. Each of the sets of internal components 902a and 902b includes one or more processors 906, one or more computer-readable RAMs 908 and one or more computer-readable ROMs 910 on one or more buses 912, as well as one or more operating systems 914, one or more application programs 915 and one or more computer-readable storage media 915. One or more operating systems 914, software programs 108 and outage restoration prediction programs 110a within client computer 102, and outage restoration prediction programs 110b within network server 112 may be stored on one or more computer-readable storage media 915 for execution by one or more processors 906 via one or more RAMs 908 (which typically include cache memory). In the embodiment illustrated in FIG. 5, each of the computer-readable storage media 915 is a magnetic disk storage device of an internal hard drive. Alternatively, each of the computer-readable storage media 915 is a semiconductor storage device, such as ROM 910, EPROM, flash memory, or any other computer-readable tangible storage device capable of storing computer programs and digital information.
[0063] Each set of internal components 902a and 902b also includes an R / W drive or interface 918 for reading from and writing to one or more portable computer-readable tangible storage devices 920, such as CD-ROMs, DVDs, memory sticks, magnetic tapes, magnetic disks, optical disks, or semiconductor storage devices. Software programs, such as software program 108 and storage optimization programs 110a and 110b, are stored on one or more of the respective portable computer-readable tangible storage devices 920, read via the respective R / W drives or interfaces 918, and can be loaded into the respective hard disks 916.
[0064] Each set of internal components 902a and 902b may also include a network adapter (or switch port card) or interface 922, such as a TCP / IP adapter card, a wireless wi-fi interface card, or a 3G / 4G / 5G wireless interface card, or other wired or wireless communication links. The software program 108 and the storage optimization program 110a in the computer 102, and the storage optimization program 110b in the network server 112, can be downloaded from an external computer (such as a server) via a network (such as the Internet, a local area network, or other wide area network) and the respective network adapters or interfaces 922. From the network adapter (or switch port adapter) or interface 922, the software program 108 and the storage optimization program 110a in the computer 102, and the storage optimization program 110b in the network server computer 112, are loaded into the respective hard drives 916. The network may include copper wires, optical fibers, wireless transmissions, routers, firewalls, switches, gateway computers, or edge servers, or combinations thereof.
[0065] Each of the pair of external components 904a and 904b can include a computer display monitor 924, a keyboard 926, and a computer mouse 928. The external components 904a and 904b can also include a touch screen, a virtual keyboard, a touch pad, a pointing device, and other human interface devices. Each of the pair of internal components 902a and 902b includes a device driver 930 for interfacing with the computer display monitor 924, the keyboard 926, and the computer mouse 928. The device driver 930, the R / W drive or interface 918, and the network adapter or interface 922 include hardware and software (stored within the storage device 916 or the ROM 910 or a combination thereof).
[0066] Although the present disclosure includes a detailed description regarding cloud computing, it should be understood in advance that the implementations of the teachings recited herein are not limited to cloud computing environments. Rather, embodiments of the present invention can be implemented in combination with any other type of computing environment now known or later developed.
[0067] Cloud computing is a service delivery model that enables convenient on-demand network access to a shared pool of configurable computing resources (e.g., networks, network bandwidth, servers, processing, memory, storage, applications, virtual machines, and services) that can be rapidly provisioned and released with minimal management effort or interaction with a service provider. This cloud model can include at least five characteristics, at least three service models, and at least four deployment models.
[0068] The characteristics are as follows.
[0069] On-demand self-service: A cloud consumer can automatically and unilaterally provision computing capabilities, such as server time and network storage, as needed without the need for human interaction with the service provider.
[0070] Broad network access: The capabilities are available over a network and accessed through standard mechanisms that promote use by heterogeneous thin client platforms or thick client platforms (e.g., mobile phones, laptops, and PDAs).
[0071] Resource pooling: The provider's computing resources are pooled to serve multiple consumers using a multi-tenant model, and various physical and virtual resources are dynamically assigned and re-assigned according to demand. Consumers generally have no control or knowledge over the exact location of the provided resources, but can be said to be location-independent in that they can specify a location at a higher level of abstraction (e.g., country, state, or data center).
[0072] Rapid elasticity: The capabilities are provisioned rapidly and elastically, and in some cases automatically, can scale out quickly, be released quickly, and scale in quickly. For the consumer, the capabilities available for provisioning are often unlimited and can be purchased in any quantity at any time.
[0073] Measured service: The cloud system automatically controls and optimizes resource usage by using a metering function at some level of abstraction suitable for the type of service (e.g., storage, processing, bandwidth, and active user accounts). Resource usage can be monitored, controlled, and reported, providing transparency for both the provider and the consumer of the services utilized.
[0074] The service model is as follows.
[0075] Software as a Service (SaaS): A function provided to consumers to use the provider's applications running in the cloud infrastructure. The applications are accessible from various client devices through a thin - client interface, such as a web browser (e.g., web - based email). The consumer does not manage or control the underlying cloud infrastructure, including the network, servers, operating systems, storage, or even individual application functionality, with the possible exception of limited user - specific application configuration settings.
[0076] Platform as a Service (PaaS): A function provided to consumers to deploy consumer - generated or acquired applications, created using programming languages and tools supported by the provider, onto the cloud infrastructure. The consumer does not manage or control the underlying cloud infrastructure, including the network, servers, operating systems, or storage, but has control over the deployed applications and, in some cases, the application hosting environment configuration.
[0077] Analytics as a Service (AaaS): The function provided to the consumer is to access an analytics platform using a web-based or cloud-based network (i.e., infrastructure). The analytics platform may include access to analytics software resources and may include access to related databases, corpora, servers, operating systems, or storage. The consumer does not manage or control the underlying web-based or cloud-based infrastructure, such as the underlying web-based or cloud-based infrastructure that includes databases, corpora, servers, operating systems, or storage, but has control over the deployed applications and, in some cases, the configuration of the application hosting environment.
[0078] Infrastructure as a Service (IaaS): The function provided to the consumer is to provision processing, storage, network, and other basic computing resources on which the consumer can deploy and run any software that can include an operating system and applications. The consumer does not manage or control the underlying cloud infrastructure but has control over the operating system, storage, control over the deployed applications, and, in some cases, limited control over selecting network components (e.g., the host firewall).
[0079] Deployment Models are as follows.
[0080] Private Cloud: The cloud infrastructure is operated only for a certain organization. The cloud infrastructure can be managed by the organization or a third party and can exist on-premises or off-premises.
[0081] Community Cloud: The cloud infrastructure is shared by several organizations and supports a specific community with common concerns (e.g., mission, security requirements, policies, and compliance considerations). The cloud infrastructure can be managed by the organization or a third party and can exist on-premises or off-premises.
[0082] Public Cloud: The cloud infrastructure is available to the general public or a large industry group and is owned by an organization that sells cloud services.
[0083] Hybrid Cloud: The cloud infrastructure remains a distinct entity but is a hybrid of two or more clouds (private, community, or public) joined together by standardized or proprietary technologies (e.g., cloud bursting for load distribution between clouds) that enable data and application portability.
[0084] Cloud computing environments are targeted services that focus on statelessness, low coupling, modularity, and semantic interoperability. The heart of cloud computing is an infrastructure that includes a network of interconnected nodes.
[0085] Referring now to FIG. 6, an exemplary cloud computing environment 1000 is illustrated. As shown, cloud computing environment 1000 includes one or more cloud computing nodes 1050 with which local computing devices used by cloud consumers, such as, for example, a personal digital assistant (PDA) or cellular telephone 1000A, desktop computer 1000B, laptop computer 1000C, or automotive computer system 1000N, or the like, or combinations thereof, can communicate. Nodes 1050 can communicate with one another. They may be physically or virtually grouped in one or more networks, such as, for example, a private cloud, community cloud, public cloud, or hybrid cloud, or combinations thereof, described herein (not shown). Thereby, cloud computing environment 1000 can provide infrastructure, platform, software, or combinations thereof, as a service such that a cloud consumer need not maintain resources on a local computing device. It is to be understood that the types of computing devices 1000A - 1000N shown are for illustrative purposes only, and that cloud computing nodes 1050 and cloud computing environment 1000 can communicate with any type of computerized device via any type of network or network addressable connection or combinations thereof (e.g., using a web browser).
[0086] Referring now to FIG. 7, a set 1100 of functional abstractions provided by cloud computing environment 1000 is shown. It should be understood that the components, layers, and functions shown in FIG. 7 are intended to be illustrative only and that embodiments of the invention are not limited thereto. As shown, the following multiple layers and corresponding multiple functions are provided.
[0087] The hardware and software layer 1102 includes hardware components and software components. Examples of hardware components include mainframe 1104, RISC (Reduced Instruction Set Computer) architecture-based server 1106; server 1108; blade server 1110; storage device 1112; and network and networking components 1114. In some embodiments, software components include network application server software 1116 and database software 1118.
[0088] The virtualization layer 1120 provides an abstraction layer from which the following examples of virtual entities can be provided: namely, virtual server 1122; virtual storage 1124; virtual network 1126; the virtual network 1126 including, for example, a virtual private network; virtual applications and operating systems 1128; and virtual client 1130.
[0089] In one example, the management layer 1132 can provide a plurality of functions described below. Resource provisioning 1134 provides for the dynamic procurement of computing resources and other resources utilized to execute tasks within a cloud computing environment. Metering and pricing 1136 provides for cost tracking when resources are utilized within a cloud computing environment and for the charging or billing for the consumption of these resources. In one example, these resources can include application software licenses. Security provides for authentication of cloud consumers and tasks and for the protection of data and other resources. The user portal 1138 provides access to the cloud computing environment for consumers and system administrators. Service level management 1140 provides for the allocation and management of cloud computing resources such that the required service level is met. Planning and fulfillment of a service level agreement (SLA) 1142 provides for the pre - placement and procurement of cloud computing resources for which future requirements are predicted to conform to the SLA.
[0090] The workload layer 1144 provides examples of a plurality of functions that the cloud computing environment can be utilized for. Examples of a plurality of workloads and functions that can be provided from this layer include mapping and navigation 1146; software development and life cycle management 1148; provision of virtual classroom education 1150; data analytics processing 1152; transaction processing 1154; and storage optimization 1156. Storage optimization programs 110a and 110b provide a method for enhancing application performance during hierarchical migration and during internal map change events using storage system optimization.
[0091] The present invention can be a system, a method, a computer program product, or a combination thereof, at any possible level of integrated technical detail. The computer program product can include one or more computer-readable storage media having computer-readable program instructions for causing a processor to execute aspects of the present invention.
[0092] Computer-readable storage medium 915 can be a tangible device that can hold and store instructions for use by an instruction execution device. Computer-readable storage medium 915 can be, for example, but not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination thereof. A non-exhaustive list of more specific examples of computer-readable storage medium 915 includes the following: portable computer diskette (登録商標) , hard disk, random access memory (RAM), read only memory (ROM) 910, erasable programmable read only memory (EPROM or flash memory), static random access memory (SRAM), portable compact disc read only memory (CD-ROM), digital versatile disc (DVD), memory stick, floppy disk, mechanically encoded device such as a punch card or raised structures in grooves in which instructions are recorded, or any suitable combination thereof. As used herein, computer-readable storage medium 915 should not be construed to be a transient signal per se, such as a radio wave or other freely propagating electromagnetic wave, an electromagnetic wave propagating through a waveguide or other transmission medium (e.g., an optical pulse passing through an optical fiber cable), or an electrical signal transmitted through a wire.
[0093] The computer-readable program instructions described herein can be downloaded from the computer-readable storage medium 915 to individual computing devices / processing devices or to an external computer or external storage device via a network, such as the Internet, a local area network, a wide area network, or a wireless network, or a combination thereof. The network can be composed of copper wire transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers, or edge servers, or a combination thereof. The network adapter card or network interface 922 in each computing device / processing device receives the computer-readable program instructions from the network and transmits the computer-readable program instructions for storage in the computer-readable storage medium 915 within the individual computing devices / processing devices.
[0094] Computer-readable program instructions for performing the operations of the present invention can be in any combination of assembly instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine-dependent instructions, microcode, firmware instructions, state-setting data, configuration data for integrated circuits, or source code or object code written in any combination of one or more programming languages, such as object-oriented programming languages, such as Smalltalk, C++, etc., conventional procedural programming languages (e.g., the "C" programming language or similar programming languages). The computer-readable program instructions can be executed entirely on the user's computer, partially on the user's computer, partially as a stand-alone software package on the user's computer, partially on the user's computer and partially on a remote computer, or entirely on a remote computer or server. In the latter scenario, the remote computer can be connected to the user's computer via any type of network, such as a local area network (LAN) or a wide area network (WAN), or the connection can be made to an external computer (e.g., through the Internet using an Internet service provider). In some embodiments, an electronic circuit, such as a programmable logic circuit, a field-programmable gate array (FPGA), or a programmable logic array (PLA), can execute the computer-readable program instructions by utilizing the state information of the computer-readable program instructions, by personalizing the electronic circuit, from the perspective of the present invention.
[0095] Aspects of the invention are described herein with reference to methods, apparatus (systems), and computer program products or flowcharts or block diagrams of computer programs or combinations thereof according to embodiments of the invention. It will be understood that each block of the flowchart diagrams or block diagrams or combinations thereof, as well as combinations of multiple blocks in the flowchart diagrams or block diagrams or combinations thereof, can be implemented by computer readable program instructions.
[0096] These computer readable program instructions are provided to a computer processor 906 or other programmable data processing apparatus to create means for implementing the functions / operations specified in one or more blocks of the flowchart diagrams or block diagrams or combinations thereof by causing the instructions executed via the processor 906 of the computer or other programmable data processing apparatus to implement the specified functions / operations in one or more blocks of the flowchart diagrams or block diagrams or combinations thereof, thereby creating a machine. These computer readable program instructions may also be stored in a computer readable storage medium 915 that includes a manufactured article that includes instructions for implementing the functions / operations specified in one or more blocks of the flowchart diagrams or block diagrams or combinations thereof, such that the computer readable program instructions can be stored in the computer readable storage medium 915 that can direct a computer programmable data processing apparatus or other device or combination thereof to function in a particular manner.
[0097] These computer readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device such that instructions executed on the computer, other programmable data processing apparatus, or other device implement the functions / operations specified in one or more blocks of the flowchart diagrams or block diagrams or combinations thereof, causing a series of operational steps to be executed on the computer, other programmable apparatus, or other device to generate a process implemented on the computer.
[0098] The flowcharts and block diagrams in the drawings illustrate the architecture, functionality, and operation of a system, method, and computer program product or possible implementation of a computer program according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagram may represent a module, segment, or portion of instructions, which includes one or more executable instructions for implementing a specified logical function. In some alternative implementations, the functions shown in the block may occur in a different order than shown in the drawings. For example, two blocks shown in succession may, in fact, be achieved as one step that is executed at the same time, substantially simultaneously, partially or wholly in a temporally overlapping manner, depending on the functions involved, or the blocks may be executed in reverse order. It should be noted that each block of the block diagram or flowchart or combination thereof, and combinations of multiple blocks of the block diagram or flowchart or combination thereof, can be implemented by a special purpose hardware-based system that performs the specified functions or operations, or can be implemented by a combination of special purpose hardware and computer instructions.
[0099] The description of various embodiments of the present invention has been presented for purposes of illustration and is not intended to be exhaustive or limited to the disclosed embodiments. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the described embodiments. The terms used herein have been chosen to best explain the principles of the embodiments, the practical application, or a technical improvement found in the marketplace, or to enable others of ordinary skill in the art to understand the embodiments disclosed herein.
Claims
1. A method of hierarchical migration for storage system optimization, determining to move data based on an access counter to balance the throughput among a plurality of storage drives arranged in each storage tier; establishing a connection with an interconnect application program interface based on determining to move the data; collecting and converting a physical access counter based on establishing the connection with the interconnect application program interface; collecting heat map data based on collecting and converting the physical access counter; and calculating a hierarchical migration plan for internal map change events based on collecting the heat map data The method comprising the above.
2. determining to move a data block to a new location; sending a signal to a storage system to collect data from an access heat counter; starting to collect the data from the access heat counter; converting a physical address to a logical address; copying the heat map data to the storage system; and analyzing the heat map data The method according to claim 1, further comprising the above.
3. The method according to claim 1, wherein determining to move the data is performed based on the input / output throughput in the extent in the last hierarchical cycle.
4. The method according to claim 1, wherein the physical access counter is converted to a virtual logical block address.
5. The method according to claim 1, wherein the heat map data includes a heat map for each input / output operation.
6. The method according to claim 1, wherein the hierarchical migration plan includes moving an extent to a drive different from the current drive.
7. The method according to claim 2, wherein the heat map data is analyzed to obtain extent-level mapping.
8. A computer system for hierarchical migration for storage system optimization, One or more processors, one or more computer-readable memories, one or more computer-readable tangible storage media, and program instructions stored on at least one of the one or more computer-readable tangible storage media for execution by at least one of the one or more processors via at least one of the one or more computer-readable memories, wherein the computer system is determining to move data based on an access counter to balance throughput among a plurality of storage drives disposed in respective storage tiers; establishing a connection with an interconnect application program interface based on determining to move the data; collecting and converting a physical access counter based on establishing the connection with the interconnect application program interface; collecting heat map data based on collecting and converting the physical access counter; and calculating a hierarchical migration plan for an internal map change event based on collecting the heat map data The computer system is capable of executing a method including. **Claim 9** determining to move a data block to a new location; sending a signal to the storage system to collect data from an access heat counter; starting the collection of the data from the access heat counter; converting a physical address to a logical address; copying the heat map data to the storage system; and analyzing the heat map data The computer system according to claim 8, further comprising. **Claim 10** The computer system according to claim 8, wherein determining to move the data is performed based on an input / output throughput at an extent in a last hierarchical cycle. **Claim 11** The computer system according to claim 8, wherein the physical access counter is converted to a virtual logical block address. **Claim 12** The computer system according to claim 8, wherein the heat map data includes a heat map for each input / output operation. **Claim 13** The computer system according to claim 8, wherein the hierarchical migration plan includes moving extents identified by extent level mapping to a storage hierarchy.
14. The computer system according to claim 9, wherein the heat map data is analyzed to obtain extent level mapping.
15. A computer program for hierarchical migration for storage system optimization, comprising: determining to move data based on an access counter to balance the processing load among a plurality of storage drives arranged in each storage hierarchy; establishing a connection with an interconnect application program interface based on determining to move the data; collecting and converting a physical access counter based on establishing the connection with the interconnect application program interface; collecting heat map data based on collecting and converting the physical access counter; and calculating a hierarchical migration plan for internal map change events based on collecting the heat map data causing a processor to execute each step of the method.
16. determining to move a data block to a new location; sending a signal to a storage system to collect data from an access heat counter; starting to collect the data from the access heat counter; converting a physical address to a logical address; copying the heat map data to the storage system; and analyzing the heat map data further causing the processor to execute.
17. The computer program according to claim 15, wherein determining to move the data is performed based on the input / output processing load in an extent in the last hierarchical cycle.
18. The computer program according to claim 15, wherein the physical access counter is converted to a virtual logical block address.
19. The computer program according to claim 15, wherein the heat map data includes a heat map for each input / output operation.
20. The computer program according to claim 15, wherein the hierarchical migration plan includes moving the extent to a drive different from the current drive.
Citation Information
Patent Citations
Storage device, storage system, storage management method and storage management program
JP2013171305A
Management device, management method, and program
JP2017174150A
Techniques for dynamically relocating virtual disk file blocks between flash storage and HDD-based storage
US20150006787A1
Extent migration in multi-tier storage systems
US20180129443A1
Self-healing in a storage system
US20190013046A1