Method, apparatus and computer program product for creating stripes in a storage system

By determining the balanced indicators and influencing factors of the storage device in the storage system, and selecting storage devices with lower balanced indicators to create strips, the problem of load imbalance during strip creation in the storage system is solved, and the overall storage system is realized Performance and reliability.

CN114115698BActive Publication Date: 2025-02-21EMC IP HLDG CO LLC
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202010878372.X
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2020-08-27
Publication Date
2025-02-21
Estimated Expiration
2040-08-27

AI Technical Summary

Technical Problem

When creating stripes in a storage system, how to ensure load balancing of individual storage devices, especially when different storage devices have different sizes and attributes.

Method used

Stripes are created by determining the equalization metrics and impact factors in multiple storage devices. The equalization metric represents the relationship between the state distribution of a set of stripes that have been allocated for use in the storage device and the state distribution of a set of stripes that have been allocated for use in the multiple storage devices. The impact factor adjusts the equalization metric based on the properties of the storage device, such as storage capacity and data type.

Benefits of technology

Load balancing is achieved when creating stripes in the storage system, ensuring the overall performance and reliability of the storage system, and avoiding excessive loading and access bottlenecks of some storage devices.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN114115698B_ABST
    Figure CN114115698B_ABST
Patent Text Reader

Abstract

The present disclosure relates to a method, device and computer program product for creating stripes in a storage system. In one method, a balance index of a storage device among multiple storage devices in a storage system is determined. Here, the balance index represents the relationship between the state distribution of a group of stripes that have been allocated for use in the storage device and the state distribution of a group of stripes that have been allocated for use in multiple storage devices. According to the properties of the storage devices among the multiple storage devices, an influencing factor of the balance index for the storage devices in the multiple storage devices is determined. Based on the determined balance index and influencing factor, a storage device is selected from the multiple storage devices for creating a stripe. A block in the selected storage device is added to the stripe. Corresponding devices and computer program products are provided. The blocks in the stripe can be distributed as evenly as possible among the multiple storage devices in the storage system, thereby improving the performance of the storage system.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] Implementations of the present disclosure relate to storage management, and more particularly, to methods, devices, and computer program products for creating stripes in a storage system. Background Art

[0002] With the development of data storage technology, various data storage devices have been able to provide users with higher and higher data storage capabilities, and the data access speed has also been greatly improved. While improving data storage capabilities, users have also put forward higher and higher requirements for data reliability and storage system response time. At present, a variety of data storage systems based on Redundant Array of Independent Disks (RAID) have been developed to improve data reliability. When one or more disks in a storage system fail, the data on the failed disk can be rebuilt from the data on other normally operating disks.

[0003] Currently, a mapped redundant array of independent disks (Mapped RAID) has been developed. In the mapped RAID, a disk is a logical concept and can include multiple extents. The multiple extents included in a logical disk can be distributed on different physical storage devices in a resource pool. For multiple blocks in a stripe of a mapped RAID, the multiple blocks should be distributed on different physical storage devices. This allows a reconstruction operation to be performed to recover data from the physical storage devices where other blocks are located when a physical storage device where one of the multiple blocks is located fails. It will be understood that the storage devices here can have the same or different sizes. At this time, when selecting blocks from multiple storage devices for creating stripes, how to ensure load balancing of each storage device becomes a technical problem. Summary of the invention

[0004] Therefore, it is expected to develop and implement a technical solution for managing stripes in a storage system in a more efficient manner. It is expected that the technical solution can be compatible with existing storage systems and manage stripes in the storage system in a more efficient manner by modifying various configurations of the existing storage system.

[0005] According to a first aspect of the present disclosure, a method for creating stripes in a storage system is provided. The storage system includes multiple storage devices, and in the method, a balance index of a storage device among the multiple storage devices is determined. Here, the balance index represents the relationship between the state distribution of a group of stripes that have been allocated for use in the storage device and the state distribution of a group of stripes that have been allocated for use in the multiple storage devices. Based on the properties of the storage devices among the multiple storage devices, an influencing factor of the balance index for the storage devices among the multiple storage devices is determined. Based on the determined balance index and influencing factor, a storage device is selected from the multiple storage devices for creating a stripe. A block in the selected storage device is added to the stripe.

[0006] According to a second aspect of the present disclosure, an electronic device is provided, comprising: at least one processor; and a memory coupled to the at least one processor, the memory having instructions stored therein, which, when executed by the at least one processor, cause the device to execute a method according to the first aspect of the present disclosure.

[0007] According to a third aspect of the present disclosure, there is provided a computer program product, which is tangibly stored on a non-transitory computer-readable medium and comprises machine-executable instructions for executing the method according to the first aspect of the present disclosure. BRIEF DESCRIPTION OF THE DRAWINGS

[0008] The features, advantages and other aspects of various implementations of the present disclosure will become more apparent with reference to the following detailed description in conjunction with the accompanying drawings, which illustrate several implementations of the present disclosure in an exemplary and non-limiting manner. In the accompanying drawings:

[0009] Figure 1A and 1B Schematically illustrating a block diagram of a storage system in which implementations of the present disclosure may be implemented;

[0010] Figure 2 A block diagram schematically illustrates an exemplary environment in which implementations of the present disclosure may be implemented;

[0011] Figure 3 Schematically shows Figure 2 A diagram of the storage resource pool in ;

[0012] Figure 4 A block diagram schematically illustrates a process for creating a stripe in a storage system according to an implementation of the present disclosure;

[0013] Figure 5 A block diagram schematically illustrates a method for creating stripes in a storage system according to an implementation of the present disclosure;

[0014] Figure 6 A block diagram schematically illustrates a process of determining a correlation between two storage devices according to an implementation of the present disclosure;

[0015] Fig. 7A A block diagram schematically illustrates a process of selecting a first block for creating a stripe according to an implementation of the present disclosure;

[0016] Figures 7B to 7E Schematically showing a block diagram of a process of selecting other blocks for creating a stripe according to an implementation of the present disclosure;

[0017] Figure 8 A block diagram schematically shows a stripe created according to an implementation of the present disclosure;

[0018] Fig. 9 A block diagram schematically showing changes in the score of a storage system after creating each stripe according to an implementation of the present disclosure; and

[0019] Fig.10 A block diagram schematically shows a device for creating a stripe in a storage system according to an exemplary implementation of the present disclosure. DETAILED DESCRIPTION

[0020] The preferred implementations of the present disclosure will be described in more detail below with reference to the accompanying drawings. Although the preferred implementations of the present disclosure are shown in the accompanying drawings, it should be understood that the present disclosure can be implemented in various forms and should not be limited by the implementations set forth herein. On the contrary, these implementations are provided to make the present disclosure more thorough and complete, and to fully convey the scope of the present disclosure to those skilled in the art.

[0021] As used herein, the term "including" and its variations mean open inclusion, i.e., "including but not limited to". Unless otherwise stated, the term "or" means "and / or". The term "based on" means "based at least in part on". The terms "an example implementation" and "an implementation" mean "at least one example implementation". The term "another implementation" means "at least one additional implementation". The terms "first", "second", etc. may refer to different or the same objects. Other explicit and implicit definitions may also be included below.

[0022] In the context of the present disclosure, the storage system may be a RAID-based storage system. A RAID-based storage system may combine multiple storage devices into a disk array. By providing redundant storage devices, the reliability of the entire disk group may be greatly improved over a single storage device. RAID may provide various advantages over a single storage device, such as enhanced data integrity, enhanced fault tolerance, increased throughput or capacity, and the like. There are multiple RAID standards, such as RAID-1, RAID-2, RAID-3, RAID-4, RAID-5, RAID-6, RAID-10, RAID-50, and the like.

[0023] Figure 1A A schematic diagram of a storage system 100A in which the method of the present disclosure can be implemented is schematically shown. Figure 1A In the storage system shown, a RAID-5 (4D+1P, where 4D means that the storage system includes four storage devices for storing data, and 1P means that the storage system includes one storage device for storing P parity) array including five independent storage devices (110, 112, 114, 116, and 118) is used as an example to illustrate the working principle of RAID. It should be noted that although Figure 1A Five storage devices are schematically shown in FIG. 1 . In other implementations, more or fewer storage devices may be included depending on the level of the RAID. Figure 1A , 126 are shown. In other examples, the RAID system may include a different number of stripes.

[0024] In RAID, a stripe can span multiple physical storage devices (e.g., stripe 120 spans storage devices 110, 112, 114, 116, and 118). A stripe can be simply understood as a storage area in multiple storage devices that satisfies a certain address range. The data stored in stripe 120 includes multiple parts: data block D00 stored on storage device 110, data block D01 stored on storage device 112, data block D02 stored on storage device 114, data block D03 stored on storage device 116, and data block P0 stored on storage device 118. In this example, data blocks D00, D01, D02, and D03 are stored data, and data block P0 is the P check of the stored data.

