Performing wear leveling between storage devices of a storage system based on a storage object-based input / output pattern

CN116974459BActive Publication Date: 2026-11-03DELL PROD LP
View PDF 3 Cites 0 Cited by

Patent Information

Application Number
CN202210432672.4
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2022-04-21
Publication Date
2026-11-03
Estimated Expiration
2042-04-21

AI Technical Summary

Technical Problem

Existing storage systems are inadequate in terms of wear leveling and fail to effectively consider the impact of different I/O modes on storage devices, resulting in uneven wear of storage devices and affecting the lifespan and performance of the storage system.

Method used

By monitoring the IO modes and wear status of storage objects, the wear levels of different storage devices are identified. Using the storage object IO mode wear level classification module and the storage object movement module, the distribution of storage objects among storage devices is dynamically adjusted to achieve a balance of wear levels.

Benefits of technology

It extends the lifespan of storage devices, improves the overall performance and reliability of storage systems, and achieves more effective wear leveling by considering the impact of different I/O modes on storage devices.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN116974459B_ABST
    Figure CN116974459B_ABST
Patent Text Reader

Abstract

An apparatus comprising a processing device configured to monitor input / output (IO) operations of storage objects stored on storage devices of a storage system over a specified time period, identify an IO pattern associated with the storage objects, wherein the IO pattern is associated with different wear level impacts to the storage devices of the storage system, and determine a wear state of each storage device of the storage system. The processing device is further configured to select one or more storage objects to move from a first storage device to a second storage device of the storage system based at least in part on the monitored input / output operations, the identified IO pattern, and the determined wear state of each storage device. The processing device is further configured to move the selected storage objects from the first storage device to the second storage device to perform wear level balancing of the storage system.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This field relates generally to information processing, and more specifically to storage in information processing systems. Background Technology

[0002] Storage arrays and other types of storage systems are typically shared by multiple host devices over a network. Applications running on these host devices each consist of one or more processes that perform application functionality. These processes issue input-output (IO) operation requests to the storage system. The storage system's storage controller service these IO operation requests. In some information processing systems, multiple storage systems can be used to form a storage cluster. Summary of the Invention

[0003] The illustrative embodiments of this disclosure provide techniques for loss leveling among storage devices in a storage system, based at least in part on the input / output patterns of storage objects.

[0004] In one embodiment, an apparatus includes at least one processing means, the at least one processing means including a processor coupled to a memory. The at least one processing means is configured to perform the following steps: monitoring input / output operations of a plurality of storage objects, each of the plurality of storage objects being stored on one of a group of two or more storage devices in a storage system, within a specified time period; identifying input / output patterns associated with corresponding storage objects among the plurality of storage objects, wherein different input / output patterns among the input / output patterns are associated with different wear levels affecting the group of two or more storage devices in the storage system; and determining a wear state of each of the group of two or more storage devices in the storage system. The at least one processing means is configured to perform the following steps: selecting one or more storage objects among the plurality of storage objects to move from a first storage device in the group of two or more storage devices in the storage system to a second storage device in the group of two or more storage devices in the storage system, based at least in part on (i) the monitored input / output operations of the plurality of storage objects, (ii) the identified input / output patterns associated with corresponding storage objects among the plurality of storage objects, and (iii) the determined wear state of each storage device in the group of two or more storage devices in the storage system. The at least one processing device is configured to perform the following steps: moving the selected one or more storage objects from the first storage device to the second storage device to perform loss level balancing among the set of two or more storage devices in the storage system.

[0005] These and other illustrative embodiments include, but are not limited to, methods, devices, networks, systems, and processor-readable storage media. Attached Figure Description

[0006] Figure 1 This is a block diagram of an information processing system, as described in the illustrative embodiment, for loss leveling among storage devices in a storage system, based at least in part on the input / output patterns of storage objects.

[0007] Figure 2 This is a flowchart of an exemplary process for loss leveling among storage devices in a storage system, based at least in part on the input / output patterns of storage objects, in an illustrative embodiment.

[0008] Figure 3 Loss equalization between memory blocks of a solid-state drive and between solid-state drives in a memory array is shown in an illustrative embodiment.

[0009] Figures 4A to 4C The diagram shows graphs of different performance metrics for storage objects with a first input / output mode stored at different storage tiers in an illustrative embodiment.

[0010] Figures 5A to 5C The diagram shows graphs of different performance metrics for storage objects with a second input / output mode stored at different storage tiers in an illustrative embodiment.

[0011] Figures 6A to 6C The illustration shows graphs of different performance metrics for storage objects with a third input / output mode stored at different storage tiers in an illustrative implementation.

[0012] Figures 7A to 7C The illustration shows graphs of different performance metrics for storage objects with a fourth input / output mode stored at different storage tiers in an illustrative implementation.

[0013] Figures 8A to 8C The illustration shows graphs of different performance metrics for storage objects with a fifth input / output mode stored at different storage tiers in an illustrative implementation.

[0014] Figures 9A to 9C The illustration shows graphs of different performance metrics for storage objects with a sixth input / output mode stored at different storage tiers in an illustrative implementation.

[0015] Figure 10 A table summarizing performance metrics for storage objects with first to sixth input / output modes stored at different storage tiers in the illustrative implementation is shown.

[0016] Figure 11 A table summarizing the wear leveling of different memory drives for a memory array in the illustrative implementation is shown.

[0017] Figure 12 The process flow for relocating storage objects, taking into account the loss level of the input / output patterns of the storage objects, is shown in the illustrative embodiment.

[0018] Figure 13 A table illustrating the wear and tear status of storage drives in a storage array in an illustrative embodiment is shown.

[0019] Figure 14 A table illustrating the input / output mode loss levels of storage objects on storage drives in a storage array prior to relocation is shown in the illustrative embodiment.

[0020] Figure 15 A table illustrating the input / output mode loss levels of storage objects on storage drives in a storage array after relocation, as shown in the illustrative embodiment.

[0021] Figure 16A and Figure 16B Examples of storage object relocation with and without taking into account the input / output pattern loss level of the storage object in the illustrative implementation are shown.

[0022] Figure 17 and Figure 18 An example of a processing platform that can be used to implement at least a portion of an information processing system is shown in an illustrative embodiment. Detailed Implementation

[0023] This document describes illustrative embodiments with reference to exemplary information processing systems and associated computers, servers, storage devices, and other processing apparatuses. However, it should be understood that the embodiments are not limited to use with the specific illustrative system and apparatus configurations shown. Therefore, the term "information processing system" as used herein is intended to be interpreted broadly to encompass, for example, processing systems including cloud computing and storage systems, as well as other types of processing systems including various combinations of physical and virtual processing resources. Thus, an information processing system may include, for example, at least one data center or other type of cloud-based system that includes one or more cloud-based systems hosting tenants accessing cloud resources.

[0024] Figure 1An information processing system 100 is illustrated, configured according to an illustrative embodiment to provide wear-leveling functionality among storage devices in a storage system, at least in part based on the input / output (I / O) patterns of storage objects. The information processing system 100 includes one or more host devices 102-1, 102-2, ... 102-N (collectively referred to as 102), which communicate with one or more storage arrays 106-1, 106-2, ... 106-M (collectively referred to as 106) via a network 104. The network 104 may include a storage area network (SAN).

