Method for adjusting SSD load, storage system, storage access method and product

By adjusting write requests in a multi-SSD architecture, the problems of unfair response and unbalanced load among users are solved, and more efficient memory performance and longer device life is achieved.

CN118244995BActive Publication Date: 2024-12-13SHANDONG YUNHAI GUOCHUANG CLOUD COMPUTING EQUIP IND INNOVATION CENT CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202410666292.6
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2024-05-28
Publication Date
2024-12-13
Estimated Expiration
2044-05-28

AI Technical Summary

Technical Problem

Under a multi-SSD architecture, the competition between memory resources between users leads to unfair responses and unbalanced SSD load, affecting device performance and service life.

Method used

By judging the user's response time and the load status of the SSD, calculating migration metrics, adjusting write requests, migrating from SSDs with high load to SSDs with low load, to achieve load balancing and response fairness.

Benefits of technology

Improves the fairness of users accessing memory, extends the service life of the device, and improves overall memory performance.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN118244995B_ABST
    Figure CN118244995B_ABST
Patent Text Reader

Abstract

The present application relates to the technical field of data storage, and discloses a method for adjusting the SSD load, a storage system, a storage access method and a product. The method is applied to a storage device with a multi-SSD architecture, and includes: judging whether each user is responded to fairly based on the response time of each user accessing the storage device; judging whether the load of each SSD is balanced based on the number of read and write requests carried by each SSD in the storage device, and the maximum read and write throughput of each SSD itself; in the case where each user is not responded to fairly, or, in the case where the load of each SSD is unbalanced, calculating the migration index of the target SSD based on the number of read and write requests of any user to the target SSD, and the maximum read and write throughput of the target SSD; based on the migration index, migrating the write requests carried by the target SSD. The use of this method can ensure the fairness of user calls while improving the overall performance of the storage device.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present application relates to the field of data storage technology, and in particular to a method for adjusting SSD load, a storage system, a storage access method and a product. Background Art

[0002] Compared with hard disk drives, SSDs (Solid State Disks) have advantages such as smaller size, lower energy consumption, vibration resistance, and faster access speed. They have replaced hard disk drives in applications such as personal computers, cloud servers, and enterprise servers. With the advancement of technology, multi-SSD architectures have also been applied to different application scenarios such as cloud services, database centers, and distributed systems to improve overall read and write performance. In a multi-SSD architecture, multiple users can compete for storage resources at the same time.

[0003] When multiple users access a multi-SSD storage architecture at the same time, a user's data read and write requests (IO requests) may occupy too many SSD resources, affecting other users' access to SSD resources, resulting in unfair responses to each user and affecting user experience. In addition, since SSDs wear out during use, if an SSD in the storage receives too many IO requests, it will cause an unbalanced load between SSDs, causing the SSD to wear out too quickly and reduce device performance. How to improve the fairness of user access to storage while ensuring the overall performance of the device is a problem that needs to be solved. Summary of the invention

[0004] In view of this, the present application aims to propose a method for adjusting SSD load, a storage system, a storage access method and a product to improve the fairness of user access to storage while ensuring the overall performance of the device.

[0005] To achieve the above purpose, the technical solution of this application is as follows:

[0006] A first aspect of an embodiment of the present application provides a method for adjusting an SSD load, the method being applied to a memory of a multi-SSD architecture, comprising:

[0007] Based on the response time of each user accessing the storage, judging whether each user is responded to fairly; the storage includes at least two SSDs;

[0008] Based on the number of read and write requests carried by each SSD in the memory and the maximum read and write throughput of each SSD itself, determining whether the load of each SSD is balanced;

[0009] In the case where each user is not responded to fairly, or in the case where the loads of each SSD are unbalanced, the migration index of the target SSD is calculated based on the read and write request amount of any user to the target SSD and the maximum read and write throughput of the target SSD; the target SSD is any SSD in the memory;

[0010] Based on the migration indicator, the write request carried by the target SSD is migrated.

[0011] Optionally, calculating the migration index of the target SSD includes:

[0012] For any user accessing the target SSD, a single impact value of the user on the target SSD is calculated according to the read and write request amount of the user to the target SSD and the maximum read and write throughput of the target SSD;

[0013] Calculate the sum of the single impact values ​​of the user on each SSD as the first overall impact value;

[0014] The migration index of the target SSD is calculated based on the maximum read and write throughput of the target SSD, the single impact value of the user on the target SSD, and the first overall impact value.

[0015] Optionally, based on the migration indicator, migrating the write request carried by the target SSD includes:

[0016] Comparing the migration index of the target SSD with a first threshold and a second threshold, wherein the first threshold is greater than 0 and the second threshold is less than 0;

[0017] When the migration index of the target SSD is greater than the first threshold, migrating a first number of write requests from the target SSD to at least one other SSD;

[0018] When the migration index of the target SSD is less than the second threshold, a first number of write requests are migrated from at least one other SSD to the target SSD.

[0019] Optionally, before migrating the write request carried by the target SSD, the method further includes:

[0020] Determine whether the type of the write request to be migrated is a hot data write request or a cold data write request;

[0021] The first number is determined based on the migration index, the type of the write request to be migrated, the first threshold or the second threshold.

[0022] Optionally, determining the first quantity includes:

[0023] In a case where the type of the write request to be migrated is a request to write hot data, obtaining an update duration of the current write data of the target SSD as a single update duration;

[0024] Obtaining an average of the update durations of the data currently written by each SSD in the memory as the average update duration;

[0025] The first number is calculated based on the migration index, the single update duration, the average update duration, the first threshold, or the second threshold.

[0026] Optionally, determining the first quantity includes:

[0027] When the type of the write request to be migrated is a request to write cold data, obtaining the capacity of the target SSD as a single capacity;

[0028] Get the average value of the capacity of each SSD as the average capacity;

[0029] The first number is calculated based on the migration index, the single capacity, the average capacity, the first threshold, or the second threshold.

[0030] Optionally, judging whether each user is responded to fairly includes:

[0031] For any user, obtain the first response time of the user accessing each SSD individually, and the second response time of the user and other users accessing each SSD simultaneously; calculate the deceleration degree of the user based on the first response time and the second response time of the user;

[0032] Calculate a fair ratio according to the smallest deceleration degree and the largest deceleration degree among the deceleration degrees of each user;

[0033] The fairness ratio is compared with a fairness threshold, and when the fairness ratio is greater than the fairness threshold, it is determined that each user is responded to fairly.

[0034] Optionally, determining whether the loads of the SSDs are balanced includes:

[0035] For any SSD, according to the number of read and write requests of each user to the SSD and the maximum read and write throughput of the SSD, calculate the second overall impact value of the SSD;

[0036] Calculate a balance ratio according to the smallest second overall impact value and the largest second overall impact value among the second overall impact values ​​of each SSD;

[0037] The balance ratio is compared with a balance threshold, and when the balance ratio is greater than the balance threshold, the load balance of each SSD is determined.

[0038] Optionally, determining whether the loads of the SSDs are balanced includes:

[0039] For any SSD, obtain the update duration of the current data written by the SSD as a single update duration;