[0025] The manner of storing data in the other stripes 122 and 124 is also similar to the stripe 120, except that the checksums for the other data blocks may be stored on a storage device different from the storage device 118. In this way, when a storage device among the plurality of storage devices 110, 112, 114, 116, and 118 fails, the data in the failed device may be recovered from other normal storage devices.

[0026] Figure 1B A schematic diagram 100B schematically shows a reconstruction process of a storage system 110A. Figure 1B As shown, when a storage device (e.g., the storage device 116 shown in shadow) fails, data can be recovered from the remaining normally operating multiple storage devices 110, 112, 114, and 118. At this time, a new backup storage device 118B can be added to the RAID to replace the storage device 118, so that the recovered data can be written to 118B and the system can be rebuilt.

[0027] It should be noted that although in the above reference Figure 1A and Figure 1B A storage system of RAID-5 including 5 storage devices (4 of which are used to store data and 1 storage device to store parity) is described. According to the definition of other RAID levels, there may also be storage systems including other numbers of storage devices. For example, based on the definition of RAID-6, two storage devices may be used to store parity P and Q respectively. For another example, based on the definition of triple-parity RAID, three storage devices may be used to store parity P, Q, and R respectively.

[0028] With the development of distributed storage technology, Figure 1A and 1B The storage devices 110, 112, 114, 116 and 118 in the storage system shown are no longer limited to physical storage devices, but can be virtual storage devices. For example, each block on the storage device 110 can come from different physical storage devices (hereinafter referred to as storage devices) in the resource pool. Figure 2 Schematically shows a block diagram of an exemplary environment in which the method of the present disclosure can be implemented. Figure 2 As shown, the storage resource pool 270 may include multiple physical storage devices 210, 211, 212, 213, 214, 215, 216, and 217. At this time, the storage space in the multiple storage devices can be allocated to the storage systems 290, ..., 292 of multiple users. At this time, the storage systems 290, ..., 292 of the users can access the storage space in each storage device in the storage resource pool 270 via the network 280. It will be understood that although Figure 2The case where the storage resource pool 270 includes 8 storage devices is only schematically shown. According to an exemplary implementation of the present disclosure, the storage resource pool 270 may also include more or fewer storage devices.

[0029] Figure 3 The schematic diagram shows Figure 2 2 is a diagram of more information about the storage resource pool 270 shown. The resource pool 270 may include multiple storage devices 210 to 217. Each storage device may include multiple blocks, wherein legend 320 represents a free block, legend 322 represents a block for RAID stripe 1, and legend 324 represents a block for RAID stripe 2. At this time, blocks D11, D22, D33, and D44 for RAID stripe 1 are respectively used to store data blocks of the stripe, and block D75 is used to store data verification. Blocks D01, D12, D23, and D34 for RAID stripe 2 are respectively used to store data blocks of the stripe, and block D45 is used to store data verification.

[0030] like Figure 3 As shown in , address mapping 330 shows the association between stripes and addresses of blocks in the stripes. For example, RAID stripe 1 may include 5 blocks: D11, D22, D33, D44, and D75, which are located in storage devices 211, 212, 213, 214, and 217, respectively. Figure 3 As shown, block D11 is the first block in storage device 211, and block D22 is the second block in storage device 212. Figure 3 As shown, there may also be a reserved free portion 310 in each storage device, so that when a storage device in the resource pool fails, blocks in the free portion 310 in each storage device can be selected to rebuild each block in the failed storage device.

[0031] It should be noted that Figure 3 Only the 4D+1P RAID-5 storage system is used as an example to illustrate how the blocks in each stripe are distributed in multiple storage systems in the resource pool. When other RAID levels are used, those skilled in the art can implement specific details based on the above principles. For example, in a 6D+1P+1Q RAID-6 storage system, the 8 blocks in each stripe can be distributed on multiple storage devices.

[0032] Currently, a technical solution for creating stripes according to the workload of the storage device has been proposed. It will be understood that multiple storage devices in a storage system may have different properties. The existing technical solution fails to consider the differences between the properties of each storage device, and thus cannot effectively ensure the load balance of the storage system.

[0033] In order to at least partially solve the above problems, according to an exemplary implementation of the present disclosure, a technical solution for creating stripes based on the balance index and attributes of a storage device is proposed. Specifically, the balance index represents the relationship between the state distribution of a group of stripes involved in a storage device and the state distribution of a group of stripes involved in multiple storage devices. As the storage system runs, the workloads of multiple storage devices will differ, which will cause large differences in the balance indexes of the various storage devices. Uneven balance indexes may cause the utilization rate and read and write volume of some storage devices to be much higher than other storage devices and cause access bottlenecks. This will greatly affect the operating efficiency of the storage system.

[0034] For the convenience of description, the following will only take a storage system including a 4D+1P RAID stripe as an example to describe more details of the exemplary implementation of the present disclosure. Figure 4 A block diagram 400 schematically illustrates a process for creating stripes in a storage system according to an implementation of the present disclosure. Figure 4 As shown, the resource pool 270 of the storage system may include multiple storage devices 210 to 217. The balance index 420 to 427 of each storage device in the multiple storage devices may be determined respectively. Further, the impact factor 410 to 417 of each storage device may be determined respectively according to the attribute of each storage device.

[0035] In the case where the balance index and the impact factor of each storage device have been determined, the storage device 430 can be selected from the plurality of storage devices 210 to 217 based on the balance index and the impact factor. Then, a free block 440 can be selected from the storage device 430 to be used for creating the stripe 450. The block 440 can be used as the first block and added to the stripe 450. Figure 5 More details of exemplary implementations according to the present disclosure are described.

[0036] Figure 5 A block diagram of a method 500 for creating stripes in a storage system according to an implementation of the present disclosure is schematically shown. At block 510, a balance index of a storage device in a plurality of storage devices is determined. Here, the balance index represents a relationship between a state distribution of a group of stripes that have been allocated for use in a storage device and a state distribution of a group of stripes that have been allocated for use in a plurality of storage devices. According to an exemplary implementation of the present disclosure, the method 500 may be executed when a request to create a stripe in a storage system is received.

[0037] The RAID stripe of 4D+1P includes 5 blocks, and the data in the 5 blocks are accessed in association. This results in an increase in the access volume of the 5 storage devices, each including 5 blocks. In general, for any two storage devices, the more stripes the two storage devices serve together, the greater the possibility that the two storage devices are accessed simultaneously, and the higher the workload of the two storage devices. Therefore, it should be avoided as much as possible that two storage devices serve too many stripes at the same time.

[0038] According to an exemplary implementation of the present disclosure, the balancing index of the storage device can be determined based on the correlation of the storage device. In the context of the present disclosure, M is used to represent the number of storage devices in the storage system, and N is used to represent the width of the stripe. Assuming that the storage system includes 8 storage devices 210 to 217, then M=8. When a 4D+1P RAID is adopted, N=4+1=5. In the following, the concept of the correlation between two storage devices is first introduced. For the i-th storage device and the j-th storage device (i≠j) among multiple storage devices, the correlation between the two storage devices can be expressed as γ Disk i,Disk j According to an exemplary implementation of the present disclosure, the relevance of the storage device itself can be set to 0, that is, γ Disk i,Disk i =0.

[0039] It will be understood that in the initial stage of the operation of the storage system, the storage system does not include any stripes, and at this time, 5 blocks in any 5 storage devices can be selected to create stripes. After the storage system has been running for a period of time, the storage system may include a group of stripes that have been created. At this time, the number of stripes in the group of stripes that simultaneously involve two specific storage devices can be determined, and the correlation between the two specific storage devices can be set based on the determined number. Specifically, see Figure 6 Describe how to determine the correlation γ between the i-th storage device and the j-th storage device Disk i,Disk j .

[0040] Figure 6 A block diagram 600 schematically illustrates a process of determining a correlation between two storage devices according to an implementation of the present disclosure. Figure 6 As shown, the storage system already includes three stripes 610, 620 and 630. The correlation γ can be determined based on the number of stripes that are commonly involved in the i-th storage device and the j-th storage device. Disk i,Disk j If one wishes to determine the correlation between storage device 210 and storage device 211 (i.e., i=0, j=1), it can be found that only stripe 610 uses blocks in both storage device 210 and storage device 211, and thus γ Disk 0,Disk 1 =1.

[0041] For another example, if it is desired to determine the correlation between storage device 211 and storage device 212 (i.e., i=1, j=2), it can be found that stripe 610 uses blocks in both storage device 210 and storage device 211, and stripe 620 also uses blocks in both storage device 210 and storage device 211, so γ Disk 1,Disk 2 =2. Similarly, the correlation between any two storage devices in the plurality of storage devices can be determined. It will be appreciated that the mapping relationship between the stripe and the blocks in the stripe can be conveniently obtained from the address map 330 of the storage system. Thus, the correlation between any two storage devices can be determined in a simple and effective manner using the exemplary implementation of the present disclosure.

