Storage node, storage array and data access method

By introducing data processing units and switching modules into storage nodes, the problem of PCIe module congestion was solved, achieving efficient data processing and transmission, and improving the bandwidth and data processing efficiency of storage devices.

WO2026066110A1PCT designated stage Publication Date: 2026-04-02HUAWEI TECH CO LTD
View PDF 5 Cites 0 Cited by

Patent Information

Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Filing Date
2025-05-09
Publication Date
2026-04-02

AI Technical Summary

Technical Problem

In existing storage architectures, PCIe modules are prone to congestion when processing a large number of storage nodes, resulting in low data processing efficiency.

Method used

It introduces a data processing unit and a switching module, connects the data processing unit to multiple storage devices via a bus, and uses the switching module to transfer instructions and data, avoiding the impact of CPU and memory on the performance of storage devices, and has congestion control functions.

Benefits of technology

It improves data processing efficiency, avoids network congestion, increases storage device bandwidth, and ensures the accuracy and stability of data transmission.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN2025093949_02042026_PF_FP_ABST
    Figure CN2025093949_02042026_PF_FP_ABST
Patent Text Reader

Abstract

The present application belongs to the technical field of storage. Provided are a storage node, a storage array and a data access method. In the storage node provided in the present application, after receiving a data read / write request sent by a host, a data processing unit sends a first read / write instruction to a switching module. Since the first read / write instruction instructs that data be read from / written into a target storage device among a plurality of storage devices, the switching module can send to the target storage device a data read / write address carried in the instruction, thereby continuing a data read / write process. During the data read / write process, the switching module relays the transmission between the data processing unit and the storage devices, which can prevent the performance of a CPU and memory from impacting the performance of the storage devices, so that the storage devices can provide high-bandwidth data services; in addition, the switching module has a congestion control function and can schedule instructions to be transmitted and data to be transmitted, thereby preventing network congestion, and thus improving the data processing efficiency.
Need to check novelty before this filing date? Find Prior Art

Description

Storage node, storage array and data access method

[0001] The present application claims priority from the Chinese patent application No. 202411355521.9, filed on September 26, 2024, and entitled "Storage node, storage array and data access method", the content of which is incorporated herein by reference in its entirety. TECHNICAL FIELD

[0002] The present application relates to the technical field of storage, in particular to a storage node, a storage array and a data access method. BACKGROUND

[0003] With the development of storage technology, there are hosts and storage arrays in the existing storage network, and the storage array is used to provide storage services to the host. The storage array includes a plurality of storage nodes. At present, a storage architecture is that a storage node includes a central processing unit (CPU), a memory, a data processing unit (DPU) and a solid-state drive (SSD), and the memory, the DPU and the SSD are respectively connected to the CPU through a bus.

[0004] Based on the above storage architecture, taking writing data into the SSD as an example, the host sends a data writing request to the DPU in the storage node, and the DPU sends the data writing request to the SSD in the storage node. The SSD responds to the DPU according to the data writing request, and after the DPU receives the response of the SSD, the DPU obtains data from the host memory and sends the data to a peripheral component interconnect express (PCIe) module of the CPU. The PCIe module writes the data into a controller memory buffer (CMB) of the SSD, and the controller in the SSD writes the data in the CMB into a persistent storage medium of the SSD.

[0005] The above data writing process transmits data through the PCIe bus by using the point-to-point transmission function of the PCIe protocol. In this transmission mode, the PCIe module of the CPU needs to proxy and forward the data. In the process of proxy and forwarding, the PCIe module processes the data, such as unpacking and repacking the data. When the number of DPU or SSD is large, the PCIe module is prone to congestion, resulting in low data processing efficiency. SUMMARY

[0006] The application provides a storage node, a storage array and a data access method, which can improve data processing efficiency. The technical scheme is as follows.

[0007] In a first aspect, a storage node is provided, which includes a data processing unit, a switching module and a plurality of storage devices. The switching module in the storage node is referred to as a first switching module. The data processing unit and the plurality of storage devices are connected to the first switching module through buses respectively. The data processing unit is configured to receive a data processing request from a host, the data processing request being used to request processing of data in the storage node. The data processing unit is configured to send a first processing instruction to the first switching module based on the data processing request, the first processing instruction being used to instruct processing of data in a target storage device in the plurality of storage devices. The first switching module is configured to send a second processing instruction to the target storage device based on the first processing instruction, the second processing instruction being used to instruct processing of data in the target storage device.

[0008] The data processing unit has a data processing function and can be implemented as an intelligent network card or a DPU. The first switching module can be implemented as one switching chip or a plurality of switching chips connected to each other through buses. The storage devices can be SSDs or HHDs (hybrid hard disks), and the application does not limit them. The data processing request sent by the host carries a data index. The data processing unit can obtain metadata corresponding to the data processing request according to the data index, and generate the first processing instruction according to the metadata. The functions of the first processing instruction and the second processing instruction are both to instruct processing of data in the target storage device. After receiving the first processing instruction, the first switching module can locate the target storage device according to the first processing instruction, and then send a data address carried by the first processing instruction to the target storage device. In the process of sending the data address carried by the first processing instruction to the target storage device, the first switching module can directly forward the first processing instruction to the target storage device. The first processing instruction forwarded by the first switching module to the target storage device is referred to as the second processing instruction. The first switching module can also encapsulate the data address carried by the first processing instruction into the second processing instruction, and send the second processing instruction to the target storage device, which is not limited by the application. The information of the target storage device can be an address of the target storage device or an identifier of the target storage device, which is not limited by the application.

[0009] In the above process, after receiving the second processing instruction, the target storage device returns a response of the second processing instruction to the data processing unit through the first switching module, and the data processing unit outputs the response to the host after receiving the response. In the data reading process, the target storage device returns data corresponding to the second processing instruction to the data processing unit through the first switching module according to the second processing instruction, and in the data writing process, the target storage device returns a read request to the data processing unit through the first switching module according to the second processing instruction, and the read request carries a host memory storage address of the data. After receiving the read request, the data processing unit outputs the read request to the host. After receiving the read request, the host obtains the data indicated by the read request according to the host memory storage address of the data carried by the read request, returns the data to the data processing unit, and the data processing unit forwards the data to the target storage device through the first switching module. The target storage device stores the data according to the data address carried by the second processing instruction. In the above data writing process, after receiving the read request sent by the target storage device, the host sends the data to be written to the storage node, which can avoid transmitting additional data in the case that the target storage device refuses to write, and avoid occupying additional bandwidth.

[0010] In the storage node provided in the application, after receiving the data processing request sent by the host, the data processing unit sends a first processing instruction to the first switching module. Since the first processing instruction indicates processing of data in the target storage device in the plurality of storage devices, the first switching module can send the data address carried by the first processing instruction to the target storage device, so as to continue the data processing process. In the data processing process, the first switching module transmits the instructions and data between the data processing unit and the storage device, which can avoid the influence of CPU and memory performance on the performance of the storage device, so that the storage device can provide large bandwidth data service. Since the first switching module has the function of congestion control, it can avoid network congestion when there is a lot of instructions and data to be transmitted, so the data processing efficiency of the method is high.

[0011] Optionally, the first processing instruction carries information of the target storage device, so that the first switching module can locate the target storage device according to the information of the target storage device, ensure that the second processing instruction is sent to the target storage device, and improve the transmission accuracy.

[0012] Optionally, the data processing unit is configured to distribute the data processing request from the host to a central processing unit (CPU) of the storage node. The central processing unit and the CPU of the storage node have different processing efficiencies for different data processing requests, and through the distribution process, different data processing requests can be distributed to the CPU or the storage device for processing, so as to reduce the load of the CPU and improve the processing efficiency of the request.

[0013] Optionally, the data processing unit is configured to send the first processing instruction to the first switching module based on the data processing request, specifically for: determining that the data processing request is a data read-write request, and the data read-write request is used to request reading and writing of the target storage device; and sending the first read-write instruction to the first switching module based on the data read-write request, where the first read-write instruction is used to instruct reading and writing of the target storage device. The data processing unit first identifies the data processing request from the host, and then performs subsequent processing according to the identification result, so that the data processing request can be reasonably arranged, and the processing efficiency of the request can be improved.

[0014] Optionally, when the data processing unit sends the first read-write instruction to the first switching module based on the data read-write request, the data processing unit is specifically configured to: determine that the data volume of the data requested by the data read-write request is greater than or equal to a first threshold, and send the first read-write instruction to the first switching module. Since the storage device has a long delay when executing a data read-write request with a small data volume, and the central processing unit can use high-performance write caching technology to reduce the delay of executing the data read-write request, therefore, by using the above process to distribute the request to the central processing unit or the storage device, the execution efficiency of the data read-write request can be improved.

[0015] Optionally, the storage node further includes a central processing unit, and the data processing unit is further configured to: determine that the data processing request is a non-data read-write request; and send the non-data read-write request to the central processing unit. Through the process of subdividing the type of the data processing request, the non-data read-write request is distributed to the central processing unit for processing, and the data read-write request is distributed to the storage device for processing, so that the central processing unit and the storage device can be effectively divided, and the processing efficiency of the request can be improved.

[0016] Optionally, the data processing unit is configured to encapsulate information of the target storage device in a packet of the first processing instruction, so that the first switching module can obtain the information of the target storage device from the packet, and then locate the target storage device, and send the second processing instruction to the target storage device based on the first processing instruction. In addition, in the case where the data processing unit encapsulates the information of the target storage device in the packet header of the first processing instruction, the first switching module can obtain the information of the target storage device by only analyzing the packet header, and the transmission efficiency of the instruction can be improved.

[0017] Optionally, the first switching module includes a bus interface, the bus interface being configured to connect with the first switching module of another storage node, so that different storage nodes can communicate through the bus between the first switching modules in the respective storage nodes, realize cross-storage-node pass-through, and improve communication efficiency.

[0018] Optionally, the bus is a unified bus (UB) or a compute express link (CXL) or the like, which supports large-bandwidth communication. The use of a large-bandwidth bus can improve communication efficiency and avoid network congestion.

[0019] Optionally, the first switching module includes a plurality of switching chips that are connected with each other, so as to improve the transmission capacity of the first switching module, improve the ability of the first switching module to avoid network congestion, and enable the first switching module to avoid network congestion in the process of transmitting instructions or data according to a preset transmission control strategy. In addition, the use of a plurality of switching chips that are connected with each other to transmit instructions or data can improve the stability of transmission and avoid uneven or fluctuating performance of the storage device caused by transmission lag and the like, thereby ensuring the stability of data processing efficiency.

[0020] Optionally, the storage device is configured to sort the execution order of the second processing instructions, so that the storage device can execute each second processing instruction according to the execution order, and the execution of instructions is more orderly and meets actual needs.

[0021] Optionally, the storage device includes a large-bandwidth interface such as a UB interface or a CXL interface, so that the storage device can be connected with the above-mentioned large-bandwidth bus. The storage device also includes a large-bandwidth cache such as a static random-access memory (SRAM) or a high-bandwidth memory (HBM), so as to avoid congestion of data or instructions at the cache of the storage device, thereby improving data processing efficiency.

[0022] In a second aspect, a storage array is provided, which includes a plurality of storage nodes provided by the first aspect or various optional implementations of the first aspect. The plurality of storage nodes are connected through the respective first switching modules.

[0023] The above-mentioned storage array can be applied to a distributed scenario of storage-computation separation or a centralized storage scenario, and the present application does not limit this. In the storage array, different storage nodes can communicate through the bus between the first switching modules in the respective storage nodes, realize cross-storage-node pass-through, and improve communication efficiency.

[0024] Optionally, the first storage node of the plurality of storage nodes is configured to send, to a second storage node of the plurality of storage nodes, a third processing instruction via the first switch module connected to each other in the storage array, the third processing instruction indicating to process data in a target storage device in the second storage node. Different storage nodes can communicate via the first switch module in each storage node and the bus between the first switch modules, realize pass-through across storage nodes, and improve communication efficiency.

