Storage system and IO request processing method

By offloading the data plane processing of IO requests in the storage system from the SPU to the NPU, the problems of limited IO request latency and concurrency are solved, resulting in more efficient IO processing and improved storage performance.

WO2025246366A1PCT designated stage Publication Date: 2025-12-04HUAWEI CLOUD COMPUTING TECHNOLOGIES CO LTD
View PDF 4 Cites 0 Cited by

Patent Information

Application Number
PCT/CN2025/070033
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Priority Date
2024-06-19
Filing Date
2025-01-02
Publication Date
2025-12-04

AI Technical Summary

Technical Problem

In existing storage systems, the processing latency of IO requests is relatively long, and the IO concurrency is limited by the computing resources of the service processing unit in the smart network interface card, which affects storage performance.

Method used

The data plane processing of IO requests in the storage client is offloaded from the service processing unit to the network processing unit. IO requests are processed by the NPU, reducing DMA operations and data copy operations between the SPU and NPU, and improving IO concurrency.

Benefits of technology

It reduces the processing latency of IO requests and improves the IO concurrency and performance of the storage system.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN2025070033_04122025_PF_FP_ABST
    Figure CN2025070033_04122025_PF_FP_ABST
Patent Text Reader

Abstract

The present application provides a storage system. The storage system comprises a storage pool and an offload card inserted onto a compute node. The storage pool and the compute node are arranged in at least one data center providing a cloud service. The offload card comprises a network processing unit (NPU) and a service processing unit (SPU). The storage pool comprises a plurality of storage nodes. The SPU is configured to manage metadata required by the NPU during the processing of an IO request, and synchronize the metadata to the NPU. The NPU is configured to acquire a target IO request issued by a virtual instance running on the compute node, process the target IO request on the basis of the metadata to generate a request packet, and send the request packet to a target storage node among the plurality of storage nodes. The target storage node is configured to receive and process the request packet sent by the NPU, generate a corresponding response packet, and send the response packet to the NPU. The storage system can reduce the processing delay of IO requests.
Need to check novelty before this filing date? Find Prior Art

Description

Storage system, methods for handling I / O requests

[0001] This application claims priority to Chinese Patent Application No. 202410707716.9, filed with the China National Intellectual Property Administration on May 31, 2024, entitled "Method, Apparatus and Computing Device for Data Processing", and priority to Chinese Patent Application No. 202410796439.3, filed with the China National Intellectual Property Administration on June 19, 2024, entitled "Storage System and Method for Processing I / O Requests", the entire contents of which are incorporated herein by reference. Technical Field

[0002] This application relates to the field of cloud computing, and more specifically, to a storage system and a method for handling I / O requests. Background Technology

[0003] To improve the utilization of server (also known as host) hardware resources, the industry has proposed a new generation of hardware offloading technology, which can offload server services (such as computing, networking, storage, security, etc.) to an offloading card, so that the server can free up more physical resources for tenants to use.

[0004] In related storage system architectures, storage and network services from the host can be offloaded to an offload card (also known as a smart network interface card), where these services are handled. This offload card includes a network processing unit (NPU) and a service processing unit (SPU). The NPU receives input / output (IO) requests from the virtual machine (VM) and forwards them to the SPU. The SPU runs a storage client, which acts as the backend for the virtual machine's storage device and handles IO requests. This processing includes control plane and data plane processing. In this storage system, during IO processing, the NPU on the offload card interacts extensively with both the host and the storage client on the SPU. This involves numerous DMA operations and data copying operations, increasing IO processing latency.

[0005] Therefore, reducing the processing latency of IO requests has become a pressing technical problem that needs to be solved. Summary of the Invention

[0006] This application provides a storage system and a method for processing I / O requests, which can reduce the processing latency of I / O requests and improve the performance of the storage system.

[0007] In a first aspect, a storage system is provided, comprising a storage pool and an offload card inserted into a compute node, the storage pool and the compute node being located in at least one data center providing cloud services, the offload card comprising a network processing unit (NPU) and a service processing unit (SPU), and the storage pool comprising multiple storage nodes, wherein:

[0008] The SPU is used to manage the metadata required by the NPU in the process of handling input / output IO requests, and to synchronize the metadata to the NPU.

[0009] The NPU is used to obtain the target IO request issued by the virtual instance running on the compute node, process the target IO request according to the metadata, generate a request message, and send the request message to the target storage node among the multiple storage nodes.

[0010] The target storage node is used to receive and process the request message sent by the NPU, generate a corresponding response message, and send the response message to the NPU.

[0011] As an example, the virtual instances mentioned above may include, but are not limited to, virtual machines (VMs), containers, etc.

[0012] For example, the offloading card mentioned above may include, but is not limited to: data processing unit (DPU), smart network interface card (smartNIC), intelligent processing unit (IPU), etc.

[0013] In the above technical solution, by offloading the data plane processing of IO requests from the SPU to the NPU, on the one hand, excessive DMA operations and data copy operations between the SPU and NPU can be avoided, thereby reducing the IO processing latency; on the other hand, since the NPU has more hardware resources than the SPU, the IO concurrency can also be improved.

[0014] In conjunction with the first aspect, in some implementations of the first aspect, the metadata includes at least one of the following: the mount point of the volume of the storage pool, the status of the volume, the QoS parameters of the volume, and the key information corresponding to the volume.

[0015] In conjunction with the first aspect, in some implementations of the first aspect, the metadata also includes IO view information of the storage pool, and the NPU is also used to determine information about the target storage node based on the IO view information.

[0016] In conjunction with the first aspect, in some implementations of the first aspect, the SPU is also used to obtain the updated IO view information when the IO view information is updated, and to synchronize the updated IO view information to the NPU; the NPU is also used to store the updated IO view information.

[0017] In the above technical solution, when the IO view information is updated, the SPU can also synchronize the updated IO view information to the NPU, so that the NPU can use the latest IO view information to determine the target storage node.

[0018] In conjunction with the first aspect, in some implementations of the first aspect, the NPU is further configured to send request information to the SPU after receiving exception information sent by the target storage node, the request information being used to instruct the SPU to manage the target IO request; the SPU is further configured to receive the request information and manage the target IO request according to the request information.

[0019] In the above technical solution, the NPU can also transfer the target IO request to the SPU for management after receiving the abnormal information sent by the target storage node (for example, the target storage node is currently processing a lot of IO), thereby avoiding the NPU waiting for a long time and improving storage performance.

[0020] In conjunction with the first aspect, in some implementations of the first aspect, the NPU is also used to send the target IO request to the SPU; the SPU is also used to receive the target IO request and process the target IO request according to the metadata.

[0021] In the above technical solution, the NPU can also send the target IO request to the SPU in the event of an upgrade or failure, and the SPU will process the target IO request based on the metadata, thereby improving storage performance.

[0022] In conjunction with the first aspect, in some implementations of the first aspect, the NPU is specifically used to: perform at least one of the following processing on the target IO request based on the metadata: QoS control, data encryption / decryption processing, generation of the data integrity field DIF, verification of the DIF, and routing forwarding.

[0023] Secondly, a storage system is provided, comprising an offload card bearer node, a management node, and a storage pool. The offload card bearer node, the management node, and the storage pool are located in at least one data center providing cloud services. The offload card bearer node has a first offload card and a second offload card inserted into it. The first offload card includes a first network processing unit (NPU), and the second offload card includes a second NPU. The management node includes a service processing unit (SPU). The storage pool includes multiple storage nodes, wherein:

[0024] The SPU is used to manage the metadata required by the first NPU and the second NPU in the process of processing input / output IO requests, and to synchronize the metadata to the first NPU and the second NPU.

[0025] The first NPU is used to obtain the target IO request issued by the virtual instance running on the compute node, process the target IO request according to the metadata to generate a request message, and send the request message to the target storage node among the multiple storage nodes.

[0026] The target storage node is used to receive and process the request message sent by the first NPU, generate a corresponding response message, and send the response message to the first NPU.

[0027] In the above technical solution, by offloading the data plane processing of IO requests from the SPU to the NPU, on the one hand, excessive DMA operations and data copy operations between the SPU and NPU can be avoided, thereby reducing the IO processing latency; on the other hand, since the NPU has more hardware resources than the SPU, the IO concurrency can also be improved.

[0028] In combination of the two aspects, in some implementations of the second aspect, multiple offloading cards are inserted on the offloading card bearer node. The SPU is also used to select the first NPU from the multiple NPUs included in the multiple offloading cards according to the load balancing algorithm, and to mount the volume of the storage pool to the virtual instance through the first NPU. The first NPU is the NPU with the lower load among the multiple NPUs.

[0029] In the above technical solution, if multiple offload cards are inserted on the offload card bearer node, the SPU can also perform load balancing management on the multiple NPUs included in the multiple offload cards, so as to avoid the problem of unbalanced load among multiple NPUs.