[0025] Storage array 106-1 (e.g.) Figure 1 The storage array 106-1 (shown) includes multiple storage devices 108, each storing data utilized by one or more applications running on the host device 102. The storage devices 108 are illustratively arranged in one or more storage pools. The storage array 106-1 also includes one or more storage controllers 110 that facilitate input / output (I / O) processing of the storage devices 108. The storage array 106-1 and its associated storage devices 108 are examples of what is more generally referred to herein as a “storage system.” Such a storage system in this embodiment is shared by the host device 102 and is therefore also referred to herein as a “shared storage system.” In embodiments with only a single host device 102, the host device 102 may be configured to exclusively use the storage system.

[0026] Host device 102 illustratively includes a corresponding computer, server, or other type of processing device capable of communicating with storage array 106 via network 104. For example, at least a subset of host device 102 may be implemented as a corresponding virtual machine of a computing service platform or other type of processing platform. Host device 102 in this arrangement illustratively provides computing services, such as executing one or more applications on behalf of each of one or more users associated with a corresponding host device in host device 102.

[0027] The term “user” in this article is intended to be interpreted broadly to encompass a wide range of arrangements of people, hardware, software or firmware entities, and combinations thereof.

[0028] Compute and / or storage services can be provided to users under Platform as a Service (PaaS), Infrastructure as a Service (IaaS), Function as a Service (FaaS), and / or Storage as a Service (STaaS) models. However, it should be understood that many other cloud infrastructure deployments can be used. Moreover, illustrative implementations can be implemented outside the context of cloud infrastructure, such as in the case of stand-alone compute and storage systems implemented within a given enterprise.

[0029] Storage device 108 of storage array 106-1 can implement logical units (LUNs) configured to store user objects associated with host device 102. These objects may include files, blocks, or other types of objects. Host device 102 interacts with storage array 106-1 using read and write commands, as well as other types of commands transmitted over network 104. In some embodiments, such commands more specifically include Small Computer System Interface (SCSI) commands, but in other embodiments, other types of commands may be used. As the term is used extensively herein, a given I / O operation illustratively includes one or more of these commands. References to terms such as “input-output” and “I / O” herein should be interpreted as referring to input and / or output. Therefore, an I / O operation is associated with at least one of input and output.

[0030] Furthermore, as used herein, the term "storage device" is intended to be interpreted broadly to encompass, for example, logical storage devices, such as LUNs or other logical storage volumes. A logical storage device can be defined as a distinct portion of the storage array 106-1 that includes one or more physical storage devices. Therefore, storage device 108 can be considered to include a corresponding LUN or other logical storage volume.

[0031] The storage device 108 of the storage array 106-1 can be implemented using a solid-state drive (SSD). Such SSDs are implemented using non-volatile memory (NVM) devices such as flash memory. Other types of NVM devices that can be used to implement at least a portion of the storage device 108 include non-volatile random access memory (NVRAM), phase-change RAM (PC-RAM), and magnetic RAM (MRAM). Various combinations of these and other types of NVM devices or other storage devices can also be used. For example, a hard disk drive (HDD) can be used in combination with an SSD or other types of NVM devices, or in place of an SSD or other types of NVM devices. Therefore, many other types of electronic or magnetic media can be used to implement at least a subset of the storage device 108.

[0032] exist Figure 1In the information processing system 100, it is assumed that storage array 106 is part of storage cluster 105 (e.g., where storage array 106 can be used to implement one or more storage nodes in a clustered storage system including multiple storage nodes interconnected via one or more networks), and it is assumed that host device 102 submits IO operations to be processed by storage cluster 105. It is assumed that at least one of the storage controllers of storage array 106 (e.g., storage controller 110 of storage array 106-1) implements functionality for intelligent data movement across storage devices 108 of storage array 106-1 (e.g., between different storage devices or portions thereof, where in some cases, different storage devices 108 are part of different storage tiers in storage cluster 105 or provide storage resources for different storage tiers) and between storage array 106-1 and one or more other storage arrays among storage arrays 106-2 to 106-M. This intelligent data movement functionality is provided via storage object IO mode loss level classification module 112 and storage object movement module 114.

[0033] As described above, in some embodiments, it is assumed that storage array 106 is part of storage cluster 105. It is assumed that storage cluster 105 provides or implements multiple different storage tiers in a multi-tiered storage system. For example, a given multi-tiered storage system may include a speed or performance tier implemented using flash storage devices or other types of SSDs, and a capacity tier implemented using HDDs, wherein one or more of such tiers may be server-based. As will be apparent to those skilled in the art, a variety of other types of storage devices and multi-tiered storage systems may be used in other embodiments. The specific storage device used in a given storage tier may vary depending on the specific needs of a given embodiment, and a variety of different storage device types may be used within a single storage tier. As previously indicated, the term "storage device" as used herein is intended to be interpreted broadly and therefore may encompass, for example, SSDs, HDDs, solid-state drives, hybrid drives, or other types of storage products and devices or portions thereof, and illustratively includes logical storage devices such as LUNs.

[0034] It should be understood that a multi-tiered storage system may include more than two storage tiers, such as one or more "performance" tiers and one or more "capacity" tiers, wherein the performance tiers illustratively provide increased I / O performance characteristics relative to the capacity tiers, and the capacity tiers illustratively use storage with relatively lower cost than the performance tiers. Multiple performance tiers or multiple capacity tiers may also exist, each providing different levels of service or performance as needed.

[0035] The storage object IO mode wear level classification module 112 is configured to monitor IO operations of a plurality of storage objects within a specified time period, each of which is stored on one of the storage devices 108 of the storage array 106-1. The storage object IO mode wear level classification module 112 is also configured to identify IO modes associated with corresponding storage objects among the plurality of storage objects, wherein different input / output modes in the input / output modes are associated with different wear levels affecting the storage device 108. The storage object IO mode wear level classification module 112 is further configured to determine the wear state of each of the storage devices 108, and to select one or more of the plurality of storage objects to move from a first storage device in the storage device 108 to a second storage device in the storage device 108, based at least in part on (i) the monitored IO operations of the plurality of storage objects, (ii) the identified IO modes associated with corresponding storage objects among the plurality of storage objects, and (iii) the determined wear state of each of the storage devices 108. Storage object moving module 114 is configured to move one or more selected storage objects from a first storage device to a second storage device to perform loss level balancing between storage devices 108.

[0036] Despite Figure 1 In one implementation, the storage object I / O mode loss level classification module 112 and the storage object movement module 114 are shown to be implemented inside the storage array 106-1 and outside the storage controller 110. However, in other implementations, one or both of the storage object I / O mode loss level classification module 112 and the storage object movement module 114 may be implemented at least partially inside the storage controller 110 or at least partially outside the storage array 106-1, such as on one of the host devices 102, on one or more other storage arrays 106-2 to 106-M, or on one or more servers outside the host device 102 and storage array 106 (e.g., including implementation on a cloud computing platform or other types of information technology (IT) infrastructure). Furthermore, although... Figure 1 Not shown, but other storage arrays in storage arrays 106-2 to 106-M may implement corresponding instances of the storage object IO mode loss level classification module 112 and the storage object movement module 114.

[0037] At least some of the functionality of the storage object IO mode loss level classification module 112 and the storage object movement module 114 can be implemented, at least partially, in the form of software stored in memory and executed by the processor.