[0025] In a third aspect, a data processing unit is provided, which includes a receiving module and a starting module. The receiving module is configured to receive a data processing request from a host, the data processing request being used to request processing data in a storage node. The starting module is configured to send, to a first switch module, a first processing instruction based on the data processing request, the first processing instruction indicating to process data in a target storage device of a plurality of storage devices. By sending the first processing instruction to the first switch module, the CPU and the memory can be bypassed, and communication efficiency can be improved.

[0026] Optionally, the first processing instruction carries information of the target storage device, so that the first switch module can locate the target storage device according to the information of the target storage device, ensure that the second processing instruction is sent to the target storage device, and improve transmission accuracy.

[0027] Optionally, the data processing unit further includes a request distribution module. The request distribution module is configured to distribute the data processing request from the host. By using the above data processing unit to distribute the data processing request from the host, different data processing requests can be distributed to the CPU or the storage device for processing, so as to reduce the load of the CPU and improve the processing efficiency of the request.

[0028] Optionally, the request distribution module is configured to determine that the data processing request is a data read-write request, the data read-write request being used to request reading and writing the target storage device; and send, to the first switch module, a first read-write instruction based on the data read-write request, the first read-write instruction indicating to read and write the target storage device. The data processing unit first identifies the data processing request from the host, and then performs subsequent processing according to the identification result, so that the data processing request can be reasonably arranged, and the efficiency of request processing can be improved.

[0029] Optionally, the request distribution module sends a first read-write instruction to the first switching module based on the data read-write request, specifically for: determining that a data volume of data requested by the data read-write request is greater than or equal to a first threshold, and sending the first read-write instruction to the first switching module. Since the storage device has a long delay in executing a data read-write request with a small data volume, and the central processing unit can use high-performance write cache and other technologies to reduce the delay in executing a data read-write request, using the above process to distribute requests to the central processing unit or the storage device can improve the execution efficiency of the data read-write request.

[0030] Optionally, the request distribution module is further configured to: determine that the data processing request is a non-data read-write request; and send the non-data read-write request to the central processing unit in the storage node. This process can effectively divide the work between the central processing unit and the storage device by subdividing the types of data processing requests, distributing non-data read-write requests to the central processing unit for processing, and distributing data read-write requests to the storage device for processing, thereby improving the efficiency of processing requests.

[0031] Optionally, the starting module encapsulates information of the target storage device in a packet of the first processing instruction, so that the first switching module can obtain the information of the target storage device from the packet, and then locate the target storage device, and send the second processing instruction to the target storage device directly based on the first processing instruction. In addition, in the case where the data processing unit encapsulates the information of the target storage device in a packet header of the first processing instruction, the first switching module can obtain the information of the target storage device by only analyzing the packet header, thereby improving the transmission efficiency of the instruction.

[0032] Optionally, the data processing unit further comprises a transceiver module; the transceiver module is configured to output a response from the target storage device to the host after receiving the response, so as to implement a data processing process.

[0033] In a fourth aspect, a storage system is provided, which comprises a host and a plurality of storage nodes. The host and the plurality of storage nodes are connected. The storage node comprises a data processing unit, a first switching module and a plurality of storage devices. The data processing unit and the storage devices are connected to the first switching module through a bus respectively. The data processing unit is configured to receive a data processing request from the host. The data processing request is used to request processing of data in the storage node. The data processing unit is configured to send a first processing instruction to the first switching module based on the data processing request. The first processing instruction indicates processing of data in a target storage device in the plurality of storage devices. The first switching module is configured to send a second processing instruction to the target storage device based on the first processing instruction. The second processing instruction indicates processing of data in the target storage device.

[0034] The above storage system can be a centralized storage system or a distributed storage system, and the present application does not limit it.

[0035] In the storage system, after the data processing unit receives the data processing request sent by the host, the first switching module is sent the first processing instruction. Since the first processing instruction carries the information of the target storage device, the first switching module can send the data address carried by the first processing instruction to the target storage device, so as to continue the data processing process. In the data processing process, the first switching module transmits the instructions and data between the data processing unit and the storage device, which can avoid the influence of the CPU and the memory performance on the performance of the storage device, so that the storage device can provide large bandwidth data service. Since the first switching module has the function of congestion control, it can avoid network congestion when there are many instructions and data to be transmitted, so that the data processing efficiency of the method is higher. Moreover, in the case of controlling congestion through the first switching module, the bandwidth corresponding to the storage device can be increased, and when a large amount of data processing requests come from the front-end network, the data processing requests can be avoided to be accumulated in the front-end network, so as to improve the data processing efficiency.

[0036] Optionally, the first processing instruction carries the information of the target storage device, so that the first switching module can locate the target storage device according to the information of the target storage device, ensure that the second processing instruction is sent to the target storage device, and improve the transmission accuracy.

[0037] Optionally, the data processing unit is configured to distribute the data processing request from the host, so as to distribute the data processing request to the central processing unit or CPU of the storage node. The central processing unit and CPU of the storage node have different processing efficiencies for different data processing requests, and through the distribution process, different data processing requests can be distributed to the CPU or the storage device for processing, so as to reduce the load of the CPU and improve the processing efficiency of the request.

[0038] Optionally, the data processing unit sends the first processing instruction to the first switching module based on the data processing request, and specifically for: determining that the data processing request is a data read-write request, the data read-write request being used to request reading and writing of the target storage device; and sending the first read-write instruction to the first switching module based on the data read-write request, the first read-write instruction indicating reading and writing of the target storage device. The data processing unit first identifies the data processing request from the host, and then performs subsequent processing according to the identification result, which can reasonably arrange the data processing request and improve the efficiency of request processing.

[0039] Optionally, the data processing unit is configured to, when sending the first read-write instruction to the first switching module based on the data read-write request, determine that the data volume of the data requested by the data read-write request is greater than or equal to a first threshold, and send the first read-write instruction to the first switching module. Since the storage device has a long delay in executing a data read-write request with a small data volume, and the central processing unit can use high-performance write cache and other technologies to reduce the delay in executing a data read-write request, using the above process to distribute the request to the central processing unit or the storage device can improve the execution efficiency of the data read-write request.

[0040] Optionally, the storage node further includes a central processing unit, and the data processing unit is further configured to determine that the data processing request is a non-data read-write request, and send the non-data read-write request to the central processing unit. This process can effectively distribute the non-data read-write request to the central processing unit for processing and the data read-write request to the storage device for processing, thereby effectively distributing the central processing unit and the storage device and improving the efficiency of processing requests.

[0041] Optionally, the data processing unit is configured to encapsulate the information of the target storage device in the packet of the first processing instruction, so that the first switching module can obtain the information of the target storage device from the packet, and then locate the target storage device and send the second processing instruction to the target storage device based on the first processing instruction. In addition, in the case where the data processing unit encapsulates the information of the target storage device in the packet header of the first processing instruction, the first switching module can obtain the information of the target storage device by only analyzing the packet header, thereby improving the transmission efficiency of the instruction.

[0042] Optionally, the first switching module includes a bus interface configured to be connected to the first switching module of another storage node, so that different storage nodes can communicate through the bus between the first switching modules in the respective storage nodes, realize direct communication across the storage nodes, and improve the communication efficiency.

[0043] Optionally, the bus is a bus that supports large bandwidth communication, such as a RapidIO bus or a Compute Express Link bus. Using a bus with large bandwidth can improve the communication efficiency and avoid network congestion.

[0044] Optionally, the storage device is configured to sort the execution order of the second processing instructions, so that the storage device can execute each second processing instruction according to the execution order, making the execution of the instructions more orderly and meeting the actual needs.

[0045] Optionally, the storage device comprises a large-bandwidth interface such as a UB interface or a CXL interface, so that the storage device can be connected to the large-bandwidth bus described above, and the storage device further comprises a large-bandwidth cache such as a static random-access memory (SRAM) or a high-bandwidth memory (HBM), so as to avoid congestion of data or instructions at the cache of the storage device, thereby improving the data processing efficiency.

[0046] In a fifth aspect, a disk frame is provided, which comprises a plurality of storage devices and a second switching module. The plurality of storage devices are connected to a first switching module in a storage node through the second switching module in the disk frame. The first switching module is connected to a data processing unit in the storage node through a bus. The second switching module is configured to forward a second processing instruction to a target storage device in the plurality of storage devices based on the second processing instruction sent by the first switching module. The second processing instruction indicates processing of data in the target storage device. The target storage device is configured to receive the second processing instruction and return a response of the second processing instruction to the second switching module. The second switching module is further configured to return the response to the data processing unit through the first switching module after receiving the response from the target storage device. Through the disk frame described above, the transmission of instructions or data can be further scheduled, thereby further improving the data processing efficiency.

[0047] Optionally, the first processing instruction carries information of the target storage device, so that the first switching module can locate the target storage device according to the information of the target storage device, ensure that the second processing instruction is sent to the target storage device, and improve the transmission accuracy.

[0048] Optionally, the bus is a bus supporting large-bandwidth communication such as a QuickPath Interconnect (QPI) bus or a Compute Express Link (CXL) bus. The use of a large-bandwidth bus can improve the communication efficiency and avoid network congestion.

[0049] In a sixth aspect, a data access method is provided. A storage node comprises a data processing unit, a first switching module, and a plurality of storage devices. The data processing unit and the storage devices are connected to the first switching module through a bus. The method comprises: the data processing unit is configured to receive a data processing request from a host. The data processing request is used to request processing of data in the storage node. The data processing unit is configured to send a first processing instruction to the first switching module based on the data processing request. The first processing instruction indicates processing of data in a target storage device in the plurality of storage devices. The first switching module is configured to send a second processing instruction to the target storage device based on the first processing instruction. The second processing instruction indicates processing of data in the target storage device.

[0050] In the data access method, after the data processing unit receives the data processing request sent by the host, the data processing unit sends the first processing instruction to the first switching module. Since the first processing instruction carries the information of the target storage device, the first switching module can send the data address carried by the first processing instruction to the target storage device, so as to continue the data processing process. In the data processing process, the first switching module transmits the instructions and data between the data processing unit and the storage device, so as to avoid the influence of the performance of the CPU and the memory on the performance of the storage device, thereby enabling the storage device to provide large-bandwidth data services. Since the first switching module has the function of congestion control, when there are many instructions and data to be transmitted, network congestion can be avoided, so that the data processing efficiency of the method is high. In addition, when the congestion is controlled by the first switching module, the bandwidth corresponding to the storage device can be increased, and when a large amount of data processing requests are transmitted from the front-end network, the data processing requests can be prevented from being accumulated in the front-end network, thereby improving the data processing efficiency.

[0051] In a seventh aspect, a computer-readable storage medium is provided, and the storage medium stores at least one piece of program code. When the at least one piece of program code is executed by a computing device, the computing device performs operations performed by the data access method.

[0052] In an eighth aspect, a computer program product containing instructions is provided. When the instructions are executed by a computing device, the computing device performs operations performed by the data access method.

[0053] On the basis of the implementation manners of the above aspects, further combinations can be made to provide more implementation manners. BRIEF DESCRIPTION OF DRAWINGS

[0054] FIG. 1 is a structural schematic diagram of a data service system according to an embodiment of the present application;

[0055] FIG. 2 is a structural schematic diagram of another data service system according to an embodiment of the present application;

[0056] FIG. 3 is a structural schematic diagram of a storage node according to an embodiment of the present application;

[0057] FIG. 4 is a structural schematic diagram of a storage device according to an embodiment of the present application;

[0058] FIG. 5 is a structural schematic diagram of a data processing unit according to an embodiment of the present application;

[0059] FIG. 6 is a structural schematic diagram of a CPU according to an embodiment of the present application;

[0060] FIG. 7 is a structural schematic diagram of another storage device according to an embodiment of the present application;

[0061] FIG. 8 is an example diagram of an instruction queue according to an embodiment of the present application;

[0062] FIG. 9 is a schematic diagram of a relationship between a host QP and a storage device QP according to an embodiment of the present application;

[0063] FIG. 10 is a schematic diagram of a storage device channel according to an embodiment of the present application;

[0064] FIG. 11 is a message interaction diagram of a data access method according to an embodiment of the present application;