[0042] According to an exemplary implementation of the present disclosure, the device relevance of a specific storage device among multiple storage devices can be determined based on the relevance between two storage devices. Specifically, the relevance between the specific storage device and each other storage device other than the specific storage device can be determined respectively. Further, the device relevance of the specific storage device can be determined based on the determined relevance.

[0043] According to an exemplary implementation of the present disclosure, the device relevance can be set to be proportional to the relevance between the storage device and each other storage device. For example, the sum of multiple relevances can be obtained, and the device relevance is determined based on the summation operation. Using the exemplary implementation of the present disclosure, the device relevance of a specific storage device can be determined based on the relevance between the specific storage device and other storage devices based on simple mathematical operations.

[0044] Assuming that it is desired to determine the device relevance of the i-th storage device, it can be based on the above reference Figure 6 According to the method described above, the correlation between the i-th storage device and the j-th storage device (0≤j≤M-1, and i≠j) is determined. According to the exemplary implementation of the present disclosure, the device correlation γ of the i-th storage device can be determined based on the following formula 1: Disk i :

[0045]

[0046] where γ Disk i , represents the device relevance of the i-th storage device, γ Disk i,Disk j represents the correlation between the i-th storage device and the j-th storage device, and M represents the number of storage devices in the resource pool.

[0047] Using the exemplary implementation of the present disclosure, for the i-th storage device, the device relevance γ of the device is Disk iRepresents the sum of the correlations between the i-th storage device and the other M-1 storage devices. At this time, the device correlation can accurately measure the correlation between the i-th storage device and other storage devices, and the balancing index of the storage device can be determined based on Formula 1. By selecting a storage device for creating a stripe based on the device correlation, a storage device that helps achieve load balancing can be accurately selected based on the workload of each storage device.

[0048] It will be understood that the above formula 1 only schematically illustrates a specific example for determining device relevance. According to the exemplary implementation of the present disclosure, other formulas may also be used to determine device relevance. For example, the device relevance may be determined based on the product of multiple relevances.

[0049] According to an exemplary implementation of the present disclosure, the device correlations of the plurality of storage devices may be determined based on the above-described formula 1, and the balancing index of the storage device may be determined based on the device correlation of the storage device and the device correlations of the plurality of storage devices. For example, the balancing index C of the i-th storage device may be determined based on the following formula 2: Disk i :

[0050]

[0051] Among them C Disk i represents the balance index of the i-th storage device, γ Disk i represents the device affinity of the i-th storage device, and M represents the number of storage devices in the resource pool. Using the exemplary implementation of the present disclosure, the numerator part γ Disk i It can represent the status distribution of a group of stripes involved in the i-th storage device. The denominator It can represent the status distribution of all stripes involved in all storage devices in the storage system, so the ratio of the two can accurately reflect the balance degree of the i-th storage device.

[0052] The above has described how to determine the device relevance γ of the i-th storage device Disk i It will be understood that each storage device may have different attributes, for example, multiple storage devices may have different sizes, one or some storage devices may include stripes for storing system data, and one or some storage devices may include stripes for storing user data. According to an exemplary implementation of the present disclosure, an impact factor may be set for each storage device based on the above different attributes to reflect the impact of different attributes on the balance index.

[0053] According to an exemplary implementation of the present disclosure, the attributes of the storage device may include the storage capacity of the storage device. Assuming that the storage system includes two storage devices of 400GB and 800GB, without distinguishing the storage capacity, the storage resources in the large-capacity storage device cannot be fully utilized. For example, it may happen that the 400GB storage device is already facing exhaustion, while only about half of the 800GB storage device is used. According to the exemplary implementation of the present disclosure, the storage capacity of each storage device can be normalized to determine the impact factor.

[0054] According to an exemplary implementation of the present disclosure, the storage capacity of other storage devices in a plurality of storage devices may be determined. Here, the other storage devices may be, for example, a storage device with the largest capacity, a storage device with the smallest capacity, or any storage device. The capacity of the storage device may be used as a basic unit for normalization. For example, the maximum capacity of 800GB may be used as a basic unit. Assuming that the storage capacities of storage devices 210 and 217 are 400GB and 800GB, respectively, the impact factors of the storage devices 210 and 217 may be set to 400 / 800=0.5 and 800 / 800=1.

[0055] The above has described how to determine the balancing index and influencing factor of the i-th storage device. Figure 5 At block 530, based on the determined balancing index and the impact factor, a storage device is selected from the plurality of storage devices for creating a stripe. The balancing index may be updated using the impact factor first. Continuing with the above example, the balancing index may be set to be inversely proportional to the impact factor. Assuming that the balancing indexes of the storage device 210 and the storage device 217 are both value X, the balancing indexes updated based on the impact factor may be expressed as 2X and X, respectively. This means that when the balancing indexes of the storage devices are the same, the smaller the capacity of the storage device, the more severe the balancing index.

[0056] According to an exemplary implementation of the present disclosure, if the minimum capacity of 400 GB is used as the basic unit, the impact factors of the storage devices 210 and 217 can be set to 400 / 400=1 and 800 / 400=2. At this time, assuming that the balance indexes of the storage device 210 and the storage device 217 are both value X, the balance indexes updated based on the impact factors can be expressed as X and 0.5X respectively.

[0057] According to an exemplary implementation of the present disclosure, a storage device with a lower balance index can be selected from multiple storage devices. Assuming that the balance index of the i-th storage device among the multiple storage devices is less than the balance index of the j-th storage device among the multiple storage devices, the i-th storage device can be selected.

[0058] By using the exemplary implementation of the present disclosure, the storage device with the lowest balance index can be preferentially selected, so that the created stripe can make full use of the storage device with better working status in the resource pool. According to the exemplary implementation of the present disclosure, the balance index of each storage device can be compared, and the block in the storage device with the smallest balance index can be selected as the first block in the stripe. In this way, the stripe can be created by making full use of the blocks in the storage device with the lowest balance index.

[0059] Continue to see Figure 5 , at box 540, a block in the selected storage device is added to the stripe. Assuming that the i-th storage device has the smallest device correlation, a free block can be selected from the i-th storage device and added to the stripe. Continuing with the above example, assuming that the 0-th storage device has the smallest balance index, the free block in the 0-th storage device can be selected to be added to the stripe. At this point, the first block in the stripe has been selected. Using the exemplary implementation of the present disclosure, by selecting a block in a storage device with the smallest balance index to create a stripe, it can be ensured that the first block in the stripe is located in a storage device with better performance at present, thereby helping to ensure the access performance of the entire stripe. In this way, it can be ensured that the first block in the stripe is selected in a simple and effective manner. Even if other technical solutions are used to select the remaining blocks in the stripe later, it can be ensured that the first block is located in a storage device with better performance, and a better access speed can be provided later.

[0060] The above has described the case where the attribute is storage capacity. According to the exemplary implementation of the present disclosure, the attribute of the storage device may include the type of data stored in the storage device. The type may include at least one of the following: user data type and system data type. Generally speaking, the storage device can store both data of the user data type and data of the system data type. Generally speaking, the access to the system data type is more frequent and requires a higher access speed. At this time, the influence of the data of the system data type should be considered.

[0061] According to an exemplary implementation of the present disclosure, if it is determined that data of a system data type is stored in a storage device, the impact factor can be amplified. Using the exemplary implementation of the present disclosure, the impact of the read and write operations of the system data on the balance index of the storage device can be considered. On the other hand, by amplifying the impact factor, the updated balance index can reflect the impact of the system data. When other conditions of multiple storage devices are the same, blocks in storage devices that do not include system data can be preferentially used to create stripes. In this way, interference with the read and write operations of the system data can be reduced, and the performance of the created stripes can be ensured.

[0062] According to an exemplary implementation of the present disclosure, the balancing index C of the i-th storage device can be determined based on the following formula 3: Disk i :

[0063]

[0064] Among them C Disk i represents the balance index of the i-th storage device, γ Disk i represents the device affinity of the i-th storage device, and M represents the number of storage devices in the resource pool. Using the exemplary implementation of the present disclosure, λ in the numerator γ,Disk i represents the impact factor of the relevance for the i-th storage device, γ Disk i It can represent the status distribution of a group of stripes involved in the i-th storage device. The denominator It can represent the status distribution of all stripes involved in all storage devices in the storage system, so the ratio of the two can accurately reflect the balance degree of the i-th storage device.