[0030] In conjunction with the two aspects, in some implementations of the second aspect, the SPU is further used to select the second NPU from the plurality of NPUs according to the load balancing algorithm when the load of the first NPU is greater than a preset threshold; the first NPU is used to migrate the target IO request to the second NPU; and the second NPU is used to process the target IO request.

[0031] In the above technical solution, if the load of the first NPU is greater than a preset threshold, the target IO request can be migrated to the second NPU with a lighter load among the multiple NPUs, thereby achieving load balancing among multiple NPUs.

[0032] In combination of the two aspects, in some implementations of the second aspect, the metadata includes at least one of the following: the mount point of the volume of the storage pool, the status of the volume, the QoS parameters of the volume, and the key information corresponding to the volume.

[0033] In combination of the two aspects, in some implementations of the second aspect, the metadata also includes the IO view information of the storage pool, and the first NPU is also used to determine the information of the target storage node based on the IO view information.

[0034] In combination of the two aspects, in some implementations of the second aspect, the SPU is also used to obtain the updated IO view information when the IO view information is updated, and to synchronize the updated IO view information to the first NPU; the first NPU is also used to store the updated IO view information.

[0035] In the above technical solution, when the IO view information is updated, the SPU can also synchronize the updated IO view information to the NPU, so that the first NPU can use the latest IO view information to determine the target storage node.

[0036] In conjunction with the two aspects, in some implementations of the second aspect, the first NPU is further configured to send request information to the SPU after receiving the exception information sent by the target storage node. The request information is used to instruct the SPU to manage the target IO request. The SPU is further configured to receive the request information and manage the target IO request according to the request information.

[0037] In the above technical solution, the first NPU can also transfer the target IO request to the SPU for management after receiving the abnormal information sent by the target storage node (for example, the target storage node is currently processing a lot of IO), thereby avoiding the NPU waiting for a long time and improving storage performance.

[0038] In combination of the two aspects, in some implementations of the second aspect, the first NPU is also used to send the target IO request to the SPU; the SPU is also used to receive the target IO request and process the target IO request according to the metadata.

[0039] In the above technical solution, the first NPU can also send the target IO request to the SPU in the event of an upgrade or failure, and the SPU will process the target IO request based on the metadata, thereby improving storage performance.

[0040] In combination of the two aspects, in some implementations of the second aspect, the first NPU is specifically used to: perform at least one of the following processing on the target IO request based on the metadata: QoS control, data encryption / decryption processing, generation of the data integrity field DIF, verification of the DIF, and routing forwarding.

[0041] Thirdly, a method for processing I / O requests is provided. This method is applied to a storage system including a storage pool and an offload card inserted on a compute node. The storage pool and the compute node are located in at least one data center providing cloud services. The offload card includes a Network Processing Unit (NPU) and a Service Processing Unit (SPU). The storage pool includes multiple storage nodes. The method includes: the NPU acquiring a target I / O request issued by a virtual instance running on the compute node, and acquiring metadata required by the NPU in processing the input / output I / O request from the SPU, wherein the SPU manages the metadata required by the NPU in processing the input / output I / O request and synchronizes the metadata to the NPU; the NPU processing the target I / O request based on the metadata to generate a request message, and sending the request message to a target storage node among the multiple storage nodes; and the NPU receiving a response message sent by the target storage node, wherein the response message is a corresponding response message generated by the target storage node after processing the received request message.

[0042] In conjunction with the third aspect, in some implementations of the third aspect, the metadata includes at least one of the following: the mount point of the volume of the storage pool, the status of the volume, the QoS parameters of the volume, and the key information corresponding to the volume.

[0043] In conjunction with the third aspect, in some implementations of the third aspect, the metadata also includes the IO view information of the storage pool, and the NPU is also used to determine the information of the target storage node based on the IO view information.

[0044] In conjunction with the third aspect, in some implementations of the third aspect, the method further includes: when the IO view information is updated, the SPU obtains the updated IO view information and synchronizes the updated IO view information to the NPU; the NPU stores the updated IO view information.

[0045] In conjunction with the third aspect, in some implementations of the third aspect, the method further includes: after receiving the exception information sent by the target storage node, the NPU sends a request message to the SPU, the request message being used to instruct the SPU to manage the target IO request; the SPU receives the request message and manages the target IO request according to the request message.

[0046] In conjunction with the third aspect, in some implementations of the third aspect, the method further includes: the NPU sending the target IO request to the SPU; the SPU receiving the target IO request and processing the target IO request based on the metadata.

[0047] In conjunction with the third aspect, in some implementations of the third aspect, the NPU performs at least one of the following processing on the target IO request based on the metadata: QoS control, data encryption / decryption processing, generation of the data integrity field DIF, verification of the DIF, and routing forwarding.

[0048] It should be understood that the beneficial effects of the third aspect and its various implementations can be found in the first aspect and its various implementations, and will not be elaborated here.

[0049] Fourthly, a method for handling I / O requests is provided. This method is applied to a storage system including an offload card bearer node, a management node, and a storage pool. The offload card bearer node, the management node, and the storage pool are located in at least one data center providing cloud services. The offload card bearer node has a first offload card and a second offload card inserted into it. The first offload card includes a first network processing unit (NPU), and the second offload card includes a second NPU. The management node includes a service processing unit (SPU), and the storage pool includes multiple storage nodes. The method includes: the first NPU obtaining requests from the virtual instance running on the compute node... The target IO request is processed based on the metadata to generate a request message. The SPU manages the metadata required by the first NPU and the second NPU during the processing of input / output IO requests and synchronizes this metadata with the first and second NPUs. The first NPU processes the target IO request based on the metadata to generate a request message and sends the request message to the target storage node among the multiple storage nodes. The first NPU receives a response message sent by the target storage node, where the response message is the corresponding response message generated by the target storage node after processing the received request message.

[0050] In conjunction with the fourth aspect, in some implementations of the fourth aspect, multiple offloading cards are inserted on the offloading card bearer node. The method further includes: the SPU selects the first NPU from the multiple NPUs included in the multiple offloading cards according to the load balancing algorithm, and mounts the volume of the storage pool to the virtual instance through the first NPU, wherein the first NPU is the NPU with the lower load among the multiple NPUs.

[0051] In conjunction with the fourth aspect, in some implementations of the fourth aspect, the method further includes: when the load of the first NPU is greater than a preset threshold, the SPU selects the second NPU from the plurality of NPUs according to the load balancing algorithm; the first NPU migrates the target IO request to the second NPU; and the second NPU processes the target IO request.

[0052] In conjunction with the fourth aspect, in some implementations of the fourth aspect, the metadata includes at least one of the following: the mount point of the volume of the storage pool, the status of the volume, the QoS parameters of the volume, and the key information corresponding to the volume.

[0053] In combination of the four aspects, in some implementations of the fourth aspect, the metadata also includes the IO view information of the storage pool, and the first NPU is also used to determine the information of the target storage node based on the IO view information.

[0054] In combination with the four aspects, in some implementations of the fourth aspect, the method further includes: when the IO view information is updated, the SPU obtains the updated IO view information and synchronizes the updated IO view information to the first NPU; the first NPU stores the updated IO view information.

[0055] In combination with the four aspects, in some implementations of the fourth aspect, the method further includes: after receiving the exception information sent by the target storage node, the first NPU sends a request message to the SPU, the request message being used to instruct the SPU to manage the target IO request; the SPU receives the request message and manages the target IO request according to the request message.

[0056] In combination of the four aspects, in some implementations of the fourth aspect, the method further includes: the first NPU sending the target IO request to the SPU; the SPU receiving the target IO request and processing the target IO request according to the metadata.

[0057] Combining the four aspects, in some implementations of the fourth aspect, the first NPU performs at least one of the following processes on the target IO request based on the metadata: QoS control, data encryption / decryption processing, generation of the data integrity field DIF, verification of the DIF, and routing forwarding.

[0058] It should be understood that the beneficial effects of the fourth aspect and its various implementations can be found in the second aspect and its various implementations, and will not be elaborated here.

[0059] Fifthly, a computing device is provided, including a processor and a memory, and optionally, an input / output interface. The processor controls the input / output interface to send and receive information, the memory stores a computer program, and the processor retrieves and runs the computer program from the memory, causing the computing device to execute the methods of the third aspect or any possible implementation thereof.

[0060] Optionally, the processor can be a general-purpose processor, which can be implemented in hardware or software. When implemented in hardware, the processor can be a logic circuit, integrated circuit, etc.; when implemented in software, the processor can be a general-purpose processor that reads software code stored in memory. This memory can be integrated into the processor or located outside the processor and exist independently.