[0065] FIG. 12 is a message interaction diagram of another data access method according to an embodiment of the present application. DETAILED DESCRIPTION

[0066] In order to make the purpose, technical solutions and advantages of the present application clearer, the embodiments of the present application will be further described in detail below with reference to the drawings.

[0067] The implementation environment of the embodiments of the present application will be described below.

[0068] In the related art, a data service system shown in FIG. 1 is used to provide data service. As shown in FIG. 1, the data service system includes a host 101 and a storage array 102, the storage array 102 includes a plurality of storage nodes 103, the host 101 and the plurality of storage nodes 103 are directly or indirectly connected through a wired network or a wireless network, and the plurality of storage nodes 103 in the storage array 102 are connected through a bus.

[0069] The host 101 can be a client of a data service. The host can be configured as a terminal or a server. If the host is configured as a terminal, the host can be a smartphone, a tablet computer, a moving picture experts group audio layer IV (MP3) player, a moving picture experts group audio layer IV (MP4) player, a notebook computer, or a desktop computer. If the host is configured as a server, the host can be a standalone physical server. In the case where the data service system is implemented as a server cluster composed of multiple physical servers or a distributed file system, or a cloud server providing cloud services, cloud databases, cloud computing, cloud functions, cloud storage, network services, cloud communication, middleware services, domain name services, security services, content delivery networks (CDNs), and big data and artificial intelligence platforms, the host 101 is configured as a client of the data service system. For example, the data service system is a cloud service system, and the data service system can also be referred to as a cloud platform (i.e., a short name for a cloud computing platform). The cloud platform is a service based on hardware resources and software resources, and provides computing, network, and storage capabilities. The host is configured as a client of the cloud platform. The cloud platform processes and analyzes massive data in a remote terminal through a network "cloud" and returns the data to the user. The cloud platform has the characteristics of large-scale, distribution, virtualization, high availability, scalability, on-demand service, and security. The cloud platform can quickly allocate and release configurable computing resources with a small management cost or low interaction complexity between the user and the service provider.

[0070] The storage array 102 in the data service system can be configured as a data center, and the storage node 103 can be configured as a storage server in the data center. The data center includes multiple interconnected storage servers. For example, the storage array 102 is a data center for enterprise storage, and the storage node 103 is a storage server in the data center. The embodiments of the present application are not limited in this regard.

[0071] The host 101 and the storage node 103 interact with each other. For example, in a data reading process, the host 101 obtains a storage address of data to be read, generates a data read-write request (i.e., a data processing request) according to the storage address, and sends the data read-write request to the storage node 103. The storage node 103 returns data corresponding to the data read-write request to the host 101 according to the data read-write request, and the host 101 further processes the data. For example, in a data writing process, the host 101 obtains data to be written into the storage node 103, generates a data read-write request according to the address of the data in the memory of the host 101, and sends the data read-write request to the storage node 103. The storage node 103 returns a response to the host 101 according to the data read-write request, and the host 101 sends the data to be written to the storage node 103 to write the data into the storage node 103 after receiving the response.

[0072] In some embodiments, the storage array 102 stores data using an erasure coding (EC) technology. In an architecture using the erasure coding technology, multiple storage nodes in the storage array 102 are divided into a master storage node and associated storage nodes, and the master storage node and the associated storage nodes are connected through a scale-out network. For example, in a data storage process, the host 101 stores data in the master storage node, the master storage node divides the data into multiple parts, and the divided data is referred to as sub-data. The master storage node performs redundancy calculation on the multiple sub-data to obtain a redundancy calculation result of each sub-data. The master storage node stores the multiple sub-data and the redundancy calculation result in multiple associated storage nodes. When the host 101 requests to read data in the master storage node, if the master storage node fails to provide corresponding data to the host 101, the master storage node sends a data reading instruction to each associated storage node to obtain sub-data and redundancy calculation results in each associated storage node. The master storage node restores the data according to the received sub-data and redundancy calculation results, and returns the data to the host 101.

[0073] In some embodiments, the storage array 102 stores data by using a mirroring technology. When the data is stored by using the mirroring technology, the storage array 102 includes a first storage node and a second storage node, and the second storage node is used to back up the data in the first storage node. During the data storage, the host 101 stores data in the first storage node, and the first storage node sends the data to the second storage node so that the second storage node backs up the data. When the host 101 reads the data in the first storage node, if the first storage node fails or the data has an error, the first storage node cannot provide the corresponding data to the host 101, and the first storage node sends a data reading instruction to the second storage node to obtain the corresponding data in the second storage node. After the first storage node receives the data sent by the second storage node, the first storage node returns the data to the host 101.

[0074] In some embodiments, the data service system can be applied to a single device or a network system. When the data service system is applied to a single device, the host 101 and the storage node 103 are connected through a bus. When the data service system is applied to a network system, the data service system further includes a front-end network 104, and the front-end network 104 includes a multi-layer switch. The host 101 is connected to the plurality of storage nodes 103 through the multi-layer switch, so that the host 101 and the storage node 103 can communicate through the front-end network 104.

[0075] As shown in FIG. 1, in the data service system of the related art, the storage node 103 includes a DPU 1031, a CPU 1032, a memory 1033, and an SSD 1034, and the DPU 1031, the memory 1033, and the SSD 1034 are connected to the CPU 1032 through a PCIe bus. During the data service by using the storage node, the data is transmitted between the DPU 1031, the CPU 1032, and the SSD 1034. The PCIe module in the CPU 1032 performs unpacking and repacking on the data sent by the DPU 1031 or the data sent by the SSD 1034, so that the data can be transmitted between the DPU 1031 and the SSD 1034. This causes congestion in the PCIe module in the CPU 1032 when the number of the DPU 1031 or the SSD 1034 is large, and the data processing efficiency is low.

[0076] In order to solve the problem of low data processing efficiency, as shown in FIG. 2, the data service system provided by the embodiments of the present application includes a host 201 and a storage array 202, the storage array 202 includes a plurality of storage nodes 203, the host 201 is connected to the plurality of storage nodes 203, and the plurality of storage nodes 203 in the storage array 202 are connected through a bus.

[0077] The host 201 is the same as the host 101 shown in FIG. 1, and details are not repeated herein. The storage array 202 is the same as the storage array 102 shown in FIG. 1, and can be configured as a data center. The storage node 203 can be configured as a storage server in the data center. Similarly, in some embodiments, the host 201 and the storage node 203 can communicate through the front-end network 204, and details are not repeated herein.

[0078] However, in the data service system provided in the embodiments of the present application, the storage node 203 includes a data processing unit 2031, a first switching module 2032, a CPU 2033, a memory 2034, and a storage device 2035. The CPU 2033 and the memory 2034 are connected, and the data processing unit 2031, the CPU 2033, and the storage device 2035 are connected to the first switching module 2032 through buses respectively. In the process of using the storage node 203 to provide data service, the data processing unit 2031 and the storage device 2035, the CPU 2033 and the data processing unit 2031, and the CPU 2033 and the storage device 2035 can directly transmit data through the first switching module 2032, thereby avoiding congestion and improving data processing efficiency. The basic structure of the storage node 203 in the data service system and the process of using the storage node 203 to provide data service will be described in detail below in combination with FIG. 3.

[0079] FIG. 3 is a structural schematic diagram of a storage node provided in the embodiments of the present application. As shown in FIG. 3, the storage node includes a data processing unit 301, a first switching module 302, a CPU 303, a memory 304, and a storage device 305. The data processing unit 301, the CPU 303, and the storage device 305 are connected to the first switching module 302 through buses respectively, and the memory 304 and the CPU 303 are connected through a bus. The bus can be configured as a unified bus (UB) or a compute express link (CXL).

[0080] Next, each of the above components will be described.

[0081] (1) The data processing unit 301 is configured to receive a data processing request from a host, and distribute the data processing request from the host, the data processing request being configured to request processing of data in the storage node.

[0082] In some embodiments, the data processing unit 301 is configured as a programmable smart NIC or a DPU, etc. The data processing unit 301 is configured to receive a data processing request sent by the host in the form of a packet, and the network protocol used by the data processing request can be a non-volatile memory standard network protocol (NVMe-oF) or a network file system remote direct memory access protocol (NFS over RDMA), etc., which is not limited in the embodiments of the present application. The data processing unit 301 decapsulates the received packet according to the corresponding network protocol to obtain the corresponding data processing request.

[0083] It should be noted that in the data read / write process, the above data processing request is a data read / write request. The data processing unit 301 receives the data read / write request sent by the host through the transmission path between the data processing unit 301 and the host, and sends a read / write instruction to the storage device 305 according to the data read / write request. Then the data processing unit 301 receives the data sent by the storage device 305, and multiplexes the transmission path between the data processing unit 301 and the host to forward the data to the host in the form of remote direct data access (RDMA). The data read / write request carries a data index, which is the address of the data recorded by the host. For the same data, the address of the data recorded by the host corresponds to the address of the data in the storage device 305. In the case of a data read request, the data index carried by the data read / write request corresponds to the storage address of the data in the storage device 305. In the case of a data write request, the data index carried by the data read / write request corresponds to the write address of the data in the storage device 305. In addition, in the case of a data write request, the data read / write request also carries the storage address of the data in the host memory.

[0084] In some embodiments, the data processing unit 301 is further configured to distribute the obtained data processing request to the CPU 303 or the storage device 305 for processing. In some embodiments, the data processing unit 301 is configured to distribute the data processing request to the CPU 303 or the storage device 305 for processing according to a preset request distribution strategy. For example, the data processing unit 301 can distribute the request based on the type of the data processing request, that is, the data processing unit 301 determines that the data processing request is a data read-write request, and the data read-write request is used to request reading or writing of the target storage device. The data processing unit 301 sends a first read-write instruction to the first switching module based on the data read-write request, and the first read-write instruction indicates reading or writing of the target storage device. The data processing unit 301 determines that the data processing request is a non-data read-write request, and sends the non-data read-write request to the CPU 303. The non-data read-write request is a request other than the data read-write request, such as a storage device capacity query request, a formatting request, and a link establishment request. By distributing the non-data read-write request to the CPU 303 for processing, the general processing capability of the CPU 303 can be fully utilized, and resource waste can be avoided.

[0085] For another example, the data processing unit 301 can distribute the request based on the data amount of data read or written by the data read-write request, that is, the data processing unit 301 determines that the data amount of data requested by the data read-write request is greater than or equal to a first threshold, and sends the first read-write instruction to the first switching module. The first threshold can be 16K, and embodiments of the present application are not limited thereto. Since the storage device 305 has a long delay when executing a data read-write request with a small data amount, the CPU 303 can utilize a high-performance write cache and other technologies to reduce the delay of executing the data read-write request. For example, in the data writing process, the CPU 303 returns a write response after writing data to the storage power cache, and when the data amount in the storage power cache reaches a preset data amount, the CPU 303 integrates the data in the storage power cache and stores the integrated data in the storage device 305. Therefore, the request distribution strategy described above can be used to distribute the request to the CPU 303 or the storage device 305, which can improve the execution efficiency of the request. The storage power cache refers to a cache that can ensure that data or instructions will not be lost in the case of power failure or power outage, and is connected to the CPU 303 in the storage node and is used for temporarily storing data or instructions output by the CPU 303. The storage power cache can be implemented as a memory + battery backup unit (BBU), a high-performance hard disk, or a phase change memory (PCM) and other non-volatile storage media.

[0086] In some embodiments, the data processing unit 301 can also not perform the above-mentioned process of distributing the data processing request, but directly distribute the data processing request to the storage device 305 for processing, and the embodiments of the present application do not make any limitation in this regard.

[0087] In some embodiments, in the process of distributing the data read / write request, the data processing unit 301 is further configured to query the metadata, that is, the data processing unit 301 generates a metadata query instruction according to the data index carried by the data read / write request, so as to obtain a query result through the metadata query instruction.