[0065] According to an exemplary implementation of the present disclosure, the impact factor is amplified based on the ratio between the storage space of the storage device and the portion of the storage device that can be used to store user data. Assume that the capacity of the storage device 214 is 400GB, of which 240GB is used to store system data and 160GB is used to store user data. At this time, the amplification factor can be set based on 400 / 160=2.5, in other words, the impact factor will be amplified to 2.5 times. Specifically, assume that the balance index of the storage device 214 is X, and the impact factor is 400 / 400=1. The impact factor will be updated to 1×2.5, and the updated balance index is 2.5X. Except that the storage device 214 includes system data, the other configurations of the storage devices 210 and 214 are the same. With respect to the balance index X of the storage device 210 storing user data, since X is less than 2.5X, it is easier to select blocks in the storage device 210 to create a new stripe.

[0066] It will be understood that the above merely shows an example for setting the magnification factor. According to an exemplary implementation of the present disclosure, the magnification factor may be set based on other methods. For example, the magnification factor may be set based on the ratio of the size of the system data portion and the size of the user data portion in the storage device. For another example, the access frequency of the user data portion and the system data portion in the storage device may be counted, and the magnification factor may be set based on the access frequency. Assuming that the access frequency of the system data is twice the access frequency of the user data, the magnification factor may be set to 2.

[0067] It will be understood that the balance index shown above only represents the impact of stripe distribution on the storage capacity of the storage device. According to the exemplary implementation of the present disclosure, there may also be other factors that affect the balance index. For example, when the access load of the storage device is high, the performance of the storage device will decrease. For another example, when the wear degree of the storage device is high, the reliability of the storage device will decrease.

[0068] According to an exemplary implementation of the present disclosure, the balancing index can be updated based on the access load of the storage device. Specifically, the access load of the storage device can be determined, and the access loads of multiple storage devices can be determined separately. The access load can be represented in a variety of ways, for example, the access load can be represented by at least one of the following: the number of accesses per unit time, the amount of data access per unit time, the total number of accesses, and the total amount of data access, etc. Then, the balancing index of the storage device can be updated based on the access load of the storage device and the access loads of multiple storage devices. According to an exemplary implementation of the present disclosure, the balancing index C of the i-th storage device can be determined based on the following formula 4: Disk i .

[0069]

[0070] Among them C Disk i represents the balance index of the i-th storage device, γ Disk i represents the device relevance of the i-th storage device, λ γ,Disk i represents the impact factor of the relevance for the i-th storage device, γ Disk j represents the device affinity of the jth storage device, M represents the number of storage devices in the resource pool, and λ T,Disk i represents the impact factor of the access load on the i-th storage device, T Disk i represents the access load of the i-th storage device, represents the sum of the access loads of all M storage devices, ω γ and ω T Respectively represent the weights related to the relevance and the access load. It will be understood that the above formula 4 is only an illustrative way to determine the balancing index. According to the exemplary implementation of the present disclosure, the balancing index can be determined based on other formulas, for example, the balancing index can be determined based on the product of the device relevance and the access load.

[0071] According to an exemplary implementation of the present disclosure, the balancing index may be updated based on the wear degree of the storage device. It will be understood that the wear degree is an index indicating the service life of the storage device, and a higher wear degree means that the remaining service life of the storage device is reduced. When the wear degree reaches a certain threshold, it means that the life of the storage device is about to end and the storage device needs to be replaced in time.

[0072] Specifically, the wear degree of the storage device can be determined, and the wear degrees of multiple storage devices can be determined separately. The wear degree can be expressed in multiple ways, for example, the wear degree can be expressed by at least one of the following: the number of write operations that have been performed, and the ratio of the number of write operations that have been performed to a predetermined threshold, etc. Then, the balance index of the storage device can be updated based on the wear degree of the storage device and the wear degree of multiple storage devices. According to an exemplary implementation of the present disclosure, the balance index C of the i-th storage device can be determined based on the following formula 5: Disk i .

[0073]

[0074] Among them C Disk i represents the balance index of the i-th storage device, γ Disk i represents the device relevance of the i-th storage device, λ γ,Disk i represents the impact factor of the relevance for the i-th storage device, γ Disk j represents the device affinity of the jth storage device, M represents the number of storage devices in the resource pool, and λ W,Disk i represents the impact factor of wear on the i-th storage device, W Disk i represents the wear degree of the i-th storage device, represents the sum of the wear of all M storage devices, ω γ and ω W Represent the weights related to relevance and wear respectively.

[0075] It will be understood that the above formula 5 is only an illustrative way to determine the balance index. According to an exemplary implementation of the present disclosure, the balance index can be determined based on other formulas, for example, the balance index can be determined based on the product of the device correlation and the wear degree.

[0076] According to an exemplary implementation of the present disclosure, the balancing index C of the i-th storage device can be determined based on the following formula 6: Disk i .

[0077]

[0078] Among them C Disk i represents the balance index of the i-th storage device, γ Disk i represents the device relevance of the i-th storage device, γ Disk j represents the device relevance of the jth storage device, M represents the number of storage devices in the resource pool, and T Disk i represents the access load of the i-th storage device, represents the sum of the access loads of all M storage devices, WDisk i represents the wear degree of the i-th storage device, represents the sum of the wear of all M storage devices, ω γ ,ω T and ω W Represent the weights related to relevance, access load and wear, respectively, γ,Disk i , T,Disk i , and λ W,Disk i They represent the impact factors on the i-th storage device related to relevance, access load and wear respectively.

[0079] It will be understood that the above formula 6 is only an illustrative way to determine the balancing index. According to the exemplary implementation of the present disclosure, the balancing index can be determined based on other formulas, for example, the balancing index can be determined based on the product of the correlation, the access load and the wear degree. According to the exemplary implementation of the present disclosure, ω can be set γ ,ω T and ω W The value range of ω can be defined as γ +ω T +ω W =1. According to an exemplary implementation of the present disclosure, a value range may be specified for each weight. For example, the value range of each weight may be determined based on the following Table 1.

[0080] Table 1 Weight value range

[0081] Weight Value range <![CDATA[ω γ ]]> 0.6-1 <![CDATA[ω T ]]> 0-0.3 <![CDATA[ω W ]]> 0-0.1

[0082] It will be understood that the above Table 1 only schematically shows a specific example of the value range. Generally speaking, the correlation has a great influence on the performance of the storage device, so ω γ According to the exemplary implementation of the present disclosure, assuming that multiple storage devices in the storage system have a high degree of wear, the weight of the wear degree can be ω W Set to a higher value.

[0083] How to select the first block in a stripe has been described above. Hereinafter, how to select other blocks in a stripe will be described. According to an exemplary implementation of the present disclosure, a concept of a balance index of a storage device relative to a stripe is proposed. The above balance index may be referred to as a stripe balance index of a storage device. The stripe balance index may be determined based on one or more of the correlation, access load, and wear described above. First, the determination of a stripe balance index based on the correlation of a device relative to a stripe (referred to as stripe correlation) is described.

[0084] Strip correlation describes the correlation between a storage device and multiple storage devices where a stripe is located. The higher the strip correlation, the closer the relationship between the storage device and the stripe. For example, the strip correlation γ between the i-th storage device and the k-th stripe can be determined based on the following formula 7: Diski,REk .

[0085]

[0086] where γ Diski,REk represents the stripe correlation between the i-th storage device and the k-th stripe, γ Disk i,Disk j represents the correlation between the i-th storage device and the j-th storage device, M represents the number of storage devices in the resource pool, and the j-th storage device represents each storage device of the block included in the k-th stripe.

[0087] According to the exemplary implementation of the present disclosure, the stripe correlation can be used as a stripe balancing indicator to select a block in the next storage device for creating a stripe. Using the exemplary implementation of the present disclosure, the correlation between the storage device and the storage device where each block in the stripe is located can reflect the closeness between the storage device and each storage device involved in the stripe. By summing multiple correlations, the closeness between the device and the stripe can be determined in a simple and effective manner.

[0088] It will be understood that since multiple blocks in a stripe need to be located in different storage devices, blocks need to be selected from other storage devices not involved in the stripe to create the stripe. At this time, a group of storage devices involved in the stripe and a group of storage devices not involved in the stripe can be determined. In the initial stage of creating the stripe, the stripe only includes blocks in one storage device. The subsequent second, third, fourth and fifth blocks can be gradually determined.

[0089] Specifically, among the plurality of storage devices, a first group of storage devices that do not include any blocks in the stripe may be determined, and a second group of storage devices that include the blocks in the stripe may be determined. For a given storage device in the first group of storage devices, a device correlation between the given storage device and each storage device in the second group of storage devices may be determined respectively, thereby determining a stripe correlation between the given storage device and the stripe.

[0090] Continuing with the above example, the stripe initially includes only the blocks in the 0th storage device, and at this time, the other 4 storage devices can be selected from the 1st to 7th storage devices. The stripe relevance of the i-th storage device (1≤i≤7) and the stripe (including only the blocks in the 0th storage device) can be determined based on Formula 6 described above.