[0061] Sixthly, a computing device is provided, including a processor and a memory, and optionally, an input / output interface. The processor controls the input / output interface to send and receive information, the memory stores a computer program, and the processor retrieves and runs the computer program from the memory, causing the computing device to perform the methods of the fourth aspect or any possible implementation thereof.

[0062] Optionally, the processor can be a general-purpose processor, which can be implemented in hardware or software. When implemented in hardware, the processor can be a logic circuit, integrated circuit, etc.; when implemented in software, the processor can be a general-purpose processor that reads software code stored in memory. This memory can be integrated into the processor or located outside the processor and exist independently.

[0063] In a seventh aspect, a computing device cluster is provided, including at least one computing device, each computing device including a processor and a memory; the processor of the at least one computing device is configured to execute instructions stored in the memory of the at least one computing device, such that the computing device cluster performs the method of the third aspect or any possible implementation thereof.

[0064] Eighthly, a computing device cluster is provided, including at least one computing device, each computing device including a processor and a memory; the processor of the at least one computing device is configured to execute instructions stored in the memory of the at least one computing device, such that the computing device cluster performs the method of the fourth aspect or any possible implementation thereof.

[0065] Ninthly, a chip is provided that acquires and executes instructions to implement the methods in the third aspect and any implementation thereof.

[0066] Alternatively, as one implementation, the chip includes a processor and a data interface, through which the processor reads instructions stored in the memory and executes the methods in the third aspect and any implementation thereof.

[0067] Optionally, as one implementation, the chip may further include a memory storing instructions, and the processor is used to execute the instructions stored in the memory. When the instructions are executed, the processor is used to perform the methods in the third aspect and any of the implementations of the third aspect.

[0068] In a tenth aspect, a chip is provided that acquires and executes instructions to implement the methods in the fourth aspect and any implementation thereof.

[0069] Alternatively, as one implementation, the chip includes a processor and a data interface, through which the processor reads instructions stored in memory and executes the methods in the fourth aspect and any implementation thereof.

[0070] Optionally, as one implementation, the chip may further include a memory storing instructions, and the processor is used to execute the instructions stored in the memory. When the instructions are executed, the processor is used to perform the methods in the fourth aspect and any of the implementations of the fourth aspect.

[0071] In an eleventh aspect, a computer program product containing instructions is provided, which, when executed by a computing device, causes the computing device to perform the methods described in the third aspect and any implementation thereof.

[0072] In a twelfth aspect, a computer program product containing instructions is provided, which, when executed by a computing device, cause the computing device to perform the methods described in the fourth aspect and any implementation thereof.

[0073] In a thirteenth aspect, a computer program product containing instructions is provided that, when the instructions are run by a cluster of computing devices, causes the cluster of computing devices to perform the methods described in the third aspect and any implementation thereof.

[0074] In a fourteenth aspect, a computer program product containing instructions is provided that, when the instructions are run by a cluster of computing devices, causes the cluster of computing devices to perform the methods described in the fourth aspect and any implementation thereof.

[0075] In a fifteenth aspect, a computer-readable storage medium is provided, including computer program instructions that, when executed by a computing device, perform the method as described in the third aspect and any implementation thereof.

[0076] As examples, these computer-readable storage devices include, but are not limited to, one or more of the following: read-only memory (ROM), programmable ROM (PROM), erasable PROM (EPROM), flash memory, electrically EPROM (EEPROM), and hard drive.

[0077] Alternatively, as one implementation method, the aforementioned storage medium can specifically be a non-volatile storage medium.

[0078] In a sixteenth aspect, a computer-readable storage medium is provided, including computer program instructions that, when executed by a computing device, perform the methods described in the fourth aspect and any implementation thereof.

[0079] As examples, these computer-readable storage devices include, but are not limited to, one or more of the following: read-only memory (ROM), programmable ROM (PROM), erasable PROM (EPROM), flash memory, electrically EPROM (EEPROM), and hard drive.

[0080] Alternatively, as one implementation method, the aforementioned storage medium can specifically be a non-volatile storage medium.

[0081] In a seventeenth aspect, a computer-readable storage medium is provided, including computer program instructions that, when executed by a cluster of computing devices, perform the method as described in the third aspect and any implementation thereof.

[0082] As examples, these computer-readable storage devices include, but are not limited to, one or more of the following: read-only memory (ROM), programmable ROM (PROM), erasable PROM (EPROM), flash memory, electrically EPROM (EEPROM), and hard drive.

[0083] Alternatively, as one implementation method, the aforementioned storage medium can specifically be a non-volatile storage medium.

[0084] Eighteenthly, a computer-readable storage medium is provided, including computer program instructions that, when executed by a cluster of computing devices, perform the methods described in the fourth aspect and any implementation thereof.

[0085] As examples, these computer-readable storage devices include, but are not limited to, one or more of the following: read-only memory (ROM), programmable ROM (PROM), erasable PROM (EPROM), flash memory, electrically EPROM (EEPROM), and hard drive.

[0086] Alternatively, as one implementation method, the aforementioned storage medium can specifically be a non-volatile storage medium. Attached Figure Description

[0087] Figure 1 is a schematic diagram of a cloud scenario applied to an embodiment of this application.

[0088] Figure 2 is a schematic block diagram of an existing storage system architecture.

[0089] Figure 3 is a schematic block diagram of a storage system architecture provided in an embodiment of this application.

[0090] Figure 4 is a schematic block diagram of another storage system architecture provided in an embodiment of this application.

[0091] Figure 5 is a schematic block diagram of another storage system architecture provided in an embodiment of this application.

[0092] Figure 6 is a schematic flowchart of a method for processing I / O requests provided in an embodiment of this application.

[0093] Figure 7 is a schematic diagram of the architecture of a computing device 1500 provided in an embodiment of this application.

[0094] Figure 8 is a schematic diagram of the architecture of a computing device cluster provided in an embodiment of this application.

[0095] Figure 9 is a schematic diagram of the connection between computing devices 1500A and 1500B via a network provided in an embodiment of this application. Detailed Implementation

[0096] The technical solutions in this application will now be described with reference to the accompanying drawings.

[0097] This application will present various aspects, embodiments, or features relating to systems comprising multiple devices, components, modules, etc. It should be understood and appreciated that individual systems may include additional devices, components, modules, etc., and / or may not include all devices, components, modules, etc. discussed in conjunction with the accompanying drawings. Furthermore, combinations of these approaches are also possible.

[0098] Furthermore, in the embodiments of this application, the words "exemplary," "for example," etc., are used to indicate that they are examples, illustrations, or descriptions. Any embodiment or design scheme described as "exemplary" in this application should not be construed as being more preferred or advantageous than other embodiments or design schemes. Specifically, the use of the term "exemplary" is intended to present the concept in a concrete manner.

[0099] In the embodiments of this application, "corresponding" and "corresponding" can sometimes be used interchangeably. It should be noted that when the distinction is not emphasized, their intended meanings are consistent.

[0100] The business scenarios described in the embodiments of this application are for the purpose of more clearly illustrating the technical solutions of the embodiments of this application, and do not constitute a limitation on the technical solutions provided in the embodiments of this application. As those skilled in the art will know, with the evolution of network architecture and the emergence of new business scenarios, the technical solutions provided in the embodiments of this application are also applicable to similar technical problems.

[0101] References to "one embodiment" or "some embodiments" as described in this specification mean that one or more embodiments of this application include a specific feature, structure, or characteristic described in connection with that embodiment. Therefore, the phrases "in one embodiment," "in some embodiments," "in other embodiments," "in still other embodiments," etc., appearing in different parts of this specification do not necessarily refer to the same embodiment, but rather mean "one or more, but not all, embodiments," unless otherwise specifically emphasized. The terms "comprising," "including," "having," and variations thereof mean "including but not limited to," unless otherwise specifically emphasized.

[0102] In this application, "at least one" means one or more, and "more than one" means two or more. "And / or" describes the relationship between related objects, indicating that three relationships can exist. For example, A and / or B can mean: A alone, A and B simultaneously, and B alone, where A and B can be singular or plural. The character " / " generally indicates that the preceding and following related objects are in an "or" relationship. "At least one of the following" or similar expressions refer to any combination of these items, including any combination of single or plural items. For example, at least one of a, b, or c can mean: a, b, c, ab, ac, bc, or abc, where a, b, and c can be single or multiple.

[0103] As an example, this application can be applied to cloud scenarios. For ease of description, the cloud scenario applied to the embodiments of this application will be described in detail below with reference to Figure 1.

[0104] As exemplified in Figure 1, this cloud scenario may include: the Internet, clients, and data centers providing cloud services. The various components of the cloud scenario are described in detail below.