[0088] Based on different metadata storage modes, the data processing unit 301 can obtain metadata from different components, that is, in some embodiments, the data service system uses the CPU 303 to store the metadata, and accordingly, the data processing unit 301 is further configured to generate a metadata query instruction according to the data index carried by the data read / write request. The data processing unit 301 sends the metadata query instruction to the CPU 303 through the first switching module 302, and the CPU 303 queries the metadata according to the metadata query instruction. If the data read / write request is a data read request, the query result obtained by the CPU 303 through the query includes the storage address of the data. If the data read / write request is a data write request, the query result obtained by the CPU 303 through the query includes the write address of the data. The CPU 303 returns the query result to the data processing unit 301 through the first switching module 302.

[0089] In other embodiments, the data service system uses the data processing unit 301 to store the metadata, and accordingly, the data processing unit 301 is configured to query the metadata according to the metadata query instruction generated by the above-mentioned process, so as to obtain a query result.

[0090] In some embodiments, the data processing unit 301 is further configured to generate a context corresponding to the data read / write request according to the data read / write request and the query result. In some embodiments, the context corresponding to the data read request comprises an instruction identifier of the data read request, a path identifier of a message transmission path between the host and the data processing unit 301, a storage address of the data, and information of the target storage device 305. The context of the data write request comprises an instruction identifier of the data write request, a path identifier of a transmission path between the host and the data processing unit 301, a storage address of the data in the host memory, a write address of the data, and information of the target storage device 305. The storage address of the data in the host memory is carried by the data write request. The instruction identifier of the data read / write request corresponds to the data read / write request, and is used to identify the context corresponding to the data read / write request, so that the data processing unit 301 can find the context corresponding to the data read / write request from the pre-stored contexts according to the instruction identifier of the data read / write request, and obtain the information of the data read / write request from the context. For example, the data processing unit 301 can obtain the context corresponding to the data read / write request from the pre-stored contexts according to the instruction identifier of the data read / write request, and determine the transmission path between the host and the data processing unit 301 from the context, so as to return the data or the instruction to the host through the transmission path, thereby ensuring the accuracy of data transmission. The instruction identifier of the data read / write request can be carried by the data read / write request itself, or can be allocated by the data processing unit 301, and the embodiments of the present application do not limit the same.

[0091] In the process of processing the data processing request, the data processing unit 301 is configured to send a first processing instruction to the first switching module based on the data processing request, the first processing instruction indicating processing data in a target storage device in the plurality of storage devices. Correspondingly, the data processing unit 301 acquires the address corresponding to the data and the information of the target storage device according to the data processing request, generates the first processing instruction according to the address and the information of the target storage device, and sends the first processing instruction to the first switching module, so that the storage node continues to perform a subsequent data processing process. For example, in the data read / write process, the data processing unit 301 generates a first read / write instruction based on the instruction identifier of the data read / write request and the query result, the first read / write instruction carrying the data read / write address and the information of the target storage device, so that after the data processing unit 301 sends the first read / write instruction to the first switching module 302, the first switching module 302 can send a second read / write instruction to the target storage device according to the information of the target storage device carried by the first read / write instruction, the second read / write instruction carrying the data read / write address. For example, in the data read process, when the data corresponding to the data read request is located in the plurality of storage devices, the data processing unit 301 generates a plurality of first read / write instructions corresponding to the target storage devices according to the instruction identifier of the data read request and the plurality of data storage addresses in the query result, each target storage device corresponding to the first read / write instruction carrying the information of the target storage device and the data read / write address corresponding to the target storage device. The data processing unit 301 sends the plurality of first read / write instructions to the first switching module 302, and the first switching module 302 sends a corresponding second read / write instruction to each target storage device according to the information of the target storage device carried by each first read / write instruction, each target storage device corresponding to the second read / write instruction carrying the data read / write address corresponding to the target storage device.

[0092] After sending the first processing instruction to the first switching module 302, the data processing unit 301 is further configured to receive a response returned by the storage device 305 through the first switching module 302, and forward the response to the host, so as to implement the data processing process.

[0093] In some embodiments, in the process of transmitting the instruction, the data processing unit 301 is configured to encapsulate the instruction and send the instruction to the first switching module 302 in the form of a packet. In the encapsulation process, the data processing unit 301 encapsulates the information of the target storage device in the packet of the first processing instruction, so that the first switching module 302 can acquire the information of the target storage device from the packet. Because the information of the target storage device, such as the identifier of the target storage device or the address of the target storage device, is encapsulated in the packet, the first switching module 302 can transmit the above-mentioned packet to the target storage device according to the information of the target storage device in the packet, and ensure the accuracy of transmission.

[0094] The following Table 1 is an example of a message format corresponding to a first processing instruction provided by an embodiment of the present application, as shown in the following Table 1:

[0095] Table 1

[0096] The message header is used to carry control information of the message, such as a version number of a network protocol used by the message, a port number of a message sender, and a port number of a message receiver, etc. The congestion control information is used to indicate a transmission control strategy required by the first switching module. The message check is a field generated by the message sender according to the message, and is used to ensure the integrity and accuracy of the message transmission. Correspondingly, the message receiver also generates a field according to the message after receiving the message, and compares the field with the message check. If the field is consistent with the message check, it indicates that the message transmission is not a problem. If the field is inconsistent with the message check, it indicates that the message transmission has a problem, and the message received by the message receiver is unusable.

[0097] It should be noted that the message format shown in Table 1 above is only an example, and the embodiments of the present application do not limit the message format. For example, the message can not carry the congestion control information, and for another example, the address of the data processing unit or the address of the target storage device can be encapsulated in the message header, and the embodiments of the present application do not limit this.

[0098] In some embodiments, in the encapsulation process, the data processing unit 301 first encapsulates the instruction using the NVMe-oF protocol or other application layer protocol, and then encapsulates the encapsulated instruction using the UB protocol or CXL protocol to obtain a message corresponding to the instruction. The NVMe-oF protocol or other application layer protocol defines the communication rules between the data processing unit 301 and the storage device 305, so that the storage device receiving the message can decapsulate the message according to the protocol to obtain the instruction carried by the message. The UB protocol or CXL protocol defines the transmission mode of the message between the data processing unit 301 and the storage device 305, so that the message can be transmitted through the UB bus or CXL bus between the data processing unit 301 and the storage device 305. Taking the encapsulation of the instruction using the NVMe-oF protocol as an example, the complete protocol stack corresponding to the NVMe-oF protocol needs to encapsulate the instruction in multiple layers, and different layers of encapsulation give the message different functions, such as connection initialization function, device discovery function, device initialization function, device exception function and read-write function. Among them, the connection initialization function refers to the function of determining the transmission path between the data processing unit 301 and the storage device 305, the device discovery function refers to the function of obtaining the capacity information of the storage device 305, the device initialization function refers to the function of enabling the storage device 305, the device exception function refers to the function of making the storage device 305 send a response when an exception is detected, and the read-write function refers to the function of enabling the storage device 305 to read and write the message. The data processing unit 301 can omit part of the layer encapsulation when encapsulating the instruction using the NVMe-oF protocol, thereby reducing the workload of the data processing unit 301 and improving the encapsulation efficiency of the data processing unit 301. For example, the data processing unit 301 can omit the encapsulation of the connection initialization function, the device discovery function, the device initialization function and the device exception function corresponding layer, and only use the encapsulation of the read-write function corresponding layer to encapsulate the instruction.

[0099] In some embodiments, the data processing unit 301 is further configured to perform data transmission, and accordingly, in the data reading process, the target storage device sends, to the first switch module 302, an instruction identifier corresponding to the data read / write request, data corresponding to the data read / write request, and information of the data processing unit, the first switch module 302 sends, to the data processing unit 301, the instruction identifier corresponding to the data read / write request and the data corresponding to the data read / write request according to the information of the data processing unit 301. The data processing unit 301 is configured to receive the data sent by the first switch module 302, query a context stored in the data processing unit 301 according to the instruction identifier corresponding to the data read / write request, obtain the context corresponding to the data read / write request, and determine a transmission path between the data processing unit 301 and the host from the context. The data processing unit 301 sends the data corresponding to the data read / write request to the host through the transmission path between the host and the data processing unit 301.

[0100] In the data writing process, the data processing unit 301 is configured to receive the data corresponding to the data read / write request and the instruction identifier of the data read / write request sent by the host. The data processing unit 301 queries the context stored in the data processing unit 301 according to the instruction identifier of the data read / write request, obtains the context corresponding to the data read / write request, and obtains a write address of the data corresponding to the data read / write request and information of the target storage device from the context. The data processing unit 301 sends, to the first switch module 302, the data corresponding to the data read / write request, the write address of the data corresponding to the data read / write request, and the information of the target storage device. The first switch module 302 sends, to the target storage device, the data corresponding to the data read / write request and the write address of the data corresponding to the data read / write request according to the information of the target storage device.

[0101] (2) The first switch module 302 is configured to perform transmission of instructions or data.

[0102] The first switch module 302 can be configured as one switch chip or a plurality of switch chips connected with each other through a bus, and embodiments of the present application do not limit the same. The switch chip stores a routing table, which includes transmission paths between a plurality of components in the storage node, including the data processing unit 301, the CPU 303 and the storage device 305. For example, in the case where the storage node includes a plurality of data processing units and a plurality of storage devices, the routing table includes transmission paths between the plurality of data processing units and the plurality of storage devices. The first switch module 302 is configured to send the second processing instruction to the target storage device based on the first processing instruction, and the second processing instruction indicates processing of data in the target storage device. Taking the data processing unit sending the read-write instruction to the target storage device as an example, in the communication process, the switch chip in the first switch module 302 receives the read-write instruction. Since the read-write instruction carries the information of the target storage device, the switch chip can query the routing table according to the information to obtain the transmission path of the read-write instruction, and then send the read-write instruction to the corresponding target storage device through the transmission path. For example, a switch chip in the first switch module 302 receives the read-write instruction and parses the read-write instruction to obtain the information of the target storage device from the read-write instruction. The switch chip queries the routing table according to the information to obtain the transmission path of the read-write instruction as “current switch chip-switch chip 1-switch chip 2-storage device A”, and then sends the read-write instruction to switch chip 1 to realize the transmission of the read-write instruction. The transmission process of data is the same as the transmission process of the read-write instruction, and embodiments of the present application will not be repeated here. In the case where the first switch module 302 is configured as a plurality of switch chips connected with each other through a bus, the transmission capacity of the first switch module can be improved, the ability of the first switch module to avoid network congestion can be improved, and the first switch module can avoid network congestion in the process of transmitting instructions or data according to a preset transmission control strategy. In addition, using a plurality of switch chips connected with each other to transmit instructions or data can improve the stability of transmission, avoid uneven or fluctuation of storage device performance caused by transmission lag, and further ensure the stability of data processing efficiency.

[0103] Taking data transmission as an example, the first switch module 302 is further configured to perform data transmission according to a preset transmission control strategy, so as to avoid network congestion of the first switch module 302, reduce data packet loss or data transmission delay, and improve transmission efficiency of the first switch module 302. For example, the first switch module 302 uses a congestion avoidance algorithm as the transmission control strategy to perform data transmission. Correspondingly, taking the first switch module 302 as an example, when the first switch module 302 starts to perform data transmission, the switch chip in the first switch module 302 preferentially transmits data with a small amount of corresponding data after receiving the data transmitted by the data processing unit 301, so that the amount of corresponding data transmitted by the switch chip is small each time, thereby avoiding that the amount of corresponding data transmitted at the beginning is large, which causes network congestion. After the storage device 305 receives the data transmitted by the first switch module 302, the storage device 305 returns a response to the first switch module 302, and the response indicates that the storage device 305 has received the data. The switch chip increases the amount of corresponding data transmitted at a time according to a preset step length after receiving each response. During the transmission process, the switch chip also detects the queuing delay of the data to be transmitted. If the switch chip detects that the queuing delay of the data to be transmitted increases, the switch chip stops increasing the amount of corresponding data transmitted at a time. If the switch chip detects that the queuing delay of the data to be transmitted does not increase, the switch chip continues to increase the amount of corresponding data transmitted at a time. The transmission process of the read-write instruction is the same as the transmission process of the data, and details are not described herein.