[0091] Based on the determined stripe correlation, a storage device in the first group of storage devices can be selected. According to the exemplary implementation of the present disclosure, it is desired that the overall correlation between the storage devices where the blocks in the created stripe are located is as small as possible, so the blocks in the storage device with smaller stripe correlation can be preferentially selected. Further, a free block in the selected storage device can be added to the stripe. Using the exemplary implementation of the present disclosure, each time the next block in the stripe is selected, the stripe correlation can be used to select the block in the storage device with smaller correlation in a simple and effective manner.

[0092] Specifically, a storage device with a lower stripe correlation can be selected from multiple storage devices. Assuming that the first stripe correlation of a first storage device among the multiple storage devices is lower than the second stripe correlation of a second storage device among the multiple storage devices, the first storage device can be selected. Using the exemplary implementation of the present disclosure, a storage device with a lower correlation with the device where the blocks in the current stripe are located can be selected based on the stripe correlation, thereby making the compactness of the storage devices where the blocks in the created stripe are located lower.

[0093] According to an exemplary implementation of the present disclosure, the stripe correlation of each storage device can be compared and a block in a storage device with the smallest stripe correlation can be selected as a subsequent block in the stripe. In this way, storage devices that are relatively distant from one or more storage devices involved in the current stripe can be used as much as possible, so that the stripe can run with higher performance.

[0094] For the convenience of description, we can use the symbol γ Disk i,RE current Represents the stripe relevance between the i-th storage device and the current stripe. Where RE current represents the storage device where the block in the current stripe is located. In order to determine the second block in the stripe, the storage device with the smallest stripe relevance can be selected. Assuming that the first storage device has the smallest stripe relevance with the stripe, a free block in the first storage device can be selected and added to the stripe. At this time, the stripe can include two blocks: the block located in the 0th storage device and the block located in the first storage device.

[0095] It will be understood that, since the number of blocks in a stripe is determined by the width N of the stripe, when the number of blocks in a stripe is less than N, the above steps can be repeated continuously. According to an exemplary implementation of the present disclosure, the width of the stripe can be first determined, and based on the comparison between the number of blocks in the current stripe and the width, it is determined whether to perform the selection step. Specifically, if the number of blocks is less than the width of the stripe, the next block is selected; otherwise, the selection operation is stopped. In order to select one or more subsequent blocks, the stripe correlation between each selectable storage device and the current stripe can be continuously determined based on Formula 7 above, and then the free block in the storage device with the smallest stripe correlation is selected.

[0096] By using the exemplary implementation of the present disclosure, each block in the stripe can be determined one by one only through simple mathematical calculations. In this way, it can be ensured that the blocks in the storage device that are most helpful in achieving load balancing are selected from multiple storage devices each time to create a stripe.

[0097] It has been described above that the stripe balance index of the storage device is determined based on the stripe correlation, and then one or more subsequent blocks are selected. According to the exemplary implementation of the present disclosure, the combined correlation can also be determined based on both the stripe correlation and the device correlation of the storage device, and then the stripe balance index is set to the combined correlation. It will be understood that multiple blocks in a stripe will be accessed in association, and the storage device is selected based on the stripe correlation, and the mutual influence between the various storage devices in the created stripe can be considered. In the subsequent operation process, the performance of the storage device will also be affected by the correlation between the storage device and other storage devices (i.e., the device correlation). Therefore, the storage device can be selected based on both the stripe correlation and the device correlation. Using the exemplary implementation of the present disclosure, the above two factors can be fully considered, thereby improving the overall performance of the storage system.

[0098] According to an exemplary implementation of the present disclosure, the combined correlation γ′ between the i-th storage device and the current stripe can be determined based on Formula 8: Disk i,RE current .

[0099] γ′ Disk i,RE current =γ Disk i,RE current +γ Disk i Formula 8 where γ′ Disk i,RE current represents the combined correlation between the i-th storage device and the current stripe, γ Disk i,RE current represents the stripe correlation between the i-th storage device and the current stripe, and γ Disk iIt will be understood that Formula 8 is only a specific example for calculating the combined correlation, and other formulas may be used to determine the combined correlation according to the exemplary implementation of the present disclosure. For example, the combined correlation may be determined based on the product of the stripe correlation and the device correlation.

[0100] The above has described the determination of the stripe balancing index of each storage device based on the combined correlation. The score of each storage device that can be used to create a stripe can be determined. For example, the score C of the u-th storage device can be determined based on Formula 9 Disk u,RE current , the score represents the score of the balance index for selecting a block from the u-th storage device to be added to the current stripe. A storage device with a lower score may be preferentially selected.

[0101]

[0102] Among them C Disk u,RE k represents the score of the u-th storage device, γ Disk u represents the device relevance of the u-th storage device, γ Disk u,RE current represents the stripe correlation between the u-th storage device and the current stripe, Disk v represents the v-th storage device in the storage system and the storage device does not belong to the current stripe, γ Disk v,RE current represents the stripe correlation between the vth storage device and the current stripe, λ γ,Disk i , T,Disk i , and λ W,Disk i They represent the impact factors on the i-th storage device related to relevance, access load and wear respectively.

[0103] Further, the score of the given storage device may be determined based on at least any one of the access load of the given storage device and the wear degree of the given storage device, and the stripe correlation.

[0104] According to an exemplary implementation of the present disclosure, the score C of the u-th storage device can be determined based on Formula 10: Disk u,RE current :

[0105]

[0106]

[0107] The meaning of each symbol is the same as in Formula 9, T Disk u represents the access load of the u-th storage device, T Disk v represents the access load of the vth storage device, and ω γ and ω T Represent the weights related to relevance and access load, respectively,γ,Dis ki and λ T,Disk i denote the impact factors of the relevance and access load on the i-th storage device respectively.

[0108] According to an exemplary implementation of the present disclosure, the score C of the u-th storage device can be determined based on Formula 11: Disk u,RE current :

[0109]

[0110] The meaning of each symbol is the same as in Formula 10, W Disk u represents the wear degree of the u-th storage device, W Disk v represents the wear degree of the vth storage device, and ω γ and ω W Represent the weights of relevance and wear, respectively, γ,Disk i and λ W,Disk i They represent the impact factors of the relevance and wear for the i-th storage device respectively.

[0111] According to an exemplary implementation of the present disclosure, the score C of the u-th storage device can be determined based on Formula 12: Disk u,RE current :

[0112]

[0113] The meaning of each symbol is the same as in the formula shown above, and ω γ ,ω T and ω W Represent the weights related to relevance, access load and wear, respectively, γ,Disk i , T,Disk i , and λ W,Disk i They represent the impact factors on the i-th storage device related to relevance, access load and wear respectively.

[0114] It will be understood that the formulas 7 to 12 shown above are merely schematic examples of formulas for determining the score of the stripe balance index. According to the exemplary implementation of the present disclosure, the score can be determined based on other formulas, for example, the impact can be determined based on the product of the combined relevance, access load, and wear. Using the exemplary implementation of the present disclosure, the destination storage device can be selected in a convenient and effective manner.

[0115] According to the exemplary implementation of the present disclosure, a storage device with a lower score can be selected. Alternatively and / or additionally, a storage device with the lowest score can be selected. Using the exemplary implementation of the present disclosure, a storage device with the lowest balance index can be preferentially selected based on the score, so that the created stripe can make the best use of the storage device in the resource pool with a better working state.

[0116] The method of selecting the first block and other blocks in a stripe has been described above. 7A to 7E Describe step by step how to determine the 1st to 5th blocks in the stripe. In the storage system above, assume that the capacity of the 0th to 7th storage devices is 400GB, which is used to store user data; the capacity of the 4th to 5th storage devices is 400GB, which is used to store system data (accounting for 60% of the capacity) and user data (accounting for 40% of the capacity); and the capacity of the 6th to 7th storage devices is 800GB, which is used to store user data. Assume that there are multiple stripes, and the following matrix M shows the correlation between each of the 8 storage devices. For example, the intersection of the i-th row and the j-th column shows the correlation between the i-th storage device and the j-th storage device.

[0117]

[0118] Based on the method described above, the impact factors for the above 8 storage devices can be determined to be [1 1 1 1 2.5 2.5 0.5 0.5]. Assume that the impact factor λ for the i-th storage device related to access load and wear is T,Disk i , and λ W,Disk i are 1.2 and 1.1 respectively, and the weights ω related to relevance, access load, and wear are γ ,ω T and ω W They are 0.7, 0.2, and 0.1 respectively, and it is expected that 4 new stripes will be created in the storage system.

[0119] Assume that the initial access load of each storage device is represented by matrix A, the average access load of each block in the new 4 stripes is represented by matrix B, the current cumulative write requests of each storage device are represented by matrix C, and the average write request of each stripe is represented by matrix D.