[0105] The aforementioned data center providing cloud services may include multiple servers and a cloud management platform (also known as a cloud control platform). The servers run virtual machines (VMs), and the cloud management platform provides access interfaces (such as user interfaces or application programming interfaces, APIs). Tenants can use a client to remotely access the cloud management platform, register a cloud account and password, and log in. After successful authentication of the cloud account and password, the tenant can further select and purchase a VM with specific specifications (processor, memory, disk) on the cloud management platform. After successful purchase, the cloud management platform selects a suitable server based on the hardware resource usage on each server in the data center and the specifications of the purchased VM, and instructs the VMM on that server to create the VM. Once the VM is created, the cloud management platform provides the remote login account and password for the purchased VM, along with a connection entry point. The tenant can then log in to the VM by clicking the connection entry point on the client, entering the account and password, and installing and running their applications within the VM.

[0106] The login methods mentioned above may include command-line login and desktop login.

[0107] It should be understood that a VM refers to a complete computer system simulated by software, possessing full hardware system functionality and running in a completely isolated environment. Any task that can be performed on a server (also known as a host) can be performed in a virtual machine. Each virtual machine has its own independent hard drive and operating system, and users can operate the virtual machine as if it were a server.

[0108] The logical functions of the aforementioned cloud management platform may include, but are not limited to: user console, compute management service, network management service, storage management service, authentication service, and image management service. The user console provides an interface or API for interaction with tenants; the compute management service manages servers running virtual machines and containers; the network management service manages network services (such as gateways and firewalls); the storage management service manages storage services (such as data bucket services); the authentication service manages tenant account passwords; and the image management service manages virtual machine images.

[0109] To improve the utilization of server (also known as host) hardware resources, the industry has proposed a new generation of hardware offloading technology, which can offload server services (such as computing, networking, storage, security, etc.) to an offloading card, so that the server can free up more physical resources for tenants to use.

[0110] Figure 2 shows an existing storage system architecture. As shown in Figure 2, storage, network, and other services on the host can be offloaded to a smart network interface card (NIC), which then handles the storage, network, and other services.

[0111] Referring to Figure 2, the storage system architecture may include a host, a smart network interface card (NIC), and a storage pool. The storage pool includes multiple storage nodes, and the smart NIC is responsible for handling storage services (e.g., IO requests) issued by the VMs in the host, enabling data to be written and read on the storage nodes.

[0112] The aforementioned smart network interface card (NIC) consists of a network processing unit (NPU) and a service processing unit (SPU). The NPU receives I / O requests from the virtual machine (VM) and forwards them to the SPU. A storage client runs on the SPU, acting as the backend for the virtual machine's storage device. This storage client processes the I / O requests sent by the NPU, including control plane and data plane processing. The SPU then uses the NPU to write and read data from the storage node.

[0113] In the existing storage system architecture described above, on the one hand, during I / O processing, the NPU in the smart network interface card (NIC) interacts not only with the host side but also extensively with the storage clients on the SPU. This process involves numerous DMA operations and data copying operations, increasing I / O processing latency. On the other hand, the entire I / O processing is completed by the storage clients deployed on the SPU, resulting in the I / O concurrency of the entire storage system being limited by the computing power of the SPU in the smart NIC. Due to the limitations of the SPU's own computing resources, the I / O concurrency capability decreases, thus affecting storage performance.

[0114] In view of this, embodiments of this application provide a storage system that offloads the data plane processing of IO requests in the storage client from the SPU to the NPU. This avoids excessive DMA operations and data copying operations between the SPU and NPU, thereby reducing IO processing latency. Furthermore, since the NPU has more hardware resources than the SPU, it can improve IO concurrency.

[0115] Figure 3 is a schematic diagram of the architecture of a storage system provided in an embodiment of this application. As shown in Figure 3, the storage system includes a storage pool and an offload card inserted on a compute node. The offload card includes a network processing unit (NPU) and a service processing unit (SPU). The storage pool includes multiple storage nodes.

[0116] The aforementioned computing nodes and storage pool can be located in at least one data center that provides cloud services. For example, the computing nodes can be servers in the cloud data center shown in Figure 1, and the storage pool includes multiple storage nodes that can be servers in the cloud data center shown in Figure 1.

[0117] The aforementioned compute nodes (also known as hosts) run virtual instances or applications that are available for remote use by tenants. These virtual instances may include, but are not limited to, virtual machines (VMs) and containers.

[0118] For example, the offloading card mentioned above may include, but is not limited to: data processing unit (DPU), smart network interface card (smartNIC), intelligent processing unit (IPU), smart network card, etc.

[0119] As an example, there is a fixed correspondence between the unloading card and the computing node. The unloading card can be inserted into the computing node, and the unloading card connects to the computing node through the connection channel between the unloading card and the computing node.

[0120] It should be understood that the connection channel between the offloading card and the computing node can be implemented through bus technology, high-speed interconnection network, or other communication methods. This application embodiment does not specifically limit this.

[0121] As an example, the bus technology may include, but is not limited to: Extended Peripheral Component Interconnect Express (PCIE) bus, Compute Express Link (CXL), Unified Bus (UB), Remote Direct Memory Access (RDMA), etc.

[0122] The aforementioned offloading card may include an NPU and an SPU, with a connection channel provided between the NPU and the SPU. This connection channel may be implemented through bus technology, a high-speed interconnect network, or other communication methods; this application embodiment does not specifically limit this.

[0123] The functions of each component in the storage system shown in Figure 3 will be described in detail below.

[0124] The aforementioned SPU manages the metadata required by the NPU during the processing of input / output I / O requests and synchronizes this metadata with the NPU. This metadata may include at least one of the following: the mount point of the storage pool's volume, the volume's status, the volume's Quality of Service (QoS) parameters, the key information corresponding to the volume, and the storage pool's I / O view information.

[0125] The aforementioned NPU is used to obtain the target IO request issued by the virtual instance running on the compute node, process the target IO request according to the metadata to generate a request message, and send the request message to the target storage node among the multiple storage nodes.

[0126] It should be understood that the process by which the NPU processes the target IO request based on this metadata includes, but is not limited to: QoS control, data encryption / decryption, generation of the data integrity field (DIF), verification of the DIF, and routing forwarding. This process will be described in detail below with reference to specific embodiments, and will not be repeated here.

[0127] The target storage node among the aforementioned multiple storage nodes is used to receive and process the request message sent by the NPU, generate a corresponding response message, and send the response message to the NPU.

[0128] In the aforementioned storage system, by offloading the data plane processing of IO requests from the SPU to the NPU, on the one hand, excessive DMA operations and data copying operations between the SPU and NPU can be avoided, thereby reducing IO processing latency; on the other hand, since the NPU has more hardware resources than the SPU, IO concurrency can also be improved.

[0129] Optionally, in some embodiments, if the target storage node is currently processing a large number of I / O operations and cannot handle the target I / O request, the target storage node will send an exception message to the NPU. Upon receiving the exception message from the target storage node, the NPU will also send a request message to the SPU, instructing the SPU to manage the target I / O request. Upon receiving the request message, the SPU will manage the target I / O request accordingly.

[0130] Optionally, in some embodiments, if the NPU itself fails or needs to be upgraded, the NPU can also send the target IO request to the SPU, which will then process the target IO request based on the metadata.

[0131] In this embodiment, the coexistence and switching of two IO paths, NPU and SPU, can be supported. For tasks with complex processes and low performance requirements, they can continue to be processed through the original software process, reducing the complexity of NPU path design and implementation.

[0132] Figure 4 is a schematic diagram of another storage system architecture provided in an embodiment of this application. As shown in Figure 4, the storage system includes an offload card bearer node, a management node, and a storage pool.

[0133] It should be understood that the architecture shown in Figure 4 is a pooled architecture. In this pooled architecture, there is no fixed correspondence between offloaded cards and compute nodes. Multiple compute nodes can share at least two offloaded cards included in the offloaded card resource pool. For example, the at least two offloaded cards are inserted into one or more physical nodes (which can also be called offloaded card bearer nodes), and the at least two offloaded cards constitute a resource pool.

[0134] As an example, Figure 4 illustrates the process using two offloading cards (a first offloading card and a second offloading card). As shown in Figure 4, the first offloading card and the second offloading card are inserted into the offloading card bearer node. The first offloading card includes a first network processing unit (NPU), and the second offloading card includes a second NPU.

[0135] As an example, the offloading card bearer node can be set up in at least one data center that provides cloud services, for example, it can be a server in the cloud data center shown in Figure 1.

[0136] The aforementioned management node may include a Service Processing Unit (SPU). As an example, this management node may be located in at least one data center providing cloud services, such as a server in the cloud data center shown in Figure 1.

[0137] The aforementioned storage pool includes multiple storage nodes. As an example, these multiple storage nodes can be located in at least one data center providing cloud services, such as servers in the cloud data center shown in Figure 1.