[0104] The first switch module in the storage node is further configured to be connected to the first switch modules of other storage nodes through a bus, so that the CPUs, the data processing units and the storage devices in different storage nodes can communicate through the first switch modules in the storage nodes and the bus between the first switch modules, realize straight-through across the storage nodes, and build a CPU, data processing unit and storage device pooling architecture.

[0105] In the data writing process, the host sends data to the data processing unit in the storage node A, and the data processing unit in the storage node A sends the data to the storage device in the storage node A through the first switch module in the storage node A, so as to store the data in the storage node A. In addition, the data processing unit in the storage node A also divides the received data into multiple sub-data, and sends the sub-data to the first switch modules in the storage nodes B through the first switch module in the storage node A and the first switch modules in other storage nodes connected with the first switch module in the storage node A, and the first switch modules in the storage nodes B store the received sub-data in the storage devices in the storage nodes B. In the data reading process, the host sends a data reading request to the data processing unit in the storage node A, and if the storage node A fails to provide corresponding data to the host, the data processing unit in the storage node A generates a first reading instruction for each storage node B according to the data reading request, and sends the corresponding first reading instruction to the first switch module in each storage node B through the first switch module in the storage node A and the first switch modules in other storage nodes connected with the first switch module in the storage node A. After the first switch module in the storage node B receives the corresponding first reading instruction, the first switch module in the storage node B acquires the sub-data requested by the first reading instruction from the storage device in the storage node B according to the first reading instruction, and sends the sub-data to the first switch module in the storage node A through the first switch modules in other storage nodes connected with the first switch module in the storage node B. After the first switch module in the storage node A receives the sub-data, the first switch module in the storage node A sends the received sub-data to the data processing unit in the storage node A. The data processing unit in the storage node A restores the data requested by the host according to the received sub-data, and returns the data to the host.

[0106] It should be noted that when the first switch module 302 transmits instructions or data, the first switch module 302 can not repackage the instructions or data, but directly forwards the received instructions or data to the target storage device or data processing unit, thereby improving the transmission efficiency. Accordingly, when the first switch module does not repackage the instructions or data, the first processing instruction received by the first switch module from the data processing unit and the second processing instruction sent by the first switch module to the target storage device are the same.

[0107] (3) CPU 303, configured to perform corresponding processing based on a data processing request from the host, the data processing request including a data read / write request and a request other than the data read / write request, which can also be referred to as an admin request. In the case where the data processing request is the data read / write request, the CPU 303 performs read / write on data in the storage device according to the data read / write request. For example, the data read / write request from the host includes a request corresponding to data with a large data volume and a request corresponding to data with a small data volume, and the data processing unit 301 distributes the request corresponding to data with a small data volume to the CPU 303 for processing. The CPU 303 receives the data read / write request corresponding to data with a small data volume and performs a corresponding data read / write operation according to the data read / write request. In the case where the data processing request is the request other than the data read / write request, the CPU 303 performs a corresponding operation according to the request other than the data read / write request. For example, the CPU 303 receives a link establishment request and performs a process of establishing a link between the host and the data processing unit 301 according to the link establishment request. For another example, the CPU 303 receives a capacity query request and returns the size of the storage space of the storage node or the storage array according to the capacity query request. For another example, the CPU 303 receives a formatting request and performs a formatting process on the storage space of the storage node or the storage array according to the formatting request.

[0108] In addition, in some embodiments, in the case where the CPU 303 stores the metadata, the CPU 303 also receives a metadata query instruction sent by the data processing unit 301, performs metadata query according to the metadata query instruction, obtains a query result, and returns the query result to the data processing unit 301.

[0109] (4) Memory 304, configured to store the data processing request received by the CPU 303 and the execution status of the data processing request. For example, after the CPU 303 receives the request other than the data read / write request, the CPU 303 adds the request other than the data read / write request to the request queue of the memory 304 and marks the execution status of the request other than the data read / write request as unexecuted. The CPU 303 obtains the unexecuted request from the request queue of the memory 304 to perform, and after the CPU 303 performs the request other than the data read / write request, the memory 304 marks the execution status of the request other than the data read / write request as completed.

[0110] (5) Storage device 305, configured to store data to provide data read / write service for the host.

[0111] In some embodiments, as shown in FIG. 3, the storage device 305 includes a bus interface 3051, a buffer 3053, a control module 3054, and a persistent storage medium 3055. Among them, the bus interface 3051 is connected with the control module 3054, the control module 3054 is connected with the persistent storage medium 3055, and the control module 3054 is connected with the buffer 3053, so that the buffer 3053 can be used as a temporary cache of the control module 3054 in the data interaction process.

[0112] Among them, the bus interface 3051 is used to receive the instructions or data sent by the first switching module 302 in the form of a message through the bus, and uses the network protocol corresponding to the bus to unpack the message to obtain the instructions or data. The bus interface 3051 is also used to, when the storage device 305 sends instructions or data to the first switching module 302 through the bus, use the network protocol corresponding to the bus to pack the instructions or data, and then send the instructions or data to the first switching module 302 in the form of a message. In the storage device 305, the interface type of the bus interface 3051 is the same as the bus type, as shown in FIG. 4, if the bus is a UB bus, then the bus interface is a UB interface, and if the bus is a CXL bus, then the bus interface is a CXL interface.

[0113] In the storage device 305, the control module 3054 is used to control the data reading and data writing in the storage device 305. Accordingly, in the data reading process, the control module 3054 is used to obtain the data corresponding to the read-write instruction from the persistent storage medium according to the storage address of the data carried by the read-write instruction, store the data into the buffer 3053 of the storage device 305, so that the storage device 305 can obtain the data from the buffer 3053 and send the data to the data processing unit 301 through the first switching module 302. In the data writing process, the data processing unit 301 sends data to the storage device 305 through the first switching module 302, and the storage device 305 stores the data into the buffer 3053. The control module 3054 is used to obtain the data from the buffer 3053, and store the data into the persistent storage medium 3055 indicated by the write address of the data carried by the read-write instruction. In some embodiments, in the above data reading process, the storage device 305 can divide the data corresponding to the read-write instruction into multiple parts and return the data in multiple times, and in the above data writing process, the storage device 305 can also divide the data corresponding to the read-write instruction into multiple parts and write the data into the persistent storage medium in multiple times. Of course, the host can also divide the data corresponding to the data reading and writing request into multiple parts and write the data into the storage device 305 in multiple times, and the embodiments of the present application do not limit this.

[0114] In some embodiments, the control module 3054 is configured to receive the processing instruction sent by the data processing unit 301 through the first exchange module 302.

[0115] In some embodiments, the control module 3054 is configured to schedule the received processing instruction according to an instruction scheduling strategy, i.e., to sort the execution order of the received processing instruction. For example, the instruction scheduling strategy is to sort the processing instruction according to the priority of the host, and accordingly, the processing instruction received by the control module 3054 carries the priority corresponding to the host, and the control module 3054 sorts the execution order of the processing instruction according to the priority carried by the processing instruction. The sorted processing instruction is stored in the cache 3053. The process of scheduling the processing instruction by the control module 3054 is further described below in combination with FIGS. 8-10.

[0116] In some embodiments, the control module 3054 is configured to perform legality check on the received processing instruction, i.e., the control module 3054 parses the received processing instruction to obtain the keyword carried by the processing instruction, if the keyword satisfies the permission to execute the processing instruction, the control module 3054 further processes the processing instruction, if the keyword does not satisfy the permission to execute the processing instruction, the control module 3054 returns execution failure information or insufficient permission information to the data processing unit 301, the execution failure information indicates that the processing instruction execution fails, and the insufficient permission information indicates that the processing instruction cannot be executed due to insufficient permission.

[0117] It should be noted that in some embodiments, for a plurality of storage devices in a plurality of storage nodes, the data service system allocates a unique address for the cache in the storage device, so as to avoid transmission errors and improve the accuracy of transmission when transmitting according to the address of the cache.

[0118] As shown in FIG. 4, the cache 3053 can be configured as a static random-access memory (SRAM) or a high bandwidth memory (HBM), etc., which is not limited in the embodiments of the present application. For example, referring to FIG. 4, the storage device is configured as a solid state disk, i.e., the persistent storage medium is configured as a flash memory (NAND), etc., which is not limited in the embodiments of the present application.

[0119] In some embodiments, the storage node includes at least one disk frame including a plurality of storage devices and a second switch module, the plurality of storage devices on the disk frame are connected to the first switch module in the storage node through the second switch module in the disk frame, and the first switch module is further connected to the data processing unit in the storage node through a bus. The second switch module is configured to forward the second processing instruction to a target storage device in the plurality of storage devices based on the second processing instruction sent by the first switch module, the target storage device is configured to receive the second processing instruction and return a response of the second processing instruction to the second switch module, and the second switch module is further configured to return the response to the data processing unit through the first switch module after receiving the response from the target storage device. Through the above disk frame, the transmission of instructions or data can be further scheduled, thereby further improving the data processing efficiency.

[0120] In the storage node provided by the embodiments of the present application, after the data processing unit receives the data processing request sent by the host, the first switch module sends the first processing instruction. Since the first processing instruction indicates that the data in the target storage device in the plurality of storage devices is processed, the first switch module can send the data address carried by the first processing instruction to the target storage device, thereby continuing the data processing process. Then, in the data processing process, the CPU and the memory can be bypassed, the transmission of instructions and data between the data processing unit and the storage device is relayed through the first switch module, the influence of the performance of the CPU and the memory on the performance of the storage device is avoided, and thus the storage device can provide large-bandwidth data services. Since the first switch module has the function of congestion control, when there are many instructions and data to be transmitted, network congestion can be avoided, and thus the data processing efficiency of the method is high. In addition, under the control of the first switch module, the stability of transmission can be ensured, and the performance of the storage device is not uneven or fluctuates due to problems such as transmission lag, thereby ensuring the stability of the data processing efficiency. In addition, the bandwidth corresponding to the storage device can be increased, when a large amount of data processing requests are transmitted through the front-end network, the data processing requests can be avoided to be accumulated in the front-end network, thereby improving the data processing efficiency.

[0121] Taking a hard disk with a 8-channel 5200MT / s rate DDR5+36 block interface rate of 32Gbpsx4 as an example: when providing data services by using the existing storage architecture, in the data read-write process, the data processing unit needs to access the memory at least twice, once to store data into the memory, and once to take out data from the memory. Under this technology, the 8-channel 5200 DDR5 performance is about 300GB / s, so the storage node performance is about 150GB / s; when providing data services by using the storage architecture provided by the embodiments of the present application, the hard disk performance can be fully utilized, the single disk performance is about 12GB / s, and the multi-disk performance linearity is evaluated as 0.9, that is, the storage node performance is about 388GB / s. Obviously, the storage node performance is improved by several times.

[0122] The above describes the hardware structure of the storage node provided by the embodiments of the present application in detail, and the data processing unit 301, the CPU 303 and the storage device 305 can also be divided into at least one functional virtual module, and different virtual modules realize different functions of the hardware.

[0123] The virtual modules contained in the data processing unit 301 will be described below in combination with FIG. 5.

[0124] Referring to FIG. 5, the data processing unit 301 includes a host network protocol analysis module 3011, a request distribution module 3012, an initiator 3013 and a transceiver module 3014. The host network protocol analysis module 3011 is also called a receiving module, which is used to perform the process of receiving the packet sent by the host, and unpacking the received packet to obtain the corresponding data processing request. In some embodiments, the host network protocol analysis module 3011 is also used to perform the process of forwarding the read-write instruction to the storage device 305 and forwarding the response returned by the storage device 305 to the host in the data read-write process.

[0125] The host network protocol analysis module 3011 obtains the data processing request, and sends the data processing request to the request distribution module 3012, so that the request distribution module 3012 performs the process of distributing the data processing request from the host to the corresponding component, such as the CPU 303 or the storage device 305, which can also be referred to as an IO routing distribution module. It should be noted that the above content is described by taking the host network protocol analysis module 3011 sending the data processing request to the request distribution module 3012, and then the request distribution module 3012 distributing the data processing request to the CPU 303 or the storage device 305 as an example. In some embodiments, the host network protocol analysis module 3011 can directly send the obtained data processing request to the CPU 303 or the storage device 305, and the embodiments of the present application do not limit this. Accordingly, the request distribution module 3012 is not a necessary module in the data processing unit 301, and the data processing unit 301 can not include the above-mentioned request distribution module 3012.