[0040] Get the average update time of the current data written by each SSD as the average update time;

[0041] Obtaining the capacity of the SSD as a single capacity;

[0042] Get the average value of the capacity of each SSD as the average capacity;

[0043] Calculate a third overall impact value of the SSD according to the number of read and write requests of each user to the SSD, the maximum read and write throughput of the SSD, the single update duration, the average update duration, the single capacity, and the average capacity;

[0044] Calculate a balance ratio according to the smallest third overall impact value and the largest third overall impact value among the third overall impact values ​​of each SSD;

[0045] The balance ratio is compared with a balance threshold, and when the balance ratio is greater than the balance threshold, the load balance of each SSD is determined.

[0046] Optionally, when the migration index of the target SSD is greater than the first threshold, migrating a first number of write requests from the target SSD to at least one other SSD includes:

[0047] Acquire an SSD in the memory whose migration index is less than the second threshold, and select at least one SSD as the SSD to be migrated, starting from the SSD with the smallest migration index;

[0048] Migrate a first number of write requests from the target SSD to the SSD to be migrated.

[0049] Optionally, when the migration index of the target SSD is less than the second threshold, migrating a first number of write requests from at least one other SSD to the target SSD includes:

[0050] Acquire the SSDs in the memory whose migration index is greater than the first threshold, and select at least one SSD as the SSD to be migrated out, starting from the SSD with the largest migration index;

[0051] Migrate a first number of write requests from the to-be-migrated SSD to the target SSD.

[0052] Optionally, the absolute values ​​of the first threshold and the second threshold are equal.

[0053] According to a second aspect of an embodiment of the present application, a storage system is provided, the storage system comprising:

[0054] A server, used to connect at least two user hosts; the server comprises: a CPU and a non-volatile storage medium; the non-volatile storage medium stores a computer program, and when the computer program is executed by the processor, the steps in the method for adjusting the SSD load described in the first aspect of the embodiment of the present application are implemented;

[0055] The memory includes at least two SSDs; wherein any one of the SSDs supports common access by at least two user hosts connected to the server; and the memory is connected to the server via a PCIE bus.

[0056] According to a third aspect of an embodiment of the present application, a storage access method is provided, which is applied to the storage system provided in the second aspect of the embodiment of the present application, including:

[0057] According to a preset cycle, access history data in the previous cycle is obtained; the access history data includes: the number of read and write requests carried by each SSD in the memory, and the response time of each user host connected to the server to access the memory;

[0058] Based on the access history data in the previous cycle, the steps in the method for adjusting the SSD load described in the first aspect of the embodiment of the present application are performed to adjust the number of read and write requests allocated to each SSD;

[0059] In the next cycle, data is accessed to the memory according to the adjusted number of read and write requests allocated to each SSD.

[0060] According to the fourth aspect of the embodiments of the present application, a computer program product is provided, including a computer program. When the computer program is executed by a processor, it implements the steps in the method for adjusting the SSD load as described in the first aspect of the embodiments of the present application, or the steps in the storage access method as described in the third aspect of the embodiments of the present application.

[0061] According to the fifth aspect of the embodiments of the present application, a computer-readable storage medium is provided, on which a computer program is stored. When the computer program is executed by a processor, the steps in the method for adjusting the SSD load as described in the first aspect of the embodiments of the present application, or the steps in the storage access method as described in the third aspect of the embodiments of the present application are implemented.

[0062] The method for adjusting the SSD load provided by the present application is adopted. According to the number of read and write requests assigned to each SSD and the response time of each user accessing the memory, whether the SSD is load balanced and whether the user is responded to fairly is considered. In the case of unbalanced load or the user is not responded to fairly, the write IO requests assigned to each SSD are migrated and adjusted, so that users occupy SSD resources fairly and the load balance between each shared SSD is ensured. The method provided by the present application can improve the overall performance of the memory and extend the service life of the device while ensuring the fairness of user calls. BRIEF DESCRIPTION OF THE DRAWINGS

[0063] In order to more clearly illustrate the technical solutions of the embodiments of the present application, the drawings required for use in the description of the embodiments of the present application will be briefly introduced below. Obviously, the drawings described below are only some embodiments of the present application. For ordinary technicians in this field, other drawings can be obtained based on these drawings without paying any creative labor.

[0064] Figure 1 It is a flowchart of a user accessing data to a memory;

[0065] Figure 2 It is a schematic diagram of the unfair response to users in the current data access process;

[0066] Figure 3 This is a schematic diagram of the SSD load imbalance during the current data access process;

[0067] Figure 4 is a flow chart of a method for adjusting SSD load proposed in one embodiment of the present application;

[0068] Figure 5 is a flowchart of migrating a write request in an embodiment of the present application;

[0069] Figure 6 is a schematic diagram of a storage system proposed in an embodiment of the present application;

[0070] Figure 7 It is a flowchart of a storage access method proposed in one embodiment of the present application. DETAILED DESCRIPTION

[0071] The following will be combined with the drawings in the embodiments of the present application to clearly and completely describe the technical solutions in the embodiments of the present application. Obviously, the described embodiments are part of the embodiments of the present application, not all of the embodiments. Based on the embodiments in the present application, all other embodiments obtained by ordinary technicians in this field without creative work are within the scope of protection of this application.

[0072] It should be understood that the references to "one embodiment" or "an embodiment" throughout the specification mean that the specific features, structures, or characteristics associated with the embodiment are included in at least one embodiment of the present application. Therefore, the references to "in one embodiment" or "in an embodiment" appearing throughout the specification do not necessarily refer to the same embodiment. In addition, these specific features, structures, or characteristics may be combined in any suitable manner in one or more embodiments.

[0073] In the various embodiments of the present application, it should be understood that the size of the serial numbers of the following processes does not mean the order of execution. The execution order of each process should be determined by its function and internal logic, and should not constitute any limitation on the implementation process of the embodiments of the present application.

[0074] Exemplary embodiments will be described in detail herein, examples of which are shown in the accompanying drawings. When the following description refers to the drawings, unless otherwise indicated, the same numbers in different drawings represent the same or similar elements. The embodiments described in the following exemplary embodiments do not represent all embodiments consistent with the present application. Instead, they are merely examples of devices and methods consistent with some aspects as detailed in the present application.

[0075] It should be noted that, in the absence of conflict, the embodiments and features in the embodiments of the present application may be combined with each other.

[0076] In a storage scenario with a multi-SSD architecture, each shared SSD can be accessed by multiple users simultaneously, that is, a read or write request sent by any user may be assigned to multiple SSDs, and any SSD may receive read or write requests from multiple users simultaneously. Figure 1 This is a flowchart of the user accessing data from the memory. Figure 1 As shown in the figure, in the actual application process, multiple hosts (users) connected to the server send read and write commands to the storage of the multi-SSD architecture. The read and write commands sent by the user must pass through two levels of queues before reaching the storage. The read and write commands are first assigned to the software queue, and then further assigned to the hardware queue. The number of software queues is the same as the number of host cores, and the number of hardware queues is related to the number of cores of the solid-state drive. The user host can reasonably allocate read and write requests from the software queue to the appropriate hard queue. In this scenario, it is easy to have problems such as unfair user calls and unbalanced SSD load.