[0138] The communication between the offloading card bearer node and the computing node, between the offloading card bearer node and the management node, and between the management node and the storage pool can be achieved through a high-speed interconnection network, or through other communication methods. This application embodiment does not specifically limit this.

[0139] The first and second unloading cards in the aforementioned unloading card carrying node can be connected via bus technology, high-speed interconnection network, or other communication methods. This application embodiment does not specifically limit this.

[0140] The functions of each component in the storage system shown in Figure 4 will be described in detail below.

[0141] The aforementioned SPU is used to manage the metadata required by the first NPU and the second NPU during the processing of input / output IO requests, and to synchronize the metadata to the first NPU and the second NPU. The metadata may include at least one of the following: the mount point of the volume of the storage pool, the status of the volume, the QoS parameters of the volume, the key information corresponding to the volume, and the IO view information of the storage pool.

[0142] The aforementioned first NPU is used to obtain the target IO request issued by the virtual instance running on the compute node, process the target IO request according to the metadata to generate a request message, and send the request message to the target storage node among the multiple storage nodes.

[0143] It should be understood that the process by which the first NPU processes the target IO request based on this metadata includes, but is not limited to: QoS control, data encryption / decryption, generation of the data integrity field (DIF), verification of the DIF, and routing forwarding. This process will be described in detail below with reference to specific embodiments, and will not be repeated here.

[0144] The target storage node among the aforementioned multiple storage nodes is used to receive and process the request message sent by the first NPU, generate a corresponding response message, and send the response message to the first NPU.

[0145] Optionally, in some embodiments, if multiple offload cards (including a first offload card and a second offload card) are inserted on the offload card bearer node, the SPU can also perform pooled management of these multiple offload cards. This ensures a relatively balanced load among the various NPUs and also effectively utilizes NPU resources, improving resource utilization.

[0146] As an example, the SPU can select a first NPU from the multiple NPUs included in the multiple offload cards based on the load status of each offload card and the load balancing algorithm, and mount the volume of the storage pool to the virtual instance through the first NPU, wherein the first NPU is the NPU with the lower load among the multiple NPUs.

[0147] In another example, if the load on the first NPU exceeds a preset threshold, the SPU can select the second NPU from among the multiple offload cards based on the load status of each offload card and a load balancing algorithm. The target I / O request is then migrated from the first NPU to the second NPU with the lighter load, thereby achieving load balancing among the multiple NPUs.

[0148] It should be noted that the function of the SPU in Figure 4 is the same as that of the SPU in Figure 3, and the function of the first NPU in Figure 4 is the same as that of the NPU in Figure 3. For details, please refer to the description of the SPU and NPU in Figure 3, which will not be repeated here.

[0149] For example, taking the storage system architecture shown in Figure 3 as an example, and referring to Figure 5, we will describe the functions of NPU and SPU in detail.

[0150] As an example, as shown in Figure 5, a storage client runs within the SPU. This storage client does not participate in the specific processing flow of IO requests; it is primarily responsible for the IO request control plane. The control plane tasks handled by this SPU include, but are not limited to: volume mounting / unmounting, Quality of Service (QoS) synchronization, key management, view management, and connection management.

[0151] 1. Unloading scrolls

[0152] As an example, the volume mount / unmount function on the SPU refers to mounting or unmounting a volume. For example, a volume can be mounted to a target NPU, or a volume can be unmounted from a target NPU.

[0153] In this embodiment of the application, the SPU can also synchronize the volume status and the volume mount point as volume metadata to the NPU.

[0154] The state of the volume mentioned above includes, but is not limited to: whether the volume is mounted on the NPU, whether there are other transactions that prevent the volume from handling IO requests, and the lock state of the volume (e.g., whether it is locked).

[0155] The mount points of the aforementioned volumes include, but are not limited to: the mapping relationship between the volume and the NPU it mounts, and the mapping relationship between the NPU and the virtual machine it interfaces with.

[0156] 2. QoS Synchronization

[0157] As an example, the QoS synchronization function on the SPU refers to saving QoS configuration parameters and synchronizing these saved QoS configuration parameters as volume metadata to the NPU.

[0158] The aforementioned QoS can be volume-level QoS or volume group-level QoS, and this application embodiment does not specifically limit it in this way.

[0159] For example, during the volume's lifecycle, the volume's QoS policy may be added, deleted, or updated. After the storage client on the SPU detects QoS-related events, it communicates with the target NPU on which the volume is mounted, synchronizing the QoS policy and QoS values ​​as part of the volume's metadata to the target NPU. The target NPU then adjusts the queues according to the QoS policy, making the new QoS policy effective. The NPU can directly control the enqueueing and dequeueing of IO requests based on the queue parameter status corresponding to the volume, thereby achieving rate limiting.

[0160] 3. Key Management

[0161] As an example, the key management function provided by the SPU refers to the interaction between the storage client on the SPU and the key management system to obtain and save the keys used to encrypt and decrypt data.

[0162] The aforementioned key can be used as volume metadata. During the process of synchronizing volume metadata between the SPU and NPU, the storage client on the SPU interacts with the NPU to register the key with the NPU, obtain a unique key ID, and update the volume metadata.

[0163] In some embodiments, if the volume is unloaded from the NPU, the SPU can remove the key and key ID from the NPU.

[0164] 4. View Management

[0165] As an example, the view management function on the SPU refers to the SPU obtaining IO view information of the storage pool and maintaining this IO view information in the SPU's local memory. For example, the SPU can establish a connection with the metadata node in the storage pool, obtain the IO view information of the storage pool from the metadata node, and save it in its local memory.

[0166] For example, the IO view information mentioned above may include, but is not limited to: IO view version information and storage node information in the storage pool. Specifically, the storage node information includes the storage node information corresponding to different IO partitions.

[0167] For example, since IO view information typically occupies a large amount of memory, it is impossible to store a copy on each NPU. Therefore, only one copy of the IO view information is stored on the SPU. During the IO process, the NPU can obtain the IO view information from the SPU as needed and route and forward IO requests based on the obtained IO view information. For instance, the NPU can obtain the information of the storage nodes corresponding to different IO fragments from the IO view information according to the algorithm, and then send the different IO fragments to their respective storage nodes according to the storage node information, thereby realizing the routing and forwarding of IO requests.

[0168] In some examples, if the IO view information of the storage pool changes, the metadata node in the storage pool will proactively notify the storage clients in the SPU. The storage clients in the SPU will then retrieve the latest IO view information from the metadata node and update it in the SPU's local memory. The SPU will also communicate with each NPU to inform them of the IO view information change. After the NPU detects the IO view information change, it will clear the IO view information maintained in its local cache. When the NPU accesses the IO view information from its local cache during subsequent IO processing, if it finds that the IO view information maintained in its local cache has been cleared, it will trigger a CacheMiss. The NPU will then automatically retrieve the latest IO view information from the SPU's memory and store it in its local cache.

[0169] 5. Connection Management

[0170] As an example, since the NPU is fully responsible for I / O parsing, processing, and routing, the transport layer protocol for data transmission between the NPU and storage nodes must also be implemented in the NPU. Because the connection establishment, negotiation, termination, and connection state maintenance processes between the NPU and storage nodes are quite complex, implementing them all in the NPU would increase the complexity of its design and implementation. Therefore, to reduce the complexity of the network protocol in the NPU, the SPU provides connection management functionality. This functionality completes the connection establishment, negotiation, termination, and connection state maintenance processes within the SPU's storage client.

[0171] For example, the SPU can also synchronize the connection status to the NPU. The NPU can maintain information such as the connection sequence number and window according to the requirements of the transmission protocol, and perform operations such as sending and receiving messages with the storage node.

[0172] As an example, as shown in Figure 5, the NPU includes an I / O device engine, a storage data plane, and a transport layer protocol. The I / O device engine is responsible for receiving I / O requests from the VM, the storage data plane is responsible for parsing and processing these I / O requests, and the transport layer protocol is responsible for routing and forwarding the I / O requests.

[0173] For example, the parsing and processing of the aforementioned stored data for this IO request includes, but is not limited to: QoS control, data encryption and decryption, data integrity field (DIF) processing, routing and forwarding, etc.

[0174] The process of NPU parsing and processing IO requests is described in detail below with reference to Figure 6. It should be understood that the examples in Figure 6 are merely to help those skilled in the art understand the embodiments of this application, and are not intended to limit the embodiments to the specific values ​​or scenarios illustrated in Figure 6. Those skilled in the art can obviously make various equivalent modifications or variations based on the examples given below in Figure 6, and such modifications and variations also fall within the scope of the embodiments of this application.