[0126] The request distribution module 3012 is also used to perform the process of querying the metadata by the data processing unit 301, which will not be repeated here.

[0127] It can be understood that the request distribution module 3012 is also used to perform the process of generating the context corresponding to the data read / write request by the data processing unit 301, which will not be repeated here.

[0128] The start module 3013 is used to perform the process of generating the first read / write instruction by the data processing unit 301 and sending the first read / write instruction to the first switching module 302 when the data processing request is a data read / write request, which will not be repeated here.

[0129] In some embodiments, during the instruction transmission process, the start module 3013 is used to perform the process of encapsulating the instruction by the data processing unit 301 and sending the instruction to the first switching module 302 in the form of a message, which will not be repeated here.

[0130] The transceiver module 3014 is used to perform the process of data transmission by the data processing unit 301, which will not be repeated here.

[0131] The virtual module included in the CPU 303 will be described below in conjunction with FIG. 6.

[0132] Referring to FIG. 6, the CPU 303 includes a request module 3031, which is used to perform the process of processing the data processing request from the host by the CPU 303, which will not be repeated here.

[0133] In some embodiments, the CPU 303 further comprises a metadata module 3032. The metadata module 3032 is configured to perform the process of querying metadata by the data processing unit 301. Details are not described herein again.

[0134] The virtual module of the storage device 305 will be described below in combination with FIG. 7.

[0135] In some embodiments, the storage device 305 comprises an instruction module (target) 3052. The instruction module 3052 is a virtual module in the storage device 305, and is configured to instruct the storage device 305 to have a function of scheduling the received processing instruction. The function is performed by the control module 3054. Accordingly, as shown in FIG. 7, the instruction module 3052 is located in the control module 3054.

[0136] The instruction module 3052 is configured to perform the process of scheduling the received processing instruction by the control module 3054. Details are not described herein again.

[0137] In some embodiments, the instruction module 3052 is further configured to perform the process of checking the legality of the received processing instruction by the control module 3054. Details are not described herein again.

[0138] The above description is about the basic structure of the data service system and the storage node provided by the embodiments of the present application. In the data service system, the data processing unit of the host and the storage node transmits data or instructions through a transmission path, which is referred to as a host QP. In the storage node, the data processing unit and the storage device transmit data or instructions through a transmission path, which is referred to as a storage device QP. The host QP can be multiple, which is not limited by the embodiments of the present application. Each host QP corresponds to a path identifier, so that the data processing unit and the host can transmit data and instructions in the same data read / write process through the same host QP, thereby improving the accuracy of transmission. The storage device QP can also be multiple, which is not limited by the embodiments of the present application. Each storage device QP corresponds to a path identifier, so that the data processing unit and the storage device can transmit data and instructions in the same data read / write process through the same storage device QP, thereby improving the accuracy of transmission.

[0139] Wherein, no matter host QP or storage device QP, corresponds to an instruction queue, which is used to order the execution order of instructions. As shown in FIG. 8, each instruction queue includes a receive instruction queue (RQ) and a send instruction queue (SQ). Wherein, the receive instruction queue is used to store the read-write instructions (i.e. processing instructions) received by the storage device, and the send instruction queue is used to store the instructions sent by the storage device to the data processing unit. A receive instruction queue corresponds to a receive completion queue (RCQ), which is used to record the execution of the instructions in the receive instruction queue. The execution recorded in the receive completion queue corresponds to the read-write instructions in the receive instruction queue one by one. For example, there are read-write instructions 1 and read-write instructions 2 in the receive instruction queue, read-write instructions 1 have been executed, and read-write instructions 2 have not been executed. The receive completion queue records execution 1 corresponding to read-write instructions 1 and execution 2 corresponding to read-write instructions 2. Execution 1 indicates that read-write instructions 1 have been executed, and execution 2 indicates that read-write instructions 2 have not been executed. A send instruction queue also corresponds to a send completion queue (SCQ), which is used to record the execution of the instructions in the send instruction queue. The execution recorded in the send completion queue corresponds to the read-write instructions in the send instruction queue one by one, which will not be described here.

[0140] Wherein, one host can correspond to multiple host QPs, one storage device can correspond to multiple storage device QPs, the first number of host QPs can correspond to the second number of storage device QPs, for example, m host QPs can correspond to n storage device QPs, m and n are both integers greater than 0, m can be 10000 or 100000, and n can be 10 or 50. Any host QP in the m host QPs can correspond to multiple storage device QPs of multiple storage devices. Since one host QP corresponds to one instruction queue and one storage device QP corresponds to one storage device QP, in FIG. 9, the host QP and the storage device QP are represented by the instruction queue, which embodies the correspondence between the host QP and the storage device QP. Through the above correspondence between the host QP and the storage device QP, the number of storage device QPs can be reduced, thereby reducing the instruction queue corresponding to the storage device QP, and further reducing the demand of the storage device QP on the storage device cache.

[0141] The above describes the host QP and the storage device QP, and the following describes the process of transmitting instructions and data through the host QP and the storage device QP. As shown in FIG. 10, there are a plurality of storage device QPs between the start module of the data processing unit and the instruction module of the storage device, and the storage device QPs are represented by instruction queues in FIG. 10. In the process of transmitting instructions or data through the storage device QPs, taking a data reading process as an example, the storage device receives the read-write instruction sent by the data processing unit through the storage device QP, stores the read-write instruction in the receiving instruction queue corresponding to the storage device QP, and records the execution status of the read-write instruction as not executed in the receiving completion queue corresponding to the storage device QP. The storage device polls the receiving instruction queue, and if the read-write instruction is polled and the execution status of the read-write instruction is not executed, the storage device acquires the data from the storage device according to the storage address of the data carried by the read-write instruction, stores the data in the cache of the storage device, and records the execution status of the read-write instruction as executed in the receiving completion queue corresponding to the storage device QP. The storage device generates a data write-back request according to the instruction identifier of the read-write instruction and the cache storage address of the data, stores the data write-back request in the sending instruction queue corresponding to the storage device QP, and records the execution status of the data write-back request as not executed in the sending completion queue corresponding to the storage device QP. The storage device polls the sending instruction queue, and if the data write-back request is polled and the execution status of the data write-back request is not executed, the storage device sends the data write-back request to the data processing unit through the storage device QP. When the data write-back request is polled and the execution status of the data write-back request is not executed, the storage device also acquires the data from the cache of the storage device according to the cache storage address of the data carried by the data write-back request, and returns the data to the data processing unit through the storage device QP. After the storage device receives the confirmation information sent by the data processing unit, the storage device records the execution status of the data write-back request as executed in the sending completion queue corresponding to the storage device QP.

[0142] For example, in a data write process, the storage device receives a read-write instruction sent by the data processing unit through the storage device QP, stores the read-write instruction in a receiving instruction queue corresponding to the storage device QP, and records the execution status of the read-write instruction as not executed in a receiving completion queue corresponding to the storage device QP. The storage device polls the receiving instruction queue. If the read-write instruction is polled and the execution status of the read-write instruction is not executed, the storage device generates a read request according to the instruction identifier of the data read-write request corresponding to the read-write instruction and the host memory storage address of the data, stores the read request in a sending instruction queue corresponding to the storage device QP, and records the execution status of the read request as not executed in a sending completion queue corresponding to the storage device QP. The storage device polls the sending instruction queue. If the read request is polled and the execution status of the read request is not executed, the storage device sends the read request to the data processing unit through the storage device QP. After receiving the read request, the data processing unit forwards the read request to the host. The host returns the data corresponding to the read request to the data processing unit according to the read request. The data processing unit forwards the data to the storage device through the storage device QP. After receiving the data, the storage device records the execution status of the read request as executed in the sending completion queue corresponding to the storage device QP, stores the data in the cache of the storage device, and stores the data in the persistent storage medium according to the write address of the data carried by the read-write instruction. The storage device records the execution status of the read-write instruction as executed in the receiving completion queue corresponding to the storage device QP.

[0143] In some embodiments, when the cache of the storage device includes a plurality of instruction queues, the plurality of instruction queues share one or more receiving instruction queues, that is, the storage device QPs corresponding to the plurality of instruction queues correspond to one or more receiving instruction queues. Of course, the plurality of instruction queues can also share one or more sending instruction queues, which is not limited in the embodiments of the present application. By sharing the receiving instruction queue or the sending instruction queue, the cache of the storage device occupied by the instruction queue can be reduced.

[0144] A data access method provided by the embodiments of the present application is introduced below, which is applied to the data service system. As shown in FIG. 11, the data access method includes the following steps:

[0145] 1101. The host sends a first data read request to the data processing unit, and the first data read request indicates data to be read.

[0146] In some embodiments, the host and the data processing unit are connected through a front-end network, the host obtains a data index of the data to be read, and generates a first data read request carrying a destination address indicating the data processing unit receiving the request. The host sends the first data read request to the front-end network, and a switch in the front-end network receives the first data read request, and sends the first data read request to the data processing unit indicated by the destination address according to the destination address carried by the first data read request.

[0147] In some embodiments, the host and the data processing unit are connected through a bus, and the host interface sends the first data read request to the data processing unit through the bus.

[0148] In some embodiments, the first data read request further carries a first keyword indicating the access authority of the host to the cache in the storage device. In some embodiments, the data read request further carries a second keyword indicating the access authority of the storage device to the host memory.

[0149] 1102、The data processing unit obtains the information of the data storage address and the target storage device according to the first data read request.

[0150] The embodiment of the present application takes the data processing unit to maintain the metadata as an example, and accordingly, the data processing unit can not interact with the CPU, but can obtain the metadata by local query to obtain the information of the data storage address and the target storage device. The storage address can be in the form of an address segment, or can be an offset address and an offset length of the data. The information of the target storage device can be an address or an identifier of the target storage device. The data processing unit performs metadata query based on the pre-stored metadata and the data index carried by the first data read request to obtain a query result. The query result can include one storage address or multiple storage addresses, which are not limited in the embodiment of the present application.

[0151] In some embodiments, after obtaining the data storage address, the data processing unit generates, based on the first data read request, a context corresponding to the first data read request, stores the context in the data processing unit, and the context includes an instruction identifier of the first data read request, a path identifier of a transmission path between the host and the data processing unit, the data storage address, and information of the target storage device. The process includes: the data processing unit, based on the first data read request, applies to use a part of the cache space of the data processing unit to store the context corresponding to the request. The data processing unit records the path identifier of the transmission path receiving the request, generates the instruction identifier of the first data read request, adds the path identifier, the instruction identifier, and the data storage address to the context corresponding to the first data read request to obtain the context corresponding to the first data read request. The data processing unit stores the context in the cache space applied to use.

[0152] In some embodiments, if the cache space of the data processing unit is full, the data processing unit removes the context meeting a pre-set cache cleaning rule from the cache according to the cache cleaning rule. For example, in the case that the cache space of the data processing unit is full, when a new context is to be stored in the cache space, the data processing unit deletes the context stored in the cache space earliest.

[0153] By recording the context of the first data read request, the data processing unit can obtain the context corresponding to the request according to the instruction identifier of the request, determine the transmission path between the host and the data processing unit from the context, and return data to the host through the transmission path.

[0154] 1103、The data processing unit generates a first read instruction based on the data storage address and the information of the target storage device of the first data read request, and sends the first read instruction to the first switching module.

[0155] In the embodiments of the application, the data processing unit generates a first read instruction based on the data storage address and the information of the target storage device of the first data read request, and sends the first read instruction to the switching chip connected to the data processing unit in the first switching module.

[0156] In some embodiments, after obtaining the first read instruction, the data processing unit selects one of the plurality of switch chips connected to the data processing unit in the first switch module according to a switch chip selection strategy, and sends the first read instruction to the switch chip. The switch chip selection strategy can be a round-robin strategy, that is, the data processing unit selects one of the plurality of switch chips to transmit the first read instruction in turn. The switch chip selection strategy can be a host priority strategy, that is, the first data read request received by the data processing unit carries the priority of the host, and correspondingly, the first read instruction sent by the data processing unit also carries the priority of the host. The data processing unit preferentially sends the first read instruction with a higher priority to an idle switch chip according to the priority carried by the first read instruction.