[0077] Since multiple users access each SSD in the storage at the same time, there is an unfair calling problem among users. Figure 2This is a schematic diagram of the unfair response to users in the current data access process. One factor that causes unfair response to SSD access among multiple users is the intensity of read and write requests. The intensity of read and write requests includes: the generation rate of read / write requests, the size of read / write requests, and the arrival time of read / write requests. Inside the SSD, high-intensity read and write requests will affect the response of low-intensity read and write requests. High-intensity read and write requests will occupy a large amount of SSD bandwidth, resulting in a reduction in the SSD bandwidth that can be occupied by low-intensity read and write requests. Low-intensity read and write requests must wait for high-intensity read and write requests to complete before they can be executed. Figure 2 As shown in the figure, assuming that a user's read / write request (read / write request msg1) is a low-intensity read / write request, and another user's read / write request (read / write request msg2) is a high-intensity read / write request, when the two read / write requests access a solid-state drive SSDz at the same time, the read / write request msg2 will interfere with the read / write request msg1, causing msg1 to slow down. If the read / write request is large (for example, 4kb), the interference caused by the high-intensity read / write request to the low-intensity read / write request may be aggravated. If the polling method is used, the SSD controller may divide a read / write request into several page-sized transactions. In this case, the waiting time for the read / write request msg1 will be longer.