[0175] Figure 6 is a schematic flowchart of a method for processing I / O requests provided in an embodiment of this application. As shown in Figure 6, the method may include steps 610-650, which will be described in detail below.

[0176] It should be understood that the method shown in Figure 6 can be applied to any of the above-mentioned storage systems, and this application does not specifically limit it.

[0177] Step 610: The NPU obtains the IO request issued by VM1 on the host.

[0178] In this embodiment of the application, it is assumed that the storage pool can virtualize multiple volumes (e.g., EVS volumes). The SPU can mount volume 1 from the multiple volumes to VM1 through the NPU, so that VM1 can obtain storage space through the mounted volume 1 and write or read data from the storage space.

[0179] As an example, if VM1 receives an IO request from a tenant, it can send the IO request to the NPU, which will then parse and process the IO request.

[0180] For example, the VM1 kernel driver can add received I / O requests to the NPU queue and trigger a doorbell to the NPU. The NPU's I / O device engine retrieves the I / O request from the NPU queue, parses the I / O request, and obtains the information from the I / O request. This information may include, but is not limited to: the read / write type of the I / O request, logical block addressing (LBA), and the guest physical address (GPA) of the data.

[0181] Step 620: The NPU retrieves the metadata of Volume 1, dequeues the IO request from the NPU queue, and starts the IO request processing task.

[0182] In this embodiment of the application, the NPU can obtain the metadata of volume 1, which may include, but is not limited to: the mount point of volume 1, the status of volume 1, the QoS configuration parameters of volume 1, the encryption and decryption keys of volume 1, etc.

[0183] In one possible implementation, the NPU can obtain the volume's metadata from the SPU in advance and store it in the NPU's local cache. When the NPU receives an IO request from VM1, it can retrieve the metadata of volume 1 from the NPU's local cache, based on the fact that VM1 is mounted as volume 1.

[0184] For example, the metadata of the above volume is indexed in the NPU using a hash table, which supports dynamic addition and deletion of hash indexes, as well as data updates.

[0185] As an example, if Volume 1's metadata includes QoS configuration parameters, the NPU can dequeue IO requests from the NPU queue based on these parameters. For instance, the NPU attempts to acquire a QoS token based on Volume 1's QoS configuration. If the token acquisition is successful, the IO request moves from the NPU queue to the processing queue. If the token acquisition fails, the IO request moves from the NPU queue to the QoS waiting queue.

[0186] It should be understood that the QoS mechanism relies on hardware timers. When the volume is mounted to synchronize metadata, a scheduled task is registered to periodically maintain the volume's QoS token bucket and replenish the number of tokens in the token bucket. If there are pending IOs in the QoS waiting queue, an IO processing task is started to dequeue the IO request from the QoS waiting queue and continue processing.

[0187] Step 630: The NPU generates a message based on the type of the IO request.

[0188] Example 1: The following describes the message generated by the NPU in detail, taking the type of IO request as a write IO request.

[0189] For example, the NPU can read the data to be written from the GPA of VM1 via DMA based on the GPA information of the data to be written in the IO request, and generate a message based on the read data. For example, the message may include the data to be written and the request information for writing the data.

[0190] Optionally, to ensure the integrity of the data to be written, in this embodiment, the NPU can also generate a checksum for the acquired data to be written and include the checksum in the aforementioned message. For example, the NPU can generate a data integrity field (DIF) for the data to be written, calculate the cyclic redundancy check (CRC) code of the data to be written, and fill the CRC code into the DIF field. In this implementation, the aforementioned message includes the data to be written and the DIF field.

[0191] Optionally, to ensure the security of the data to be written, in this embodiment, the NPU can also use a hardware engine to encrypt the acquired data to be written and carry the encrypted data in the aforementioned message. For example, the NPU can obtain the encryption key of Volume 1 based on the encryption key ID of Volume 1, and encrypt the data to be written based on the encryption key of Volume 1 to obtain the encrypted data, and carry the encrypted data in the aforementioned message.

[0192] Example 2: The following describes the message generated by the NPU in detail, taking the type of IO request as a read IO request.

[0193] For example, the NPU can generate a message based on the address information of the data to be read in the IO request. This message includes the request information for reading the data and the address information of the data to be read.

[0194] Step 640: The NPU obtains the target storage node information based on the storage pool's IO view information and sends the message to the target storage node.

[0195] In this embodiment of the application, the NPU can obtain the IO view information of the storage pool and obtain the information of the corresponding target storage node based on the IO view information of the storage pool.

[0196] In one possible implementation, if the NPU's local cache stores IO view information synchronized from the SPU, the NPU can retrieve the IO view information from its local cache.

[0197] In another possible implementation, if the IO view information stored in the NPU's local cache has been cleared, a CacheMiss event will occur when the NPU retrieves the IO view information from its local cache. The PU will then automatically retrieve the latest IO view information from the SPU's memory and store it in the NPU's local cache. Afterward, the NPU can retrieve the latest IO view information from its local cache.

[0198] It should be understood that for IO requests generated during IO view changes, the NPU can attempt an Abort process to interrupt the processing of the IO request. It will then wait for the new IO view information to be stored in the NPU's local cache before processing the IO request based on the new IO view information.

[0199] The following describes an implementation method for determining the target storage node's information based on IO view information and sending a message to the target storage node.

[0200] For example, the NPU can use an algorithm (e.g., a distributed hash table algorithm) to look up the information of the corresponding target storage node from the IO view information, including the target storage node's ID and connection information, and then send the encapsulated message to the corresponding target storage node. For instance, the SPU can synchronize the transport protocol requirements, connection sequence number, window, and other information between the NPU and the storage node with the NPU. The NPU can then send the encapsulated message to the target storage node based on the transport protocol requirements, connection sequence number, window, and other information.

[0201] Step 650: The NPU receives the response message sent by the target storage node.

[0202] In this embodiment of the application, after the NPU sends the above message to the target storage node, it can receive the response message sent by the target storage node.

[0203] Example 1: The following describes in detail the response message received by the NPU from the target storage node, taking a write IO request as an example.

[0204] Assuming the NPU sends a message to the target storage node containing encrypted data to be written and a request to write the data, the target storage node can obtain the decryption key to decrypt the encrypted data to be written, obtain the data to be written, and write the data to be written along with the DIF field to the corresponding address. After the data to be written is successfully written, the target storage node can send a response message to the NPU, which includes an indication that the data was written successfully.

[0205] After receiving the response message, the NPU can forward it to VM1 on the host.

[0206] Example 2: The following describes in detail the response message received by the NPU from the target storage node, taking the IO request type as a read IO request.

[0207] Suppose that the message sent by the NPU to the target storage node includes a request to read data. The target storage node can obtain the read data, encrypt the read data, and send it back to the NPU in a response message.

[0208] The response message received by the NPU includes encrypted read data and a corresponding DIF field. The DIF field is filled with a checksum (e.g., a CRC code) for the read data. The NPU can use a hardware engine to decrypt the acquired read data to obtain the decrypted read data. For example, the NPU can obtain the decryption key for Volume 1 based on its decryption key ID, and then decrypt the read data using that key to obtain the decrypted read data.

[0209] Optionally, to ensure the integrity of the data to be written, in this embodiment, the NPU can also generate a checksum (e.g., a CRC code) for the acquired read data, and verify the generated CRC code against the CRC code corresponding to the read data carried in the response message to determine whether the data is complete. For example, if the calculated CRC code matches the CRC code carried in the response message, it indicates that the read data has not been tampered with and is complete. Conversely, if the calculated CRC code does not match the CRC code carried in the response message, it indicates that the read data has been tampered with and is incomplete.

[0210] In this embodiment, the NPU can also write the decrypted read data into VM1. For example, the NPU can write the decrypted read data into the GPA address of VM1 via DMA.

[0211] The embodiments of the apparatus of this application will now be described in detail with reference to Figures 7 and 8. It should be understood that the descriptions of the apparatus embodiments correspond to those of the method embodiments; therefore, any parts not described in detail can be referred to the preceding method embodiments.

[0212] The following describes in detail, with reference to Figure 7, a computing device provided in an embodiment of this application.

[0213] Figure 7 is a schematic diagram of the architecture of a computing device 1500 provided in an embodiment of this application. The computing device 1500 can be a server, a computer, or other device with computing capabilities. The computing device 1500 shown in Figure 7 includes at least one processor 1510 and a memory 1520.

[0214] It should be understood that this application does not limit the number of processors and memories in the computing device 1500.

[0215] The processor 1510 executes instructions in the memory 1520, causing the computing device 1500 to implement the method provided in this application. Alternatively, the processor 1510 executes instructions in the memory 1520, causing the computing device 1500 to implement the various functional modules provided in this application, thereby implementing the method provided in this application.

