Data storage method, device and system and storage medium

By dividing storage pools at different performance levels in the data lake storage system and eliminating and encoding the data, the problem of data read/write delay is solved, and efficient data storage and consistency guarantee is achieved.

CN120179147APending Publication Date: 2025-06-20HANGZHOU ALICLOUD FEITIAN INFORMATION TECH CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202311756738.6
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2023-12-19
Publication Date
2025-06-20

AI Technical Summary

Technical Problem

How to shorten data read/write latency in storage systems such as data lakes, especially in the context of huge data volume and continuous growth.

Method used

By introducing storage servers equipped with storage media of different performance levels into the storage system, multiple storage pools of performance levels are divided. For data write requests, erasure coding is performed, the original data shard is written to the storage pool with higher performance, and the verification data shard is written to the storage pool with lower performance.

Benefits of technology

It effectively reduces write delay, ensures data consistency, and reduces write amplification problems caused by the transit link. At the same time, better performance storage pools support data writing, further reducing write latency.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN120179147A_ABST
    Figure CN120179147A_ABST
Patent Text Reader

Abstract

The embodiment of the invention provides a data storage method, device and system and a storage medium. A storage server equipped with one or more performance level storage media is introduced to establish a storage system, and on the basis, a plurality of storage pools with different performance levels can be divided in the storage system. After any storage server receives a data writing request, erasure code coding can be performed on target data requested to be written, and original data fragments and verification data fragments generated by coding are written into storage pools with different performance levels. Therefore, a user can directly initiate the data write request to the storage server without any transfer link, the problem of write amplification caused by the transfer link can be effectively reduced, and the write delay is effectively reduced; and the storage pool with better performance is used for supporting the writing of the original data fragments corresponding to the data writing request, so that the data consistency can be ensured, and the writing delay can be further reduced.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present application relates to the technical field of data storage, and in particular, to a data storage method, device, system, and storage medium. Background Art

[0002] Based on data analysis requirements, data warehouses have been widely built to collect, aggregate, and merge data from various sources, and are used for subsequent analysis, query, and decision-making. Due to the trend of informatization and digitalization, the total amount of data generated globally has grown rapidly, and the types of data are numerous and complex. Data warehouses have evolved into data lakes, which gather a large amount of informatization data.

[0003] Considering the huge amount of data and the continuous growth trend, how to shorten the data read / write latency of storage systems such as data lakes has become an urgent problem to be solved. Summary of the Invention

[0004] Multiple aspects of the present application provide a data storage method, device, system, and storage medium to improve the storage performance of the storage system.

[0005] An embodiment of the present application provides a data storage method. The storage media installed on each storage server in the storage system form storage pools with multiple performance levels. For any storage server in the storage system, the method includes:

[0006] When a data write request is received, perform erasure code encoding on the target data to be written, so as to generate an original data shard and a parity data shard corresponding to the target data;

[0007] Write the original data shard into the first storage pool;

[0008] Write the parity data shard into the second storage pool, where the performance of the first storage pool is better than that of the second storage pool.

[0009] An embodiment of the present application further provides a storage server, including a memory, a processor, and a communication component, and is equipped with one or more storage media with multiple performance levels;

[0010] The memory is used to store one or more computer instructions;

[0011] The processor is coupled to the memory, the communication component, and the installed storage media, and is used to execute the one or more computer instructions to execute the foregoing data storage method.

[0012] An embodiment of the present application further provides a data storage system, which includes multiple storage servers. One or more types of storage media with different performance levels are installed in a single storage server to form multiple storage pools with different performance levels. Any one of the storage servers is used to execute the aforementioned data storage method.

[0013] An embodiment of the present application further provides a computer-readable storage medium storing computer instructions. When the computer instructions are executed by one or more processors, the one or more processors are caused to execute the aforementioned data storage method.

[0014] In the embodiment of the present application, a storage server equipped with one or more types of storage media with different performance levels is introduced to build a storage system. Based on this, multiple storage pools with different performance levels can be divided in the storage system. After receiving a data write request, any storage server can perform erasure code encoding on the target data to be written, and write the original data shards and parity data shards generated by the encoding into different performance-level storage pools. In this way, the user can directly initiate a data write request to the storage server without any intermediate links, which can effectively reduce the write amplification problem caused by the intermediate links, thereby effectively reducing the write latency. Moreover, it is proposed to use a storage pool with better performance to support the writing of the original data shards corresponding to the data write request, which can not only ensure data consistency but also further reduce the write latency. BRIEF DESCRIPTION OF THE DRAWINGS

[0015] The drawings described herein are used to provide a further understanding of the present application and constitute a part of the present application. The schematic embodiments and descriptions thereof of the present application are used to explain the present application and do not constitute an improper limitation to the present application. In the drawings:

[0016] Figure 1 is a schematic structural diagram of a storage system provided by an exemplary embodiment of the present application;

[0017] Figure 2 is an internal structural diagram of a storage server provided by an exemplary embodiment of the present application;

[0018] Figure 3 is a logical diagram of an exemplary data storage solution provided by an exemplary embodiment of the present application;

[0019] Figure 4 is a logical diagram of data storage during the period when an SSD pool does not enter the state of rejecting storage of parity data provided by an exemplary embodiment of the present application;

[0020] Figure 5 is a logical diagram of migrating parity data shards in an SSD pool provided by an exemplary embodiment of the present application;

[0021] Figure 6 Schematic diagram of data storage logic after an SSD pool enters a state of rejecting stored check data provided by an exemplary embodiment of the present application;

[0022] Figure 7 Flowchart of a data storage method provided by another exemplary embodiment of the present application;

[0023] Figure 8 Schematic diagram of the structure of a storage server provided by yet another exemplary embodiment of the present application. Detailed implementation manners

[0024] To make the objectives, technical solutions, and advantages of the present application clearer, the technical solutions of the present application will be clearly and completely described below in conjunction with specific embodiments of the present application and the corresponding drawings. Obviously, the described embodiments are only a part of the embodiments of the present application, rather than all of the embodiments. All other embodiments obtained by those of ordinary skill in the art based on the embodiments in the present application without creative efforts shall fall within the scope of protection of the present application.

[0025] As introduced in the background art, currently, in storage systems such as data warehouses and data lakes, the requirements for data read and write latency are getting higher and higher. There are already some solutions in the field for shortening the data read and write latency in storage systems. However, in order to ensure data consistency in the storage system, most of these solutions have problems such as write amplification or large read overhead, resulting in an unsatisfactory improvement effect on data read / write latency.

[0026] Therefore, this embodiment provides a new data storage method, device, and system, which can effectively improve the storage performance of the storage system while ensuring data consistency.