[0038] Figure 1In the embodiments described, the host device 102 and storage array 106 are assumed to be implemented using at least one processing platform, wherein each processing platform includes one or more processing units, each processing unit having a processor coupled to memory. Such processing units may illustratively include specific arrangements of computing, storage, and networking resources. For example, in some embodiments, the processing units are implemented using at least part of virtual resources, such as virtual machines (VMs) or Linux containers (LXCs), or a combination of both, such as in an arrangement where Docker containers or other types of LXCs are configured to run on VMs.

[0039] Although the host device 102 and the storage array 106 may be implemented on correspondingly different processing platforms, many other arrangements are possible. For example, in some embodiments, at least a portion of one or more of the host devices 102 and one or more of the storage arrays 106 are implemented on the same processing platform. One or more of the storage arrays 106 may therefore be implemented, at least partially, within at least one processing platform that implements at least a subset of the host devices 102.

[0040] Network 104 can be implemented using multiple different types of networks to interconnect storage system components. For example, network 104 may include a SAN as part of a global computer network such as the Internet, but other types of networks may be part of a SAN, including wide area networks (WANs), local area networks (LANs), satellite networks, telephone or cable networks, cellular networks, wireless networks (such as WiFi or WiMAX networks), or various portions or combinations of these and other types of networks. Therefore, in some embodiments, network 104 includes a combination of multiple different types of networks, each including processing means configured to communicate using Internet Protocol (IP) or other relevant communication protocols.

[0041] As a more specific example, some implementations may utilize one or more high-speed local area networks, in which associated processing devices communicate with each other using peripheral component interconnection fast (PCIe) cards and network protocols such as wireless bandwidth, gigabit Ethernet, or Fibre Channel. In a given implementation, many alternative network arrangements are possible, as those skilled in the art will understand.

[0042] While in some embodiments certain commands used by host device 102 to communicate with storage array 106 illustratively include SCSI commands, other types of commands and command formats may be used in other embodiments. For example, some embodiments may utilize command features and functionality associated with NVM Fast (NVMe) to perform I / O operations, as described in the NVMe specification, version 1.3, May 2017, which is incorporated herein by reference. Other storage protocols of this type that may be utilized in the illustrative embodiments disclosed herein include Architectural NVMe (also known as NVMoF) and Transmission Control Protocol (TCP)-based NVMe (also known as NVMe / TCP).

[0043] Assuming that the storage array 106-1 in this embodiment includes persistent memory implemented using flash memory or other types of non-volatile memory, more specific examples include NAND-based flash memory or other types of non-volatile memory, such as resistive RAM, phase-change memory, spin-torque-converting magnetoresistive RAM (STT-MRAM), and 3D XPoint-based... TM Intel Optane memory TM The persistent memory is further assumed to be separate from the storage device 108 of the storage array 106-1; however, in other embodiments, the persistent memory may be implemented as one or more designated portions of one or more of the storage devices 108. For example, in some embodiments, the storage device 108 may include a flash-based storage device, as in embodiments involving an all-flash storage array, or may be implemented entirely or partially using other types of non-volatile memory.

[0044] As described above, communication between the host device 102 and the storage array 106 can utilize a PCIe connection or other types of connections implemented through one or more networks. For example, illustrative embodiments may use interfaces such as Internet SCSI (iSCSI), Serial Attached SCSI (SAS), and Serial ATA (SATA). In other embodiments, many other interfaces and associated communication protocols may be used.

[0045] In some implementations, storage array 106 may be implemented as part of a cloud-based system.

[0046] Therefore, it should be understood that the term “memory array” as used herein is intended to be interpreted broadly and may encompass several different instances of commercially available memory arrays.

[0047] Other types of storage products that can be used to implement the given storage system in the illustrative embodiments include software-defined storage, cloud storage, object-based storage, and scale-out storage. In the illustrative embodiments, combinations of these and several other storage types can also be used to implement the given storage system.

[0048] In some implementations, the storage system includes a first storage array and a second storage array arranged in an active-active configuration. For example, this arrangement can be used to ensure that data stored in one of the storage arrays is replicated to other storage arrays using a synchronous replication process. This data replication across multiple storage arrays can facilitate fault recovery in system 100. Thus, one of the storage arrays can operate as a production storage array relative to other storage arrays operating as standby or recovery storage arrays.

[0049] However, it should be understood that the embodiments disclosed herein are not limited to active-active configuration or any other particular storage system arrangement. Therefore, the illustrative embodiments herein can be configured using a variety of other arrangements, including, for example, active-passive arrangements, active-active asymmetric logical unit access (ALUA) arrangements, and other types of ALUA arrangements.

[0050] These and other storage systems may be part of what is more generally referred to herein as a processing platform, which includes one or more processing units, each including a processor coupled to memory. A given processing unit may correspond to one or more virtual machines or other types of virtualization infrastructure, such as Docker containers or other types of LXC. As indicated above, communication between such components of system 100 may be made via one or more networks.

[0051] As used herein, the term "processing platform" is intended to be interpreted broadly to encompass (illustratively, but not limited to) multiple sets of processing devices and one or more associated storage systems configured to communicate over one or more networks. For example, a distributed implementation of host device 102 is possible, wherein some host devices of host device 102 reside in a data center located in a first geographic location, while other host devices of host device 102 reside in one or more other data centers located in one or more other geographic locations that may be far from the first geographic location. Storage array 106 may be implemented at least partially in the first geographic location, a second geographic location, and one or more other geographic locations. Thus, in some implementations of system 100, different host devices and storage arrays in host device 102 and storage array 106 may reside in different data centers.

[0052] Many other distributed implementations of host device 102 and storage array 106 are possible. Therefore, host device 102 and storage array 106 can also be implemented in a distributed manner across multiple data centers.

[0053] Additional examples of the processing platform used to implement a portion of system 100 in the illustrative implementation scheme will be combined below. Figure 17 and Figure 18 To describe in more detail.

[0054] It should be understood that Figure 1 The specific set of elements shown for wear leveling among storage devices in a storage system, at least in part based on the I / O patterns of storage objects, is presented by way of illustrative example only, and in other embodiments, additional or alternative elements may be used. Thus, another embodiment may include different arrangements of additional or alternative systems, devices and other network entities, as well as modules and other components.

[0055] It should be understood that these and other features of the illustrative implementation are presented by way of example only and should not be construed as limiting in any way.

[0056] Now refer to Figure 2 The flowchart describes in more detail an exemplary process for wear leveling among storage devices in a storage system, based at least in part on the I / O patterns of storage objects. It should be understood that this particular process is merely an example, and in other embodiments, additional or alternative processes for wear leveling among storage devices in a storage system, based at least in part on the I / O patterns of storage objects, may be used.

[0057] In this implementation, the process includes steps 200 through 208. These steps are assumed to be performed by the storage object IO pattern wear level classification module 112 and the storage object movement module 114. The process begins with step 200, which monitors IO operations on a plurality of storage objects over a specified time period, each of which resides on one of a set of two or more storage devices (e.g., 108) in a storage system (e.g., 105, 106). In step 202, IO patterns associated with corresponding storage objects among the plurality of storage objects are identified. Different IO patterns are associated with different wear levels affecting the set of two or more storage devices in the storage system. Identifying a given IO pattern associated with a given storage object among the plurality of storage objects is based at least in part on the size of the given storage object, the ratio of read to write operations on the given storage object over the specified time period, and the ratio of sequential to random IO operations involving the given storage object over the specified time period.