[0216] Optionally, the computing device 1500 also includes a communication interface 1530. The communication interface 1530 uses a transceiver module, such as, but not limited to, a network interface card or a transceiver, to enable communication between the computing device 1500 and other devices or communication networks.

[0217] Optionally, the computing device 1500 also includes a system bus 1540, wherein the processor 1510, memory 1520, and communication interface 1530 are respectively connected to the system bus 1540. The processor 1510 can access the memory 1520 through the system bus 1540; for example, the processor 1510 can perform data read / write or code execution in the memory 1520 through the system bus 1540. The system bus 1540 is a peripheral component interconnect express (PCI) bus or an extended industry standard architecture (EISA) bus, etc. The system bus 1540 is divided into an address bus, a data bus, a control bus, etc. For ease of illustration, only one thick line is used in Figure 7, but this does not mean that there is only one bus or one type of bus.

[0218] In one possible implementation, the processor 1510 primarily functions to interpret the instructions (or code) of a computer program and process data within the computer software. The instructions of the computer program and the data within the computer software can be stored in memory 1520 or cache 1516.

[0219] Optionally, processor 1510 may be an integrated circuit chip with signal processing capabilities. By way of example and not limitation, processor 1510 may be a general-purpose processor, a digital signal processor (DSP), an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), or other programmable logic devices, discrete gate or transistor logic devices, or discrete hardware components. Among these, a general-purpose processor is a microprocessor, etc. For example, processor 1510 may be a central processing unit (CPU).

[0220] Optionally, each processor 1510 includes at least one processing unit 1512 and a memory control unit 1514.

[0221] Optionally, the processing unit 1512, also known as the core, is the most important component of the processor. The processing unit 1512 is manufactured from single-crystal silicon using a specific production process. All calculations, command reception, command storage, and data processing are performed by the core. Each processing unit independently executes program instructions, utilizing parallel computing capabilities to accelerate program execution. Various processing units have fixed logical structures; for example, a processing unit includes logical units such as a Level 1 cache, a Level 2 cache, an execution unit, an instruction-level unit, and a bus interface.

[0222] In one implementation example, the memory control unit 1514 controls the data interaction between the memory 1520 and the processing unit 1512. Specifically, the memory control unit 1514 receives memory access requests from the processing unit 1512 and controls access to memory based on the memory access requests. By way of example and not limitation, the memory control unit is a device such as a memory management unit (MMU).

[0223] In one implementation example, each memory control unit 1514 addresses the memory 1520 via the system bus. An arbitrator (not shown in Figure 7) is configured on the system bus to handle and coordinate contention for access by the multiple processing units 1512.

[0224] In one implementation example, the processing unit 1512 and the memory control unit 1514 are connected via internal chip connection lines, such as address lines, thereby enabling communication between the processing unit 1512 and the memory control unit 1514.

[0225] Optionally, each processor 1510 also includes a cache 1516, which is a buffer for data exchange (called a cache). When the processing unit 1512 needs to read data, it first looks for the required data in the cache. If the data is found, it is executed directly; otherwise, it looks for the data in memory. Since the cache operates much faster than memory, its purpose is to help the processing unit 1512 run faster.

[0226] The memory 1520 provides runtime space for processes in the computing device 1500. For example, the memory 1520 stores the computer program (specifically, the program code) used to generate the process. After the computer program is run by the processor to generate a process, the processor allocates corresponding storage space for the process in the memory 1520. Furthermore, the aforementioned storage space further includes text segments, initialized data segments, bit initialized data segments, stack segments, heap segments, etc. The memory 1520 stores data generated during the process's execution, such as intermediate data or process data, in the aforementioned process-specific storage space.

[0227] Optionally, the memory, also known as RAM, is used to temporarily store the data processed by the processor 1510, as well as data exchanged with external storage devices such as hard disks. As long as the computer is running, the processor 1510 will load the data that needs to be processed into RAM for processing, and after the processing is completed, the processing unit 1512 will send the result out.

[0228] By way of example and not limitation, memory 1520 is volatile memory or non-volatile memory, or may include both volatile and non-volatile memory. Non-volatile memory is read-only memory (ROM), programmable read-only memory (PROM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), or flash memory. Volatile memory is random access memory (RAM) used as an external cache. By way of example, but not limitation, many forms of RAM are available, such as static random access memory (SRAM), dynamic random access memory (DRAM), synchronous dynamic random access memory (SDRAM), double data rate synchronous dynamic random access memory (DDR SDRAM), enhanced synchronous dynamic random access memory (ESDRAM), synchronous linked dynamic random access memory (SLDRAM), and direct rambus RAM (DR RAM). It should be noted that the memory 1520 of the systems and methods described herein is intended to include, but is not limited to, these and any other suitable types of memory.

[0229] The structure of the computing device 1500 listed above is merely illustrative and is not limited thereto. The computing device 1500 in this application includes various hardware components in existing computer systems. For example, the computing device 1500 also includes other memories besides memory 1520, such as disk storage. Those skilled in the art should understand that the computing device 1500 may also include other devices necessary for normal operation. Furthermore, depending on specific needs, those skilled in the art should understand that the computing device 1500 may also include hardware devices for implementing other additional functions. In addition, those skilled in the art should understand that the computing device 1500 may only include the devices necessary for implementing the embodiments of this application, and not necessarily all the devices shown in FIG. 7.

[0230] This application also provides a computing device cluster. The computing device cluster includes at least one computing device. The computing device may be a server. In some embodiments, the computing device may also be a desktop computer, a laptop computer, or a smartphone, or other terminal device.

[0231] As shown in Figure 8, the computing device cluster includes at least one computing device 1500. The memory 1520 of one or more computing devices 1500 in the computing device cluster may store the same instructions for performing the above-described method.

[0232] In some possible implementations, the memory 1520 of one or more computing devices 1500 in the computing device cluster may also each store a portion of the instructions for executing the above-described methods. In other words, a combination of one or more computing devices 1500 can jointly execute the instructions of the above-described methods.

[0233] It should be noted that the memory 1520 in different computing devices 1500 within the computing device cluster can store different instructions, each used to execute a portion of the functions of the aforementioned device. That is, the instructions stored in the memory 1520 of different computing devices 1500 can implement the functions of one or more modules within the aforementioned device.

[0234] In some possible implementations, one or more computing devices in a computing device cluster can be connected via a network. This network can be a wide area network (WAN) or a local area network (LAN), etc. Figure 9 illustrates one possible implementation. As shown in Figure 9, two computing devices, 1500A and 1500B, are connected via a network. Specifically, they are connected to the network through communication interfaces in each computing device.

[0235] It should be understood that the functions of computing device 1500A shown in Figure 9 can also be performed by multiple computing devices 1500. Similarly, the functions of computing device 1500B can also be performed by multiple computing devices 1500.

[0236] In this embodiment, a computer program product containing instructions is also provided. The computer program product may be a software or program product containing instructions capable of running on a computing device or stored on any usable medium. When run on a computing device, it causes the computing device to perform the methods provided above, or causes the computing device to perform the functions of the apparatus provided above.

[0237] In this embodiment, a computer-readable storage medium is also provided. This computer-readable storage medium can be any available medium that a computing device can store, or a data storage device such as a data center containing one or more available media. The available medium can be a magnetic medium (e.g., floppy disk, hard disk, magnetic tape), an optical medium (e.g., DVD), or a semiconductor medium (e.g., solid-state drive). The computer-readable storage medium includes instructions that, when executed on a computing device, cause the computing device to perform the method described above.

[0238] It should be understood that in the various embodiments of this application, the order of the above-mentioned processes does not imply the order of execution. The execution order of each process should be determined by its function and internal logic, and should not constitute any limitation on the implementation process of the embodiments of this application.

[0239] Those skilled in the art will recognize that the units and algorithm steps of the various examples described in conjunction with the embodiments disclosed herein can be implemented in electronic hardware, or a combination of computer software and electronic hardware. Whether these functions are implemented in hardware or software depends on the specific application and design constraints of the technical solution. Those skilled in the art can use different methods to implement the described functions for each specific application, but such implementation should not be considered beyond the scope of this application.

[0240] Those skilled in the art will understand that, for the sake of convenience and brevity, the specific working processes of the systems, devices, and units described above can be referred to the corresponding processes in the foregoing method embodiments, and will not be repeated here.

[0241] In the several embodiments provided in this application, it should be understood that the disclosed systems, apparatuses, and methods can be implemented in other ways. For example, the apparatus embodiments described above are merely illustrative; for instance, the division of units is only a logical functional division, and in actual implementation, there may be other division methods. For example, multiple units or components may be combined or integrated into another system, or some features may be ignored or not executed. Furthermore, the coupling or direct coupling or communication connection shown or discussed may be through some interfaces; the indirect coupling or communication connection between apparatuses or units may be electrical, mechanical, or other forms.