[0027] The following will detail the technical solutions provided by each embodiment of the present application in conjunction with the drawings.

[0028] Figure 1 Schematic diagram of the structure of a storage system provided by an exemplary embodiment of the present application. As Figure 1As shown, the system includes multiple storage servers, and one or more storage media of different performance levels can be installed on a single storage server. Among them, the performance levels can be defined based on the read / write rate, so that the read / write rates provided by storage media of different performance levels are different. In this embodiment, the differentiation of performance levels can be achieved by installing storage media of different product categories in the storage system; of course, the differentiation of performance levels can also be achieved by installing storage media with the same product category but different performance. This embodiment does not limit the implementation method of performance level differentiation. In addition, in this embodiment, for a single storage server, it can install only one performance level of storage media, or multiple performance levels of storage media. In this embodiment, the number of performance levels of the storage media installed on a single storage server is not limited, as long as there are multiple performance levels of storage media from the global perspective of the storage system.

[0029] In this regard, in some preferred solutions, the storage media installed in the storage system may include but are not limited to solid state drives (SSDs) and hard disk drives (HDDs), etc. Among them, a solid state drive (SSD), also known as a solid state disk drive, is a hard disk made of an array of solid state electronic storage chips. A hard disk drive (HDD), also known as a hard drive, is a traditional ordinary hard disk, mainly composed of: a disk platter, a magnetic head, a disk platter spindle and a control motor, a magnetic head controller, a data converter, an interface, a cache, and several other parts. It should be understood that the data read / write rate provided by an SSD is usually much higher than that provided by an HDD. Of course, in some other design solutions, the storage media installed in the storage system can also be a combination of an SSD and a tape storage device, or a combination of SSDs with different performances, etc. As mentioned above, this embodiment does not limit the implementation method of performance level differentiation, and no more examples will be given here.

[0030] In addition, in this embodiment, the number of performance levels of the storage media installed in the storage system is not limited either, that is, two or more performance levels of storage media can be installed in the storage system. In this embodiment, storage media of different performance levels can be selected as needed.

[0031] The storage performance of the storage system usually involves write performance and read performance. The storage system provided in this embodiment will be described in detail below to illustrate the improvement in write performance and read performance.

[0032] First, the processing solution of the storage server in this embodiment after receiving a data write request will be described. Refer to Figure 1, a user of the storage system can initiate a data write request to the storage system. In this embodiment, the scheduling mechanism adopted by the storage system after receiving the data write request is not limited. For example, a load balancing mechanism can be adopted. After scheduling, the data write request will directly reach a certain storage server in the storage system. That is to say, in this embodiment, the data write request initiated by the user will directly reach the storage server in the storage system without any intermediate links. In this embodiment, for a single storage server in the storage system, the data write request it receives carries the original data provided by the user, rather than the data after write amplification. Among them, write amplification can be understood as re-encoding the original data or constructing multiple copies. In some existing solutions, there are usually intermediate links. To ensure data consistency, each intermediate link needs to perform a round of write amplification, which will not only cause a large delay, but also increase the storage cost that needs to be paid after the data reaches the storage system by a lot. In this embodiment, however, the intermediate links are abandoned, which can effectively avoid the write amplification problem during the period from when the user initiates a data write request to when the storage server receives the write request. Therefore, the write delay during this period can be effectively shortened.

[0033] Continue to refer to Figure 1 , in this embodiment, multiple storage media with different performance levels assembled in the storage system can be organized into multiple storage pools with different performance levels. For example, if SSDs and HDDs are assembled on multiple storage servers in the storage system, the SSDs assembled on each of the multiple storage servers in the storage system can form an SSD pool; the HDDs assembled on each of the multiple storage servers in the storage system can form an HDD pool. The SSD pool and the HDD pool are two storage pools with different performance levels. Similarly, in this embodiment, the number of storage pools can be two or more than two. In this embodiment, different performance-level storage pools can be used as needed. In addition, it is worth noting that, preferably, the storage media included in a single storage pool have a unified performance level. Of course, this embodiment does not make a limitation in this regard. A single storage pool can also include storage media with multiple performance levels. In this case, non-overlapping storage media performance level ranges can be set for each storage pool to ensure the performance level differentiation between storage pools. The process of dividing the storage media into storage pools in this embodiment is not specifically limited.

[0034] On this basis, a data storage solution applicable to each storage server in the storage system is proposed in this embodiment. In practical applications, data storage management components can be respectively deployed on each storage server in the storage system to implement this data storage method. For the convenience of description, the data storage solution will be further elaborated below from the perspective of a storage server in the storage system.

[0035] As mentioned above, the data write request initiated by the user can be directly scheduled to the storage server in the storage system. Based on this, in this embodiment, when the storage server receives the data write request, it can parse out the target data to be written from it.

[0036] Figure 2 FIG. is a schematic internal structure diagram of a storage server provided by an exemplary embodiment of the present application. Refer to Figure 2 , in this embodiment, the processor in the storage server (such as Figure 2 the CPU in) can be connected to the network card through the PCIe channel of the bus. The storage server can use the network card to receive the data write request so that the data write request reaches the processor. In this embodiment, the aforementioned data storage management component runs in the processor of the storage server. In this way, the processor of the storage server, specifically the data storage management component running therein, can execute the data storage solution provided by this embodiment.

[0037] Based on this, refer to Figure 2 , after the processor in the storage server receives the data write request, it can perform erasure coding on the target data to be written to generate the original data shards and parity data shards corresponding to the target data. Among them, erasure coding (EC) is a data protection mechanism. The basic principle of the erasure coding mechanism is: the data to be stored is divided into k original data shards, and m parity data shards are added to the k original data shards; on this basis, any k of the k + m data shards can be used to restore the k original data shards, and then the original data can be restored. No more detailed description of the erasure coding mechanism will be given here.

[0038] In this embodiment, by performing erasure coding on the target data and storing the target data based on the generated original data shards and parity data shards, the data consistency of the target data in the storage system can be effectively guaranteed.