[0120] A=[21 24 8 24 5 10 12 9]

[0121]

[0122] C=[120 150 80 120 100 80 160 70]

[0123]

[0124] First, the first block in the first stripe is determined, and the balance index of each of the eight storage devices can be determined. Fig. 7A A block diagram 700A schematically shows a process of selecting a first block for creating a stripe according to an implementation of the present disclosure. Fig. 7A As shown, the balance indexes of the 0th to 7th storage devices can be expressed as a matrix: [14.84% 18.16% 5.56% 17.83% 10.49% 19.52% 9.62% 3.98%]. As shown by ellipse 710A, the 7th storage device (i.e., storage device 217) has the smallest score, so the free blocks in the 7th storage device can be selected and added to the stripe.

[0125] Figure 7B A block diagram 700B schematically illustrates a process of selecting a second block for creating a stripe according to an implementation of the present disclosure. At this point, the stripe includes blocks in the 7th storage device, and based on the working principle of RAID, the 7th storage device will be excluded when selecting subsequent blocks. The score of each device can be determined based on Formula 12: [15.09% 19.25% 6.51% 18.88% 10.54% 19.49% 10.24% \]. Since the 7th storage device has been excluded, there is no need to calculate the score of the 7th storage device at this time, and the score of the 7th storage device can be represented by “\”. As shown in ellipse 710B, the 2nd storage device (i.e., storage device 212) has the smallest score, so the free block in the 2nd storage device can be selected and added to the stripe.

[0126] Figure 7C A block diagram 700C schematically illustrates a process of selecting a third block for creating a stripe according to an implementation of the present disclosure. At this point, the stripe includes blocks in the 7th and 2nd storage devices, so the 7th and 2nd storage devices will be excluded when selecting subsequent blocks. The score of each device can be determined based on Formula 12: [15.85% 21.02% \ 20.62% 11.02% 20.27% 11.23% \]. Since the 7th and 2nd storage devices have been excluded, there is no need to calculate the combined relevance of the 7th and 2nd storage devices. As shown in ellipse 710C, the 4th storage device (i.e., storage device 214) has the smallest score, so the free block in the 4th storage device can be selected and added to the stripe.

[0127] Fig.7DA block diagram 700D schematically illustrates a process of selecting a fourth block for creating a stripe according to an implementation of the present disclosure. The score of each device can be determined based on Formula 12, which can be represented by the following matrix: [18.14% 23.77% \ 23.30% \ 22.02% 12.77% \]. As shown in ellipse 710D, the sixth storage device (i.e., storage device 216) has the smallest score, so the free block in the sixth storage device can be selected and added to the stripe.

[0128] Fig. 7E A block diagram 700E schematically illustrates a process of selecting a fifth block for creating a stripe according to an implementation of the present disclosure. The score of each device can be determined based on Formula 12: [30.32% 39.17% \ 19.38% \ 11.12% \ \]. As shown in ellipse 710E, the fifth storage device (i.e., storage device 215) has the smallest score, so a free block in the fifth storage device can be selected and added to the stripe.

[0129] By using 7A to 7E The method described can gradually determine the 5 blocks in the stripe. Figure 8 A block diagram 800 of a stripe created according to an implementation of the present disclosure is schematically shown. Legend 810 represents the first newly created RAID stripe, where the selected blocks are located in the 2nd, 4th, 5th, 6th and 7th storage devices, respectively. After the RAID stripe has been created, the correlation between the various storage devices in the storage system can be updated to a matrix M' as shown below.

[0130]

[0131] By using the exemplary implementation of the present disclosure, it is possible to ensure that the blocks in the newly created stripe can be evenly distributed among multiple storage devices, and the balancing indicators and performance of the multiple storage devices can be as balanced as possible.

[0132] Then, a second stripe may be created in the storage system. Based on the method described above, the block in the seventh storage device may be selected as the first block in the stripe, and the blocks in the second, sixth, third, and fifth storage devices may be selected as the subsequent four blocks.

[0133] The third stripe may be created in the storage system. Based on the method described above, blocks in the 7th, 2nd, 6th, 1st, and 0th storage devices may be selected to create stripes.

[0134] The 4th stripe can be created in the storage system. Based on the method described above, blocks in the 7th, 2nd, 6th, 4th and 1st storage devices can be selected to create stripes.

[0135] The distribution of the correlation of each storage device after creating four stripes according to method 500 can be determined based on a probability distribution method. The correlation of the storage system can be determined based on the sum of the correlations between all storage devices in the storage system, for example. According to an exemplary implementation of the present disclosure, the correlation γStorageSystem of the storage system can be determined based on the following formula 13.

[0136]

[0137] where γ StorageSystem represents the relevance of the storage system, γ Disk i represents the device relevance of the i-th storage device, γ Disk i,Disk j represents the correlation between the i-th storage device and the j-th storage device, M represents the number of storage devices in the storage system, and λ γ,Disk i represents an impact factor for the i-th storage device related to the correlation. Specifically, the balancing index of the storage system can be determined based on the correlation of the storage system.

[0138] According to an exemplary implementation of the present disclosure, the average device correlation γ of each storage device in the storage system can be determined based on the following formula 14: Disk average The meanings of the symbols in Formula 14 are the same as those in the above formula.

[0139]

[0140] According to an exemplary implementation of the present disclosure, the standard deviation σ of the device correlation of each storage device in the storage system may be determined based on the following formula 15. The meanings of the symbols in formula 15 are the same as those in the above formula.

[0141]

[0142] According to an exemplary implementation of the present disclosure, the balance index of the storage system may be determined based on the following formula 16.

[0143]

[0144] The above has described determining the balancing index of the storage system based on the correlation of the storage system. It will be understood that when determining the balancing index of the storage system, the access load and wear of the storage system may also be considered. Similarly, the balancing index related to the access load and wear of the storage device may be determined (as shown in Formula 17 and Formula 18).

[0145]

[0146] where μ represents the standard deviation of the access load of the i-th storage device, T Disk i represents the access load of the i-th storage device, T Disk average Indicates the average value of the access load of multiple storage devices.

[0147]

[0148] Where δ represents the standard deviation of the wear degree of the i-th storage device, W Disk i represents the access load of the i-th storage device, W Disk average Indicates the average wear level of multiple storage devices.

[0149] According to an exemplary implementation of the present disclosure, the overall balance index of the storage system may be determined based on the following formula 19.

[0150] Total=ω γ ·λ+ω T μ+ω W ·δ Formula 19 The scores of the relevance, access load and wear after creating each stripe can be determined based on the formulas 16 to 18 described above. Specifically, in the initial stage, the scores of the relevance, access load and wear are 57.35%, 50.81% and 28.66% respectively; after creating stripe 1, the three scores are 43.40%, 28.32% and 26.93% respectively; after creating stripe 2, the three scores are 44.65%, 24.14% and 25.51% respectively; after creating stripe 3, the three scores are 35.20%, 27.60% and 23.52% respectively; after creating stripe 4, the three scores are 32.53%, 23.29% and 23.45% respectively.

[0151] Fig. 9 A block diagram 900 schematically shows changes in the score of a storage system after creating each stripe according to an implementation of the present disclosure. Fig. 9 As shown, as each stripe is created, the scores of the storage system gradually decrease, that is, the distribution of data in the storage system is changing towards a more uniform direction.

[0152] See above for Figures 2 to 9An example of the method according to the present disclosure is described in detail, and the implementation of the corresponding device will be described below. According to an exemplary implementation of the present disclosure, a device for creating stripes in a storage system is provided. The storage system includes multiple storage devices, and the device includes: a balance index determination module, configured to determine the balance index of a storage device in multiple storage devices, the balance index represents the relationship between the state distribution of a group of stripes that have been allocated for use in the storage device and the state distribution of a group of stripes that have been allocated for use in multiple storage devices; an influence factor determination module, configured to determine the influence factor of the balance index for the storage device in multiple storage devices according to the properties of the storage device in the multiple storage devices; a selection module, configured to select a storage device from the multiple storage devices for creating a stripe based on the determined balance index and influence factor; and an adding module, configured to add a block in the selected storage device to the stripe. According to an exemplary implementation of the present disclosure, the device further includes a module for executing the method 500 described above.

[0153] Fig.10 A block diagram of a device 1000 for managing stripes in a storage system according to an exemplary implementation of the present disclosure is schematically shown. As shown, the device 1000 includes a central processing unit (CPU) 1001, which can perform various appropriate actions and processes according to computer program instructions stored in a read-only memory (ROM) 1002 or computer program instructions loaded from a storage unit 1008 into a random access memory (RAM) 1003. In the RAM 1003, various programs and data required for the operation of the device 1000 can also be stored. The CPU 1001, the ROM 1002, and the RAM 1003 are connected to each other via a bus 1004. An input / output (I / O) interface 1005 is also connected to the bus 1004.