[0058] In step 204, the wear status of each of the two or more storage devices in the storage system is determined. Determining the wear status of a given storage device in the two or more storage devices in the storage system may be based at least in part on: the wear level of the given storage device; the I / O activity level of the given storage device; and the capacity usage of the given storage device. The wear level of a given storage device may be determined at least in part based on the cumulative write request count of the given storage device. The I / O level of a given storage device may be determined at least in part based on the sum of the counts of monitored I / O operations of a subset of multiple storage objects stored on the given storage device.

[0059] In step 206, one or more of the multiple storage objects are selected to move from a first storage device in the group of two or more storage devices in the storage system to a second storage device in the group of two or more storage devices, based at least in part on (i) monitored I / O operations of the multiple storage objects, (ii) identified I / O patterns associated with corresponding storage objects among the multiple storage objects, and (iii) a determined wear state of each storage device in the group of two or more storage devices in the storage system. The first storage device may have a first wear level greater than the second wear level of the second storage device. One or more of the plurality of storage objects are selected based at least in part on a storage object relocation cell temperature value associated with each of the plurality of storage objects in a subset stored on the first storage device. The storage object relocation cell temperature value is based at least in part on: the IO activity level of the corresponding storage object in the subset of the plurality of storage objects stored on the first storage device; and the erase score of the IO mode associated with the corresponding storage object in the subset of the plurality of storage objects stored on the first storage device. The given erase score of the given IO mode is determined at least in part based on the average erase count per IO operation of the given IO mode and the average erase count per IO operation of all IO modes.

[0060] In step 208, one or more selected storage objects are moved from a first storage device to a second storage device to perform wear level balancing among the group of two or more storage devices in the storage system. Steps 206 and 208 may be performed in response to identifying that the wear level difference between the group of two or more storage devices in the storage system is greater than a specified threshold. Steps 204, 206, and 208 may be repeated until the wear level difference between the group of two or more storage devices in the storage system is equal to or less than the specified threshold.

[0061] The set of two or more storage devices in the storage system may be part of the same storage tier in two or more storage tiers within the storage system. The storage system may include a clustered storage system (e.g., 105) comprising two or more storage arrays (e.g., 106). The first and second storage devices may be part of a given storage array (e.g., 106-1) among the two or more storage arrays, and the movement of selected one or more storage objects among a plurality of storage objects improves the wear level balance of the given storage array among the two or more storage arrays. Alternatively, the first storage device is part of a first storage array (e.g., 106-1) among two or more storage arrays, and the second storage device is part of a second storage array (e.g., 106-2) among two or more storage arrays, and the movement of selected one or more storage objects among a plurality of storage objects improves the wear level balance between the first and second storage arrays among the two or more storage arrays. The first and second storage devices may include the same storage device type (e.g., SSD).

[0062] Conventional methods for wear leveling do not account for the impact of different I / O patterns (e.g., different write patterns) on wear leveling. For example, different write patterns can have different effects on SSD erasure, but conventional methods treat all writes as the same. However, different write operations have different erasure effects on SSDs. Larger write operations cause more erasures than smaller write operations, and thus increase the impact on SSDs (and possibly other types of storage devices). Random write operations can also cause more erasures than sequential write operations, and therefore have a greater impact on SSDs (and possibly other types of storage devices) than sequential write operations.

[0063] The illustrative implementation provides methods for calculating I / O mode wear scores and applying these scores to the associated "temperature" calculation of the storage object relocation unit, such that storage object relocation based on storage object temperature takes into account the different impacts of different I / O modes (e.g., different write modes) on the wear of SSDs or other storage devices. Storage object relocation also considers the wear status of the SSD or other storage device. Therefore, the techniques described herein can also generate storage object relocation bootstrapping for performing wear leveling in storage arrays.

[0064] Wear leveling is a technique used to extend the lifespan of storage devices (e.g., flash memory, SSDs, etc.). Wear leveling techniques or mechanisms can have two dimensions: the internal storage device dimension and the storage array dimension. This is in... Figure 3The diagram illustrates how wear leveling in storage array dimension 300 can be performed across SSDs 1, 2, ..., P (and possibly between different storage arrays) in storage arrays 1, 2, ..., M. Within each SSD or other storage device, wear leveling at SSD or other storage device dimension 350 can also be performed between different blocks or other portions of that SSD or other storage device. SSD lifespan can be limited by its read / write cycles. Frequent erasure of the same storage cell of an SSD (e.g., for reads, the storage cell can be at the page level; for writes, the storage cell can be at the block level) will result in permanent damage to that storage cell. To avoid this, wear leveling can be implemented for each SSD at its pages, blocks, or other storage cells. SSDs and other storage devices can combine static and dynamic wear leveling algorithms by remapping physical and logical addresses to balance the data stored in the SSD. For example, as... Figure 3 As shown, wear leveling in dimension 350 of an SSD or other storage device can balance the usage of different blocks within each SSD.

[0065] From a storage array perspective, each storage array can support multiple endurance levels for SSDs or other storage devices within a storage pool. If data access patterns cause excessive wear and tear on a particular set of SSDs or other storage devices, these SSDs or other storage devices may reach the end of their lifespan before the storage array's warranty expires. For example, if a storage array is expected to last 5 years (e.g., the storage array has a 5-year warranty), then the SSDs on that storage array should not reach the end of their lifespan before 5 years. Wear leveling in storage array dimension 300 can balance IO loads and mitigate SSD wear at the drive or storage device level to prevent excessive wear and tear on SSDs or other storage devices, and to mitigate uneven wear and tear among SSDs or other storage devices within the storage array. IO load balancing can also be performed across multiple different storage arrays to facilitate wear leveling (e.g., for a group of storage arrays as part of a unified storage cluster).

[0066] On both storage array dimension 300 and SSD or other storage device dimension 350, the wear leveling mechanism attempts to balance the use of SSD or other storage devices and extend their lifespan, but at different balancing units (e.g., for wear leveling in storage array dimension 300, at the SSD or storage device level, and for wear leveling in SSD or other storage device dimension 350, at the block level).

[0067] Wear leveling in storage array dimension 300 can be based on or utilize various algorithms, including: storage object relocation cell temperature calculation algorithms; SSD or other storage device wear status calculation algorithms; and storage object relocation algorithms that take into account the wear levels of storage object relocation cells and SSDs or other storage devices. The storage object relocation cell temperature calculation algorithm divides the SSDs or other storage devices in the storage array or other storage system into small storage object relocation cells (e.g., disk domains, slices, etc.) that can be relocated between SSDs or other storage devices in the storage array or other storage system. The "temperature" of each storage object relocation cell describes the IO frequency of that storage object relocation cell, where higher temperatures correspond to storage object relocation cells with high IO access counts and high wear impact on SSDs or other storage devices.