[0157] In some embodiments, the data processing unit generates the first read instruction based on the instruction identifier, the data storage address, and the information of the target storage device of the first data read request, so that the data processing unit can determine the transmission path between the host and the data processing unit according to the instruction identifier.

[0158] The above steps 1101 to 1103 are a possible implementation of the data processing unit sending a first read / write instruction to the first switch module based on the first data read / write request from the host, and the first read / write instruction carrying the data read / write address and the information of the target storage device. In this implementation, the first read / write instruction carries the information of the target storage device, so that the first read / write instruction can be transmitted through the first switch module, improving the transmission efficiency.

[0159] 1104, the first switch module receives the first read instruction, determines the transmission path of the second read instruction according to the information of the target storage device carried by the first read instruction, and sends the second read instruction to the target storage device through the transmission path, the second read instruction carrying the data storage address.

[0160] In the embodiments of the present application, after the switch chip in the first switch module receives the first read instruction, the switch chip queries the routing table in the switch chip according to the information of the target storage device carried by the first read instruction, and obtains the transmission path of the second read instruction. The switch chip also generates the second read instruction according to the data storage address carried by the first read instruction, and sends the second read instruction to the target storage device according to the above transmission path.

[0161] In some embodiments, in the case where there are a plurality of transmission paths in the above routing table, the data processing unit selects one of the plurality of transmission paths according to a pre-set path selection strategy, and sends the second read instruction to the target storage device through the transmission path. The path selection strategy is the same as the above-mentioned switch chip selection strategy, which will not be described here again.

[0162] 1105、The target storage device receives the second read instruction, and acquires the data from the persistent storage medium of the target storage device according to the data storage address carried by the second read instruction, and stores the data into the cache of the target storage device.

[0163] In the embodiment, the target storage device receives the second read instruction through the transmission path. The target storage device stores the second read instruction into the receiving instruction queue corresponding to the transmission path, and records the execution status of the second read instruction as not executed in the receiving completion queue corresponding to the transmission path. The target storage device polls the receiving instruction queue, and if the second read instruction is polled and the execution status of the second read instruction is not executed, the target storage device acquires the data from the persistent storage medium of the target storage device according to the data storage address carried by the second read instruction, and stores the data into the cache of the target storage device. The target storage device records the execution status of the second read instruction as executed in the receiving completion queue corresponding to the transmission path, and records the address of the data in the cache of the target storage device as the data cache storage address.

[0164] 1106、The target storage device sends the read data to the data processing unit through the transmission path.

[0165] In the embodiment, the target storage device generates a data writeback request according to the data cache storage address carried by the second read instruction, and stores the data writeback request into the sending instruction queue corresponding to the transmission path. The target storage device records the execution status of the data writeback request as not executed in the sending completion queue corresponding to the transmission path. The target storage device polls the sending instruction queue, and if the data writeback request is polled and the execution status of the data writeback request is not executed, the target storage device sends the data writeback request to the data processing unit through the transmission path. When the data writeback request is polled and the execution status of the data writeback request is not executed, the target storage device also acquires the data from the cache of the target storage device according to the data cache storage address carried by the data writeback request, and sends the data to the data processing unit through the transmission path.

[0166] In some embodiments, the second read instruction also carries the instruction identifier of the first data read request. The target storage device generates a data writeback request according to the instruction identifier and the data cache storage address carried by the second read instruction, and sends the data writeback request to the data processing unit through the transmission path through the above process.

[0167] In some embodiments, the data write-back request carries a first keyword indicating access permission to the cache in the target storage device. If the first keyword does not satisfy the access permission to the cache in the target storage device, the target storage device returns an execution failure information or an insufficient permission information to the data processing unit through the transmission path. If the first keyword satisfies the access permission to the cache in the target storage device, the target storage device sends the data to the data processing unit through the transmission path.

[0168] It should be noted that steps 1105 to 1106 are a possible implementation of the target storage device receiving the second read-write instruction and returning a response of the second read-write instruction to the data processing unit through the first exchange module. In this implementation, the target storage device returns the data corresponding to the second read instruction to the data processing unit through the first exchange module. This implementation is described by taking the transmission of data and instructions in the same data read-write process through the same transmission path as an example, which can improve the accuracy of transmission. In some embodiments, the target storage device transmits data and instructions in the same data read-write process through different transmission paths, which is not limited in the embodiments of the present application.

[0169] 1107. After receiving the data, the data processing unit forwards the data to the host.

[0170] In the embodiments of the present application, the data processing unit receives the data corresponding to the second read instruction. The data processing unit queries the context stored in the data processing unit according to the instruction identifier of the first data read request to obtain the context corresponding to the first data read request. The data processing unit determines the transmission path of the data from the context. The data processing unit generates a data sending request corresponding to the data according to the received data, stores the data sending request in the sending instruction list corresponding to the transmission path, and records the execution status of the data sending request as not executed in the sending completion queue corresponding to the transmission path. The data processing unit polls the sending instruction queue. If the data sending request is polled and the execution status of the data sending request is not executed, the data processing unit executes the data sending request to send the data to the host through the transmission path.

[0171] Step 1107 is a possible implementation of the data processing unit outputting the response to the host after receiving the response from the target storage device. In this possible implementation, the data processing unit outputs the data corresponding to the second read instruction to the host as the response.

[0172] 1108. After receiving the data, the host returns an acknowledgement information to the data processing unit, and the acknowledgement information indicates that the first data read request has been completed.

[0173] In the embodiment of the present application, the host receives the data through the transmission path of the data, stores the data into the host memory, and returns the confirmation information to the data processing unit through the transmission path.

[0174] In some embodiments, the data received by the host carries a first keyword indicating the access right to the host memory. After receiving the data, if the first keyword satisfies the access right to the host memory, the host stores the data into the host memory, and if the first keyword does not satisfy the access right to the host memory, the host displays the execution failure information or the insufficient right information.

[0175] 1109. After receiving the confirmation information, the data processing unit sends a first data read request response to the host, so that the host obtains the data corresponding to the first data read request from the host memory.

[0176] 1110. The data processing unit forwards the confirmation information to the target storage device through the transmission path of the second read instruction.

[0177] In the embodiment of the present application, after receiving the confirmation information, the data processing unit forwards the confirmation information to the target storage device through the transmission path of the second read instruction.

[0178] In some embodiments, after receiving the confirmation information, the data processing unit records the execution of the message sending request as executed in the sending completion queue corresponding to the transmission path of the second read instruction.

[0179] It should be noted that the step 1110 can be executed before the step 1109, and the embodiment of the present application does not limit the execution order of the step 1110.

[0180] 1111. After receiving the confirmation information, the target storage device releases the data in the cache of the target storage device.

[0181] In some embodiments, after receiving the confirmation information sent by the data processing unit, the target storage device also records the execution of the data write-back request as executed in the sending completion queue corresponding to the transmission path of the second read instruction.

[0182] It should be noted that the step 1111 can be executed before the step 1109, and the embodiment of the present application does not limit the execution order of the step 1111.

[0183] In the data access method provided by the embodiment, after the data processing unit receives the data read instruction sent by the host, the data processing unit sends a first read instruction to the first switching module. Since the first read instruction indicates reading and writing on the target storage device in the plurality of storage devices, the first switching module can send the data storage address carried by the first read instruction to the target storage device, so as to continue the data read process. In the data read process, the CPU and the memory can be bypassed, the transmission of the instructions and the data between the data processing unit and the storage device is relayed by the first switching module, the influence of the performance of the CPU and the memory on the performance of the storage device is avoided, and the storage device can provide a large-bandwidth data service. Since the first switching module has the function of congestion control, when there are many instructions and data to be transmitted, network congestion can be avoided, and the data processing efficiency is high. In the case of controlling congestion by the first switching module, the stability of the transmission can be ensured, the performance of the storage device is not uneven or fluctuated due to the problems such as transmission lag, and the stability of the data processing efficiency is ensured. In addition, the bandwidth corresponding to the storage device can be increased, when a large amount of data read requests are transmitted from the front-end network, the data read requests can be avoided to be accumulated in the front-end network, and the data processing efficiency is improved.

[0184] Another data access method provided by the embodiment of the application is described below. The data access method is applied to the data service system described above, as shown in FIG. 12, the data access method includes the following steps:

[0185] 1201. The host sends a first data write request to the data processing unit, and the first data write request indicates data to be written.

[0186] 1202. The data processing unit obtains a data write address, a host memory storage address of the data, and information of a target storage device according to the first data write request.

[0187] 1203. The data processing unit generates a first write instruction based on the data write address, the host memory storage address of the data, and the information of the target storage device of the first data write request, and sends the first write instruction to the first switching module.

[0188] 1204. The first switching module receives the first write instruction, determines a transmission path of a second write instruction according to the information of the target storage device carried by the first write instruction, and sends the second write instruction to the target storage device through the transmission path. The second write instruction carries the data write address and the host memory storage address of the data.

[0189] The steps 1201 to 1204 are the same as the steps 1101 to 1104, and the embodiment of the application will not be described here.

[0190] 1205、The target storage device receives the second write instruction, generates a read request according to the data write address and the host memory storage address carried by the second write instruction, and sends the read request to the data processing unit through the transmission path.

[0191] In the embodiments of the present application, the target storage device receives the second write instruction through the transmission path, stores the second write instruction into the receiving instruction queue corresponding to the transmission path, and records the execution status of the second write instruction as not executed in the receiving completion queue corresponding to the transmission path. The target storage device polls the receiving instruction queue, and if the second write instruction is polled and the execution status of the second write instruction is not executed, the target storage device generates a read request according to the data write address and the host memory storage address carried by the second write instruction. The target storage device stores the read request into the sending instruction queue corresponding to the transmission path, and records the execution status of the read request as not executed in the sending completion queue corresponding to the transmission path. The target storage device polls the sending instruction queue, and if the read request is polled and the execution status of the read request is not executed, the target storage device sends the read request to the data processing unit through the transmission path.

[0192] 1206、The data processing unit receives the read request and forwards the read request to the host.

[0193] In the embodiments of the present application, the data processing unit receives the instruction message corresponding to the read request. The data processing unit queries the context stored in the data processing unit according to the instruction identifier carried by the first data write request, and obtains the context corresponding to the first data write request. The data processing unit determines the transmission path of the read request from the context, and sends the read request to the host through the transmission path.

[0194] 1207、The host receives the read request, obtains the data corresponding to the read request from the host memory according to the host memory storage address carried by the read request, and sends the data to the data processing unit.

[0195] In the embodiments of the present application, the host receives the read request, obtains the data corresponding to the read request from the host memory according to the host memory storage address carried by the read request, and sends the data to the data processing unit through the transmission path corresponding to the read request.

[0196] In some embodiments, the read request carries a second keyword, which indicates the access authority to the host memory. If the second keyword satisfies the access authority to the host memory, the host sends the data corresponding to the read request to the data processing unit, and if the second keyword does not satisfy the access authority to the host memory, the host displays an execution failure information or an insufficient authority information.

[0197] 1208、The data processing unit receives the data, and sends the data to the target storage device through the transmission path.

[0198] 1209、The target storage device receives the data, stores the data in the cache of the target storage device, and stores the data from the cache of the target storage device to the persistent storage medium of the target storage device according to the data write address carried by the second write instruction.

[0199] In the embodiment of the application, the target storage device receives the data corresponding to the read request, and stores the data in the cache of the target storage device. The target storage device stores the data from the cache of the target storage device to the persistent storage medium of the target storage device according to the data write address carried by the second write instruction.

[0200] In some embodiments, the data corresponding to the read request carries a first keyword, which indicates the access permission to the cache of the target storage device. If the first keyword does not satisfy the access permission to the cache of the target storage device, the target storage device returns the execution failure information or the insufficient permission information to the data processing unit through the transmission path. If the first keyword satisfies the access permission to the cache of the target storage device, the target storage device stores the data in the cache of the target storage device.