[0154] A number of components in the device 1000 are connected to the I / O interface 1005, including: an input unit 1006, such as a keyboard, a mouse, etc.; an output unit 1007, such as various types of displays, speakers, etc.; a storage unit 1008, such as a disk, an optical disk, etc.; and a communication unit 1009, such as a network card, a modem, a wireless communication transceiver, etc. The communication unit 1009 allows the device 1000 to exchange information / data with other devices through a computer network such as the Internet and / or various telecommunication networks.

[0155] The various processes and processing described above, such as method 500, can be performed by processing unit 1001. For example, in some implementations, method 500 can be implemented as a computer software program, which is tangibly contained in a machine-readable medium, such as storage unit 1008. In some implementations, part or all of the computer program can be loaded and / or installed on device 1000 via ROM 1002 and / or communication unit 1009. When the computer program is loaded into RAM 1003 and executed by CPU 1001, one or more steps of method 500 described above can be performed. Alternatively, in other implementations, CPU 1001 can also be configured in any other appropriate manner to implement the above process / method.

[0156] According to an exemplary implementation of the present disclosure, an electronic device is provided, comprising: at least one processor; and a memory coupled to the at least one processor, the memory having instructions stored therein, the instructions causing the device to perform an action for managing stripes in a storage system when executed by the at least one processor. The storage system comprises a plurality of storage devices, and the action comprises: determining a balance index of a storage device among the plurality of storage devices, the balance index representing a relationship between a state distribution of a group of stripes that have been allocated for use in the storage device and a state distribution of a group of stripes that have been allocated for use in the plurality of storage devices; determining an influencing factor of the balance index for the storage device among the plurality of storage devices according to the properties of the storage device among the plurality of storage devices; selecting a storage device from the plurality of storage devices for creating a stripe based on the determined balance index and the influencing factor; and adding a block in the selected storage device to the stripe.

[0157] According to an exemplary implementation of the present disclosure, the attributes of the storage device include storage capacity of the storage device, wherein determining the impact factor includes: determining the impact factor based on a ratio between storage space of the storage device and storage space of other storage devices in a plurality of storage devices.

[0158] According to an exemplary implementation of the present disclosure, the attributes of a storage device include the type of data stored in the storage device, and the type includes at least any one of the following: a user data type and a system data type; wherein determining the impact factor further includes: amplifying the impact factor based on determining that the type of the storage device is a system data type.

[0159] According to an exemplary implementation of the present disclosure, amplifying the impact factor includes: amplifying the impact factor based on a ratio between a storage space of the storage device and a portion of the storage device that can be used to store user data.

[0160] According to an exemplary implementation of the present disclosure, determining a balancing index of a storage device includes: determining a device correlation of the storage device, the device correlation representing the distribution of a group of stripes that have been allocated for use in the storage system between the storage device and other storage devices outside the storage device; determining the device correlations of multiple storage devices respectively; and determining the balancing index of the storage device based on the device correlation of the storage device and the device correlations of the multiple storage devices.

[0161] According to an exemplary implementation of the present disclosure, determining the balancing index of a storage device further includes: determining an access load of the storage device; determining the access loads of multiple storage devices respectively; and updating the balancing index of the storage device based on the access load of the storage device and the access loads of multiple storage devices.

[0162] According to an exemplary implementation of the present disclosure, determining the balance index of a storage device further includes: determining the wear degree of the storage device; determining the wear degrees of multiple storage devices respectively; and updating the balance index of the storage device based on the wear degree of the storage device and the wear degrees of multiple storage devices.

[0163] According to an exemplary implementation of the present disclosure, selecting a storage device from a plurality of storage devices includes: selecting a first storage device based on determining that a first balance index of a first storage device among the plurality of storage devices is lower than a second balance index of a second storage device among the plurality of storage devices.

[0164] According to an exemplary implementation of the present disclosure, the action further includes: for a first group of storage devices in multiple storage devices that do not include any blocks in the stripe, determining a stripe balance index of a given storage device in the first group of storage devices relative to the stripe; based on the determined stripe balance index, selecting a storage device in the first group of storage devices; and adding a block in the selected storage device to the stripe.

[0165] According to an exemplary implementation of the present disclosure, determining a stripe balance index between a given storage device and a stripe includes: determining, among a plurality of storage devices, a second group of storage devices that respectively include respective blocks in the stripe; and determining a stripe balance index of the given storage device relative to the stripe based on the balance index of the given storage device and each storage device in the second group of storage devices.

[0166] According to an exemplary implementation of the present disclosure, based on the determined stripe balance index, selecting a storage device in the first group of storage devices includes: selecting the first storage device based on determining that a first stripe balance index of the first storage device in the first group of storage devices is lower than a second stripe balance index of the second storage device in the first group of storage devices.

[0167] According to an exemplary implementation of the present disclosure, based on the determined stripe correlation, selecting a storage device in the first group of storage devices includes: selecting a storage device based on a stripe balance index and a balance index of the storage device.

[0168] According to an exemplary implementation of the present disclosure, determining the stripe balance index further includes: determining a stripe balance index of a given storage device relative to the stripe based on determining that the number of blocks in the stripe does not satisfy the width of the stripe.

[0169] According to an exemplary implementation of the present disclosure, a computer program product is provided, which is tangibly stored on a non-transitory computer-readable medium and includes machine-executable instructions for executing a method according to the present disclosure.

[0170] According to an exemplary implementation of the present disclosure, a computer-readable medium is provided. The computer-readable medium stores machine-executable instructions, and when the machine-executable instructions are executed by at least one processor, the at least one processor implements the method according to the present disclosure.

[0171] The present disclosure may be a method, an apparatus, a system and / or a computer program product. The computer program product may include a computer-readable storage medium carrying computer-readable program instructions for executing various aspects of the present disclosure.

[0172] A computer-readable storage medium may be a tangible device that can hold and store instructions used by an instruction execution device. A computer-readable storage medium may be, for example, but not limited to, an electrical storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. More specific examples of computer-readable storage media (a non-exhaustive list) include: a portable computer disk, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or flash memory), a static random access memory (SRAM), a portable compact disk read-only memory (CD-ROM), a digital versatile disk (DVD), a memory stick, a floppy disk, a mechanical encoding device, such as a punch card or a raised structure in a groove on which instructions are stored, and any suitable combination of the foregoing. As used herein, a computer-readable storage medium is not to be interpreted as a transient signal per se, such as a radio wave or other freely propagating electromagnetic wave, an electromagnetic wave propagating through a waveguide or other transmission medium (e.g., a light pulse through a fiber optic cable), or an electrical signal transmitted through a wire.

[0173] The computer-readable program instructions described herein can be downloaded from a computer-readable storage medium to each computing / processing device, or downloaded to an external computer or external storage device via a network, such as the Internet, a local area network, a wide area network, and / or a wireless network. The network can include copper transmission cables, optical fiber transmissions, wireless transmissions, routers, firewalls, switches, gateway computers, and / or edge servers. The network adapter card or network interface in each computing / processing device receives the computer-readable program instructions from the network and forwards the computer-readable program instructions for storage in the computer-readable storage medium in each computing / processing device.

[0174] The computer program instructions for performing the operation of the present disclosure may be assembly instructions, instruction set architecture (ISA) instructions, machine instructions, machine-dependent instructions, microcode, firmware instructions, state setting data, or source code or object code written in any combination of one or more programming languages, including object-oriented programming languages, such as Smalltalk, C++, etc., and conventional procedural programming languages, such as "C" language or similar programming languages. Computer-readable program instructions may be executed entirely on a user's computer, partially on a user's computer, as an independent software package, partially on a user's computer, partially on a remote computer, or entirely on a remote computer or server. In the case of a remote computer, the remote computer may be connected to the user's computer via any type of network, including a local area network (LAN) or a wide area network (WAN), or may be connected to an external computer (e.g., using an Internet service provider to connect via the Internet). In some implementations, an electronic circuit, such as a programmable logic circuit, a field programmable gate array (FPGA), or a programmable logic array (PLA), may be customized by utilizing the state information of the computer-readable program instructions, and the electronic circuit may execute the computer-readable program instructions, thereby realizing various aspects of the present disclosure.

[0175] Various aspects of the present disclosure are described herein with reference to the flowcharts and / or block diagrams of the methods, devices (systems) and computer program products implemented according to the present disclosure. It should be understood that each box in the flowchart and / or block diagram and the combination of each box in the flowchart and / or block diagram can be implemented by computer-readable program instructions.