[0068] Storage object relocation cell temperature calculation algorithms may include: collecting IO statistics at different time intervals in the storage array or other storage system, and for each time interval, combining the amount of IO that occurred in the previous time interval with the previous storage object relocation cell temperature value to calculate a new set of storage object relocation cell temperatures (e.g., based on an exponential decay function). SSD or other storage device wear status calculation algorithms may calculate wear status based on a combination of factors such as wear level, IO temperature, and capacity usage. W can be used to represent the wear level and the cumulative write request count of the SSD (or other storage device) in historical data. T can be used to represent the IO temperature, and the IO temperature of the SSD (or other storage device) can be expressed as the sum of the storage object relocation cell IO temperature values ​​of the SSD's storage object relocation cells. C can be used to represent the capacity usage of the SSD (or other storage device). The wear status of the SSD, denoted as R, can be calculated according to the following formula:

[0069] R = ω1·W + ω2·T + ω3·C

[0070] Where ω1, ω2, and ω3 are weight values, and ω1 + ω2 + ω3 = 1. The larger the value of R, the more severe the wear and tear on the SSD or other storage device.

[0071] To balance the wear and tear of SSDs or other storage devices within a storage array (or across multiple storage arrays), storage objects with relatively high temperature values ​​are relocated to SSDs or other storage devices with relatively low wear levels. This reduces or avoids excessive wear on SSDs or other storage devices and balances the wear levels of SSDs or other storage devices within the storage array.

[0072] As discussed above, conventional wear leveling methods treat each I / O as having the same wear effect, failing to account for the varying wear levels associated with different I / O patterns. Different applications can run storage workloads with varying I / O characteristics. Therefore, to analyze and tune the performance of a storage system, it is important to understand the types of storage workloads being generated by the applications or hosts utilizing the storage system. Storage workloads can be described by various characteristics, including but not limited to I / O size, read / write ratio, random / sequential ratio, etc. Different applications (such as network file servers, network server logs, operating system (OS) paging, switch servers, workstations, media streaming, online transaction processing (OLTP) data, and OLTP logging) can have different storage workloads. A network file server application, for example, might have I / O sizes of 4 kilobytes (KB), 8 KB, or 64 KB, a read / write ratio of 95% reads and 5% writes, and a random / sequential ratio of 75% random and 25% sequential. As another example, an OLTP logging application may have an I / O size of 512 bytes (B) to 64KB, a read / write ratio of 100% write, and a random / sequential ratio of 100% random. It should be noted that these specific applications and their associated storage workload characteristics are presented by way of example only, and in other implementations, various other types of applications may exist with different values ​​for their associated storage workload characteristics.

[0073] Figures 4A to 9C The graphs illustrate how different I / O modes result in different erase outcomes and have different effects on SSDs or other storage devices. Figures 4A to 9C The graphs were generated in a group of independent redundant disk arrays (RAID) with a RAID 1 / 0 configuration, where each RAID has three SSD drives of the same drive type. The load on each RAID group was continuous over a 100-hour period for a set of six different IO modes. [The graphs were used to generate the graphs.] Figures 4A to 9C The data for the graph was generated by recording the drive erase count for each SSD before the test and after 100 hours of writing in each of the six IO modes. The increment in erase count was calculated based on 100 hours of continuous writing.

[0074] For six different IO modes, performance metrics such as IO operations per second (IOPS), bandwidth, and response time are... Figures 4A to 9C The text shows:

[0075] Figures 4A to 4CGraphs 400, 405, and 410 show storage objects with 4KB IO size, 0% / 100% read / write ratio, and 100% / 0% random / sequential ratio (denoted as "4K_0R_0S" and also referred to as IO mode P1 in this document);

[0076] Figures 5A to 5C Graphs 500, 505, and 510 show storage objects with 4KB IO size, 0% / 100% read / write ratio, and 0% / 100% random / sequential ratio (denoted as "4K_0R_100S" and also referred to as IO mode P2 in this document);

[0077] Figures 6A to 6C Graphs 600, 605, and 610 show storage objects with 8KB IO size, 0% / 100% read / write ratio, and 100% / 0% random / sequential ratio (denoted as "8K_0R_0S" and also referred to as IO mode P3 in this document);

[0078] Figures 7A to 7C Graphs 700, 705, and 710 show storage objects with 8KB IO size, 0% / 100% read / write ratio, and 0% / 100% random / sequential ratio (denoted as "8K_0R_100S" and also referred to as IO mode P4 in this document);

[0079] Figures 8A to 8C Graphs 800, 805, and 810 show memory objects with 128KB I / O size, 0% / 100% read / write ratio, and 100% / 0% random / sequential ratio (denoted as "128K_0R_0S" and also referred to as I / O mode P5 in this document); and

[0080] Figures 9A to 9C Graphs 900, 905, and 910 show storage objects with 128KB IO size, 0% / 100% read / write ratio, and 0% / 100% random / sequential ratio (denoted as "128K_0R_100S" and also referred to as IO mode P6 in this document).

[0081] Figure 4A , Figure 5A , Figure 6A , Figure 7A , Figure 8A and Figure 9A The graphs 400, 500, 600, 700, 800, and 900 show LUN IOPS (IO per second (IO / s)) versus time. Figure 4B , Figure 5B , Figure 6B , Figure 7B , Figure 8B and Figure 9BThe graphs 405, 505, 605, 705, 805, and 905 show the LUN bandwidth (megabytes per second (MB / s)) versus time. Figure 4C , Figure 5C , Figure 6C , Figure 7C , Figure 8C and Figure 9C The graphs 410, 510, 610, 710, 810, and 910 show the LUN response time (milliseconds (ms)) versus time.

[0082] After 100 hours of continuous writing across six IO modes, the increase in erase count for each SSD was summarized, such as... Figure 10 As shown in Table 1000. Figure 10 Table 1000 shows the SSD ID and SSD raw erase count (represented as Erase_Count). 原始 SSD current erase count (represented as Erase-Count) 当前 The writes per second (Writes_per_second) metric can be collected directly from each storage array. Figure 10 The incremental erase count (denoted as Erase_Count increment), total write count (denoted as Total_write-number), and average erase count per write (denoted as Average-Erase_Count_per_Write) metrics shown in Table 1000 after 100 hours can be calculated from the SSD ID, SSD raw erase count, SSD current erase count, and writes per second metric according to the following equations:

[0083] Erase_Count 增量 =Erase_Count 当前 -Erase_Count 原始

[0084] Total_write_number=Writes_per_second*60*60*100

[0085] Average_Erase_Count_per_Write=Erase_Count 增量 / Total_write_number

[0086] As can be seen from Table 1000, different I / O modes have different erase effects on SSD drives. Generally, I / O modes with larger I / O sizes have a higher erase effect, and for I / O modes of the same size, random write mode has a higher erase effect than sequential write mode.

[0087] If the wear leveling mechanism does not account for differences in I / O modes, this can lead to inaccuracies in the calculation of storage object relocation cell temperature and the wear status calculation of SSDs or other storage devices. Such inaccuracies can also lead to inaccuracies in storage object relocation and wear leveling guidance. For example, in calculating the temperature of a storage object relocation cell, assume there are two I / O modes on a given storage object relocation cell (A = 4K_OR_100S, B = 128K_OR_100S). Conventional methods treat each I / O mode as having the same wear effect on the SSD or other storage device and can calculate the temperature of the storage object relocation cell as 2. However, the wear effect of I / O mode B is approximately three times that of I / O mode A. Therefore, using the techniques described herein, the temperature of the storage object relocation cell should be 4. Wear status calculations for SSDs or other storage devices have similar problems because they are based on the storage object relocation cell temperature and the cumulative writes to each SSD or other storage device's storage object relocation cell. Figure 11 Table 1100 illustrates the wear leveling problem of a storage pool comprising a set of fourteen SAS flash type drives, each with a capacity of 733.5 GB. Table 1100 shows the estimated end-of-life (EOL) in days after six months of storage pool use. As shown, the largest EOL difference occurs at 45 days after six months of use.