[0242] The units described as separate components may or may not be physically separate. The components shown as units may or may not be physical units; that is, they may be located in one place or distributed across multiple network units. Some or all of the units can be selected to achieve the purpose of this embodiment according to actual needs.

[0243] In addition, the functional units in the various embodiments of this application can be integrated into one processing unit, or each unit can exist physically separately, or two or more units can be integrated into one unit.

[0244] If the aforementioned functions are implemented as software functional units and sold or used as independent products, they can be stored in a computer-readable storage medium. Based on this understanding, the technical solution of this application, in essence, or the part that contributes to the prior art, or a portion of the technical solution, can be embodied in the form of a software product. This computer software product is stored in a storage medium and includes several instructions to cause a computer device (which may be a personal computer, server, or network device, etc.) to execute all or part of the steps of the methods described in the various embodiments of this application. The aforementioned storage medium includes various media capable of storing program code, such as USB flash drives, portable hard drives, read-only memory (ROM), random access memory (RAM), magnetic disks, or optical disks.

[0245] The above description is merely a specific embodiment of this application, but the scope of protection of this application is not limited thereto. Any variations or substitutions that can be easily conceived by those skilled in the art within the scope of the technology disclosed in this application should be included within the scope of protection of this application. Therefore, the scope of protection of this application should be determined by the scope of the claims.

Claims

1. A storage system, characterized by, The storage system includes a storage pool and offload cards inserted into compute nodes. The storage pool and the compute nodes are located in at least one data center providing cloud services. The offload cards include a Network Processing Unit (NPU) and a Service Processing Unit (SPU). The storage pool includes multiple storage nodes, wherein: The SPU is used to manage the metadata required by the NPU in the process of processing input / output IO requests, and to synchronize the metadata to the NPU. The NPU is used to obtain target IO requests issued by virtual instances running on the compute node, process the target IO requests according to the metadata to generate request messages, and send the request messages to the target storage node among the plurality of storage nodes. The target storage node is used to receive and process the request message sent by the NPU, generate a corresponding response message, and send the response message to the NPU.

2. The storage system of claim 1, wherein, The metadata includes at least one of the following: the mount point of the volume in the storage pool, the status of the volume, the QoS parameters of the volume, and the key information corresponding to the volume.

3. The storage system according to claim 1 or 2, characterized by, The metadata also includes the IO view information of the storage pool. The NPU is also used to determine the information of the target storage node based on the IO view information.

4. The storage system according to any one of claims 1 to 3, characterized in that, The SPU is also used to obtain the updated IO view information when the IO view information is updated, and to synchronize the updated IO view information to the NPU. The NPU is also used to store the updated IO view information.

5. The storage system according to any one of claims 1 to 4, characterized in that, The NPU is also used to send a request message to the SPU after receiving the exception information sent by the target storage node. The request message is used to instruct the SPU to manage the target IO request. The SPU is also used to receive the request information and manage the target IO request according to the request information.

6. The storage system according to any one of claims 1 to 5, characterized in that, The NPU is also used to send the target IO request to the SPU; The SPU is also used to receive the target IO request and process the target IO request according to the metadata.

7. The storage system of any one of claims 1 to 6, wherein, The NPU is specifically used for: Based on the metadata, the target IO request is processed by at least one of the following: QoS control, data encryption / decryption, generation of the data integrity field (DIF), verification of the DIF, and routing forwarding.

8. A storage system, characterized by The storage system includes an offload card bearer node, a management node, and a storage pool. The offload card bearer node, the management node, and the storage pool are located in at least one data center providing cloud services. The offload card bearer node has a first offload card and a second offload card inserted into it. The first offload card includes a first network processing unit (NPU), and the second offload card includes a second NPU. The management node includes a service processing unit (SPU). The storage pool includes multiple storage nodes, wherein: The SPU is used to manage the metadata required by the first NPU and the second NPU in the process of processing input / output IO requests, and to synchronize the metadata to the first NPU and the second NPU. The first NPU is used to obtain target IO requests issued by virtual instances running on the compute nodes from the compute nodes, process the target IO requests according to the metadata to generate request messages, and send the request messages to the target storage node among the plurality of storage nodes; The target storage node is used to receive and process the request message sent by the first NPU, generate a corresponding response message, and send the response message to the first NPU.

9. The storage system according to claim 8, characterized in that, Multiple unloading cards are inserted into the unloading card carrier node. The SPU is further configured to select the first NPU from the multiple NPUs included in the multiple offloading cards according to a load balancing algorithm, and mount the volume of the storage pool to the virtual instance through the first NPU, wherein the first NPU is the NPU with a lower load among the multiple NPUs.

10. The storage system according to claim 9, characterized in that, The SPU is further configured to select the second NPU from the plurality of NPUs according to the load balancing algorithm when the load of the first NPU is greater than a preset threshold. The first NPU is used to migrate the target IO request to the second NPU; The second NPU is used to process the target IO request.

11. The storage system according to any one of claims 8 to 10, characterized in that, The metadata includes at least one of the following: the mount point of the volume in the storage pool, the status of the volume, the QoS parameters of the volume, and the key information corresponding to the volume.

12. The storage system according to any one of claims 8 to 11, characterized in that, The metadata also includes the IO view information of the storage pool. The first NPU is also used to determine the information of the target storage node based on the IO view information.

13. The storage system according to any one of claims 8 to 12, characterized in that, The SPU is also used to obtain the updated IO view information when the IO view information is updated, and to synchronize the updated IO view information to the first NPU. The first NPU is also used to store the updated IO view information.

14. The storage system according to any one of claims 8 to 13, characterized in that, The first NPU is further configured to send a request message to the SPU after receiving the exception information sent by the target storage node, the request message being used to instruct the SPU to manage the target IO request; The SPU is also used to receive the request information and manage the target IO request according to the request information.

15. The storage system according to any one of claims 8 to 14, characterized in that, The first NPU is also used to send the target I / O request to the SPU; The SPU is also used to receive the target IO request and process the target IO request according to the metadata.

16. The storage system according to any one of claims 8 to 15, characterized in that, The first NPU is specifically used for: Based on the metadata, the target IO request is processed by at least one of the following: QoS control, data encryption / decryption, generation of the data integrity field (DIF), verification of the DIF, and routing forwarding.

17. A method for processing input / output (I / O) requests, characterized in that, The method is applied to a storage system, the storage system including a storage pool and an offload card inserted on a compute node, the storage pool and the compute node being located in at least one data center providing cloud services, the offload card including a network processing unit (NPU) and a service processing unit (SPU), and the storage pool including multiple storage nodes, the method comprising: The NPU obtains target input / output I / O requests issued by the virtual instance running on the compute node; The NPU obtains the metadata required to process the target IO request from the SPU; The NPU processes the target IO request based on the metadata and generates a request message; The NPU sends the request message to the target storage node among the plurality of storage nodes; The NPU receives a response message sent by the target storage node, wherein the response message is a response message corresponding to the request message generated by the target storage node after processing the request message.

18. A method for processing input / output (I / O) requests, characterized in that, The method is applied to a storage system, which includes an offload card bearer node, a management node, and a storage pool. The offload card bearer node, the management node, and the storage pool are located in at least one data center providing cloud services. The offload card bearer node has a first offload card and a second offload card inserted into it. The first offload card includes a first network processing unit (NPU), and the second offload card includes a second NPU. The management node includes a service processing unit (SPU), and the storage pool includes multiple storage nodes. The method includes: The first NPU acquires the target input / output I / O requests issued by the virtual instance running on the compute node; The first NPU obtains the metadata required to process the target IO request from the SPU; The first NPU processes the target I / O request based on the metadata and generates a request message; The first NPU sends the request message to the target storage node among the plurality of storage nodes; The first NPU receives a response message sent by the target storage node, wherein the response message is a response message corresponding to the request message generated by the target storage node after processing the request message.

19. A computing device cluster, characterized in that, It includes at least one computing device, each computing device including a processor and memory; The processor of the at least one computing device is configured to execute instructions stored in the memory of the at least one computing device to cause the cluster of computing devices to perform the method as described in claim 17 or 18.

20. A computer program product containing instructions, characterized in that, When the instruction is executed by the computing device cluster, the computing device cluster causes the computing device cluster to perform the method as described in claim 17 or 18.

21. A computer-readable storage medium, characterized in that, Includes computer program instructions, which, when executed by a cluster of computing devices, perform the method as described in claim 17 or 18.

Citation Information

Patent Citations

  • IO processing method and device

    CN112148422A

  • Cloud computing node and file management method and device

    CN113032099A

  • Load balancing method, device and system, electronic equipment and storage medium

    CN115589410A

  • Method and apparatus for providing an integrated network of processors

    US20030212735A1