Data storage method, device and system, and storage medium
By using multiple performance levels of storage media and erasure coding encoding technologies in the data lake storage system, data read and write delay and write amplification problems in the data lake storage system are solved, and more efficient storage performance and data consistency are achieved.
Patent Information
- Application Number
- PCT/IB2024/061507
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2023-12-19
- Filing Date
- 2024-11-18
- Publication Date
- 2025-06-26
AI Technical Summary
Existing storage systems such as data lakes face the problem of data reading and writing delays when processing large amounts of data. Due to the existence of the transit link, it is easy to cause write amplification problems and affect storage performance.
By assembling storage media of different performance levels in the storage system, a storage pool of multiple performance levels is formed, and when a data write request is received, the data is erased and encoded, the original data shard is written into a storage pool with high performance, and the verification data shard is written into a storage pool with low performance.
It effectively reduces the write amplification problem caused by the relay link, reduces the write delay, and supports data writing by utilizing a better performance storage pool, ensuring data consistency and further reducing write delay.
Smart Images

Figure IB2024061507_26062025_PF_FP_ABST
Abstract
Description
[0001]Data Storage Method, Device, System, and Storage Medium Cross-Reference This disclosure claims priority to Chinese patent application number 202311756738.6, filed with the China Patent Office on December 19, 2023, entitled "A Data Storage Method, Device, System, and Storage Medium," the entire contents of which are incorporated herein by reference. Technical Field This disclosure relates to the field of data storage technology, and more particularly to a data storage method, device, system, and storage medium. Background: To meet the needs of data analysis, data warehouses have been widely built to collect, aggregate, and consolidate data from various sources for subsequent analysis, querying, and decision-making. Driven by the tide of informatization and digitization, the total amount of data generated globally is growing rapidly, and the types of data are diverse and complex. Data warehouses have evolved into data lakes, gathering massive amounts of informationized data. Given the enormous amount of data and its continued growth, reducing the data read / write latency of storage systems such as data lakes has become an urgent issue. SUMMARY OF THE INVENTION Various aspects of the present disclosure provide a data storage method, device, system, and storage medium for improving the storage performance of a storage system. According to a first aspect of an embodiment of the present disclosure, a data storage method is provided. 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: upon receiving a data write request, performing erasure coding on target data requested by the data write request to generate original data shards and check data shards corresponding to the target data; writing the original data shards into a first storage pool; and writing the check data shards into a second storage pool, wherein the performance of the first storage pool is higher than that of the second storage pool. According to a second aspect of an embodiment of the present disclosure, a data storage device is provided. Storage media installed on storage servers in a storage system form storage pools of multiple performance levels. For any storage server in the storage system, the device includes: an encoding component configured to, upon receiving a data write request, perform erasure coding on target data requested to be written by the data write request to generate original data shards and verification data shards corresponding to the target data; a first writing component configured to write the original data shards into a first storage pool; and a second writing component configured to write the verification data shards into a second storage pool, wherein the performance of the first storage pool is higher than that of the second storage pool.According to a third aspect of an embodiment of the present disclosure, a storage server is provided, comprising a memory, a processor, and a communication component, and equipped with storage media of one or more performance levels. The memory is configured to store one or more computer instructions. The processor is coupled to the memory, the communication component, and the storage media, and configured to execute the one or more computer instructions to perform the aforementioned data storage method. According to a fourth aspect of an embodiment of the present disclosure, a data storage system is provided, comprising multiple storage servers, each of which is configured to comprise storage pools of multiple performance levels, wherein any one of the storage servers is configured to perform the aforementioned data storage method. According to a fifth aspect of an embodiment of the present disclosure, a computer-readable storage medium is provided that stores computer instructions. When the computer instructions are executed by one or more processors, the computer instructions cause the one or more processors to perform the aforementioned data storage method. According to a sixth aspect of an embodiment of the present disclosure, a computer program product is provided, comprising a computer program that, when executed by a processor, implements the aforementioned data storage method. According to a seventh aspect of an embodiment of the present disclosure, a computer program product is provided, comprising a non-volatile computer-readable storage medium that stores a computer program. When executed by a processor, the computer program implements the aforementioned data storage method. According to an eighth aspect of an embodiment of the present disclosure, a computer program is provided. When executed by a processor, the computer program implements the aforementioned data storage method. According to a ninth aspect of an embodiment of the present disclosure, a computing device is provided, comprising a memory and a processor; the memory is configured to store computer-executable instructions, and the processor is configured to execute the computer-executable instructions. When executed by the processor, the computer-executable instructions implement the aforementioned data storage method. In an embodiment of the present disclosure, a storage system is constructed using a storage server equipped with storage media of one or more performance levels. Based on this, the storage system can be divided into multiple storage pools of different performance levels. Upon receiving a data write request, any storage server can perform erasure coding on the requested target data and write the resulting original data shards and check data shards to storage pools of different performance levels. This allows a client to directly initiate a data write request to a storage server without requiring any intermediate links, effectively reducing write amplification issues caused by intermediate links and thereby effectively lowering write latency. Furthermore, it is proposed to utilize a storage pool with higher performance to support the writing of the original data shards corresponding to the data write request, which not only ensures data consistency but also further reduces write latency.BRIEF DESCRIPTION OF THE DRAWINGS The accompanying drawings described herein are intended to provide a further understanding of the present disclosure and constitute a part of the present disclosure. The exemplary embodiments of the present disclosure and their descriptions are intended to explain the present disclosure and are not intended to unduly limit the present disclosure. In the accompanying drawings: FIG1 is a schematic diagram of the structure of a storage system provided by an exemplary embodiment of the present disclosure; FIG2 is a schematic diagram of the internal structure of a storage server provided by an exemplary embodiment of the present disclosure; FIG3 is a logical diagram of an exemplary data storage solution provided by an exemplary embodiment of the present disclosure; FIG4 is a logical diagram of data storage in an SSD pool provided by an exemplary embodiment of the present disclosure before entering a state where parity data storage is rejected; FIG5 is a logical diagram of migrating parity data shards in an SSD pool provided by an exemplary embodiment of the present disclosure; FIG6 is a logical diagram of data storage in an SSD pool provided by an exemplary embodiment of the present disclosure after entering a state where parity data storage is rejected; FIG7 is a flow diagram of a data storage method provided by another exemplary embodiment of the present disclosure; FIG8 is a schematic diagram of a data storage device provided by yet another exemplary embodiment of the present disclosure; FIG9 is a schematic diagram of the structure of a storage server provided by yet another exemplary embodiment of the present disclosure; and FIG10 is a schematic diagram of a processor provided by yet another exemplary embodiment of the present disclosure. To further clarify the objectives, technical solutions, and advantages of this disclosure, the following will provide a clear and complete description of the technical solutions of this disclosure in conjunction with specific embodiments and corresponding figures. It should be understood that the described embodiments represent only a portion of the embodiments of this disclosure, and are not exhaustive. All other embodiments derived by persons of ordinary skill in the art based on the embodiments of this disclosure without inventive effort are within the scope of protection of this disclosure. As described in the background, the requirements for data read and write latency in storage systems such as data warehouses and data lakes are currently increasing. Several solutions have been proposed to reduce data read and write latency in storage systems. However, to ensure data consistency in storage systems, most of these solutions suffer from issues such as write amplification or high read overhead, resulting in unsatisfactory improvements in data read / write latency. Therefore, this embodiment provides a new data storage method, device, and system that can effectively improve the storage performance of a storage system while ensuring data consistency. The following detailed description of the technical solutions provided by various embodiments of this disclosure is provided in conjunction with the accompanying figures. Figure 1 is a schematic diagram of the storage system provided by an exemplary embodiment of this disclosure. As shown in FIG1 , the system includes multiple storage servers, and a single storage server may be equipped with storage media of one or more performance levels.Performance levels can be defined based on read / write rates, so that storage media of different performance levels can provide different read / write rates. In this embodiment, performance level differentiation can be achieved by assembling storage media of different product categories in the storage system. Of course, performance level differentiation can also be achieved by assembling storage media of the same product category but with different performance levels. This embodiment does not limit the implementation method of performance level differentiation. In addition, in this embodiment, a single storage server can be equipped with storage media of only one performance level or multiple performance levels. In this embodiment, there is no limit on the number of performance levels of storage media installed on a single storage server; it only needs to ensure that storage media of multiple performance levels are present from a global perspective of the storage system. In some optional solutions, the storage media installed in the storage system may include, but are not limited to, solid-state drives (SSDs) and hard disks (HDDs). A solid-state drive (SSD), also known as a solid-state 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 disk drive (HDD), is a traditional, common hard disk. It primarily consists of several components: a platter, a magnetic head, a platter spindle and control motor, a magnetic head controller, a data converter, an interface, and a cache. It should be understood that the data read / write rates provided by an SSD are typically much higher than those provided by an HDD. Of course, in other designs, the storage media installed in the storage system may also be a combination of an SSD and tape storage, or a combination of SSDs with different performance levels. As mentioned above, this embodiment does not limit the implementation of differentiated performance levels, and further examples are not provided here. Furthermore, this embodiment does not limit the number of performance levels of the storage media installed in the storage system. That is, the storage system may be equipped with storage media of two or more performance levels. In this embodiment, storage media of different performance levels may be selected as needed. The storage performance of a storage system generally involves both write and read performance. The following describes the storage system provided by this embodiment in detail to demonstrate improvements in write and read performance. First, the processing scheme of the storage server in this embodiment after receiving a data write request is described.Referring to Figure 1 , a user of a storage system can initiate a data write request to the storage system. This embodiment does not limit the scheduling mechanism employed by the storage system after receiving a data write request. For example, a load balancing mechanism may be employed. After scheduling, the data write request will directly reach a storage server in the storage system. In other words, in this embodiment, a user-initiated data write request will directly reach a storage server in the storage system without any intermediate link. 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, not the data after write amplification. Write amplification can be understood as re-encoding the original data or creating multiple copies. Some existing solutions typically involve intermediate links. To ensure data consistency, each intermediate link requires a round of write amplification, which not only causes significant latency but also significantly increases the storage cost of the data once it reaches the storage system. This embodiment, however, eliminates the intermediate link, effectively avoiding write amplification issues that occur between the time a user initiates a data write request and the time the storage server receives it, thereby effectively reducing write latency during this period. Continuing with Figure 1 , in this embodiment, storage media of multiple performance levels installed in the storage system can be organized into storage pools of multiple performance levels. For example, if multiple storage servers in the storage system are equipped with SSDs and HDDs, the SSDs installed on each of the multiple storage servers in the storage system can form an SSD pool, and the HDDs installed 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 types of storage pools with different performance levels. Similarly, in this embodiment, the number of storage pools can be two or more. In this embodiment, storage pools of different performance levels can be used as needed. It is also worth noting that, in this embodiment, the storage media contained in a single storage pool can optionally have a uniform performance level. Of course, this embodiment does not limit this. A single storage pool can also contain storage media of multiple performance levels. In this case, non-overlapping storage media performance level ranges can be set for each storage pool to ensure performance differentiation between the storage pools. This embodiment does not specifically limit the process of dividing storage media into storage pools. On this basis, this embodiment proposes a data storage solution applicable to each storage server in a storage system. In actual applications, a data storage management component can be deployed on each storage server in the storage system to implement this data storage method.For ease of description, the following description of the data storage solution will be further expanded from the perspective of a storage server in a storage system. As mentioned above, a user-initiated data write request can be directly dispatched to a storage server in the storage system. Based on this, in this embodiment, upon receiving a data write request, the storage server can parse the requested target data from it. Figure 2 is a schematic diagram of the internal structure of a storage server according to an exemplary embodiment of the present disclosure. Referring to Figure 2, in this embodiment, a processor in the storage server (e.g., the CPU in Figure 2) can be connected to a network interface card (NIC) via a PCIe bus channel. The storage server can use the NIC to receive data write requests, ensuring that the data write requests reach the processor. The aforementioned data storage management component in this embodiment runs on the storage server's processor. Thus, the storage server's processor, specifically the data storage management component running therein, can implement the data storage solution provided in this embodiment. Based on this, referring to Figure 2, upon receiving a data write request, the storage server's processor can perform erasure coding on the requested target data to generate original data fragments and check data fragments corresponding to the target data. Erasure Coding (EC) is a data protection mechanism. The basic principle of this mechanism is to divide the data to be stored into k original data shards, and then add m parity data shards to these k original data shards. Based on this, any k data shards from the k+m total can be used to restore the k original data shards, and thus the original data. A detailed description of the erasure coding mechanism is omitted here. In this embodiment, by erasure coding the target data and storing it based on the resulting original data shards and parity data shards, data consistency of the target data in the storage system can be effectively guaranteed. Continuing with Figure 1 , in this embodiment, after completing erasure coding, the storage server can write the original data shards corresponding to the target data into a first storage pool (composed of SSDs in the example in Figure 1 ) and write the parity data shards corresponding to the target data into a second storage pool (composed of HDDs in the example in Figure 1 ). The first storage pool has higher performance than the second storage pool. In addition to reducing the write latency caused by the transfer link mentioned above, this approach can further reduce write latency by using the higher-performance storage pool to support the writing of the original data shards.For example, storage servers are typically equipped with only one type of storage medium, HDDs, which means they can only support data writes based on relatively low-performance HDDs. However, in this embodiment, SSDs can be introduced into the storage server. This allows the SSDs to support writing of original data slices, rather than relying on HDDs. This effectively reduces the write latency of original data slices, thereby reducing overall write latency. In this embodiment, a single storage medium in the first storage pool can be communicatively connected to the processor in the storage server in which it resides via a bus. Referring to Figure 2, in one exemplary solution, the first storage pool can be an SSD pool. Based on this, a single storage server can be equipped with one or more SSDs. The processor in the storage server can connect to SSDs via multiple PCIe channels via a PCIe switch. Optionally, in this exemplary solution, the storage server can adopt a high-density design, leveraging the advantages of SSDs' low power consumption and compact size to significantly increase storage capacity density per unit space. Furthermore, 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. As shown in Figure 2, in this embodiment, a data transmission channel is provided between the storage media in the first storage pool and the processor in the storage server where it resides, thus enabling the processor to write data to this type of storage media. It is worth noting that in this embodiment, when writing raw data shards to the first storage pool, the storage server supports selecting a write location for the raw data shards based on the first storage pool's global perspective, rather than being limited to writing to its own storage media. Therefore, raw data shards generated by a storage server for target data may need to be written to storage media installed in other storage servers. This embodiment supports such cross-storage server writes. Referring to Figure 2, the processors in the storage servers are connected to network cards via PCIe bus channels. Therefore, raw data shards that need to be written across storage servers can be transferred between the storage servers via their respective network cards, thereby supporting cross-storage server writes of raw data shards. In practical applications, direct memory access (DMA) or other methods can be used to implement cross-storage server raw data shard write operations to reduce write latency. This embodiment is not limited to this. In this embodiment, a single storage medium in the second storage pool can also be communicatively connected to the processor in the storage server where it is located via a bus.Referring to Figure 2, in one exemplary solution, the second storage pool can be an HDD pool. With continued reference to Figure 2, a single storage server can be equipped with one or more HDDs. The processor in the storage server can connect to the HDDs via multiple PCIe bus channels, converted to SAS channels via an HBA and then expanded via an expander (if needed). Optionally, in this exemplary solution, the storage server can also employ a high-density design. As shown in Figure 2, in this embodiment, data transmission channels are provided between the storage media in the second storage pool and the processor in the storage server in which it resides, thus enabling the processor to write data to such storage media. Similarly, in this embodiment, the write location for the verification data shards can be selected from the global perspective of the second storage pool, rather than being limited to writing to the storage media installed in the second storage pool itself. Similarly, in this embodiment, verification data shards that need to be written across storage servers can be transferred between storage servers via their respective network adapters, thereby supporting the writing of verification data shards across storage servers. In practical applications, direct memory access (DMA) and other methods can be used to implement cross-storage server write operations for verification data shards to reduce write latency, although this embodiment is not limited to this. Furthermore, in this embodiment, optionally, a write success notification can be returned after the original data shard is written to the first storage pool in response to the data write request, without waiting for the completion of the write process for the verification data shard in the second storage pool. This ensures that the write latency in this embodiment roughly includes the network transmission delay caused by transmitting the data write request from the user to the storage server and the delay caused by writing the original data shard to the first storage pool. Because the write speed provided by the first storage pool is much higher than the storage media used for data writes in traditional storage servers, this embodiment can achieve very good write latency. This solution, which returns a write success notification immediately after the original data shard is written, can further reduce the storage system's write latency. The above describes the processing scheme of the storage server after receiving a data write request in this embodiment. The following describes the processing scheme of the storage server after receiving a data read request in this embodiment. Continuing with 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 coding mechanism, the original data can be restored from the original data shards. Moreover, in this embodiment, the original data shards are all stored in the first storage pool.Therefore, for data read requests, the storage server can directly perform read operations based on the first storage pool, reading the original data shards required for the data read request as responses. Some existing solutions for data read requests also rely on multiple transit links to complete read responses. For example, a dedicated cache cluster is set up between the storage system and the user, and data cached in the cache cluster is preferentially used to respond to data read requests. If the cache cluster cannot provide response data, the storage system must be accessed over the network to obtain the required response data. Therefore, each transit link results in a network transmission, which not only increases read bandwidth overhead but also causes additional network latency. This embodiment proposes that the storage server can directly transmit the provided response data to the user, eliminating the transit link. This effectively reduces the number of network transmission rounds required for the storage server to return the response data to the user, thereby effectively reducing read latency during this period. In this embodiment, the storage server can directly transmit the read raw data shards to the user as responses to data read requests. Alternatively, the storage server can restore the original data based on the read raw data shards and transmit the restored data to the user as responses to data read requests. This embodiment does not limit this. Furthermore, since responses to data read requests are entirely based on the first storage pool, excellent read response rates can be achieved. Furthermore, the storage server directly transmits the response data to the user without any intermediate links. Therefore, these two advantages effectively reduce data read latency in this embodiment. As can be seen from the above description of the processing scheme for data write and data read requests, in this embodiment, data read / write performance can be supported based on the first storage pool in the storage system. Because the first storage pool itself can provide sufficiently high read / write rates, this embodiment's data storage solution ensures excellent data read / write latency. Furthermore, in this embodiment, an erasure coding mechanism is employed for data storage, and the second storage pool provides storage capacity for parity data shards. This effectively ensures data consistency in the storage system. Furthermore, the parity data shards stored in the second storage pool can be used to address potential read errors in original data shards in the first storage pool. Specifically, in this embodiment, if the storage server is unable to read the required original data shards from the first storage pool after receiving a data read request, the parity data shards required for the data read request can be read from the second storage pool to restore the data required by the data read request using the parity data shards.That is, only when a read error occurs in an original data shard in the first storage pool is it necessary to read the parity data shard from the second storage pool to ensure that a sufficient number of data shards are available for data restoration in response to the data read request. In summary, in this embodiment, a storage system is constructed using storage servers equipped with storage media of one or more performance levels. Based on this, the storage system can be divided into multiple storage pools of different performance levels. Upon receiving a data write request, any storage server can perform erasure coding on the requested target data and write the resulting original data shards and parity data shards to storage pools of different performance levels. This allows users to directly initiate data write requests to the storage server without any intermediate links, effectively reducing write amplification issues caused by intermediate links and thus significantly reducing write latency. Furthermore, utilizing a higher-performance storage pool to support the writing of the original data shards corresponding to the data write request not only ensures data consistency but also further reduces write latency. Since the original data shards are stored in an SSD pool, read latency can be effectively reduced based on the SSD pool. FIG3 is a logical diagram of an exemplary data storage solution provided by an exemplary embodiment of the present disclosure. Referring to FIG3 , for a single storage server, before writing to the verification data shard corresponding to the target data, it can first determine whether the first storage pool is already in a state that refuses to store verification data. In actual applications, after the storage system is deployed, the first storage pool will not enter a state that refuses to store verification data by default. That is, the first storage pool can support writing to both original data shards and verification data shards by default. Referring to FIG3 , in this embodiment, a capacity statistics component can be deployed in the storage system to calculate the remaining capacity of the first storage pool. This capacity statistics component can monitor whether the remaining capacity of the first storage pool has fallen below a specified threshold. In response to the remaining capacity of the first storage pool falling below the specified threshold, the first storage pool is marked as refusing to store verification data. After the remaining capacity of the first storage pool initially falls below the specified threshold, the first storage pool enters a state that refuses to store verification data. Furthermore, once the first storage pool enters a state of refusing to store verification data, it will not exit this state. This is mainly because the storage space provided by the first storage pool is relatively valuable. In this embodiment, it is desirable to use the storage space of the first storage pool as much as possible to store original data shards to ensure data read and write latency.This embodiment proposes writing the parity data shards into the first storage pool in order to fully utilize the high read and write rates of the first storage pool, given the first storage pool's ample storage capacity, and thus achieve excellent read and write latency for the parity data shards. Furthermore, in this embodiment, a single storage medium in the first storage pool may include at least one storage block. This embodiment proposes setting the management unit of the first storage pool to be a storage block. A storage block may be the storage unit of the storage medium in the first storage pool. Alternatively, a storage block may be the smallest erase unit of the storage medium in the first storage pool. Figure 3 uses an SSD as an example of the storage medium in the first storage pool. For an SSD, its structure, from largest to smallest, is roughly as follows: die - plane - flash block - page - cell, where a flash block is the smallest erase unit in an SSD. Using the smallest erase unit as the management unit for the first storage pool in this embodiment allows for more efficient management of data writing, copying, erasing, and load balancing within the first storage pool, thereby ensuring storage system performance. Here, there are two possible judgment results: the first is that the first storage pool is already in a state where it refuses to store verification data; the second is that the first storage pool is not yet in a state where it refuses to store verification data. The data storage process in the first case is described in detail below. Regarding the first case, in this embodiment, the storage server may also write the verification data shards corresponding to the target data into the first storage pool. That is, 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 is a logical diagram of data storage during a period when the first storage pool has not yet refused to store verification data, according to an exemplary embodiment of the present disclosure. In Figure 4, the first storage pool is exemplified as an SSD pool, and the second storage pool is exemplified as an HDD pool. Referring to Figure 4, if the first storage pool has not yet refused to store verification data, in this embodiment, some storage blocks in the first storage pool may be set to be dedicated to storing verification data shards. That is, in this case, the first storage pool may include storage blocks dedicated to storing original data shards and storage blocks dedicated to storing verification data shards. Of course, it may also include some storage blocks that have not yet been selected and are therefore undefined for storing a specific type of data shard. It can also be understood that in this embodiment, in response to a single storage block being selected, it will only be used to store a single type of data shard, and mixed storage will not be performed.The types of data shards stored in storage blocks can be defined throughout the process of selecting storage blocks for original data shards and verification data shards. Based on this, in response to the target data corresponding to k original data shards and m verification data shards, the storage server can select k+m storage blocks from the first storage pool. The k storage blocks selected for the original data shards may include storage blocks that were initially selected due to other data write requests and were already used to store original data shards, as well as storage blocks that were previously unselected but were initially selected in this data write request. Such storage blocks will be automatically defined as being used to store original data shards. Similarly, the m storage blocks selected for the verification data shards may include storage blocks that were previously selected due to other data write requests and were already used to store verification data shards, as well as storage blocks that were previously unselected but were initially selected in this data write request. Such storage blocks will be automatically defined as being used to store verification data shards. The storage server can write the k original data shards corresponding to the target data one-to-one into the selected k storage blocks, and can also write the m verification data shards corresponding to the target data one-to-one into the selected m storage blocks. Furthermore, during the aforementioned process of selecting storage blocks for the k original data shards and m verification data shards corresponding to the target data, the selection can be performed according to a load balancing mechanism to ensure a balanced remaining capacity across the SSDs in the first storage pool. Referring to Figure 4 , when selecting storage blocks according to the load balancing mechanism, the storage blocks dedicated to storing verification data shards can be evenly distributed across the storage media in the first storage pool (see the dark blocks in Figure 4 , where blocks represent storage blocks). Of course, the storage blocks used to store original data shards are also evenly distributed across the storage media in the first storage pool, and the remaining capacity of each storage medium in the first storage pool is also balanced (see the white blocks in Figure 4 ). This prevents issues such as prematurely writing to some storage media in the first storage pool, which increases the probability of storage block selection failures, thereby effectively ensuring the storage system's storage performance. Furthermore, in this embodiment, in the process of selecting k+m storage blocks for target data, in addition to following the aforementioned load balancing mechanism, a fault domain mechanism may also be introduced to ensure that the selected k+m storage blocks are not in the same fault domain.A fault domain refers to a group of related hardware or software in a distributed system that is centralized in the same area or node to improve system reliability and fault tolerance. A fault domain typically consists of components that share the same resources, network connections, or power supplies. The establishment of a fault domain can help reduce the impact of a fault in the event of a system failure, thereby improving system availability. In this embodiment, the k+m storage blocks selected for the target data can be placed in different fault domains to avoid the problem of simultaneous failure of all k+m storage blocks, which could result in the target data being unrecoverable. As mentioned above, after the remaining capacity of the first storage pool initially falls below a specified threshold, the first storage pool will enter a state where it refuses to store verification data. To address this situation, this embodiment proposes a further optimization solution: while the first storage pool is not yet in a state where it refuses to store verification data, in response to detecting that the remaining capacity of the first storage pool has fallen below a specified threshold, the verification data shards stored in the first storage pool are migrated to the second storage pool, freeing up storage space in the first storage pool for storing subsequent raw data shards generated in the storage system. After the migration of the parity data shards is complete, the first storage pool can be marked as refusing to store parity data. Figure 5 is a logical diagram of migrating parity data shards in a first storage pool, according to an exemplary embodiment of the present disclosure. Referring to Figure 5 , continuing with the concept of using storage blocks as management units in this embodiment, data in storage blocks in the first storage pool dedicated to storing parity data shards can be copied to the second storage pool. After the copy is complete, an erase operation is performed on the storage blocks used to store the parity data shards to free up these storage blocks (see the "blk" with a gradient background in Figure 5 ). The erase operation may cause a read / write pause. In this embodiment, the erase unit is the storage block. Therefore, the read / write pause only affects the last management unit of the storage block. For example, for an SSD, the erase operation only affects the plane layer, effectively reducing the range of affected storage blocks. Furthermore, in this embodiment, the data copy operation can be performed in parallel to improve the migration efficiency of the parity data shards. In an optional migration implementation scheme: the storage server can search for the m storage blocks containing the m verification data shards corresponding to the target data write request for which it has completed the response; select m storage address spaces from the second storage pool; and copy the verification data shards in the m storage blocks found one-to-one to the m selected storage address spaces.FIG3 above illustrates the relevant logic of this optional migration implementation. Referring to FIG3 , in this migration implementation, the replication scope of each copy operation is the parity data shards involved in a single data write request for which a response has been completed. Here, "completed" can be understood as meaning that the parity data shards corresponding to the data requested in the data write request have already been written to the first storage pool. Thus, each copy operation involves m parity data shards corresponding to the aforementioned target data write request. The storage server can locate the m storage blocks where these m parity data shards are located, read these m parity data shards from these blocks, and copy them one-to-one to m storage address spaces selected from the second storage pool. Optionally, during the selection of the m storage address spaces, load balancing mechanisms, fault domains, and other mechanisms can be implemented within the second storage pool to ensure storage performance. In this optional migration implementation, each storage server can be responsible for migrating the parity data shards associated with each data write request it has completed responding to. Of course, designated storage servers can also be responsible for parity data shard migration, which is not limited here. Furthermore, parity data shard migration operations for different data write requests can be performed in parallel. In practical applications, the degree of parallelism of the migration operations can be set and dynamically adjusted as needed to avoid impacting data read and write performance on the storage servers. Referring to Figure 5 , after replication, all parity data shards associated with all completed data write requests will be copied to the second storage pool. After all data on the flash memory card in the first storage pool dedicated to storing parity data shards has been copied to the second storage pool, an erase operation can be performed on the flash memory card to free up the flash memory card. In practical applications, the erase operation can be performed in parallel, either as soon as replication is completed on a single flash memory card or after replication is completed on all flash memory cards. This embodiment does not limit the timing of the erase operation. After erasing, the flash memory card is returned to the first storage pool to continue storing subsequent original data shards. It should be noted that the migration implementation scheme provided above for the first scenario is merely exemplary, and this embodiment is not limited thereto. For example, verification data shards may be copied in units of storage blocks, rather than in units of completed data write requests.In this example, corresponding storage media must be selected in the second storage pool for each storage block dedicated to storing the verification data shards, and a one-to-one replication must be performed to ensure the storage location relationship between the verification data shards. Furthermore, the file storage directory originally designated for the verification data shards in the first storage pool must also be copied to the second storage pool for recording in the second storage pool. This ensures that the required verification data shards can subsequently be correctly found in the second storage pool based on the file storage directory. Further implementation examples are not provided here. In summary, in the first case described above, if the remaining capacity of the first storage pool is sufficient, the first storage pool can be used to store the original data shards and verification data shards generated in the storage system. In this way, read and write operations for the original data shards and verification data shards occur only in the first storage pool, effectively ensuring read and write efficiency for both data shards and further reducing write latency. Upon discovering insufficient remaining capacity in the first storage pool, the first storage pool is marked as refusing to store verification data, and the verification data shards originally stored in the first storage pool are migrated to the second storage pool, freeing up some storage blocks in the first storage pool. Furthermore, the first storage pool will then be used only to store original data shards, ensuring efficient response to data read requests in this embodiment. Because erasures are performed in units of storage blocks, the impact of erasures on data reads and writes is minimized, mitigating the impact on data read and write performance caused by the erase operation. Furthermore, because a load balancing mechanism is employed during the writing of both original data shards and verification data shards, after copying the verification data shards to the second storage pool and erasing the corresponding storage blocks, the remaining capacity of the various storage media within the first storage pool remains similar, eliminating the need for rebalancing and reducing rebalancing overhead, such as power consumption and throughput. The data storage process in the second scenario described above will be described in detail below. Figure 6 is a logical diagram of data storage after the first storage pool enters a state refusing to store verification data, according to an exemplary embodiment of the present disclosure. Referring to FIG6 , after the first storage pool has been in a state of refusing to store verification data, the original data shard corresponding to the data write request (shown as EC user in FIG6 ) is written to the first storage pool by default, while the corresponding verification data shard (shown as EC parity in FIG6 ) is written to the second storage pool. In other words, the first storage pool will no longer be used to store verification data shards.This allows the limited storage space of the first storage pool to be fully utilized for storing original data shards, ensuring that all data read requests received by the storage system are responded to based on the first storage pool, ensuring efficient response to data read requests. Furthermore, since the second storage pool stores the parity data shards corresponding to completed data write requests, the parity data shards in the second storage pool can serve as a safeguard for data read requests. Only when a read error occurs in an original data shard is the second storage pool accessed to retrieve the required parity data shards for data restoration. In practical applications, in response to a read failure of an original data shard, read exception processing is initiated: the codeword of the erasure code containing the erroneous shard is read from the second storage pool. The successfully readable portion of the m+k shards is read from the first and second storage pools. The shards that failed to read are set to all zeros, aligned, and then input into the erasure code EC decoder (as shown in Figure 6). Based on the operating principle of erasure codes, if the number of erroneous shards does not exceed k, the erasure code can restore the data. In summary, this embodiment provides a storage system that can adapt to the large-capacity, low-latency, low-cost, and high-density requirements of data lakes and other applications, and offers stable and excellent data read and write latency. This storage system can meet the throughput demands of data lakes and other applications. The targeted development of firmware-based refined management media and the design of storage blocks as management units effectively reduce system power consumption, mitigate the performance impact caused by data erasure, enhance capacity scheduling flexibility, and achieve uniform data placement, thereby building a horizontally scalable, highly consistent, and highly available storage system. The storage system of this embodiment utilizes high-density, high-capacity, and low-cost flash media. Furthermore, a hybrid storage system is designed that collaborates with storage pools of various performance levels based on capacity management to further reduce costs. The higher-performance first storage pool is used to store the original data shards, while the lower-performance second storage pool is used to store the parity data shards. By leveraging the storage system's characteristic of evenly placing data, the parity data shards are copied to the second storage pool and the corresponding storage blocks are erased. This allows the remaining capacity of each storage medium in the first storage pool to converge, eliminating the need for rebalancing and saving on rebalancing power consumption and throughput. When reads are normal, both read and write performance rely on the first storage pool, narrowing the data read and write latency distribution. In the event of a read error, the second storage pool is activated to read the parity data shards, ensuring high storage availability and data consistency. Figure 7 is a flow diagram of a data storage method provided by another exemplary embodiment of the present disclosure.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. The data storage management component can be integrated into a storage server. In this embodiment, the storage system includes multiple storage servers, and a single storage server can be equipped with storage media of one or more performance levels to form storage pools with multiple performance levels. Referring to Figure 7 , for any storage server in the storage system, the method includes: Step 700: Upon receiving a data write request, erasure code the target data requested by the data write request to generate original data shards and check data shards corresponding to the target data; Step 701: Writing the original data shards into a first storage pool; Step 702: Writing the check data shards into a second storage pool, where the first storage pool has higher performance than the second storage pool. In an optional embodiment, the method may also include: Upon 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. In an optional embodiment, before step 702, the method further includes: in response to the first storage pool being in a state of refusing to store verification data, executing step 702; and in response to the first storage pool not being in a state of refusing to store verification data, writing the verification data shards into the first storage pool. In an optional embodiment, a single storage medium in the first storage pool includes at least one storage block, and when the first storage pool is not in a state of refusing to store 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: in response to the number of verification data shards corresponding to the target data being m, selecting m storage blocks from the first storage pool dedicated to storing verification data shards, where m is a positive integer; and writing 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. In an optional embodiment, the storage blocks in the first storage pool dedicated to storing verification data shards are evenly distributed across the storage media in the first storage pool. In an optional embodiment, the method further includes: while the first storage pool is not in a state of refusing to store verification data, in response to monitoring that the remaining capacity of the first storage pool has fallen below a specified threshold, migrating 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 original data shards subsequently generated in the storage system; and marking the state of the first storage pool as a state of refusing to store verification data.In an optional embodiment, a single storage medium in a 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: copying data in a storage block in the first storage pool dedicated to storing the verification data shards to the second storage pool; and after the data in the storage block is copied to the second storage pool, performing an erasing operation on the storage block used to store the verification data shards to free up the storage block. In an optional embodiment, copying data in a storage block in the first storage pool dedicated to storing the verification data shards to the second storage pool includes: searching for m storage blocks corresponding to m verification data shards corresponding to a completed target data write request; selecting m storage address spaces from the second storage pool; and copying the verification data shards in the found m storage blocks one-to-one to the selected m storage address spaces. In an optional embodiment, a single storage medium in a first storage pool includes at least one storage block. Writing the original data shards into the first storage pool includes: in response to the number of original data shards corresponding to the target data being k, selecting k target storage blocks from the first storage pool; and writing the k original data shards into the k target storage blocks on a one-to-one basis. In an optional embodiment, selecting the k target storage blocks from the first storage pool includes: selecting the k target storage blocks from the first storage pool according to a load balancing mechanism to maintain a balanced remaining capacity among the storage media in the first storage pool. In an optional embodiment, the method may further include: in response to a failure to read the required original data shards from the first storage pool, reading the verification data shards required for the data read request from the second storage pool, thereby restoring the data required for the data read request using the verification data shards. In an optional embodiment, a single storage server in the storage system is equipped with storage media of one or more performance levels. The storage media in the first storage pool utilizes solid-state drives (SSDs), and the storage media in the second storage pool utilizes hard disks (HDDs). It is worth noting that the technical details of the above-mentioned data storage method embodiments can be found in the description of the single storage server in the aforementioned system embodiment. To save space, these details are not repeated here, but this should not diminish the scope of protection of this disclosure. Furthermore, some of the processes described in the above-mentioned embodiments and accompanying drawings include multiple operations that appear in a specific order. However, it should be understood that these operations may be executed out of the order presented herein or in parallel. Operation sequence numbers, such as 701 and 702, are merely used to distinguish between different operations and do not represent any order of execution.FIG8 is a schematic diagram of a data storage device according to another exemplary embodiment of the present disclosure. As shown in FIG8 , the device includes: an encoding component 801 configured to, upon receiving a data write request, perform erasure coding on target data requested by the data write request to generate original data shards and check data shards corresponding to the target data; a first writing component 802 configured to write the original data shards into a first storage pool; and a second writing component 803 configured to write the check data shards into a second storage pool, where the first storage pool has higher performance than the second storage pool. In an optional embodiment, the device may also be configured to: 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. In an optional embodiment, before writing the check data shards into the second storage pool, the device may also be configured to: write the check data shards into the second storage pool in response to the first storage pool refusing to store the check data; and write the check data shards into the first storage pool in response to the first storage pool not refusing to store the check data. In an optional embodiment, a single storage medium in the first storage pool includes at least one storage block. When the first storage pool is not in a state where verification data storage is rejected, some storage blocks in the first storage pool are dedicated to storing verification data shards. When writing verification data shards into the first storage pool, the device may be configured to: in response to the number of verification data shards corresponding to the target data being m, select m storage blocks from the first storage pool dedicated to storing verification data shards, where m is a positive integer; and 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. In an optional embodiment, the storage blocks in the first storage pool dedicated to storing verification data shards are evenly distributed across the storage media in the first storage pool. In an optional embodiment, the device may also be configured to: during a period in which the first storage pool is not in a state of refusing to store verification data, in response to monitoring that the remaining capacity of the first storage pool has fallen 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 original data shards subsequently generated in the storage system; and mark the state of the first storage pool as a state of refusing to store verification data.In an optional embodiment, a single storage medium in the first storage pool includes at least one storage block. When migrating verification data shards stored in the first storage pool to the second storage pool, the device may be configured to: copy data from a storage block in the first storage pool dedicated to storing verification data shards to the second storage pool; and after copying the data in the storage block to the second storage pool, perform an erase operation on the storage block used to store verification data shards to free up the storage block. In an optional embodiment, when copying data from a storage block in the first storage pool dedicated to storing verification data shards to the second storage pool, the device may be configured to: search for m storage blocks containing m verification data shards corresponding to a completed target data write request; select m storage address spaces from the second storage pool; and perform a one-to-one copy of the verification data shards in the found m storage blocks to the selected m storage address spaces. In an optional embodiment, a single storage medium in a first storage pool includes at least one storage block. When writing raw data shards into the first storage pool, the device may be configured to: select k target storage blocks from the first storage pool in response to the number of raw data shards corresponding to the target data being k; and write the k raw data shards into the k target storage blocks one-to-one. In an optional embodiment, when selecting k target storage blocks from the first storage pool, the device may be configured to: select k target storage blocks from the first storage pool according to a load balancing mechanism to maintain a balanced remaining capacity among the storage media in the first storage pool. In an optional embodiment, the device may be further configured to: read a verification data shard required for a data read request from a second storage pool in response to a failure to read a required raw data shard from the first storage pool, thereby restoring the data required for the data read request using the verification data shard. 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 utilize solid-state drives (SSDs) and the storage media in the second storage pool utilize hard disks (HDDs). FIG9 is a schematic diagram of the structure of a storage server provided in another exemplary embodiment of the present disclosure. As shown in FIG9 , the storage server can be any storage server in a storage system. The storage server may include memory 90, a processor 91, and a communication component 92. Furthermore, the storage server may be equipped with storage media of one or more performance levels. FIG9 illustrates first-type storage media 93 and second-type storage media 94 of different performance levels. It should be understood that this embodiment is not limited to this, and the storage server may be equipped with storage media of even greater performance levels.The storage media installed on each storage server in the storage system constitute storage pools with multiple performance levels. A processor 91, coupled to memory 90, communication component 92, and the installed storage media, is configured to execute a computer program in memory 90 to: upon receiving a data write request, perform erasure coding on the target data requested by the data write request to generate original data shards and check data shards corresponding to the target data; write the original data shards to a first storage pool; and write the check data shards to a second storage pool, where the first storage pool has higher performance than the second storage pool. In an optional embodiment, the processor 91 is further configured to: 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. In an optional embodiment, before writing the check data shards to the second storage pool, the processor 91 is further configured to: write the check data shards to the second storage pool in response to the first storage pool refusing to store the check data; and write the check data shards to the first storage pool in response to the first storage pool not refusing to store the check data. In an optional embodiment, a single storage medium in the first storage pool includes at least one storage block. When the first storage pool is not in a state where verification data storage is rejected, some storage blocks in the first storage pool are dedicated to storing verification data shards. When writing verification data shards into the first storage pool, the processor 91 may be configured to: in response to the number of verification data shards corresponding to the target data being m, select m storage blocks from the first storage pool dedicated to storing verification data shards, where m is a positive integer; and 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. In an optional embodiment, the storage blocks in the first storage pool dedicated to storing verification data shards are evenly distributed across the storage media in the first storage pool. In an optional embodiment, the processor 91 may further be configured to: during a period when the first storage pool is not in a state of refusing to store verification data, in response to monitoring that the remaining capacity of the first storage pool is lower than 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 original data shards subsequently generated in the storage system; and mark the state of the first storage pool as a state of refusing to store verification data.In an optional embodiment, a single storage medium in the first storage pool includes at least one storage block. When migrating the verification data shards stored in the first storage pool to the second storage pool, the processor 91 may be configured to: copy data from a storage block in the first storage pool dedicated to storing the verification data shards to the second storage pool; and after copying the data in the storage block to the second storage pool, perform an erase operation on the storage block used to store the verification data shards to free up the storage block. In an optional embodiment, when copying data from a storage block in the first storage pool dedicated to storing the verification data shards to the second storage pool, the processor 91 may be configured to: search for m storage blocks containing m verification data shards corresponding to a completed target data write request; 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 an optional embodiment, a single storage medium in the first storage pool includes at least one storage block. When writing the original data shards into the first storage pool, the processor 91 may be configured to: responsive to the number of original data shards corresponding to the target data being k, select k target storage blocks from the first storage pool; and write the k original data shards one-to-one into the k target storage blocks. In an optional embodiment, when selecting the k target storage blocks from the first storage pool, the processor 91 may be configured to: responsive to a load balancing mechanism, select the k target storage blocks from the first storage pool to ensure a balanced remaining capacity among the storage media in the first storage pool. In an optional embodiment, the processor 91 may also be configured to: responsive to a failure to read the required original data shards from the first storage pool, read the verification data shards required for the data read request from the second storage pool, thereby restoring the data required for the data read request using the verification data shards. In an optional embodiment, a single storage server in the storage system is equipped with storage media of one or more performance levels. The storage media in the first storage pool utilizes solid-state drives (SSDs), and the storage media in the second storage pool utilizes hard disks (HDDs). Furthermore, as shown in FIG9 , the storage server also includes other components, such as a power supply assembly 95. FIG9 only schematically illustrates some components and does not imply that the storage server only includes the components shown in FIG9 . It is worth noting that the technical details of the above-mentioned storage server embodiments can be found in the description of the storage server in the aforementioned system embodiments. To save space, these details will not be repeated here, but this should not compromise the scope of protection of this disclosure.Accordingly, embodiments of the present disclosure also provide a computer-readable storage medium storing a computer program. When executed, the computer program can implement the steps performed in the above-described method embodiments. The memory in FIG. 9 is used to store the 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 operating on the computing platform, contact data, phone book data, messages, images, 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. The communication component in FIG. 9 is configured to facilitate wired or wireless communication between the device containing the communication component and other devices. The device containing the communication component can access a wireless network based on communication standards, such as Wi-Fi, 2G, 3G, 4G / LTE, 5G, or other mobile communication networks, or combinations thereof. In one exemplary embodiment, the communication component receives broadcast signals or broadcast-related information from an external broadcast management system via a broadcast channel. In one exemplary embodiment, the communication component also 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), infrared data association (IrDA), ultra-wideband (UWB), Bluetooth (BT), or other technologies. The power supply component in Figure 9 provides power to various components of the device containing the power supply component. The power supply component may include a power management system, one or more power supplies, and other components associated with generating, managing, and distributing power to the device containing the power supply component. Therefore, the present disclosure may take the form of an entirely hardware embodiment, an entirely software embodiment, or an embodiment combining software and hardware aspects. Furthermore, the present disclosure 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.) containing computer-usable program code. An embodiment of the present disclosure also provides a processor. FIG10 is a schematic diagram of a processor provided in another exemplary embodiment of the present disclosure. As shown in FIG10 , the processor 100 is configured to run a program. When the program is executed by the processor, the method in the above-described embodiment is executed.In an embodiment of the present disclosure, the processor 100 can execute the program for executing the method in the above embodiment. Optionally, the processor 100 can be configured to perform the following steps: upon receiving a data write request, performing erasure coding on the requested target data to generate original data fragments and check data fragments corresponding to the target data; writing the original data fragments into a first storage pool; and writing the check data fragments into a second storage pool, wherein the first storage pool has higher performance than the second storage pool. An embodiment of the present disclosure also provides a computer-readable storage medium storing computer-executable instructions that, when executed by the processor, implement the steps of the above method. The above is an exemplary embodiment of a computer-readable storage medium in this embodiment. It should be noted that the technical solution of this storage medium and the technical solution of the above method are based on the same concept. For details not described in detail in the technical solution of the storage medium, please refer to the description of the technical solution of the above method. An embodiment of the present disclosure also provides a computer program product comprising a non-volatile computer-readable storage medium storing a computer program that, when executed by the processor, implements the method provided in the embodiment of the present disclosure. Embodiments of the present disclosure also provide a computer program. When executed on a computer, the computer program causes the computer to perform the steps of the above-described method. Optionally, when executed by a processor, the computer program implements program code for the following steps: upon receiving a data write request, erasure coding the requested target data to generate original data fragments and check data fragments corresponding to the target data; writing the original data fragments to a first storage pool; and writing the check data fragments to a second storage pool, wherein the first storage pool has higher performance than the second storage pool. The present disclosure is described with reference to flowcharts and / or block diagrams of methods, devices (systems), and computer program products according to embodiments of the present disclosure. It should be understood that each process and / or block in the flowcharts and / or block diagrams, as well as combinations of processes and / or blocks in the flowcharts and / or block diagrams, can be implemented by computer program instructions. These computer program instructions can be provided to a processor of a general-purpose computer, a special-purpose computer, an embedded processor, or other programmable data processing device to produce a machine, so that the instructions executed by the processor of the computer or other programmable data processing device generate a device for implementing the functions specified in one or more processes in the flowchart and / or one or more blocks in the block diagram.These computer program instructions may also be stored in a computer-readable memory capable of directing a computer or other programmable data processing device to operate in a specific manner, such that the instructions stored in the computer-readable memory produce an article of manufacture including instruction means that implement the functions specified in one or more flow charts and / or one or more blocks in a block diagram. These computer program instructions may also be loaded onto a computer or other programmable data processing device, causing the computer or other programmable device to execute a series of operational steps to produce a computer-implemented process, whereby the instructions executed on the computer or other programmable device provide steps for implementing the functions specified in one or more flow charts and / or one or more blocks in a block diagram. It should also be noted that the terms "comprise," "include," or any other variations thereof are intended to encompass non-exclusive inclusion, such that a process, method, product, or device comprising a list of elements may include not only those elements but also other elements not expressly listed, or elements inherent to such process, method, product, or device. In the absence of further restrictions, elements defined by the phrase "comprising a..." do not preclude the presence of other identical elements in the process, method, product, or device comprising the elements. 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 used for analysis, storage, and display, etc.) involved in this disclosure are all authorized by the user or fully authorized by all parties. The collection, use, and processing of such data must comply with the relevant laws, regulations, and standards of the relevant countries and regions, and corresponding operation portals are provided for users to choose to authorize or deny. The above are merely examples of the present disclosure and are not intended to limit the present disclosure. Those skilled in the art will readily appreciate that various modifications and variations of the present disclosure are possible. Any modifications, equivalent substitutions, improvements, etc. made within the spirit and principles of the present disclosure are intended to be included within the scope of protection of the present disclosure.Industrial Applicability The solution provided by the embodiments of the present disclosure can be applied to data storage. The storage media installed on each storage server in the storage system constitute storage pools of multiple performance levels. For any storage server in the storage system, when a data write request is received, erasure coding is performed on the target data requested to be written by the data write request to generate original data shards and verification data shards corresponding to the target data; the original data shards are written to a first storage pool; and the verification data shards are written to a second storage pool. The performance of the first storage pool is higher than that of the second storage pool, thereby solving the technical problem of being unable to effectively store data.
Claims
Claims 1. A data storage method, wherein storage media installed on each storage server in a storage system form storage pools of multiple performance levels, and for any storage server in the storage system, the method comprises: When a data write request is received, erasure coding is performed on the target data requested to be written by the data write request to generate original data slices and check data slices corresponding to the target data; and the original data slices are written into the first storage pool; The verification data slice is written into a second storage pool, wherein the performance of the first storage pool is higher than that of the second storage pool.
2. The method according to claim 1, further comprising: When a data read request is received, the required original data slices are read from the first storage pool to restore the data required by the data read request.
3. The method according to claim 1, further comprising: In response to the first storage pool being in a state of refusing to store verification data, writing the verification data slice into the second storage pool; In response to the first storage pool not being in a state of refusing to store the verification data, writing the verification data slice into the first storage pool.
4. The method according to claim 3, wherein a single storage medium in the first storage pool includes at least one storage block, and when the first storage pool is not in a state of refusing to store the verification data, some storage blocks in the first storage pool are dedicated to storing the verification data shards, and writing the verification data shards into the first storage pool comprises: In response to the number of the verification data shards corresponding to the target data being m, the m storage blocks dedicated to storing the verification data shards are selected from the first storage pool, where m is a positive integer; and the m verification data shards corresponding to the target data are written one-to-one into the selected m storage blocks dedicated to storing the verification data shards.
5. The method according to claim 4, wherein the storage blocks in the first storage pool dedicated to storing the verification data slices are evenly distributed in each of the storage media in the first storage pool.
6. The method according to claim 3, further comprising: During a period when the first storage pool is not in a state of refusing to store the verification data, in response to monitoring that the remaining capacity of the first storage pool is lower than a specified threshold, the verification data shards 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 original data shards subsequently generated in the storage system; and the state of the first storage pool is marked as a state of refusing to store the verification data.
7. The method according to claim 6, wherein the single storage medium in the first storage pool comprises at least one storage block, and the verification data slices stored in the first storage pool are migrated to the second storage pool, comprising: The method comprises: copying data in the storage block dedicated to storing the verification data slice in the first storage pool to the second storage pool; and after completing copying the data in the storage block to the second storage pool, performing an erasing operation on the storage block used to store the verification data slice to free up the storage block.
8. The method according to claim 7, copying data in the storage block dedicated to storing the verification data slice in the first storage pool to the second storage pool, comprising: For the target data write request to which the response has been completed, searching for the m storage blocks where the corresponding m verification data slices are located; The m storage address spaces are selected from the second storage pool; and the verification data slices in the found m storage blocks are copied one-to-one to the selected m storage address spaces.
9. The method according to claim 1, wherein a single storage medium in the first storage pool includes at least one storage block, and writing the original data slice into the first storage pool comprises: In response to the number of the original data shards corresponding to the target data being k, selecting k target storage blocks from the first storage pool; The k original data slices are written one-to-one into the k target storage blocks.
10. The method according to claim 9, selecting k target storage blocks from the first storage pool, comprising: 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 of the storage media in the first storage pool balanced.
11. The method according to claim 2, further comprising: In response to failure to read the required original data slice from the first storage pool, reading the verification data slice required for the data read request from the second storage pool, so as to restore the data required for the data read request through the verification data slice.
12. The method according to claim 1, wherein a single storage server in the storage system is equipped with storage media of one or more performance levels, wherein: The storage medium in the first storage pool is a solid state drive SSD, and the storage medium in the second storage pool is a hard disk HDD.
13. A data storage device, wherein storage media installed on each storage server in a storage system form storage pools of multiple performance levels, and for any storage server in the storage system, the device comprises: The encoding component is configured to, upon receiving a data write request, perform erasure coding on the target data requested to be written by the data write request to generate original data slices and verification data slices corresponding to the target data; the first writing component is configured to write the original data slices into a first storage pool; and the second writing component is configured to write the verification data slices into a second storage pool, wherein the performance of the first storage pool is higher than that of the second storage pool.
14. A storage server, comprising a memory, a processor and a communication component, and equipped with a storage medium of one or more performance levels; the memory is used to store one or more computer instructions; the processor is coupled with the memory, the communication component and the assembled storage medium, and is used to execute the one or more computer instructions, so as to execute the data storage method according to any one of claims 1 to 12.
15. A data storage system, comprising a plurality of storage servers, wherein a single storage server is equipped with storage media of one or more performance levels to form storage pools of multiple performance levels, wherein any one of the storage servers is used to execute the data storage method of any one of claims 1 to 12.
16. A computer-readable storage medium storing computer instructions, which, when executed by one or more processors, causes the one or more processors to execute the data storage method according to any one of claims 1 to 12.
17. A computer program product, wherein: The method comprises a computer program, wherein when the computer program is executed by a processor, the computer program implements the data storage method according to any one of claims 1 to 12.
18. A computer program product, wherein: The invention comprises a non-volatile computer-readable storage medium, wherein the non-volatile computer-readable storage medium stores a computer program, and when the computer program is executed by a processor, the data storage method according to any one of claims 1 to 12 is implemented.
19. A computer program, wherein: When the computer program is executed by a processor, the data storage method according to any one of claims 1 to 12 is implemented.
20. A computing device, comprising: Memory and processor; The memory is used to store computer executable instructions, and the processor is used to execute the computer executable instructions. When the computer executable instructions are executed by the processor, the steps of the data storage method according to any one of claims 1 to 12 are implemented.
Citation Information
Patent Citations
Distributed file system erasure code cache device and cache method thereof
CN106095807A
Forest type storage structure and method for distributed erasure code hybrid storage based on multiple storage media
CN110531936A
Two-Step Recovery employing Erasure Coding in a Geographically Diverse Data Storage System
US20210133049A1
Distributed storage system, data control method and storage medium
US20210191628A1
Cited By
Data writing method and device, equipment and medium
CN120950008A
Business processing method and device based on AI data lake, medium and electronic equipment
CN122412167A