[0088] As discussed above, conventional wear leveling methods in storage arrays treat each I / O as identical. The illustrative implementation provides a method for improved wear leveling within (and possibly across) a storage array by considering I / O pattern wear factors when calculating storage object relocation cell temperatures and SSD or other storage device wear states, and generating storage object relocation boots to perform wear leveling. To improve the accuracy of wear leveling, the illustrative implementation considers I / O patterns in the algorithm used to calculate I / O pattern wear scores, which can represent the wear impact of each I / O pattern on the SSD or other storage device. The I / O pattern wear scores are used in storage object relocation cell temperature and SSD or other storage device wear state calculations to generate relocation boots for wear leveling.

[0089] Figure 12A process flow 1200 for relocating storage objects considering IO mode attrition scores is illustrated. Process flow 1200 begins at 1201 (e.g., based on scheduling, in response to an explicit user request, or some other condition), and in step 1203, IO modes (e.g., write modes) are collected and used to calculate IO mode attrition scores. In some embodiments, a statistical averaging method is used to calculate the attrition impact of different IO modes on the SSD or other storage device. Write counts and incremental erase counts of the SSD or other storage device are collected and increased over a time period T. The number of IO modes is represented as N, where each IO mode is represented as p. i , where 1≤i≤N. p i The total number of writes is M i And M i The write operation within time period T causes an increase in the erase count of the SSD or other storage device by e. i Then, calculate the average erase count per write using the following formula:

[0090]

[0091] Assuming the total number of SSDs or other storage devices is B, then the following formula can be used to calculate... i Average erase count per write:

[0092]

[0093] The average erase count per IO write for all IO modes is calculated using the following formula:

[0094]

[0095] Finally, the I / O mode among all I / O modes can be calculated using the following formula. i Relative erase score:

[0096]

[0097] It should be understood that the above IO pattern calculations can be performed on or off the storage array. For example, in some cases, it is desirable to save computing resources on the storage array and to summarize the most common IO patterns, perform tests and analyses to obtain the degree of IO pattern erasure. Then, the classification of IO pattern types for storage objects can be performed on the storage array. To increase the accuracy of the IO pattern erasure results, step 1203 (e.g., collecting and analyzing IO patterns within each time period T) can be performed on the storage array.

[0098] In step 1205, the storage object relocation unit temperature t of the storage object is calculated. kEnd users can create various storage objects (e.g., LUNs, file systems, virtual volumes) for specific business applications. It should be noted that a storage object may contain a single relocation unit or multiple relocation units. Storage objects are used for specific applications. Some storage objects may have stable I / O patterns, while others may have random or unstable I / O patterns. Therefore, each storage object can be classified into one of two types: those with unstable I / O patterns that change periodically; and those with stable I / O patterns. Storage objects without stable I / O patterns can be processed using algorithms that do not consider wear and tear (e.g., the erase score of an unstable storage object can be represented as the I / O access frequency of the storage object: t = f). Storage objects with stable I / O patterns (e.g., corresponding to I / O pattern p) can be processed using algorithms that do not consider wear and tear. i The number of storage objects (of which one) is denoted as K, and within the storage objects, the relocation unit o k With write mode p i f k It is a relocation unit o k The IO frequency, which can be correlated with the erase score of the IO mode. i Combined to calculate the relocation unit o according to the following equation k Temperature:

[0099] t k =s i ·f k

[0100] Storage object relocation units with higher scores have a greater erase impact on SSDs and other storage devices, while storage object relocation units with lower scores have a lower erase impact on SSDs and other storage objects.

[0101] In step 1207, the wear status and imbalance rate of the SSDs or other storage devices are calculated. In a storage array with L SSDs or other storage devices, for each disk l (1 ≤ l ≤ L), the wear status in the storage array can be calculated by combining multiple factors (including wear level, I / O temperature, and capacity usage):

[0102]

[0103]

[0104]

[0105] The relative wear and tear of disk l in the storage array can be calculated using the following equation:

[0106]

[0107] R lThe higher the value of R, the more wear and tear occurs on the disk. High-temperature storage objects should be relocated to disks with smaller R values. This helps balance the wear and tear across the storage array.

[0108] Assess the imbalance rate of the storage array to determine whether wear leveling should be performed. Calculate the average wear status of the SSDs or other storage devices in the storage array using the following formula:

[0109]

[0110] The standard deviation of the wear and tear status of SSDs or other storage devices in a storage array is:

[0111]

[0112] The imbalance rate in a storage array can be calculated using the following equation:

[0113]

[0114] Specify an imbalance threshold, denoted as Θ (e.g., specified by the end user or operator of the storage array). In step 1209, determine whether λ > θ. If the determination in step 1209 is negative, process flow 1200 returns to step 1203. If the determination in step 1209 is positive, this corresponds to the SSDs or other storage devices in the storage array having too unbalanced wear states, causing storage object relocation for wear level balancing to be initiated in step 1211.

[0115] In step 1211, a relocation bootstrap is generated for storage array wear leveling. It has a maximum value R. 最大 The SSD or other storage device that suffers the most wear and tear is the one designated as the source disk (denoted as R). 源 It has a minimum value R. 最小 The SSD or other storage device experiences the least wear and tear and is designated as the destination disk (denoted as R). 目的地 (With the highest erase score s) 最大 The storage object relocation unit on the source disk is the best choice for relocation because moving the storage object relocation unit has the lowest migration cost and yields the most wear-balanced result. After each relocation (or after a specified threshold number of storage object relocation units have been moved from the currently selected source disk to the currently selected destination disk), in step 1213, it is determined whether R... 源 ≤R 目的地Or λ≤Θ. If the result of step 1213 is negative, process flow 1200 returns to step 1211. If the result of step 1213 is positive (e.g., the rebalancing algorithm may stop until the next scheduled rebalancing), process flow 1200 proceeds to step 1215. In step 1215, relocation bootstrapping is performed. Process flow 1200 then ends at 1217.