[0039] Continue to refer to Figure 1 , in this embodiment, after the storage server completes the erasure coding, it can write the original data shards corresponding to the target data into the first storage pool ( Figure 1 exemplified by SSDs in) and write the parity data shards corresponding to the target data into the second storage pool ( Figure 1In the example (formed by HDDs), the performance of the first storage pool is better than that of the second storage pool. In this way, in addition to saving the write latency caused by the aforementioned transfer link, the write latency can be further reduced by using a storage pool with better performance to support the writing of the original data shards. For example, usually only one type of storage medium, HDD, is installed in the storage server, so that the storage server can only support data writing based on this storage medium with relatively low performance. However, in this embodiment, an SSD can be introduced into the storage server. In this way, the SSD can be used to support the writing of the original data shards, instead of relying on the HDD to support the writing of the original data shards, which can effectively reduce the write latency of the original data shards and thus reduce the overall write latency.

[0040] In this embodiment, from the perspective of a single storage medium in the first storage pool, it can be communicatively connected to the processor in the storage server where it is located through the bus. Refer to Figure 2 , in an exemplary solution: the first storage pool can be an SSD pool. Based on this, one or more SSDs can be installed in a single storage server, and the processor in the storage server can expand multiple PCIe channels through a bus switch (PCIe switch) via multiple bus PCIe channels to connect to the SSDs. Preferably, in this exemplary solution, the storage server can adopt a high-density design to take advantage of the low power and small size of the SSDs, so as to greatly increase the storage capacity density per unit space. In addition, in this exemplary solution, low-cost SSDs, such as QLC NAND SSDs, can also be used to support this high-density design at a lower cost. Through Figure 2 it can be known that in this embodiment, there is a data transmission channel between the storage medium in the first storage pool and the processor in the storage server where it is located. Therefore, the processor can be supported to write data into such storage media.

[0041] It should be noted that in this embodiment, when the storage server writes the original data shards into the first storage pool, it supports selecting the write location for the original data shards from the global perspective of the first storage pool, rather than being limited to writing only to the storage media installed in itself. Therefore, the original data shards generated by the storage server for the target data may need to be written to the storage media installed in other storage servers. In this embodiment, this cross-storage-server writing situation can be supported. Refer to Figure 2 , the processor in the storage server is connected to the network card through the bus PCIe channel. Therefore, the storage servers can transfer the original data shards that need to be written across storage servers through the network cards of both parties, so as to support the writing of the original data shards across storage servers. In practical applications, direct memory access (DMA) and other methods can be used to implement the operation of writing the original data shards across storage servers to shorten the write latency. Of course, this embodiment does not make any limitations in this regard.

[0042] In this embodiment, from the perspective of a single storage medium in the second storage pool, it can also be communicatively connected to the processor in the storage server where it is located via a bus. Referring to Figure 2 , in an exemplary solution: the second storage pool can be an HDD pool. Based on this, continuing to refer to Figure 2 , one or more HDDs can be assembled in a single storage server, and the processor in the storage server can be connected to the HDDs through multiple bus PCIe channels converted to SAS channels via an HBA and expanded via an expander (if required). Preferably, in this exemplary solution, the storage server can also adopt a high-density design. Through Figure 2 it can be seen that in this embodiment, there is a data transmission channel between the storage medium in the second storage pool and the processor in the storage server where it is located. Therefore, the processor can be supported to write data into such storage media. Similarly, in this embodiment, it is also supported to select a write location for the verification data shard from the global perspective of the second storage pool, rather than being limited to writing to the storage media assembled by itself. Similarly, in this embodiment, the storage servers can transmit the verification data shards that need to be written across the storage servers through the network cards of both parties, thereby supporting the writing of verification data shards across the storage servers. In practical applications, direct memory access (DMA) and other methods can be used to implement the writing operation of verification data shards across the storage servers to shorten the write latency. Of course, this embodiment does not limit this.

[0043] In addition, in this embodiment, preferably, after the original data shards are written into the first storage pool in response to a data write request, a write success notification can be returned without waiting for the completion of the writing process of the verification data shards in the second storage pool. This makes the write latency in this embodiment approximately include the network transmission latency caused by transmitting the data write request from the user to the storage server and the latency caused by writing the original data shards into the first storage pool. Since the writing speed that the first storage pool can provide is much higher than the storage media used for data writing in traditional storage servers, very excellent write latency can be achieved in this embodiment. This solution of returning a write success notification after the original data shards are written can further reduce the write latency of the storage system.

[0044] The above is an explanation of the processing solution of the storage server in this embodiment after receiving a data write request. Next, the processing solution of the storage server in this embodiment after receiving a data read request will be continued to be explained.

[0045] Continuing to refer to Figure 1, after receiving a data read request, the storage server can read the required original data shards from the first storage pool to restore the data required by the data read request. As mentioned above, based on the erasure code mechanism, the original data can be restored from the original data shards, and moreover, the original data shards in this embodiment are all stored in the first storage pool. Therefore, for a data read request, the storage server can directly perform a read operation based on the first storage pool, read out the original data shards required by the data read request, and use them as a response to the data read request.

[0046] For data read requests, in some existing solutions, multiple intermediate links are also required to complete the read response. For example, a dedicated cache cluster is set up between the storage system and the user, and the data cached in the cache cluster is preferentially used to respond to the data read request. In the case where the cache cluster cannot provide the response data, the storage system needs to be accessed through the network to obtain the required response data. Therefore, each intermediate link will cause a round of network transmission, which will not only increase the read bandwidth overhead, but also lead to cumulative network latency. In this embodiment, it is proposed that the storage server can directly transmit the provided response data to the user, and the intermediate link is also abandoned, which can effectively avoid the number of network transmission rounds during the period when the storage server returns the response data to the user. Therefore, the read latency during this period can be effectively shortened. Among them, in this embodiment, the storage server can directly use the read original data shards as a response to the data read request and transmit them to the user; the storage server can also restore the original data based on the read original data shards and then transmit the restored original data as a response to the data read request to the user. This embodiment does not make any restrictions on this.

[0047] In addition, since the response to the data read request is completely based on the first storage pool, an excellent read response rate can be achieved. Moreover, the storage server directly transmits the response data to the user without any intermediate links. Therefore, with the support of these two aspects, in this embodiment, the read latency of the data can be effectively shortened.

[0048] From the description of the above processing solutions for data write requests and data read requests, it can be seen that: in this embodiment, the first storage pool in the storage system can be used to support data read / write performance. Since the read / write rate that the first storage pool itself can provide is high enough, it can be ensured that the data storage solution in this embodiment can achieve excellent data read / write latency.

[0049] Moreover, in this embodiment, an erasure code mechanism is adopted for data storage, and the storage ability for check data shards is provided based on the second storage pool. Based on this, the data consistency in the storage system can be effectively guaranteed. Also, the check data shards stored in the second storage pool can be used to handle the possible read error problems of the original data shards in the first storage pool. Specifically, in this embodiment, if the storage server cannot read out the required original data shards from the first storage pool after receiving a data read request, it can read the check data shards required by the data read request from the second storage pool to restore the data required by the data read request through the check data shards. That is to say, only when a read error of the original data shards occurs in the first storage pool, it is necessary to read the check data shards from the second storage pool to ensure that enough data shards can be provided for the data read request for data restoration.

[0050] In summary, in this embodiment, a storage server equipped with one or more storage media of different performance levels is introduced to form a storage system. Based on this, multiple storage pools with different performance levels can be divided in the storage system. After receiving a data write request, any storage server can perform erasure code encoding on the target data to be written, and write the generated original data shards and check data shards into storage pools with different performance levels. In this way, users can directly initiate a data write request to the storage server without any intermediate links, which can effectively reduce the write amplification problem caused by intermediate links, thereby effectively reducing the write latency. Moreover, it is proposed to use a storage pool with better performance to support the writing of the original data shards corresponding to the data write request, which can not only ensure data consistency but also further reduce the write latency. Since the original data shards are stored in the SSD pool, the read latency can be effectively reduced based on the SSD pool.

[0051] Figure 3 It is a logical schematic diagram of an exemplary data storage solution provided by an exemplary embodiment of the present application. Refer to Figure 3 , for a single storage server, before writing the check data shards corresponding to the target data, it can first determine whether the first storage pool has already been in a state of rejecting the storage of check data.

[0052] In practical applications, after the storage system is deployed, the first storage pool will not default to the state of rejecting the storage of check data. That is to say, the first storage pool can default to support the writing of original data shards and check data shards. Refer to Figure 3, in this embodiment, a capacity statistics component can be deployed in the storage system to count the remaining capacity of the first storage pool. In this way, the capacity statistics component can monitor whether the remaining capacity of the first storage pool has fallen below a specified threshold. If it has, the first storage pool will be marked as in a state of rejecting the storage of verification data. After the remaining capacity of the first storage pool first falls below the specified threshold, the first storage pool will enter the state of rejecting the storage of verification data. Moreover, after the first storage pool enters the state of rejecting the storage of verification data, it will not exit this state again. This is mainly because the storage space provided by the first storage pool is relatively precious. In this embodiment, it is expected to use the storage space of the first storage pool as much as possible for storing the original data shards to ensure the data read and write latency. In this embodiment, it is proposed to write the verification data shards into the first storage pool as well, hoping that when the storage capacity of the first storage pool is relatively sufficient, the high read and write rate of the first storage pool can be fully utilized, so that the verification data shards can also obtain excellent read and write latency.

[0053] In addition, in this embodiment, a single storage medium in the first storage pool may include at least one storage block. In this embodiment, it is proposed to set the management unit of the first storage pool at the storage block. Among them, the storage block can be the storage unit of the storage medium in the first storage pool. Preferably, the storage block can be the smallest erasure unit of the storage medium in the first storage pool. Figure 3 Taking the storage medium in the first storage pool as an SSD as an example, refer to Figure 3 , for an SSD, its hierarchical structure from large to small is roughly: core die - plane - flash block - page - cell. Among them, the flash block is the smallest erasure unit in the SSD. Using the smallest erasure unit as the management unit for the first storage pool in this embodiment can more efficiently implement management operations such as data writing, copying, erasing, and load balancing in the first storage pool, thereby ensuring the performance of the storage system.

[0054] Here, there may be two judgment results: the first is that the first storage pool is already in the state of rejecting the storage of verification data; the second is that the first storage pool is not yet in the state of rejecting the storage of verification data.

[0055] Next, the data storage process in the first case will be described in detail as follows:

[0056] For the first case, in this embodiment, the storage server can also write the verification data shards corresponding to the target data into the first storage pool. That is to say, the storage server will write both the original data shards and the verification data shards corresponding to the target data into the first storage pool. Figure 4 It is a schematic diagram of the data storage logic during the period when the first storage pool of an exemplary embodiment of the present application has not entered the state of rejecting the storage of verification data. Among them,Figure 4 The first storage pool is exemplified as an SSD pool, and the second storage pool is exemplified as an HDD pool. Refer to Figure 4 , in the case where the first storage pool has not entered the state of rejecting storage verification data, in this embodiment, some storage blocks in the first storage pool can be set to be dedicated to storing verification data shards. That is to say, in this case, the first storage pool can include storage blocks dedicated to storing original data shards and storage blocks dedicated to storing verification data shards. Of course, it can also include some storage blocks that have not been selected yet and are undefined for storing which type of data shards. It can also be understood that in this embodiment, if a single storage block has been selected, it will only be used to store a single type of data shard and will not be mixedly stored. Regarding the type of data shard stored in the storage block, it can be defined throughout the process of selecting storage blocks for the original data shards and verification data shards.

[0057] On this basis, if the number of original data shards corresponding to the target data is k and the corresponding verification data shards are m, the storage server can select k + m storage blocks from the first storage pool. Among them, the k storage blocks selected for the original data shards can include storage blocks that were initially selected due to other data write requests and have been used to store original data shards, and can also include storage blocks that have not been selected yet and are initially selected in this data write request. Such storage blocks will be automatically defined here as being used to store original data shards. Similarly, the m storage blocks selected for the verification data shards can include storage blocks that were initially selected due to other data write requests and have been used to store verification data shards, and can also include storage blocks that have not been selected yet and are initially selected in this data write request. Such storage blocks will be automatically defined here as being used to store verification data shards.

[0058] The storage server can write the k original data shards corresponding to the target data one-to-one into the k selected storage blocks, and write the m verification data shards corresponding to the target data one-to-one into the m selected storage blocks.

[0059] In addition, during the process of selecting storage blocks for the k original data shards and m verification data shards corresponding to the target data mentioned above, the selection can be made according to the load balancing mechanism to keep the remaining capacities of each SSD in the first storage pool balanced. Refer to Figure 4 , when selecting storage blocks according to the load balancing mechanism, it can make the storage blocks dedicated to storing verification data shards be evenly distributed in each storage medium included in the first storage pool (refer to the dark blk shown in Figure 4 , where blk refers to the storage block). Of course, the storage blocks used to store original data shards are also evenly distributed in each storage medium included in the first storage pool, and the remaining capacities of each storage medium in the first storage pool are also kept balanced (refer toFigure 4 The white blk) in . This can avoid problems such as the premature exhaustion of some storage media in the first storage pool, which increases the probability of failure in selecting storage blocks, thus effectively ensuring the storage performance of the storage system.

[0060] Furthermore, in this embodiment, during the process of selecting k + m storage blocks for the target data, in addition to following the aforementioned load balancing mechanism, a fault domain mechanism can also be introduced to ensure that the selected k + m storage blocks are not in the same fault domain. Among them, a fault domain is a set of related hardware or software components concentrated in the same area or node in a distributed system to improve the reliability and fault tolerance of the system. A fault domain is usually composed of components sharing the same resources, network connections, or power supplies. The establishment of a fault domain can help the system reduce the impact range of faults and improve the availability of the system when a fault occurs. In this embodiment, the k + m storage blocks selected for the target data can be made to be in different fault domains to avoid the problem that the target data cannot be restored due to the simultaneous failure of the k + m storage blocks.

[0061] As mentioned above, after the remaining capacity of the first storage pool is first lower than the specified threshold, the first storage pool will enter the state of rejecting the storage of verification data. In this case, this embodiment also proposes a further optimization scheme:

[0062] During the period when the first storage pool is not in the state of rejecting the storage of verification data, if it is monitored that the remaining capacity of the first storage pool is lower than the specified threshold, the verification data slices stored in the first storage pool are migrated to the second storage pool to free up storage space in the first storage pool for storing the subsequent original data slices generated in the storage system. After the migration of the verification data slices is completed, the first storage pool can be marked as being in the state of rejecting the storage of verification data.

[0063] Figure 5 It is a logical schematic diagram for migrating the verification data slices in the first storage pool provided by an exemplary embodiment of this application. Refer to Figure 5 , following the concept of using storage blocks as the management unit in this embodiment, the data in the storage blocks in the first storage pool dedicated to storing verification data slices can be copied to the second storage pool; after the copying is completed, an erasure operation is performed on the storage blocks used to store the verification data slices to free up these storage blocks (refer to the blk with a hatched background shown in Figure 5 ).

[0064] The erase operation may cause read / write suspension. In this embodiment, the unit of erasure is the storage block. Therefore, the read / write suspension only affects the last management unit of the storage block. For example, for an SSD, the erase operation only affects the plane layer, which can effectively reduce the range of the affected storage blocks. In addition, in this embodiment, the data replication operation can be performed in parallel to improve the migration efficiency of the verification data shards.

[0065] In an alternative migration implementation solution: the storage server can search for the m storage blocks where the corresponding m verification data shards are located for the target data write request that has completed the response; select m storage address spaces from the second storage pool; and copy the verification data shards in the found m storage blocks one-to-one to the selected m storage address spaces in the second storage pool.

[0066] The foregoing Figure 3 shows the relevant logic of this alternative migration implementation solution. Refer to Figure 3 , in this migration implementation solution, the replication range of each replication operation is the verification data shards involved in a single data write request that has completed the response. Here, having completed the response can be understood as that the verification data shards corresponding to the data requested to be written in the data write request have been written into the first storage pool. In this way, each replication operation will involve the m verification data shards corresponding to the foregoing target data write request. The storage server can find the m storage blocks where these m verification data shards are located, read out these m verification data shards from them, and copy them one-to-one to the m storage address spaces selected from the second storage pool. Among them, preferably, during the process of selecting the m storage address spaces, the load balancing mechanism, fault domain and other mechanisms can also be followed in the second storage pool to ensure the storage performance of the second storage pool.

[0067] In this alternative migration implementation solution, each storage server can be responsible for the migration work of the verification data shards involved in its own data write requests that have completed the response. Of course, it can also be the responsibility of a specified part of the storage servers to be responsible for the migration work of the verification data shards, which is not limited here. In addition, the migration operations of the verification data shards for different data write requests can be executed in parallel. In practical applications, the parallelism of the migration operations can be set as needed and dynamically adjusted to avoid affecting the data read / write performance on the storage server. Refer to Figure 5 , after replication, all the verification data shards involved in the data write requests that have completed the response will be copied to the second storage pool.

[0068] After all the data in the flash card dedicated to storing parity data shards in the first storage pool is copied to the second storage pool, an erase operation can be performed on the flash card to free up the flash card. In practical applications, the erase operation can be executed in parallel, can be executed immediately after a single flash card completes the copying, or can be executed uniformly after all flash cards complete the copying. This embodiment does not limit the execution timing of the erase operation. The flash card after erasure will be put back into the first storage pool to continue to undertake the subsequent storage work of the original data shards.

[0069] It should be noted that the above migration implementation solution provided for the first case is only exemplary, and this embodiment is not limited thereto. For example, the copying of parity data shards may not be carried out in units of data write requests that have completed responses, but in units of storage blocks. In this example, corresponding storage media need to be selected in the second storage pool for each storage block dedicated to storing parity data shards and copied one by one to ensure the storage position relationship between the parity data shards. Moreover, the file storage directory originally for the parity data shards in the first storage pool also needs to be copied to the second storage pool for the second storage pool to record, so as to ensure that the required parity data shards can be correctly found based on the file storage directory in the second storage pool later. No more examples of implementation solutions are given here.

[0070] In summary, in the first case mentioned above, when the remaining capacity of the first storage pool is sufficient, the first storage pool can be used to store the original data shards and parity data shards generated in the storage system. In this way, the read and write operations for the original data shards and parity data shards only occur in the first storage pool, which can effectively ensure the read and write efficiency of these two types of data shards, and further reduce the write latency. After it is found that the remaining capacity in the first storage pool is insufficient, the first storage pool is marked as a state that rejects storing parity data, and the parity data shards originally stored in the first storage pool are migrated to the second storage pool to free up some storage blocks in the first storage pool. Moreover, after that, the first storage pool will only be used to store the original data shards to ensure the response efficiency of data read requests in this embodiment. Since the erasure is in units of storage blocks, the data read and write impact range caused by the erasure will be smaller, which can reduce the impact on data read and write performance caused by the erase operation. In addition, since a load balancing mechanism is adopted in the writing process of the original data shards and parity data shards, after the parity data shards are copied to the second storage pool and the corresponding storage blocks are erased, the remaining capacities of the various storage media included in the first storage pool are still close to each other, and no rebalancing needs to be performed, saving the power consumption, throughput and other overheads during rebalancing.

[0071] The following continues to elaborate in detail on the data storage process in the second case mentioned above:

[0072] Figure 6 Schematic diagram of data storage logic when a first storage pool enters a state of rejecting storage of verification data provided by an exemplary embodiment of the present application. Refer to Figure 6 , after the first storage pool has been in a state of rejecting storage of verification data, the original data shards corresponding to the data write request ( Figure 6 shown as EC user in Figure 6 ) are default written into the first storage pool, and the corresponding verification data shards (

[0073] shown as EC parity in Figure 6 ) are written into the second storage pool. That is, the first storage pool will no longer be used for storing verification data shards. This can enable the storage space of the limited first storage pool to be fully used for storing original data shards, so that all data read requests received in the storage system can be read and responded based on the first storage pool to ensure the response efficiency for data read requests.

[0074] In summary, in this embodiment, a storage system that can adapt to the requirements of large capacity, low latency, low cost, and high density such as data lakes can be provided, and stable and excellent data read and write latency can be provided. This storage system can match the throughput requirements of data lakes and the like, and specifically develop firmware to finely manage the media. The management unit is designed as a storage block, which can effectively reduce the system power consumption, reduce the performance impact caused by data erasure, improve the flexibility of capacity scheduling, realize uniform data placement, and then build a horizontally scalable, strongly data-consistent, and highly available storage system. In the storage system of this embodiment, high-density, large-capacity, and low-cost flash media is adopted. At the same time, a hybrid storage that combines multiple performance-level storage pools based on capacity management is designed to further reduce costs. The first storage pool with better performance stores the original data shards, while the second storage pool with lower performance stores the parity data shards. By reusing the characteristic of uniform data placement in the storage system, after the parity data shards are copied to the second storage pool and the corresponding storage blocks are erased, the remaining capacities of the storage media included in the first storage pool are used up evenly, and there is no need to perform rebalancing, saving the overhead of power consumption, throughput, etc. during rebalancing. When the read is normal, both the read and write performance depend on the first storage pool, narrowing the distribution of data read and write latency; when the read is incorrect, the second storage pool is enabled to read the parity data shards, ensuring storage high availability and data consistency.

[0075] Figure 7 FIG. 4 is a schematic flowchart of a data storage method provided for another exemplary embodiment of the present application. This method can be executed by a data storage management component, which can be implemented as software, hardware, or a combination of software and hardware, and this data storage management component can be integrated in a storage server. In this embodiment, the storage system includes multiple storage servers, and a single storage server can be equipped with one or more performance-level storage media to form multiple performance-level storage pools. Refer to Figure 7 , for any one storage server in the storage system, the method includes:

[0076] Step 700: When a data write request is received, perform erasure code encoding on the target data to be written to generate the original data shards and parity data shards corresponding to the target data;

[0077] Step 701: Write the original data shards into the first storage pool;

[0078] Step 702: Write the parity data shards into the second storage pool, and the performance of the first storage pool is better than that of the second storage pool.

[0079] In an optional embodiment, the method may further include:

[0080] Upon receiving a data read request, read the required original data shards from the first storage pool to restore the data required by the data read request.

[0081] In an alternative embodiment, before step 702, it further includes:

[0082] Determine whether the first storage pool has been in a state of rejecting the storage of verification data;

[0083] If it has been in such a state, execute step 702;

[0084] If not, write the verification data shards into the first storage pool.

[0085] In an alternative embodiment, a single storage medium in the first storage pool includes at least one storage block. When not in the state of rejecting the storage of verification data, some storage blocks in the first storage pool are dedicated to storing verification data shards. Writing the verification data shards into the first storage pool includes:

[0086] If the number of verification data shards corresponding to the target data is m, select m storage blocks dedicated to storing verification data shards from the first storage pool;

[0087] Write the m verification data shards corresponding to the target data one-to-one into the selected m storage blocks dedicated to storing verification data shards.

[0088] In an alternative embodiment, the storage blocks dedicated to storing verification data shards in the first storage pool are evenly distributed in each storage medium in the first storage pool.

[0089] In an alternative embodiment, the method further includes:

[0090] During the period when the first storage pool is not in the state of rejecting the storage of verification data, if it is monitored that the remaining capacity of the first storage pool has dropped below a specified threshold, migrate the verification data shards stored in the first storage pool to the second storage pool to free up storage space in the first storage pool for storing the original data shards subsequently generated in the storage system;

[0091] Mark the first storage pool as being in a state of rejecting the storage of verification data.

[0092] In an alternative embodiment, a single storage medium in the first storage pool includes at least one storage block. Migrating the verification data shards stored in the first storage pool to the second storage pool includes:

[0093] Copy the data in the storage blocks dedicated to storing verification data shards in the first storage pool to the second storage pool;

[0094] After the copying is completed, an erasure operation is performed on the storage block for storing the check data shards to free up the storage block.

[0095] In an alternative embodiment, copying the data in the storage block dedicated to storing the check data shards in the first storage pool to the second storage pool includes:

[0096] For a target data write request that has completed the response, find the m storage blocks where its corresponding m check data shards are located;

[0097] Select m storage address spaces from the second storage pool;

[0098] Copy the check data shards in the found m storage blocks one-to-one to the selected m storage address spaces.

[0099] In an alternative embodiment, a single storage medium in the first storage pool includes at least one storage block, and writing the original data shards into the first storage pool includes:

[0100] If the number of original data shards corresponding to the target data is k, then select k target storage blocks from the first storage pool;

[0101] Write the k original data shards one-to-one into the k target storage blocks.

[0102] In an alternative embodiment, selecting k target storage blocks from the first storage pool includes:

[0103] Select the k target storage blocks from the first storage pool according to the load balancing mechanism so that the remaining capacities of the storage media in the first storage pool are balanced.

[0104] In an alternative embodiment, the method may further include:

[0105] If the required original data shards cannot be read from the first storage pool, read the check data shards required by the data read request from the second storage pool to restore the data required by the data read request through the check data shards.

[0106] In an alternative embodiment, one or more performance levels of storage media are installed on a single storage server in the storage system, where the storage media in the first storage pool are solid state drives (SSDs), and the storage media in the second storage pool are hard disk drives (HDDs).

[0107] It should be noted that for the technical details in the above embodiments of the data storage method, reference may be made to the relevant descriptions of a single storage server in the foregoing system embodiments. To save space, they will not be elaborated here, but this should not result in a loss of the protection scope of this application. Additionally, in some of the processes described in the above embodiments and the accompanying drawings, a plurality of operations appear in a specific order. However, it should be clearly understood that these operations may not be executed in the order in which they appear herein or may be executed in parallel. The serial numbers of the operations, such as 701, 702, etc., are only used to distinguish different operations, and the serial numbers themselves do not represent any execution order.

[0108] Figure 8 FIG. is a schematic structural diagram of a storage server provided by another exemplary embodiment of the present application. As Figure 8 shown, this storage server can be any one of the storage servers in the storage system. The storage server may include: a memory 80, a processor 81, and a communication component 82. Additionally, one or more storage media of various performance levels are assembled. Figure 8 The first type of storage medium 83 and the second type of storage medium 84 with different performance levels are shown, and it should be understood that this embodiment is not limited thereto, and more storage media of various performance levels may also be assembled on the storage server. The storage media assembled on each storage server in the storage system form storage pools of various performance levels.

[0109] The processor 81 is coupled to the memory 80, the communication component 82, and the assembled storage media, and is used to execute the computer program in the memory 00 for:

[0110] When receiving a data write request, performing erasure code encoding on the target data to be written to generate the original data shards and parity data shards corresponding to the target data;

[0111] Writing the original data shards into the first storage pool;

[0112] Writing the parity data shards into the second storage pool, where the performance of the first storage pool is superior to that of the second storage pool.

[0113] In an optional embodiment, the processor 81 may also be used for:

[0114] When receiving a data read request, reading the required original data shards from the first storage pool to restore the data required by the data read request.

[0115] In an optional embodiment, before writing the parity data shards into the second storage pool, the processor 81 may also be used to include:

[0116] Determining whether the first storage pool has been in a state of refusing to store parity data;

[0117] If it is already in the [specific state], then perform the operation of writing the fragmented verification data into the second storage pool;

[0118] If it is not in the [specific state], then write the fragmented verification data into the first storage pool.

[0119] In an optional embodiment, a single storage medium in the first storage pool contains at least one storage block. When not in the state of rejecting the storage of verification data, a part of the storage blocks in the first storage pool are dedicated to storing fragmented verification data. When the processor 81 writes the fragmented verification data into the first storage pool, it can be used to:

[0120] If the number of fragmented verification data corresponding to the target data is m, then select m storage blocks dedicated to storing fragmented verification data from the first storage pool;

[0121] Write the m fragmented verification data corresponding to the target data one-to-one into the selected m storage blocks dedicated to storing fragmented verification data.

[0122] In an optional embodiment, the storage blocks dedicated to storing fragmented verification data in the first storage pool are evenly distributed among the various storage media in the first storage pool.

[0123] In an optional embodiment, the processor 81 can also be used to:

[0124] During the period when the first storage pool is not in the state of rejecting the storage of verification data, if it is monitored that the remaining capacity of the first storage pool has dropped below the specified threshold, then migrate the fragmented verification data stored in the first storage pool to the second storage pool to free up storage space in the first storage pool for storing the original data fragments subsequently generated in the storage system;

[0125] Mark the first storage pool as being in the state of rejecting the storage of verification data.

[0126] In an optional embodiment, a single storage medium in the first storage pool contains at least one storage block. When the processor 81 migrates the fragmented verification data stored in the first storage pool to the second storage pool, it can be used to:

[0127] Copy the data in the storage blocks dedicated to storing fragmented verification data in the first storage pool to the second storage pool;

[0128] After the copying is completed, perform an erasure operation on the storage blocks used for storing fragmented verification data to free up the storage blocks.

[0129] In an optional embodiment, when the processor 81 copies the data in the storage block dedicated to storing the verification data slice in the first storage pool to the second storage pool, it can be used to:

[0130] For the target data write request that has completed the response, find the m storage blocks where the corresponding m verification data shards are located;

[0131] Selecting m storage address spaces from the second storage pool;

[0132] The check data slices in the m storage blocks found are copied one-to-one to the m selected storage address spaces.

[0133] In an optional embodiment, the single storage medium in the first storage pool includes at least one storage block, and the processor 81 may be configured to:

[0134] If the number of original data shards corresponding to the target data is k, then k target storage blocks are selected from the first storage pool;

[0135] The k original data slices are written one-to-one into the k target storage blocks.

[0136] In an optional embodiment, when the processor 81 selects k target storage blocks from the first storage pool, it may be configured to:

[0137] According to the load balancing mechanism, the k target storage blocks are selected from the first storage pool to keep the remaining capacity of each storage medium in the first storage pool balanced.

[0138] In an optional embodiment, the processor 81 may also be configured to:

[0139] If the required original data slice cannot be read from the first storage pool, the verification data slice required for the data read request is read from the second storage pool to restore the data required for the data read request through the verification data slice.

[0140] In an optional embodiment, a single storage server in the storage system is equipped with storage media of one or more performance levels, wherein the storage media in the first storage pool are solid-state drives SSDs, and the storage media in the second storage pool are mechanical hard drives HDDs.

[0141] Further, if Figure 8 As shown, the storage server also includes: a power supply component 85 and other components. Figure 8 Only some components are shown schematically, which does not mean that the storage server only includes Figure 8 Components shown.

[0142] It should be noted that for the technical details in the above embodiments of the storage server, reference may be made to the relevant descriptions of the storage server in the foregoing system embodiments. To save space, they will not be elaborated here, but this should not cause loss of the protection scope of this application.

[0143] Correspondingly, an embodiment of this application further provides a computer-readable storage medium storing a computer program, and when the computer program is executed, it can implement the steps executed in the above method embodiments.

[0144] The above Figure 8 The memory is used to store a computer program and can be configured to store various other data to support operations on the computing platform. Examples of such data include instructions for any application or method for operating on the computing platform, contact data, phone book data, messages, pictures, videos, etc. The memory can be implemented by any type of volatile or non-volatile storage device or a combination thereof, such as static random access memory (SRAM), electrically erasable programmable read-only memory (EEPROM), erasable programmable read-only memory (EPROM), programmable read-only memory (PROM), read-only memory (ROM), magnetic memory, flash memory, magnetic disk or optical disk.

[0145] The above Figure 8 The communication component is configured to facilitate communication between the device where the communication component is located and other devices in a wired or wireless manner. The device where the communication component is located can access a wireless network based on communication standards, such as WiFi, 2G, 3G, 4G / LTE, 5G and other mobile communication networks, or a combination thereof. In an exemplary embodiment, the communication component receives a broadcast signal or broadcast-related information from an external broadcast management system via a broadcast channel. In an exemplary embodiment, the communication component further includes a near field communication (NFC) module to facilitate short-range communication. For example, the NFC module can be implemented based on radio frequency identification (RFID) technology, infrared data association (IrDA) technology, ultra-wideband (UWB) technology, Bluetooth (BT) technology and other technologies.

[0146] The above Figure 8 The power supply component provides power for various components of the device where the power supply component is located. The power supply component can include a power management system, one or more power supplies, and other components associated with generating, managing, and distributing power for the device where the power supply component is located.

[0147] Accordingly, the present application may take the form of an entirely hardware embodiment, an entirely software embodiment, or an embodiment combining software and hardware aspects. Moreover, the present application may take the form of a computer program product implemented on one or more computer-usable storage media (including but not limited to disk storage, CD-ROM, optical storage, etc.) that contain computer-usable program code.

[0148] The present application is described with reference to the flowcharts and / or block diagrams of methods, apparatuses (systems), and computer program products according to embodiments of the present application. It should be understood that each flow and / or block in the flowcharts and / or block diagrams, as well as the combination of flows and / or blocks in the flowcharts and / or block diagrams, can be realized by computer program instructions. These computer program instructions can be provided to the processor of a general-purpose computer, a special-purpose computer, an embedded processor, or other programmable data processing devices to generate a machine, such that the instructions executed by the processor of the computer or other programmable data processing devices generate means for implementing the specified functions in Figure 1 one flow or multiple flows and / or blocks Figure 1 one block or multiple blocks.

[0149] These computer program instructions can also be stored in a computer-readable memory that can direct a computer or other programmable data processing devices to work in a specific manner, such that the instructions stored in the computer-readable memory generate a manufactured article including instruction means that implement the specified functions in Figure 1 one flow or multiple flows and / or blocks Figure 1 one block or multiple blocks.

[0150] These computer program instructions can also be loaded onto a computer or other programmable data processing devices, such that a series of operation steps are executed on the computer or other programmable devices to generate a computer-implemented process, and thus the instructions executed on the computer or other programmable devices provide steps for implementing the specified functions in Figure 1 one flow or multiple flows and / or blocks Figure 1 one block or multiple blocks.

[0151] It should also be noted that the term "comprising", "including" or any other variation thereof is intended to cover non-exclusive inclusion, such that a process, method, commodity or device comprising a series of elements not only includes those elements but also includes other elements not expressly listed, or elements inherent to such process, method, commodity or device. Without further limitation, an element defined by the statement "comprising an..." does not exclude the presence of additional identical elements in the process, method, commodity or device comprising the element.

[0152] It should be noted that the user information (including but not limited to user device information, user personal information, etc.) and data (including but not limited to data for analysis, stored data, displayed data, etc.) involved in this application are all information and data that have been authorized by the user or fully authorized by all parties. Moreover, the collection, use, and processing of relevant data need to comply with the relevant laws, regulations, and standards of relevant countries and regions, and corresponding operation entrances are provided for users to choose to authorize or reject.

[0153] The above are only the embodiments of the present application and are not used to limit the present application. For those skilled in the art, various changes and modifications can be made to the present application. Any modification, equivalent replacement, improvement, etc. made within the spirit and principle of the present application shall be included within the protection scope of the present application.

Claims

1. A data storage method, characterized in that, The storage media installed on each storage server in the storage system form storage pools of multiple performance levels. For any storage server in the storage system, the method includes: When a data write request is received, perform erasure code encoding on the target data to be written, so as to generate the original data shards and parity data shards corresponding to the target data; Write the original data shards into the first storage pool; Write the parity data shards into the second storage pool, where the performance of the first storage pool is better than that of the second storage pool.

2. The method according to claim 1, characterized in that, It further includes: When a data read request is received, read the required original data shards from the first storage pool to restore the data required by the data read request.

3. The method according to claim 1, characterized in that, Before writing the parity data shards into the second storage pool, it further includes: Judge whether the first storage pool has been in a state of rejecting to store parity data; If it has been in such a state, perform the operation of writing the parity data shards into the second storage pool; If it has not been in such a state, write the parity data shards into the first storage pool.

4. The method according to claim 3, characterized in that, A single storage medium in the first storage pool includes at least one storage block. When not in the state of rejecting to store parity data, some storage blocks in the first storage pool are dedicated to storing parity data shards. Writing the parity data shards into the first storage pool includes: If the number of parity data shards corresponding to the target data is m, select m storage blocks dedicated to storing parity data shards from the first storage pool; Write the m parity data shards corresponding to the target data one-to-one into the selected m storage blocks dedicated to storing parity data shards.

5. The method according to claim 4, characterized in that, The storage blocks dedicated to storing parity data shards in the first storage pool are evenly distributed in each storage medium in the first storage pool.

6. The method according to claim 3, characterized in that, The method further includes: During the period when the first storage pool is not in the state of rejecting to store parity data, if it is monitored that the remaining capacity of the first storage pool has dropped below a specified threshold, migrate the parity data shards stored in the first storage pool to the second storage pool to free up storage space in the first storage pool for storing the original data shards subsequently generated in the storage system; Mark the first storage pool as being in a state of rejecting to store parity data.

7. The method according to claim 6, characterized in that, A single storage medium in the first storage pool includes at least one storage block. Migrating the parity data shards stored in the first storage pool to the second storage pool includes: Copy the data in the storage blocks dedicated to storing parity data shards in the first storage pool to the second storage pool; After the copying is completed, perform an erasure operation on the storage blocks used to store parity data shards to free up storage blocks.

8. The method according to claim 7, characterized in that, Copying the data in the storage blocks dedicated to storing parity data shards in the first storage pool to the second storage pool includes: For the target data write requests that have completed responses, find the m storage blocks where their corresponding m parity data shards are located; Select m storage address spaces from the second storage pool; Copy the parity data slices in the found m storage blocks one-to-one to the selected m storage address spaces.

9. The method according to claim 1, characterized in that, A single storage medium in the first storage pool contains at least one storage block. Writing the original data slices into the first storage pool includes: If the number of original data slices corresponding to the target data is k, select k target storage blocks from the first storage pool; Write the k original data slices one-to-one into the k target storage blocks.

10. The method according to claim 9, characterized in that, Selecting k target storage blocks from the first storage pool includes: Select the k target storage blocks from the first storage pool according to the load balancing mechanism, so that the remaining capacities of the storage media in the first storage pool are balanced.

11. The method according to claim 2, characterized in that, It also includes: If the required original data slices cannot be read from the first storage pool, read the parity data slices required for the data read request from the second storage pool to restore the data required for the data read request through the parity data slices.

12. According to the method described in claim 1, wherein, One or more performance-level storage media are installed on a single storage server in the storage system. Among them, the storage media in the first storage pool use solid-state drives (SSDs), and the storage media in the second storage pool use hard disk drives (HDDs).

13. A storage server, wherein, It includes a memory, a processor, and a communication component, and is equipped with one or more performance-level storage media; The memory is used to store one or more computer instructions; The processor is coupled to the memory, the communication component, and the installed storage media, and is used to execute the one or more computer instructions to execute the data storage method according to any one of claims 1-12.

14. A data storage system, wherein, It includes multiple storage servers. One or more performance-level storage media are installed in a single storage server to form multiple performance-level storage pools. Any one of the storage servers is used to execute the data storage method according to any one of claims 1-12.

15. A computer-readable storage medium storing computer instructions, wherein, When the computer instructions are executed by one or more processors, the one or more processors are caused to execute the data storage method according to any one of claims 1-12.