[0078] Since a shared SSD is accessed by multiple users through read and write requests at the same time, there is a problem of load imbalance between SSDs. When an SSD receives a large number of read and write requests in a short period of time, it will frequently trigger the SSD to perform garbage collection, which will affect the speed at which the SSD responds to read and write requests. In addition, frequent garbage collection will accelerate device wear and shorten the service life of the SSD. Since the read and write requests assigned to different queues are uneven, there is load imbalance between SSDs, and some SSDs will accelerate wear and reduce the overall performance of the storage. Figure 3 This is a schematic diagram of the SSD load imbalance during the current data access process. Figure 3 As shown in the figure, when the read / write request is allocated from the software queue to the hardware queue, a read / write request (read / write request msg1) issued by a user is unevenly allocated to the two hardware queues, resulting in the corresponding SSD ( Figure 3 The load of SSDy and SSDz in the storage is unbalanced. Due to the unbalanced load of SSDs, the SSDs with high loads need longer execution time, and the speed of processing read and write requests will be reduced, affecting the overall response efficiency of the storage.

[0079] Based on this, how to more effectively manage the collaborative reading and writing between each SSD in the memory of the multi-SSD architecture is a problem that needs to be solved in this application.

[0080] The present application will be described in detail below with reference to the accompanying drawings and in combination with embodiments.

[0081] Figure 4 1 is a flow chart of a method for adjusting SSD load proposed in an embodiment of the present application. The method is applied to a memory of a multi-SSD architecture, such as Figure 4 As shown, the method includes:

[0082] S11: judging whether each user is responded to fairly based on the response time of each user accessing the storage; the storage includes at least two solid-state hard disks;

[0083] S12: judging whether the loads of the solid-state hard disks are balanced based on the number of read and write requests carried by the solid-state hard disks in the memory and the maximum read and write throughput of the solid-state hard disks themselves;

[0084] S13: When each user is not responded to fairly, or when the loads of each solid-state drive are unbalanced, based on the amount of read and write requests of any user to the target solid-state drive and the maximum read and write throughput of the target solid-state drive, the migration index of the target solid-state drive is calculated; the target solid-state drive is any solid-state drive in the memory;

[0085] S14: Based on the migration indicator, migrate the write request carried by the target solid state drive.

[0086] In this embodiment, the memory is a multi-SSD architecture, including at least two SSDs. Before adjusting the load of the SSD in the memory, first determine whether each user is responded to fairly based on the response time of each existing user accessing the memory. At the same time, based on the number of read and write requests carried by each shared SSD in the memory and the maximum read and write throughput of each SSD itself, determine whether the load of each SSD is balanced. In this embodiment, the capacity of the shared SSD in the memory may be inconsistent. For an SSD with a large capacity, its maximum read and write throughput is greater than that of an SSD with a small capacity.

[0087] When all users are responded to fairly and the loads of all SSDs are balanced, there is no need to adjust the write requests currently assigned to each SSD. When users are not responded to fairly or the loads of all SSDs are unbalanced, it is necessary to reduce the number of read and write requests of SSDs with high loads and increase the number of read and write requests of SSDs with low loads. However, since read requests access data already stored in the SSD, read requests cannot be migrated. That is, this embodiment achieves load balancing by migrating the write requests of each SSD.

[0088] When the number of write requests of each SSD needs to be adjusted, the migration index is calculated to determine how to migrate the write requests, so that after migrating the write requests, the loads of each SSD are more balanced and each user is responded to fairly.

[0089] In this embodiment, the user's perspective and the storage device's perspective are considered respectively, the user's response fairness is judged, and the storage is judged for load balancing between shared SSDs, so as to comprehensively determine whether write request migration is required. If write request migration is required, the migration index is calculated in combination with the amount of read and write requests sent by the user and the throughput performance of the target SSD being accessed. That is, the migration index is related to the number of read and write requests sent by the user and the performance of the target SSD itself. Performing write request migration on the target SSD according to the migration index can improve the fairness of responses to each user while making the load of each SSD more balanced, so that each SSD is evenly worn, and the overall read and write performance and service life of the storage are improved.

[0090] As an implementation mode of the present application, judging whether each user is responded to fairly includes:

[0091] For any user, obtain the first response time of the user accessing each SSD individually, and the second response time of the user and other users accessing each SSD simultaneously; calculate the deceleration degree of the user based on the first response time and the second response time of the user;

[0092] Calculate a fair ratio according to the smallest deceleration degree and the largest deceleration degree among the deceleration degrees of each user;

[0093] The fairness ratio is compared with a fairness threshold, and when the fairness ratio is greater than the fairness threshold, it is determined that each user is responded to fairly.

[0094] In one embodiment, whether each user is responded to fairly is determined based on the response time of a user accessing a shared SSD individually and the response time of a user accessing the shared SSD simultaneously with other users.

[0095] In this embodiment, the deceleration equation is defined by the user:

[0096] .

[0097] in, is the deceleration degree of user i, which represents the degree of influence of other users when the user accesses the SSD. represents the response time of user i and other users accessing SSDj at the same time, It represents the response time corresponding to user i accessing SSDj alone, and n is the number of SSDs in the storage.

[0098] After calculating the deceleration degree of each user, the fairness ratio F is calculated according to the maximum deceleration degree and the minimum deceleration degree among the deceleration degrees of each user to determine whether each user is responded to fairly. The expression is as follows:

[0099] .

[0100] Where m is the number of users, MIN is the minimum value, and MAX is the maximum value. The fairness ratio F is between 0 and 1. If the fairness ratio is closer to 1, the fairness between users is higher; if the fairness ratio is closer to 0, the fairness between users is lower. In practical applications, the fairness ratio F cannot reach the ideal state (i.e., 1). In view of this, in this embodiment, a fairness threshold is pre-set, and the fairness ratio is compared with the fairness threshold. Then, when the fairness ratio is greater than the fairness threshold, it is determined that relative fairness is achieved between users.

[0101] It should be clear that the fairness threshold can be customized according to the needs of the actual application, and the fairness threshold can be set in an appropriate range to avoid the fairness threshold being too low, resulting in no improvement in the fairness of responses between users, or the fairness threshold being too high, resulting in frequent write request migration operations and wasting bandwidth resources. In this embodiment, the fairness threshold can be set in the range of [0.7, 0.8].

[0102] As an implementation manner of the present application, determining whether the loads of the SSDs are balanced includes:

[0103] For any SSD, according to the number of read and write requests of each user to the SSD and the maximum read and write throughput of the SSD, calculate the second overall impact value of the SSD;

[0104] Calculate a balance ratio according to the smallest second overall impact value and the largest second overall impact value among the second overall impact values ​​of each SSD;

[0105] The balance ratio is compared with a balance threshold, and when the balance ratio is greater than the balance threshold, the load balance of each SSD is determined.

[0106] In one embodiment, to determine whether the load of each SSD is balanced, it is necessary to consider both the number of IO requests sent by users to the SSD and the maximum read and write throughput of the SSD determined by the performance of the SSD itself. For an SSD, the IO requests allocated to it come from multiple users. Therefore, in this embodiment, when determining whether the load of the SSD is balanced, the overall impact of all users on the SSD is taken into consideration.

[0107] In a multi-SSD architecture, the load on each SSD should be relatively balanced, but in reality, the load on some SSDs is much higher than that on other SSDs. Before determining whether the load on each SSD is balanced, it is necessary to first determine the impact of each user's read and write on the SSD. It can be calculated using the following expression:

[0108] .

[0109] in, is the read throughput of user i in SSDj, is the maximum read throughput that SSDj can sustain, is the write throughput of user i on SSDj, is the maximum write throughput that SSDj can sustain.

[0110] After calculating the throughput impact of a user i on SSDj, we can further determine the sum of the throughput impacts of all users on SSDj, which is the second overall impact value: :

[0111] .

[0112] Where m is the number of users. Based on the throughput impact of all users on each SSD, the balance ratio B1 is calculated to determine whether each SSD is load balanced. The expression is as follows:

[0113] .

[0114] Where n is the number of SSDs in the memory, MIN is the minimum value, and MAX is the maximum value. In this embodiment, for each SSD in the memory, an overall analysis method is adopted to conduct a comprehensive analysis based on the impact of all users on the throughput of the SSD, so as to accurately determine whether the load of each SSD is balanced.

[0115] The calculated balance ratio is between 0 and 1. If the balance ratio is closer to 1, the load between each SSD is more balanced; if the balance ratio is closer to 0, the load balance is worse. In practical applications, the balance ratio cannot reach the ideal state (i.e., 1). In view of this, in this embodiment, a balance threshold is pre-set, and the balance ratio is compared with the balance threshold. Then, when the balance ratio is greater than the balance threshold, it is determined that the load of each SSD is relatively balanced.

[0116] It should be clear that the balancing threshold can be customized according to the needs of the actual application, and the balancing threshold is set in an appropriate range to avoid the balancing threshold being too low, resulting in no improvement in the load imbalance state between the SSDs, or the balancing threshold being too high, resulting in frequent write request migration operations and wasting bandwidth resources. In this embodiment, the balancing threshold can be set in the range of [0.7, 0.8].

[0117] As an implementation manner of the present application, determining whether the loads of the SSDs are balanced includes:

[0118] For any SSD, obtain the update duration of the current data written by the SSD as a single update duration;

[0119] Get the average update time of the current data written by each SSD as the average update time;

[0120] Obtaining the capacity of the SSD as a single capacity;

[0121] Get the average value of the capacity of each SSD as the average capacity;

[0122] Calculate a third overall impact value of the SSD according to the number of read and write requests of each user to the SSD, the maximum read and write throughput of the SSD, the single update duration, the average update duration, the single capacity, and the average capacity;

[0123] Calculate a balance ratio according to the smallest third overall impact value and the largest third overall impact value among the third overall impact values ​​of each SSD;

[0124] The balance ratio is compared with a balance threshold, and when the balance ratio is greater than the balance threshold, the load balance of each SSD is determined.

[0125] In one embodiment, when determining whether the loads of each SSD are balanced, the write time and capacity of the SSD are also taken into consideration. The garbage collection operation performed by the SSD in the memory will also affect the processing efficiency of the SSD, thereby affecting the load balance between the SSDs. Garbage collection is related to the time when the SSD updates data and the capacity of the SSD itself. In this embodiment, when calculating the impact of users on the throughput of the SSD, the data update time and capacity are taken into consideration, and the overall throughput impact of all users on SSDj is calculated, that is, the third overall impact value :

[0126] .

[0127] in, is the update time of the current SSDj processing the write request, is the capacity of SSDj, avgT is the average update time of all SSDs processing write requests, and avgC is the average capacity of all SSDs.

[0128] In this embodiment, based on the overall impact of users on the throughput of the SSD , calculate the balance ratio B2 to determine whether each SSD is load balanced. The expression is as follows:

[0129] .

[0130] Where n is the number of SSDs in the storage, MIN is the minimum value, and MAX is the maximum value.

[0131] In this embodiment, factors affecting load balancing in different dimensions are combined to determine whether the loads of each SSD are balanced. At the same time, the impact of users' read and write requests on the SSD throughput and the impact of factors such as garbage collection and its own capacity on the SSD load are considered, so that a more accurate overall throughput impact can be obtained, further improving the accuracy of determining whether the loads between SSDs, and avoiding invalid write request migration operations caused by inaccurate judgment results.

[0132] As an implementation manner of the present application, calculating the migration index of the target SSD includes:

[0133] For any user accessing the target SSD, a single impact value of the user on the target SSD is calculated according to the read and write request amount of the user to the target SSD and the maximum read and write throughput of the target SSD;

[0134] Calculate the sum of the single impact values ​​of the user on each SSD as the first overall impact value;

[0135] The migration index of the target SSD is calculated based on the maximum read and write throughput of the target SSD, the single impact value of the user on the target SSD, and the first overall impact value.

[0136] In one embodiment, when the user is not responded to fairly or the loads of the SSDs are unbalanced, a migration index is determined based on the user's impact on the throughput of the SSD and the maximum read and write throughput that the SSD can withstand. The migration index is used to determine whether a write request migration in or a write request migration out operation needs to be performed on the target SSD.

[0137] First, calculate the impact of user i on the read and write throughput of target SSDj, that is, the single impact value ; Then, calculate the impact of user i on the read and write throughput of all SSDs, that is, the first overall impact value :

[0138] ; Where n is the number of users.

[0139] Migration index of user i to target SSDj Calculate according to the following expression:

[0140] .

[0141] in, is the maximum read throughput that SSDj can sustain, is the maximum write throughput that SSDj can sustain.

[0142] As an implementation manner of the present application, based on the migration indicator, migrating the write request carried by the target SSD includes:

[0143] Comparing the migration index of the target SSD with a first threshold and a second threshold, wherein the first threshold is greater than 0 and the second threshold is less than 0;

[0144] When the migration index of the target SSD is greater than the first threshold, migrating a first number of write requests from the target SSD to at least one other SSD;

[0145] When the migration index of the target SSD is less than the second threshold, a first number of write requests are migrated from at least one other SSD to the target SSD.

[0146] In this embodiment, a migration threshold is pre-set, and the migration index M is compared with the migration threshold. If the calculated migration index is greater than the migration threshold, it means that the current load of the target SSD is high, and it is necessary to execute a write request migration to the target SSD; if the migration index is less than the migration threshold, it means that the current load of the target SSD is low, and it is necessary to execute a write request migration to the target SSD.

[0147] In one embodiment, the migration threshold may be directly set to 0, and the migration index may be compared with 0. If the migration index of the target SSD is greater than 0, a write request migration is performed on the target SSD; if the migration index is less than 0, a write request migration is performed on the target SSD. However, since the migration index cannot reach the ideal state (i.e., 0), setting the migration threshold to 0 may result in frequent execution of write request migration operations, resulting in a waste of bandwidth resources.

[0148] In one embodiment, a first threshold and a second threshold are set respectively, wherein the first threshold is greater than 0 and the second threshold is less than 0. When the migration index is greater than the first threshold, a write request is migrated out of the target SSD, and when the migration index is less than the second threshold, a write request is migrated in to the target SSD. The first threshold and the second threshold are set correspondingly according to the needs of the actual application, so as to ensure that the load of each SSD is relatively balanced without consuming too much bandwidth resources.

[0149] When the migration index is greater than the first threshold, or when the migration index is less than the second threshold, a first number of write request migrations are performed on the target SSD.

[0150] In one embodiment, the first number may be a fixed number set according to the needs of actual applications. When write request migration is required, a write request migration is performed on the target SSD based on a pre-set fixed number. If after one write request migration, the various SSDs have not reached a relatively balanced load state, a fixed number of write request migrations may be performed on the target SSD again. It is worth noting that when the first number is a fixed number, it is necessary to fine-tune the write requests of each SSD, that is, the first number cannot be set too high to avoid new imbalances caused by too many migrations.

[0151] In this embodiment, the frequency of write request migration is limited by setting the first threshold and the second threshold to reduce the waste of bandwidth resources. On this basis, a preset fixed number is used as the first number for each migration, thereby improving the efficiency of adjusting the SSD load.

[0152] As an implementation manner of the present application, the absolute values ​​of the first threshold and the second threshold are equal.

[0153] In one embodiment, the first threshold and the second threshold are set to be opposite numbers. By setting the first threshold and the second threshold to be equal in absolute value, the migration thresholds followed when performing IO migration in or out of the same SSD can be fair, avoiding an unbalanced number of write requests to migrate in or out of the same SSD during load adjustment, thereby aggravating the degree of load imbalance between SSDs.

[0154] As an implementation manner of the present application, before migrating the write request carried by the target SSD, the method further includes:

[0155] Determine whether the type of the write request to be migrated is a hot data write request or a cold data write request;

[0156] The first number is determined based on the migration index, the type of the write request to be migrated, the first threshold or the second threshold.

[0157] In one embodiment, the first quantity can be obtained by calculation. In this embodiment, the first quantity of write data migration to the target SSD is calculated based on the gap between the current migration index and the first threshold or the second threshold. When calculating the first quantity, it is also necessary to determine the type of write request to be migrated, and calculate the corresponding first quantity based on the different types of write requests. Hot data refers to data with high access frequency and is critical to business and applications. For example, data that users frequently query, data that business operations intensively access, etc. Cold data refers to data with low access frequency, or even data that will not be accessed for a period of time. For example, historical records, backup files, etc. For write hot data requests and write cold data requests, different methods are used to calculate the corresponding first quantity.

[0158] As an implementation manner of the present application, determining the first quantity includes:

[0159] In a case where the type of the write request to be migrated is a request to write hot data, obtaining an update duration of the current write data of the target SSD as a single update duration;

[0160] Obtaining an average of the update durations of the data currently written by each SSD in the memory as the average update duration;

[0161] The first number is calculated based on the migration index, the single update duration, the average update duration, the first threshold, or the second threshold.

[0162] In one embodiment, since hot data is frequently read and written, it is highly correlated with the update time of the SSD. Therefore, the first number of hot data write requests that need to be migrated is determined based on the update time of the SSD processing the write request. The first number of hot data write requests is calculated using the following expression:

[0163] .

[0164] in, is the migration index of the current user i to the target SSDj, is the value that the migration indicator needs to reach after this migration. is the update time of the current SSDj processing write requests, avgT is the average update time of all SSDs processing write requests, and k1 is the number of write hot data requests that need to be migrated in or out of the target SSD in theory.

[0165] Optionally, when the current migration index is greater than 0, It can be set as the first threshold; when the current migration index is less than 0, The calculated k value may be further rounded to obtain the first number of hot data write requests that need to be migrated this time.

[0166] When the first number is a positive number, it indicates that the target SSD needs to be migrated; when the first number is a negative number, it indicates that the target SSD needs to be migrated out.

[0167] As an implementation manner of the present application, determining the first quantity includes:

[0168] When the type of the write request to be migrated is a request to write cold data, obtaining the capacity of the target SSD as a single capacity;

[0169] Get the average value of the capacity of each SSD as the average capacity;

[0170] The first number is calculated based on the migration index, the single capacity, the average capacity, the first threshold, or the second threshold.

[0171] In one embodiment, since cold data is not frequently accessed, it is not highly correlated with the update time of the SSD. However, since cold data also occupies the storage space of the SSD, the first number of cold data write requests that need to be migrated is calculated based on the capacity of the SSD. The first number of cold data write requests is calculated using the following expression:

[0172] .

[0173] in, is the migration index of the current user i to the target SSDj, is the value that the migration indicator needs to reach after this migration. is the capacity of SSDj, avgC is the average capacity of all SSDs, and k2 is the number of write cold data requests that need to be migrated in or out of the target SSD in theory.

[0174] Optionally, when the current migration index is greater than 0, It can be set as the first threshold; when the current migration index is less than 0, The calculated k value may be further rounded to obtain the first number of cold data write requests that need to be migrated this time.

[0175] When the first number is a positive number, it indicates that the target SSD needs to be migrated; when the first number is a negative number, it indicates that the target SSD needs to be migrated out.

[0176] Figure 5 1 is a flowchart of migrating a write request in one embodiment of the present application. Figure 5As shown, when the migration index M is greater than the first threshold, it is further determined whether the type of the write request to be migrated is a hot data write request or a cold data write request. If the type of the write request is a hot data write request, the first number of hot data write requests to be migrated is determined based on the update time of the SSD processing the write request ( Figure 5 Method 1), and perform write request migration; if the type of the write request is a cold data write request, the first number of cold data write requests that need to be migrated is calculated based on the capacity of the SSD ( Figure 5 Method 2) and perform write request migration.

[0177] Similarly, when the migration index M is less than the second threshold, it is further determined whether the type of the write request to be migrated is a hot data write request or a cold data write request. If the type of the write request is a hot data write request, the first quantity is calculated using method one, and write request migration is performed; if the type of the write request is a cold data write request, the first quantity is calculated using method two, and write request migration is performed.

[0178] In this embodiment, after each migration out of a write request to the target SSD, the migration index of the target SSD is calculated again, and when the migration index is not greater than the first threshold, the migration out of the write request is stopped; after each migration in of a write request to the target SSD, the migration index of the target SSD is calculated again, and when the migration index is not less than the second threshold, the migration in of the write request is stopped. That is, when the migration index of the target SSD satisfies the condition of being not greater than the first threshold and not less than the second threshold, the load adjustment of the target SSD is terminated.

[0179] In this embodiment, the number of write requests to be migrated is calculated based on the type of write requests to be migrated and the migration threshold, so as to obtain a more accurate first number, reduce the number of write request migrations required to achieve load balancing for each SSD, and further reduce the consumption of bandwidth resources.

[0180] As an implementation manner of the present application, when the migration index of the target SSD is greater than the first threshold, migrating a first number of write requests from the target SSD to at least one other SSD includes:

[0181] Acquire the SSDs in the memory whose migration index is less than the second threshold, and select at least one SSD as the SSD to be migrated, starting from the SSD with the smallest migration index;

[0182] Migrate a first number of write requests from the target SSD to the SSD to be migrated.

[0183] In one embodiment, when executing write request migration to the target SSD, the write request to be migrated is preferentially migrated to the SSD with the smallest current migration index, so that the SSD with a more serious load imbalance in the memory can reach a load balanced state more quickly. Before migrating the write request, the migration indexes of all SSDs are obtained, and one or more SSDs are selected as the SSDs to be migrated starting from the SSD with the smallest migration index.

[0184] Optionally, the first number of write requests that need to be migrated for each SSD is calculated for each user and SSD, and the number of SSDs to be migrated in required for this migration operation is determined based on the migration index of each SSD and the corresponding first number of write requests that need to be migrated out or migrated in, thereby comprehensively adjusting the load of multiple SSDs in the memory so that each SSD can reach a load-balanced state more quickly.

[0185] As an implementation manner of the present application, when the migration index of the target SSD is less than the second threshold, migrating a first number of write requests from at least one other SSD to the target SSD includes:

[0186] Acquire the SSDs in the memory whose migration index is greater than the first threshold, and select at least one SSD as the SSD to be migrated out, starting from the SSD with the largest migration index;

[0187] Migrate a first number of write requests from the to-be-migrated SSD to the target SSD.

[0188] In one embodiment, when executing write request migration to the target SSD, the write request that needs to be migrated out of the SSD with the largest current migration index is preferentially migrated to the target SSD, so that the SSD with a more serious load imbalance in the memory can reach a load balanced state more quickly. Before migrating the write request, the migration index of all SSDs is obtained, and one or more SSDs are selected as the SSDs to be migrated out starting from the SSD with the largest migration index.

[0189] Optionally, the first number of write requests that need to be migrated for each SSD is calculated for each user and SSD, and the number of SSDs to be migrated out required for this migration operation is determined based on the migration index of each SSD and the corresponding first number of write requests that need to be migrated out or migrated in, thereby making a comprehensive adjustment to the load of multiple SSDs in the memory so that each SSD can reach a load-balanced state more quickly.

[0190] Based on the same inventive concept, an embodiment of the present application provides a storage system, the system comprising:

[0191] A server, used to connect at least two user hosts; the server comprises: a CPU and a non-volatile storage medium; the non-volatile storage medium stores a computer program, and when the computer program is executed by the processor, the steps in the method for adjusting the SSD load provided in the above embodiment are implemented;

[0192] The memory includes at least two SSDs; wherein any one of the SSDs supports common access by at least two user hosts connected to the server; and the memory is connected to the server via a PCIE bus.

[0193] Figure 6 Schematic diagram of a storage system proposed in one embodiment of the present application. Figure 6 As shown, the storage system includes a server and a memory. The server communicates with the memory through the NVME driver, and a PCIE (peripheral component interconnect express, a high-speed serial computer expansion bus standard) bus is connected between the server and the memory. The server includes multiple CPUs (Central Processing Units) for connecting user hosts, volatile storage media, non-volatile storage media and other functional interfaces. The method for adjusting the SSD load provided in the above embodiment is stored in a non-volatile storage medium in the form of program code. The server runs the pre-stored program code and controls the user's access to the memory through the NVME (Non Volatile Memory Host Controller Interface Specification) driver. The memory includes at least two SSDs (composed of multiple master control Cores and flash memory Nands) to form a multi-SSD architecture.

[0194] Based on the same inventive concept, an embodiment of the present application provides a storage access method, which is applied to the storage system provided in the above embodiments. Figure 7 1 is a flow chart of a storage access method proposed in one embodiment of the present application. Figure 7 As shown, the storage access method includes:

[0195] S21: acquiring access history data in the previous cycle according to a preset cycle; the access history data includes: the number of read and write requests carried by each solid-state hard disk in the memory, and the response time of each user host connected to the server to access the memory;

[0196] S22: Based on the access history data in the previous cycle, the steps in the method for adjusting the load of the solid-state drive provided in the above embodiment are executed to adjust the number of read and write requests allocated to each solid-state drive;

[0197] S23: In the next cycle, data is accessed to the memory according to the adjusted number of read and write requests allocated to each solid state drive.

[0198] In this embodiment, the access history data of each SSD in the memory is obtained according to a preset cycle, and based on the access history data obtained in the previous cycle, it is determined whether each user is responded to fairly and whether the loads between each SSD are balanced. In the case that the user is not responded to fairly or the load of the SSD is unbalanced, the method for adjusting the SSD load provided in the above embodiment is used to migrate and adjust the write requests of each SSD in the next cycle, determine the number of read / write requests allocated to each SSD in the next cycle, and then allocate corresponding read / write requests to each SSD according to the determined number in the next cycle, so as to realize the user's data access to the memory.

[0199] In this embodiment, based on the periodically acquired access history data of the multi-SSD architecture memory, the load of each SSD in the memory is dynamically adjusted to ensure that each user is responded to fairly, and the memory maintains a better overall processing performance, improves the overall data access efficiency, and extends the service life of the memory.

[0200] Based on the same inventive concept, an embodiment of the present application provides a device for adjusting SSD load, the device comprising:

[0201] A first judgment module is configured to judge whether each user is responded to fairly based on the response time of each user accessing the storage; the storage includes at least two SSDs;

[0202] A second determination module is configured to determine whether the loads of the SSDs are balanced based on the number of read and write requests carried by the SSDs in the memory and the maximum read and write throughput of the SSDs themselves;

[0203] A calculation module is configured to calculate the migration index of the target SSD based on the read and write request amount of any user to the target SSD and the maximum read and write throughput of the target SSD when each user is not responded to fairly or when the load of each SSD is unbalanced; the target SSD is any SSD in the memory;

[0204] The execution module is configured to migrate the write request carried by the target SSD based on the migration indicator.

[0205] As an implementation manner of the present application, the calculation module is configured to calculate the migration index of the target SSD, specifically including:

[0206] For any user accessing the target SSD, a single impact value of the user on the target SSD is calculated according to the read and write request amount of the user to the target SSD and the maximum read and write throughput of the target SSD;

[0207] Calculate the sum of the single impact values ​​of the user on each SSD as the first overall impact value;

[0208] The migration index of the target SSD is calculated based on the maximum read and write throughput of the target SSD, the single impact value of the user on the target SSD, and the first overall impact value.

[0209] As an implementation manner of the present application, the execution module is configured to migrate the write request carried by the target SSD based on the migration indicator, specifically including:

[0210] Comparing the migration index of the target SSD with a first threshold and a second threshold, wherein the first threshold is greater than 0 and the second threshold is less than 0;

[0211] When the migration index of the target SSD is greater than the first threshold, migrating a first number of write requests from the target SSD to at least one other SSD;

[0212] When the migration index of the target SSD is less than the second threshold, a first number of write requests are migrated from at least one other SSD to the target SSD.

[0213] As an implementation manner of the present application, before migrating the write request carried by the target SSD, the computing module is further configured to perform the following steps:

[0214] Determine whether the type of the write request to be migrated is a hot data write request or a cold data write request;

[0215] The first number is determined based on the migration index, the type of the write request to be migrated, the first threshold or the second threshold.

[0216] As an implementation manner of the present application, the calculation module is configured to determine the first quantity, specifically including:

[0217] In a case where the type of the write request to be migrated is a request to write hot data, obtaining an update duration of the current write data of the target SSD as a single update duration;

[0218] Obtaining an average of the update durations of the data currently written by each SSD in the memory as the average update duration;

[0219] The first number is calculated based on the migration index, the single update duration, the average update duration, the first threshold, or the second threshold.

[0220] As an implementation manner of the present application, the calculation module is configured to determine the first quantity, specifically including:

[0221] When the type of the write request to be migrated is a request to write cold data, obtaining the capacity of the target SSD as a single capacity;

[0222] Get the average value of the capacity of each SSD as the average capacity;

[0223] The first number is calculated based on the migration index, the single capacity, the average capacity, the first threshold, or the second threshold.

[0224] As an implementation manner of the present application, the first determination module is configured to perform the following steps:

[0225] For any user, obtain the first response time of the user accessing each SSD individually, and the second response time of the user and other users accessing each SSD simultaneously; calculate the deceleration degree of the user based on the first response time and the second response time of the user;

[0226] Calculate a fair ratio according to the smallest deceleration degree and the largest deceleration degree among the deceleration degrees of each user;

[0227] The fairness ratio is compared with a fairness threshold, and when the fairness ratio is greater than the fairness threshold, it is determined that each user is responded to fairly.

[0228] As an implementation manner of the present application, the second determination module is configured to determine whether the loads of the SSDs are balanced, specifically including:

[0229] For any SSD, according to the number of read and write requests of each user to the SSD and the maximum read and write throughput of the SSD, calculate the second overall impact value of the SSD;

[0230] Calculate a balance ratio according to the smallest second overall impact value and the largest second overall impact value among the second overall impact values ​​of each SSD;

[0231] The balance ratio is compared with a balance threshold, and when the balance ratio is greater than the balance threshold, the load balance of each SSD is determined.

[0232] As an implementation manner of the present application, the second determination module is configured to determine whether the loads of the SSDs are balanced, specifically including:

[0233] For any SSD, obtain the update duration of the current data written by the SSD as a single update duration;

[0234] Get the average update time of the current data written by each SSD as the average update time;

[0235] Obtaining the capacity of the SSD as a single capacity;

[0236] Get the average value of the capacity of each SSD as the average capacity;

[0237] Calculate a third overall impact value of the SSD according to the number of read and write requests of each user to the SSD, the maximum read and write throughput of the SSD, the single update duration, the average update duration, the single capacity, and the average capacity;

[0238] Calculate a balance ratio according to the smallest third overall impact value and the largest third overall impact value among the third overall impact values ​​of each SSD;

[0239] The balance ratio is compared with a balance threshold, and when the balance ratio is greater than the balance threshold, the load balance of each SSD is determined.

[0240] As an implementation manner of the present application, the execution module is configured to migrate a first number of write requests from the target SSD to at least one other SSD when the migration index of the target SSD is greater than the first threshold, specifically including:

[0241] Acquire an SSD in the memory whose migration index is less than the second threshold, and select at least one SSD as the SSD to be migrated, starting from the SSD with the smallest migration index;

[0242] Migrate a first number of write requests from the target SSD to the SSD to be migrated.

[0243] As an implementation manner of the present application, the execution module is configured to migrate a first number of write requests from at least one other SSD to the target SSD when the migration index of the target SSD is less than the second threshold, specifically including:

[0244] Acquire the SSDs in the memory whose migration index is greater than the first threshold, and select at least one SSD as the SSD to be migrated out, starting from the SSD with the largest migration index;

[0245] Migrate a first number of write requests from the to-be-migrated SSD to the target SSD.

[0246] Based on the same inventive concept, an embodiment of the present application provides a storage access device, the device comprising:

[0247] The monitoring module is configured to obtain access history data in the previous cycle according to a preset cycle; the access history data includes: the number of read and write requests carried by each SSD in the memory, and the response time of each user host connected to the server to access the memory;

[0248] A scheduling module is configured to perform the steps of the method for adjusting the SSD load provided in the above embodiment based on the access history data in the previous cycle, and adjust the number of read and write requests allocated to each SSD;

[0249] The control module is configured to access data to the memory in the next cycle according to the adjusted number of read and write requests allocated to each SSD.

[0250] Based on the same inventive concept, an embodiment of the present application provides a computer program product, including a computer program, which, when executed by a processor, implements the steps of the method for adjusting the SSD load or the steps of the storage access method provided in the above embodiments.

[0251] Based on the same inventive concept, an embodiment of the present application provides a computer-readable storage medium on which a computer program is stored. When the computer program is executed by a processor, the steps of the method for adjusting the SSD load or the steps of the storage access method provided in the above embodiment are implemented.

[0252] Regarding the device in the above embodiment, the specific manner in which each module performs the operation has been described in detail in the embodiment of the relevant method, and will not be elaborated here.

[0253] The above description is only a preferred embodiment of the present application and is not intended to limit the present application. Any modifications, equivalent substitutions, improvements, etc. made within the spirit and principles of the present application should be included in the protection scope of the present application.

Claims

1. A method for adjusting the load of a solid state drive, characterized in that: Memory for multi-SSD architectures, including: Based on the response time of each user accessing the storage, judging whether each user is responded to fairly; the storage includes at least two solid-state hard disks; Based on the number of read and write requests carried by each solid-state hard disk in the memory and the maximum read and write throughput of each solid-state hard disk, determining whether the loads of each solid-state hard disk are balanced; In the case where each user is not responded to fairly, or in the case where the loads of each solid-state drive are unbalanced, the migration index of the target solid-state drive is calculated based on the read and write request amount of any user to the target solid-state drive and the maximum read and write throughput of the target solid-state drive; the target solid-state drive is any solid-state drive in the memory; Migrating the write request carried by the target solid-state drive based on the migration indicator; Among them, judging whether the loads of each solid state drive are balanced includes: For any solid-state drive, obtaining the update duration of the data currently written by the solid-state drive as a single update duration; Get the average update time of the current data written by each solid-state drive as the average update time; Obtaining the capacity of the solid state drive as a single capacity; Obtain an average value of the capacity of each solid-state drive as the average capacity; Calculate a third overall impact value of the solid-state drive according to the number of read and write requests of each user to the solid-state drive, the maximum read and write throughput of the solid-state drive, the single update duration, the average update duration, the single capacity, and the average capacity; Based on the third overall impact value of the solid state hard disk, a balancing ratio is calculated to determine whether the loads of the solid state hard disks are balanced.

2. The method for adjusting the load of a solid state drive according to claim 1, characterized in that: Calculating the migration index of the target solid state drive, including: For any user accessing the target solid state drive, a single impact value of the user on the target solid state drive is calculated according to the read and write request amount of the user on the target solid state drive and the maximum read and write throughput of the target solid state drive; Calculating the sum of the single impact values ​​of the user on each solid-state drive as a first overall impact value; The migration index of the target solid-state drive is calculated based on the maximum read and write throughput of the target solid-state drive, the single impact value of the user on the target solid-state drive, and the first overall impact value.

3. The method for adjusting the load of a solid state drive according to claim 1, characterized in that: Migrating the write request carried by the target solid state drive based on the migration indicator, including: Comparing the migration index of the target solid state drive with a first threshold and a second threshold; the first threshold is greater than 0, and the second threshold is less than 0; When the migration index of the target solid-state hard disk is greater than the first threshold, migrating a first number of write requests from the target solid-state hard disk to at least one other solid-state hard disk; When the migration index of the target solid state drive is less than the second threshold, a first number of write requests are migrated from at least one other solid state drive to the target solid state drive.

4. The method for adjusting the load of a solid state drive according to claim 3, characterized in that: Before migrating the write request carried by the target solid state drive, the method further includes: Determine whether the type of the write request to be migrated is a hot data write request or a cold data write request; The first number is determined based on the migration index, the type of the write request to be migrated, the first threshold or the second threshold.

5. The method for adjusting the load of a solid state drive according to claim 4, characterized in that: Determining the first quantity includes: In a case where the type of the write request to be migrated is a request to write hot data, obtaining an update duration of the current write data of the target solid-state drive as a single update duration; Obtaining an average of the update durations of the data currently written by each solid-state hard disk in the memory as the average update duration; The first number is calculated based on the migration index, the single update duration, the average update duration, the first threshold, or the second threshold.

6. The method for adjusting the load of a solid state drive according to claim 4, characterized in that: Determining the first quantity includes: When the type of the write request to be migrated is a request to write cold data, obtaining the capacity of the target solid-state drive as a single capacity; Obtain an average value of the capacity of each solid-state drive as the average capacity; The first number is calculated based on the migration index, the single capacity, the average capacity, the first threshold, or the second threshold.

7. The method for adjusting the load of a solid state drive according to claim 1, characterized in that: Determine whether each user is responded to fairly, including: For any user, obtain the first response time of the user accessing each solid-state hard disk individually, and the second response time of the user and other users accessing each solid-state hard disk simultaneously; calculate the deceleration degree of the user based on the first response time and the second response time of the user; Calculate a fair ratio according to the smallest deceleration degree and the largest deceleration degree among the deceleration degrees of each user; The fairness ratio is compared with a fairness threshold, and when the fairness ratio is greater than the fairness threshold, it is determined that each user is responded to fairly.

8. The method for adjusting the load of a solid state drive according to claim 1, characterized in that: Determining whether the loads of each SSD are balanced also includes: For any solid state drive, a second overall impact value of the solid state drive is calculated according to the number of read and write requests of each user to the solid state drive and the maximum read and write throughput of the solid state drive; Calculating a balance ratio according to the smallest second overall impact value and the largest second overall impact value among the second overall impact values ​​of the solid state drives; The balance ratio is compared with a balance threshold, and when the balance ratio is greater than the balance threshold, the load balance of each solid state drive is determined.

9. The method for adjusting the load of a solid state drive according to claim 1, characterized in that: Calculating a balance ratio based on the third overall impact value of the solid state drive to determine whether each SSD is load balanced includes: Calculating a balance ratio according to the smallest third overall impact value and the largest third overall impact value among the third overall impact values ​​of each solid state drive; The balance ratio is compared with a balance threshold, and when the balance ratio is greater than the balance threshold, the load balance of each solid state drive is determined.

10. The method for adjusting the load of a solid state drive according to claim 3, characterized in that: When the migration index of the target solid state drive is greater than the first threshold, migrating a first number of write requests from the target solid state drive to at least one other solid state drive includes: Acquire solid state drives in the memory whose migration index is less than the second threshold, and select at least one solid state drive as the solid state drive to be migrated, starting from the solid state drive with the smallest migration index; Migrate a first number of write requests from the target solid state drive to the solid state drive to be migrated.

11. The method for adjusting the load of a solid state drive according to claim 3, characterized in that: When the migration index of the target solid state drive is less than the second threshold, migrating a first number of write requests from at least one other solid state drive to the target solid state drive comprises: Acquire solid state drives in the memory whose migration index is greater than the first threshold, and select at least one solid state drive as the solid state drive to be migrated out, starting from the solid state drive with the largest migration index; Migrate a first number of write requests from the to-be-migrated solid-state drive to the target solid-state drive.

12. The method for adjusting the load of a solid state drive according to claim 3, characterized in that: The absolute values ​​of the first threshold and the second threshold are equal.

13. A storage system, characterized in that: include: A server, used to connect at least two user hosts; the server comprises: a central processing unit and a non-volatile storage medium; the non-volatile storage medium stores a computer program, and when the computer program is executed by the processor, the steps in any one of the methods of claims 1 to 12 are implemented; The memory includes at least two solid-state hard disks; wherein any solid-state hard disk supports common access by at least two user hosts connected to the server; and the memory is connected to the server via a PCIE bus.

14. A storage access method, characterized in that: The storage system as claimed in claim 13 comprises: According to a preset cycle, access history data in the previous cycle is obtained; the access history data includes: the number of read and write requests carried by each solid-state hard disk in the memory, and the response time of each user host connected to the server to access the memory; Based on the access history data in the previous cycle, executing the steps in the method for adjusting the load of the solid-state hard disk according to any one of claims 1 to 12, and adjusting the number of read and write requests allocated to each solid-state hard disk; In the next cycle, data is accessed to the memory according to the adjusted number of read and write requests allocated to each solid state drive.

15. A computer program product comprising a computer program, characterized in that When the computer program is executed by a processor, the steps of the method of any one of claims 1 to 12 or the steps of the method of claim 14 are implemented.

16. A computer-readable storage medium having a computer program stored thereon, characterized in that: When the computer program is executed by a processor, the steps in the method of any one of claims 1 to 12 or the steps in the method of claim 14 are implemented.