[0116] Now about Figures 13 to 16B To describe Figure 12 The following is an example implementation of process flow 1200. In this example, it is assumed that the storage array consists of three SSDs (L=3), the imbalance rate threshold is set to Θ=20%, and the weight value is set to ω. C =30%, ω T =40% and ω W =30%. In Figure 13 Table 1300 shows the initial capacity usage, IO temperature, and loss status values. Using the above equations, the write mode loss score s is determined. i Storage object relocation unit IO temperature t k Disk wear status R l And the storage array loss imbalance rate λ, such as Figure 14 As shown in Table 1400. Based on these results, SSD3 was determined to have the most wear and SSD1 to have the least wear, and the imbalance rate of the storage array was λ = 0.716447724. Since the imbalance rate of the storage array is greater than the threshold Θ = 20%, a rebalancing is initiated in the storage array. In conventional methods for wear leveling, storage object relocation unit o5 has the highest temperature, and conventional methods for wear leveling relocate o5 from SSD3 to SSD1. Using the technique described herein that takes into account the IO mode of the storage object relocation unit, storage object relocation unit o4 (e.g., which has the highest erase impact on the SSD) is relocated from SSD3 to SSD1 to prevent or mitigate wear on SSD3. Figure 15 Table 1500 illustrates the storage array wear status after storage object relocation unit o4 is relocated from SSD3 to SSD1. As shown, λ = 0.19 < Θ, and the current iteration of wear level balancing can be stopped until the wear balance of the next schedule is determined. Figure 16A The diagram illustrates loss leveling using conventional methods (e.g., those that do not take into account the loss effects of I / O patterns). Figure 16B This paper demonstrates loss leveling using the techniques described herein that take into account the loss effects of I / O patterns.

[0117] It should be understood that the specific advantages described above and elsewhere herein are associated with specific illustrative embodiments and do not need to exist in other embodiments. Furthermore, the specific types of information processing system features and functions illustrated in the figures and as described above are merely exemplary, and many other arrangements may be used in other embodiments.

[0118] Now refer to Figure 17 and Figure 18 An illustrative embodiment of a processing platform is described in more detail for implementing wear leveling functionality among storage devices in a storage system, at least in part based on the I / O patterns of storage objects. Although described in the context of system 100, these platforms may also be used to implement at least a portion of other information processing systems in other embodiments.

[0119] Figure 17 An example processing platform including cloud infrastructure 1700 is shown. Cloud infrastructure 1700 includes features that can be used to implement... Figure 1 The information processing system 100 comprises at least a portion of its physical and virtual processing resources. The cloud infrastructure 1700 includes multiple virtual machines (VMs) and / or container groups 1702-1, 1702-2, ..., 1702-L implemented using virtualization infrastructure 1704. Virtualization infrastructure 1704 runs on physical infrastructure 1705 and illustratively includes one or more hypervisors and / or operating system-level virtualization infrastructures. Operating system-level virtualization infrastructure illustratively includes the kernel control group of a Linux operating system or other types of operating systems.

[0120] Cloud infrastructure 1700 also includes multiple application groups 1710-1, 1710-2, ... 1710-L, which run on corresponding VM / container groups 1702-1, 1702-2, ... 1702-L under the control of virtualization infrastructure 1704. VM / container group 1702 may include a corresponding VM, one or more containers of the corresponding group, or one or more containers of the corresponding group running in a VM.

[0121] exist Figure 17 In some implementations of the scheme, VM / container group 1702 includes corresponding VMs implemented using virtualization infrastructure 1704 including at least one hypervisor. A hypervisor platform can be used to implement the hypervisor within virtualization infrastructure 1704, wherein the hypervisor platform has an associated virtual infrastructure management system. The underlying physical machines may include one or more distributed processing platforms, which include one or more storage systems.

[0122] exist Figure 17In other implementations of the scheme, VM / container group 1702 includes corresponding containers implemented using virtualization infrastructure 1704 that provides operating system-level virtualization functionality, such as Docker containers supporting operation on bare metal hosts or Docker containers running on VMs. The containers are implemented illustratively using the corresponding kernel control group of the operating system.

[0123] As is evident from the above, one or more of the processing modules or other components of system 100 may each run on a computer, server, storage device, or other processing platform element. Such a given element may be considered as an example of what is more generally referred to herein as a "processing device". Figure 17 The cloud infrastructure 1700 shown may represent at least a portion of a processing platform. Another example of such a processing platform is... Figure 18 The processing platform shown is 1800.

[0124] In this embodiment, the processing platform 1800 includes a portion of the system 100 and includes a plurality of processing devices denoted as 1802-1, 1802-2, 1802-3, ..., 1802-K, which communicate with each other via a network 1804.

[0125] Network 1804 may include any type of network, such as global computer networks (such as the Internet), WANs, LANs, satellite networks, telephone or cable networks, cellular networks, wireless networks (such as WiFi or WiMAX networks), or various parts or combinations of these and other types of networks.

[0126] The processing device 1802-1 in the processing platform 1800 includes a processor 1810 coupled to a memory 1812.

[0127] The processor 1810 may include a microprocessor, a microcontroller, an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), a central processing unit (CPU), a graphics processing unit (GPU), a tensor processing unit (TPU), a video processing unit (VPU), or other types of processing circuitry, as well as portions or combinations of such circuitry elements.

[0128] Memory 1812 may include random access memory (RAM), read-only memory (ROM), flash memory, or other types of memory in any combination. Memory 1812 and other memories disclosed herein should be considered as illustrative examples of what is more generally referred to as a “processor-readable storage medium” storing executable program code of one or more software programs.

[0129] Articles of manufacture including such processor-readable storage media are considered illustrative embodiments. Given such articles of manufacture, they may include, for example, storage arrays, storage disks, or integrated circuits containing RAM, ROM, flash memory, or other electronic memory, or any of a variety of other types of computer program products. As used herein, the term "article of manufacture" should be understood to exclude transient propagated signals. Many other types of computer program products including processor-readable storage media may be used.

[0130] The processing device 1802-1 also includes a network interface circuit 1814, which is used to interface the processing device with the network 1804 and other system components, and may include a conventional transceiver.

[0131] It is assumed that the other processing devices 1802 of the processing platform 1800 are configured in a manner similar to that shown for the processing device 1802-1 in the figure.

[0132] Similarly, the particular processing platform 1800 shown in the figure is presented by way of example only, and the system 100 may include additional or alternative processing platforms, as well as a number of different processing platforms in any combination, wherein each such platform includes one or more computers, servers, storage devices or other processing devices.

[0133] For example, other processing platforms used to implement the illustrative implementation scheme may include converged infrastructure.

[0134] Therefore, it should be understood that in other embodiments, different arrangements of additional or alternative elements may be used. At least a subset of these elements may be implemented together on a common processing platform, or each such element may be implemented on a separate processing platform.

[0135] As previously indicated, components of the information processing system disclosed herein may be implemented, at least in part, as one or more software programs stored in memory and executed by a processor of a processing device. For example, at least a portion of the functionality disclosed herein for wear leveling among storage devices of a storage system, based at least in part on I / O patterns of storage objects, is illustratively implemented as software running on one or more processing devices.

[0136] It should be emphasized again that the above embodiments are presented for illustrative purposes only. Many variations and other alternative embodiments may be used. For example, the disclosed technology is applicable to a variety of other types of information processing systems, storage systems, I / O modes, etc. Moreover, the specific configurations of the system and apparatus elements illustrated in the drawings and the associated processing operations may vary in other embodiments. Furthermore, the various assumptions made above in describing the illustrative embodiments should be considered exemplary and not as requirements or limitations of this disclosure. Many other alternative embodiments within the scope of the appended claims will be apparent to those skilled in the art.

Claims