[0201] In some embodiments, after the target storage device obtains the data, the target storage device records the execution of the read request in the sending completion queue corresponding to the transmission path as executed.

[0202] In some embodiments, after the target storage device stores the data from the cache to the persistent storage medium indicated by the data write address carried by the second write instruction, the target storage device records the execution of the second write instruction in the receiving completion queue corresponding to the transmission path as executed.

[0203] 1210、The target storage device sends the confirmation information to the data processing unit through the transmission path, and the confirmation information indicates that the second write instruction has been completed.

[0204] The process is the same as step 1110 described above, and the embodiment of the application will not be repeated here.

[0205] 1211、The data processing unit returns the first data write request response to the host according to the confirmation information, and the first data write request response indicates that the data write request has been completed.

[0206] The process is the same as step 1109 described above, and the embodiment of the application will not be repeated here.

[0207] In the data access method provided by the embodiments of the present application, after the data processing unit receives the data write instruction sent by the host, the data processing unit sends a first write instruction to the first switching module. Since the first write instruction indicates reading and writing on the target storage device in the plurality of storage devices, the first switching module can send the data write address and the host memory storage address of the data carried by the first write instruction to the target storage device, so as to continue the data write process. Then, in the data write process, the CPU and the memory can be bypassed, the transmission of the instructions and the data between the data processing unit and the storage device is relayed by the first switching module, the influence of the performance of the CPU and the memory on the performance of the storage device is avoided, so that the storage device can provide large-bandwidth data services. Since the first switching module has the function of congestion control, when there are too many instructions and data to be transmitted, network congestion can be avoided, so that the data processing efficiency of the method is relatively high. In addition, under the control of the first switching module, the stability of the transmission can be ensured, and the performance of the storage device is not uneven or fluctuates due to problems such as transmission lag, so as to ensure the stability of the data processing efficiency. In addition, the bandwidth corresponding to the storage device can be increased, and when a large amount of data write request is transmitted from the front-end network, the data write request can be prevented from being accumulated in the front-end network, so as to improve the data processing efficiency.

[0208] In the example embodiments, a computer readable storage medium, for example, a storage device including program code, is also provided, and the program code can be executed by a processor in the storage node to complete the data access method in the above embodiments. For example, the computer readable storage medium is a non-transitory computer readable storage medium, such as a read-only memory (ROM), a random access memory (RAM), a compact disc read-only memory (CD-ROM), a magnetic tape, a floppy disk, and an optical data storage device.

[0209] The embodiments of the present application also provide a computer program product or a computer program, which includes program code. The computer instructions are stored in a computer readable storage medium. The processor in the computing device reads the program code from the computer readable storage medium. The processor executes the program code, so that the computing device executes the above data access method.

[0210] In addition, the embodiments of the present application also provide an apparatus, which can be a chip, a component or a module. The apparatus can include a processor and a storage device connected to each other. The storage device is used to store computer execution instructions. When the apparatus is running, the processor can execute the computer execution instructions stored in the storage device, so that the chip executes the data access method in the above method embodiments.

[0211] Among them, the device, equipment, computer readable storage medium, computer program product or chip provided by the embodiment are used to execute the corresponding method provided above, so the beneficial effects achieved thereby can refer to the beneficial effects of the corresponding method provided above, which will not be described here.

[0212] Through the above description of the embodiments, those skilled in the art can understand that, for the convenience and brevity of description, only the above division of functional modules is taken as an example, and in actual application, the above functions can be completed by different functional modules according to needs, that is, the internal structure of the device is divided into different functional modules to complete all or part of the functions described above. In addition, the data access method embodiments provided in the above embodiments belong to the same concept, and the specific implementation process is described in the method embodiments, which will not be described here.

[0213] In several embodiments provided in the present application, it should be understood that the disclosed device and method can be implemented by other ways. For example, the above-described storage node embodiments are only illustrative, for example, the division of the modules or units is only a logical function division, and actual implementation can have another division manner, for example, a plurality of units or components can be combined or integrated into another device, or some features can be ignored or not executed. In addition, the coupling or direct coupling or communication connection between the displayed or discussed units can be indirect coupling or communication connection through some interfaces, devices or units, which can be electrical, mechanical or other forms.

[0214] The units described as separate components can or can not be physically separated, and the components displayed as units can be one physical unit or multiple physical units, that is, can be located in one place, or can be distributed to multiple different places. Part or all of the units can be selected according to actual needs to achieve the purpose of the embodiment scheme.

[0215] In addition, each functional unit in each embodiment of the present application can be integrated in one processing unit, or each unit can be physically present alone, or two or more units can be integrated in one unit. The above integrated unit can be realized in the form of hardware or in the form of software functional unit.

[0216] The integrated unit, if implemented in the form of a software function unit and sold or used as an independent product, can be stored in a readable storage medium. Based on such understanding, the technical solutions of the embodiments of the present application essentially or the parts that make contributions to the prior art or the whole or part of the technical solutions can be embodied in the form of a software product. The software product is stored in a storage medium, and includes a plurality of instructions for causing an apparatus (which can be a single-chip microcomputer, a chip, etc.) or a processor to perform all or part of the steps of the methods described in the various embodiments of the present application. The aforementioned storage medium includes: a U disk, a mobile hard disk, a ROM, a RAM, a magnetic disk or an optical disk, and various media that can store program codes.

[0217] In the description of the present application, unless otherwise specified, " / " means "or", for example, A / B can mean A or B. "And / or" in this paper only describes the association relationship of the associated objects, which means that there can be three relationships, for example, A and / or B, which means that there are three cases of A alone, A and B together, and B alone. In addition, "at least one" means one or more, and "multiple" means two or more. "First", "second", etc. do not limit the quantity and execution order, and "first", "second", etc. do not necessarily mean different.

[0218] In the present application, the words "exemplary" or "for example" are used to mean serving as an example, instance, or illustration. Any embodiment or design described as "exemplary" or "for example" in this application should not be construed as being more preferred or advantageous than other embodiments or designs. Rather, the use of the words "exemplary" or "for example" is intended to present concepts in a concrete manner.

[0219] It should be noted that the information (including but not limited to user device information, user personal information, etc.), data (including but not limited to data for analysis, stored data, displayed data, etc.) and signals involved in the present application are all authorized by the user or fully authorized by all parties, and the collection, use and processing of related data need to comply with relevant laws, regulations and standards of relevant countries and regions. For example, the data involved in the present application is obtained under sufficient authorization.

[0220] All the optional technical solutions described above can be combined to form optional embodiments of the present application, which will not be described one by one here.

[0221] The above is only an optional embodiment of the present application, and does not limit the present application. Any modification, equivalent replacement, improvement, etc. made within the spirit and principles of the present application shall be included in the protection scope of the present application.

Claims

1. A storage node, characterized by, The storage node comprises a data processing unit, a switching module and a plurality of storage devices, the data processing unit and the plurality of storage devices are connected with the switching module through a bus respectively; The data processing unit is configured to receive a data processing request from a host, the data processing request being configured to request processing of data in the storage node; The data processing unit is configured to send a first processing instruction to the switching module based on the data processing request, the first processing instruction being configured to instruct processing of data in a target storage device in the plurality of storage devices; The switching module is configured to send a second processing instruction to the target storage device based on the first processing instruction, the second processing instruction being configured to instruct processing of data in the target storage device.

2. The storage node of claim 1, wherein, The data processing unit is configured to distribute the data processing request from the host.

3. The storage node of claim 1 or 2, wherein, The data processing unit sends a first processing instruction to the switching module based on the data processing request, and is specifically configured to: Determine that the data processing request is a data read-write request, the data read-write request being configured to request reading and writing of the target storage device; Send a first read-write instruction to the switching module based on the data read-write request, the first read-write instruction being configured to instruct reading and writing of the target storage device.

4. The storage node of claim 3, wherein, When the data processing unit sends the first read-write instruction to the switching module based on the data read-write request, the data processing unit is specifically configured to: Determine that a data volume of data requested by the data read-write request is greater than or equal to a first threshold value, and send the first read-write instruction to the switching module.

5. The storage node of claim 3, wherein, The storage node further comprises a central processing unit, and the data processing unit is further configured to: Determine that the data processing request is a non-data read-write request; Send the non-data read-write request to the central processing unit.

6. The storage node of claim 1, wherein, The first processing instruction carries information of the target storage device.

7. The storage node of claim 6, wherein, The data processing unit is configured to encapsulate the information of the target storage device in a packet of the first processing instruction. 8.The storage node according to any one of claims 1 to 7, characterized in that, The switching module comprises a bus interface; The bus interface is configured to be connected with a switching module of another storage node. 9.The storage node according to any one of claims 1 to 8, characterized in that, The bus is a QuickPath Interconnect bus or a Compute Express Link bus.

10. A memory array comprising: The storage array comprises a plurality of storage nodes as claimed in any one of claims 1-9, and the plurality of storage nodes are connected through respective switching modules.

11. The storage array of claim 10, wherein, A first storage node in the plurality of storage nodes is configured to send a third processing instruction to a second storage node in the plurality of storage nodes through the switching modules connected with each other in the storage array, the third processing instruction being configured to instruct processing of data in a target storage device in the second storage node.

12. A data processing unit, characterized by The data processing unit comprises a receiving module and a starting module; The receiving module is configured to receive a data processing request from a host, the data processing request being configured to request processing of data in the storage node; The starting module is configured to send a first processing instruction to the switching module based on the data processing request, the first processing instruction being configured to instruct processing of data in a target storage device in the plurality of storage devices.

13. The data processing unit according to claim 12, characterized in that, The data processing unit further comprises a request distribution module; The request distribution module is configured to distribute the data processing request from the host.

14. The data processing unit according to claim 13, characterized in that, The request distribution module is configured to: determine that the data processing request is a data read-write request, the data read-write request being configured to request reading and writing of the target storage device; based on the data read-write request, send a first read-write instruction to the switching module, the first instruction being configured to instruct reading and writing of the target storage device.

15. The data processing unit according to claim 14, characterized in that, The request distribution module is configured to, based on the data read-write request, send a first read-write instruction to the switching module, specifically for: determining that a data volume of data requested by the data read-write request is greater than or equal to a first threshold, and sending the first read-write instruction to the switching module.

16. The data processing unit according to claim 14, characterized in that, The request distribution module is further configured to: determine that the data processing request is a non-data read-write request; send the non-data read-write request to a central processing unit in a storage node.

17. The data processing unit according to any one of claims 12 to 16, characterized in that, The starting module is configured to encapsulate information of the target storage device in a packet of the first processing instruction.

18. The data processing unit according to any one of claims 12 to 17, characterized in that, The data processing unit further includes a transceiver module; The transceiver module is configured to, after receiving a response from the target storage device, output the response to the host.

19. A data access method, characterized by, A storage node includes a data processing unit, a switching module, and a plurality of storage devices, the data processing unit and the storage devices being connected to the switching module through a bus respectively. The method includes: The data processing unit is configured to receive a data processing request from a host, the data processing request being configured to request processing of data in the storage node; The data processing unit is configured to, based on the data processing request, send a first processing instruction to the switching module, the first processing instruction being configured to instruct processing of data in a target storage device among the plurality of storage devices; The switching module is configured to, based on the first processing instruction, send a second processing instruction to the target storage device, the second processing instruction being configured to instruct processing of data in the target storage device.

20. A computer-readable storage medium, characterized in that, The computer-readable storage medium is configured to store at least one piece of program code, when the at least one piece of program code is executed by a computing device, causing the computing device to implement the data access method of claim 19.

21. A computer program product comprising instructions, wherein: When the instructions are executed by a computing device, the computing device is caused to perform the data access method of claim 19.

Citation Information

Patent Citations

  • Method and device for accessing storage node and computer equipment

    CN116560785A

  • Data transmission methods and apparatuses, and distributed storage system

    WO2023005747A1

  • Access method and apparatus for storage pool

    WO2024093958A1

  • Data processing method and apparatus, electronic device, and computer-readable storage medium

    WO2024108800A1

  • Storage device, and data communication method and system

    WO2024140375A1