[0176] These computer-readable program instructions can be provided to a processing unit of a general-purpose computer, a special-purpose computer, or other programmable data processing device, thereby producing a machine, so that when these instructions are executed by the processing unit of the computer or other programmable data processing device, a device that implements the functions / actions specified in one or more boxes in the flowchart and / or block diagram is generated. These computer-readable program instructions can also be stored in a computer-readable storage medium, and these instructions cause the computer, programmable data processing device, and / or other equipment to work in a specific manner, so that the computer-readable medium storing the instructions includes a manufactured product, which includes instructions for implementing various aspects of the functions / actions specified in one or more boxes in the flowchart and / or block diagram.

[0177] Computer-readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device so that a series of operating steps are performed on the computer, other programmable data processing apparatus, or other device to produce a computer-implemented process, thereby causing the instructions executed on the computer, other programmable data processing apparatus, or other device to implement the functions / actions specified in one or more boxes in the flowchart and / or block diagram.

[0178] The flow chart and block diagram in the accompanying drawings show the possible architecture, function and operation of the system, method and computer program product according to multiple implementations of the present disclosure. In this regard, each square box in the flow chart or block diagram can represent a part of a module, program segment or instruction, and a part of a module, program segment or instruction includes one or more executable instructions for realizing the logical function of the specification. In some implementations as replacements, the function marked in the square box can also occur in a sequence different from that marked in the accompanying drawings. For example, two continuous square boxes can actually be executed substantially in parallel, and they can sometimes be executed in reverse order, depending on the functions involved. It should also be noted that each square box in the block diagram and / or flow chart, and the combination of the square boxes in the block diagram and / or flow chart can be realized by a special hardware-based system that performs the function or action of the specification, or can be realized by a combination of special hardware and computer instructions.

[0179] The above descriptions of various implementations of the present disclosure are exemplary, non-exhaustive, and not limited to the disclosed implementations. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the described implementations. The selection of terms used herein is intended to best explain the principles of the implementations, practical applications, or improvements to the technology in the marketplace, or to enable other persons of ordinary skill in the art to understand the implementations disclosed herein.

Claims

1. A method for creating a stripe in a storage system, the storage system comprising a plurality of storage devices, the method comprising: Determine a balance index of a storage device among the plurality of storage devices, the balance index representing a relationship between a state distribution of a group of stripes that have been allocated for use in the storage device and a state distribution of a group of stripes that have been allocated for use in the plurality of storage devices; determining, according to properties of storage devices among the plurality of storage devices, an impact factor of a balancing index for the storage devices among the plurality of storage devices, wherein the impact factor indicates an impact of different properties on the balancing index; Based on the determined balance index and the impact factor, selecting a storage device from the plurality of storage devices for creating a stripe, wherein selecting the storage device from the plurality of storage devices comprises: updating the determined equilibrium indicator using the determined impact factor, and selecting the storage device having a lower balance index from among the plurality of storage devices based on the updated determined value of the balance index; as well as A block in the selected storage device is added to the stripe.

2. The method according to claim 1, wherein the attribute of the storage device comprises a storage capacity of the storage device, and wherein determining the influencing factor comprises: The impact factor is determined based on a ratio between a storage space of the storage device and a storage space of other storage devices among the plurality of storage devices.

3. The method according to claim 2, wherein the attribute of the storage device comprises a type of data stored in the storage device, wherein the type comprises at least one of the following: a user data type and a system data type; wherein determining the impact factor further comprises: According to determining that the type of the storage device is the system data type, the impact factor is amplified.

4. The method according to claim 3, wherein amplifying the impact factor comprises: The impact factor is amplified based on a ratio between a storage space of the storage device and a portion of the storage device that can be used to store user data.

5. The method according to claim 1, wherein determining the balance index of the storage device comprises: Determine a device affinity of the storage device, where the device affinity indicates distribution of the group of stripes that have been allocated for use in the storage system between the storage device and other storage devices other than the storage device; Determining device relevance of the plurality of storage devices respectively; as well as The balance index of the storage device is determined based on the device affinity of the storage device and the device affinity of the plurality of storage devices.

6. The method according to claim 5, wherein determining the balance index of the storage device further comprises: Determining an access load of the storage device; Determining access loads of the plurality of storage devices respectively; as well as The balancing index of the storage device is updated based on the access load of the storage device and the access loads of the plurality of storage devices.

7. The method according to claim 5, wherein determining the balance index of the storage device further comprises: determining a degree of wear of the storage device; determining the wear degree of each of the plurality of storage devices; as well as The balance index of the storage device is updated based on the wear level of the storage device and the wear levels of the plurality of storage devices.

8. The method of claim 1 , wherein selecting the storage device from the plurality of storage devices comprises: According to determining that a first balance index of a first storage device among the plurality of storage devices is lower than a second balance index of a second storage device among the plurality of storage devices, the first storage device is selected.

9. The method according to claim 1, further comprising: For a first group of storage devices in the plurality of storage devices that do not include any blocks in the stripe, determining a stripe balance indicator of a given storage device in the first group of storage devices relative to the stripe; Selecting a storage device from the first group of storage devices based on the determined stripe balancing indicator; as well as A block in the selected storage device is added to the stripe.

10. The method of claim 9, wherein determining a stripe balance index between the given storage device and the stripe comprises: Determine, among the plurality of storage devices, a second group of storage devices that respectively include each block in the stripe; as well as The stripe balance index of the given storage device relative to the stripe is determined based on the balance index of the given storage device and each storage device in the second group of storage devices.

11. The method according to claim 10, wherein based on the determined stripe balancing index, selecting the storage device in the first group of storage devices comprises: The first storage device is selected based on determining that a first stripe balance index of a first storage device in the first group of storage devices is lower than a second stripe balance index of a second storage device in the first group of storage devices.

12. The method of claim 10, wherein based on the determined stripe affinity, selecting the storage device in the first group of storage devices comprises: The storage device is selected based on the stripe balance index and the balance index of the storage device.

13. The method according to claim 10, wherein determining the stripe balance index further comprises: Based on determining that the number of blocks in the stripe does not satisfy the width of the stripe, a stripe balance indicator of the given storage device relative to the stripe is determined.

14. An electronic device comprising: at least one processor; as well as a memory coupled to the at least one processor, the memory having instructions stored therein, the instructions, when executed by the at least one processor, causing the device to perform actions for creating a stripe in a storage system, the storage system comprising a plurality of storage devices, the actions comprising: Determine a balance index of a storage device among the plurality of storage devices, the balance index representing a relationship between a state distribution of a group of stripes that have been allocated for use in the storage device and a state distribution of a group of stripes that have been allocated for use in the plurality of storage devices; determining, according to properties of storage devices among the plurality of storage devices, an impact factor of a balancing index for the storage devices among the plurality of storage devices, wherein the impact factor indicates an impact of different properties on the balancing index; Based on the determined balance index and the impact factor, selecting a storage device from the plurality of storage devices for creating a stripe, wherein selecting the storage device from the plurality of storage devices comprises: updating the determined equilibrium indicator using the determined impact factor, and selecting the storage device having a lower balance index from among the plurality of storage devices based on the updated determined value of the balance index; and A block in the selected storage device is added to the stripe.

15. The device of claim 14, wherein the attribute of the storage device comprises a storage capacity of the storage device, and wherein determining the impact factor comprises: The impact factor is determined based on a ratio between a storage space of the storage device and a storage space of other storage devices among the plurality of storage devices.

16. The device according to claim 15, wherein the attribute of the storage device comprises a type of data stored in the storage device, the type comprising at least one of the following: a user data type and a system data type; wherein determining the impact factor further comprises: According to determining that the type of the storage device is the system data type, the impact factor is amplified.

17. The apparatus of claim 16, wherein amplifying the impact factor comprises: The impact factor is amplified based on a ratio between a storage space of the storage device and a portion of the storage device that can be used to store user data.

18. The device of claim 14, wherein determining the balance index of the storage device comprises: Determine a device affinity of the storage device, where the device affinity indicates distribution of the group of stripes that have been allocated for use in the storage system between the storage device and other storage devices other than the storage device; Determining device relevance of the plurality of storage devices respectively; as well as The balance index of the storage device is determined based on the device affinity of the storage device and the device affinity of the plurality of storage devices.

19. The device of claim 18, wherein determining the balance index of the storage device further comprises: Determining an access load of the storage device; Determining access loads of the plurality of storage devices respectively; as well as The balancing index of the storage device is updated based on the access load of the storage device and the access loads of the plurality of storage devices.

20. The device of claim 18, wherein determining the balance index of the storage device further comprises: determining a degree of wear of the storage device; determining the wear degree of each of the plurality of storage devices; as well as The balance index of the storage device is updated based on the wear level of the storage device and the wear levels of the plurality of storage devices.

21. A computer program product tangibly stored on a non-transitory computer readable medium and comprising machine executable instructions for performing the method according to any one of claims 1-13.

Citation Information

Patent Citations

  • Storage system management method and system

    CN107870730A

  • Method, apparatus for managing redundant array of independent disks (RAID), and computer program product

    CN110737401A