1. An apparatus for loss leveling among storage devices in a storage system, the apparatus comprising: At least one processing device, the at least one processing device including a processor coupled to a memory; The at least one processing device is configured to perform the following steps: Monitor the input / output operations of multiple storage objects within a specified time period, each of the multiple storage objects being stored on one of a group of two or more storage devices in the storage system; Identify input / output patterns associated with corresponding storage objects among the plurality of storage objects, wherein different input / output patterns among the input / output patterns are associated with different levels of wear and tear on the set of two or more storage devices of the storage system; Determine the wear status of each of the two or more storage devices in the group of the storage system; One or more of the plurality of storage objects are selected to move from a first storage device in the set of two or more storage devices in the storage system to a second storage device in the set of two or more storage devices in the storage system, based on (i) the monitored input / output operations of the plurality of storage objects, (ii) the identified input / output patterns associated with a corresponding storage object in the plurality of storage objects, (iii) the erase score of the identified input / output patterns associated with a corresponding storage object in the plurality of storage objects, and (iv) the determined wear state of each storage device in the set of two or more storage devices in the storage system, wherein the erase score is determined at least in part based on one or more erase counts of the identified input / output patterns; as well as The selected one or more storage objects are moved from the first storage device to the second storage device to perform loss level balancing among the set of two or more storage devices in the storage system.

2. The device of claim 1, wherein the first storage device has a first loss level that is greater than the second loss level of the second storage device.

3. The device of claim 1, wherein a given input / output pattern associated with a given storage object among the plurality of storage objects is identified based on: The size of the given storage object; The ratio of read operations to write operations for the given storage object within the specified time period; and The ratio of sequential input / output operations to random input / output operations involving the given storage object within the specified time period.

4. The device of claim 1, wherein the set of two or more storage devices in the storage system is part of the same storage tier in two or more storage tiers in the storage system.

5. The device of claim 1, wherein the storage system comprises a clustered storage system comprising two or more storage arrays, wherein the first storage device and the second storage device are part of a given storage array of the two or more storage arrays, and wherein the movement of the selected one or more storage objects among the plurality of storage objects improves the wear level balance of the given storage array of the two or more storage arrays.

6. The device of claim 1, wherein the storage system comprises a clustered storage system comprising two or more storage arrays, wherein the first storage device is part of a first storage array of the two or more storage arrays, wherein the second storage device is part of a second storage array of the two or more storage arrays, and wherein the movement of the selected one or more storage objects of the plurality of storage objects improves the balance of loss levels between the first storage array and the second storage array of the two or more storage arrays.

7. The device of claim 1, wherein the first storage device and the second storage device comprise the same type of storage device.

8. The device of claim 7, wherein the same storage device type includes a solid-state drive type.

9. The device of claim 1, wherein the selection step and the movement step are performed in response to identifying that the difference in wear level between the two or more storage devices in the group of the storage system is greater than a specified threshold.

10. The device of claim 9, wherein the determining step, the selecting step, and the moving step are repeated until the difference in wear levels between the two or more storage devices in the group of the storage system is equal to or less than the specified threshold.

11. The device of claim 1, wherein the wear state of a given storage device in the set of two or more storage devices of the storage system is determined based on: The given loss level of the storage device; The given input / output activity level of the storage device; and The capacity of the given storage device is used.

12. The device of claim 11, wherein the wear level of the given storage device is determined based on the cumulative write request count of the given storage device.

13. The device of claim 11, wherein the input / output activity level of the given storage device is determined based on the sum of counts of monitored input / output operations of a subset of the plurality of storage objects stored on the given storage device.

14. The device of claim 1, wherein one or more of the plurality of storage objects are selected based on a storage object relocation unit temperature value associated with each of the subsets of the plurality of storage objects stored on the first storage device, the storage object relocation unit temperature value being based on: The input / output activity level of a corresponding storage object within the subset of the plurality of storage objects stored on the first storage device; and The erase score of the input / output mode associated with a corresponding storage object in the subset of the plurality of storage objects stored on the first storage device, wherein a given erase score for a given input / output mode is determined based on the average erase count per input / output operation of the given input / output mode and the average erase count per input / output operation of all input / output modes.

15. A computer program product comprising a non-transitory processor-readable storage medium storing program code of one or more software programs therein, wherein the program code, when executed by at least one processing means, causes the at least one processing means to perform the following steps: Monitor the input / output operations of multiple storage objects within a specified time period, each of which is stored on one of a set of two or more storage devices in the storage system; Identify input / output patterns associated with corresponding storage objects among the plurality of storage objects, wherein different input / output patterns among the input / output patterns are associated with different levels of wear and tear on the set of two or more storage devices of the storage system; Determine the wear status of each of the two or more storage devices in the group of the storage system; One or more of the plurality of storage objects are selected to move from a first storage device in the set of two or more storage devices in the storage system to a second storage device in the set of two or more storage devices in the storage system, based on (i) the monitored input / output operations of the plurality of storage objects, (ii) the identified input / output patterns associated with a corresponding storage object in the plurality of storage objects, (iii) the erase score of the identified input / output patterns associated with a corresponding storage object in the plurality of storage objects, and (iv) the determined wear state of each storage device in the set of two or more storage devices in the storage system, wherein the erase score is determined at least in part based on one or more erase counts of the identified input / output patterns; as well as The selected one or more storage objects are moved from the first storage device to the second storage device to perform loss level balancing among the set of two or more storage devices in the storage system.

16. The computer program product of claim 15, wherein a given input / output pattern associated with a given storage object among the plurality of storage objects is identified based on: The size of the given storage object; The ratio of read operations to write operations for the given storage object within the specified time period; and The ratio of sequential input / output operations to random input / output operations involving the given storage object within the specified time period.

17. The computer program product of claim 15, wherein the first storage device and the second storage device comprise the same type of storage device.

18. A method for loss leveling among storage devices in a storage system, the method comprising: Monitor the input / output operations of multiple storage objects within a specified time period, each of which is stored on one of a set of two or more storage devices in the storage system; Identify input / output patterns associated with corresponding storage objects among the plurality of storage objects, wherein different input / output patterns among the input / output patterns are associated with different levels of wear and tear on the set of two or more storage devices of the storage system; Determine the wear status of each of the two or more storage devices in the group of the storage system; One or more of the plurality of storage objects are selected to move from a first storage device in the set of two or more storage devices in the storage system to a second storage device in the set of two or more storage devices in the storage system, based on (i) the monitored input / output operations of the plurality of storage objects, (ii) the identified input / output patterns associated with a corresponding storage object in the plurality of storage objects, (iii) the erase score of the identified input / output patterns associated with a corresponding storage object in the plurality of storage objects, and (iv) the determined wear state of each storage device in the set of two or more storage devices in the storage system, wherein the erase score is determined at least in part based on one or more erase counts of the identified input / output patterns; as well as The selected one or more storage objects are moved from the first storage device to the second storage device to perform loss level balancing among the set of two or more storage devices in the storage system; The method is performed by at least one processing device, which includes a processor coupled to a memory.

19. The method of claim 18, wherein a given input / output pattern associated with a given storage object among the plurality of storage objects is identified based on: The size of the given storage object; The ratio of read operations to write operations for the given storage object within the specified time period; and The ratio of sequential input / output operations to random input / output operations involving the given storage object within the specified time period.

20. The method of claim 18, wherein the first storage device and the second storage device comprise the same storage device type.

Citation Information

Patent Citations

  • Data storage system with uneven drive wear reduction

    US11262918B1

  • Solid-state disk (SSD) management

    US20130179631A1

  • Method for Managing Data of Solid State Storage with Data Attributes

    US20140122774A1