An IO request processing method, device, apparatus and storage medium

CN117591029BActive Publication Date: 2026-09-08MACROSAN TECH
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202311632106.9
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2023-11-30
Publication Date
2026-09-08
Estimated Expiration
2043-11-30

AI Technical Summary

Technical Problem

[0004]其中,很多CPU由于内部结构的特点,核与核之间,核与内存、网卡、磁盘之间,CPU与CPU之间,访问的性能是存在着差异的,当出现跨CPU访问存储资源时,会存在较大的内存延时,同时带宽也有很大的限制

Benefits of technology

[0026] In the embodiments described in this specification, a first CPU on a first node receives an I/O request from the front-end network via a first network port on a connected first network card. The first CPU decomposes the I/O request into a first sub-request that needs to be processed by the first node and a sub-request that needs to be processed by a second node. The first CPU processes the first sub-request and sends the second sub-request to the back-end network via a second network port on the first network card for processing by the second node. This ensures that the first node sends the sub-request from the network card that receives the I/O request to the second node, thus avoiding the problem of sending sub-requests across CPUs to other nodes. This solves the problem of increased latency and performance loss caused by cross-CPU memory access during I/O request processing in a distributed block storage system.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN117591029B_ABST
    Figure CN117591029B_ABST
Patent Text Reader

Abstract

The present specification provides an IO request processing method, device, equipment and storage medium, which is applied to a first node of a distributed block storage system, the first node is configured with multiple CPUs, each CPU is connected with a corresponding network card and storage resource, the method comprises the following steps: a first CPU on the first node receives an IO request transmitted by a front-end network through a first network port on a first network card connected with the first CPU, the first network card comprises a first network port and a second network port, the first network port is connected with the front-end network, and the second network port is connected with a back-end network; the first CPU decomposes the IO request to obtain a first sub-request to be processed by the first node and a second sub-request to be processed by a second node; the first CPU processes the first sub-request, and sends the second sub-request to the back-end network through the second network port of the first network card, so as to be processed by the second node.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This specification relates to the field of distributed systems technology, and in particular to an I / O request processing method, apparatus, device, and storage medium. Background Technology

[0002] Distributed block storage systems are a technology for storing and managing large-scale data. They divide data into fixed-size blocks and distribute these blocks across multiple nodes (computers or storage devices) to improve data reliability, scalability, and performance.

[0003] In a distributed block storage system, a certain amount of memory is typically connected to two CPUs on an even basis, two network cards are connected to two CPUs respectively, one network card is connected to the front-end network to carry out front-end services, and the other network card is connected to the back-end network to carry out data synchronization between nodes. A certain number of disks are connected to two CPUs on an even basis. In terms of network connectivity, for redundancy, ports connected to the same network card are aggregated and bound.

[0004] Due to the characteristics of their internal structure, many CPUs have performance differences in access between cores, between cores and memory, network cards, disks, and between CPUs. When accessing storage resources across CPUs, there will be significant memory latency and bandwidth limitations. Summary of the Invention

[0005] To overcome the problems existing in related technologies, this specification provides an I / O request processing method, apparatus, device, and storage medium.

[0006] According to a first aspect of the embodiments of this specification, an IO request processing method is provided, applied to a first node of a distributed block storage system, wherein the first node is configured with multiple CPUs, each CPU being connected to its own corresponding network interface card and storage resources, the method comprising:

[0007] The first CPU on the first node receives IO requests from the front-end network through the first network port on the first network card connected to it. The first network card includes a first network port and a second network port. The first network port is connected to the front-end network, and the second network port is connected to the back-end network.

[0008] The first CPU decomposes the IO request to obtain a first sub-request that needs to be processed by the first node and a second sub-request that needs to be processed by the second node.

[0009] The first CPU processes the first sub-request and sends the second sub-request to the backend network through the second network port of the first network card, so that it can be processed by the second node.

[0010] According to a second aspect of the embodiments of this specification, an IO request processing method is provided, applied to a second node of a distributed block storage system, the second node being configured with multiple CPUs, each CPU being connected to its own corresponding network interface card and storage resources, the method comprising:

[0011] The first CPU on the second node receives a second sub-request sent by the first node from the backend network through the second network port on the connected first network card. The first network card includes a first network port and a second network port. The first network port is connected to the frontend network, and the second network port is connected to the backend network.

[0012] The first CPU processes the second sub-request and sends the processing result of the second sub-request to the backend network through the second network port of the first network card, so that the first node can return a response.

[0013] According to a third aspect of the embodiments of this specification, an IO request processing apparatus is provided, applied to a first node of a distributed block storage system, the first node being configured with multiple CPUs, each CPU being connected to its own corresponding network interface card and storage resources, the apparatus comprising:

[0014] The first receiving unit is used for the first CPU on the first node to receive IO requests from the front-end network through the first network port on the first network card connected to it. The first network card includes a first network port and a second network port. The first network port is connected to the front-end network, and the second network port is connected to the back-end network.

[0015] The decomposition unit is used by the first CPU to decompose the IO request into a first sub-request that needs to be processed by the first node and a second sub-request that needs to be processed by the second node.

[0016] The first processing unit is used for the first CPU to process the first sub-request, and to send the second sub-request to the backend network through the second network port of the first network card for processing by the second node.

[0017] According to a fourth aspect of the embodiments of this specification, an IO request processing apparatus is provided, applied to a second node of a distributed block storage system, the second node being configured with multiple CPUs, each CPU being connected to its own corresponding network interface card and storage resources, the apparatus comprising:

[0018] The second receiving unit is used to receive a second sub-request sent by the first node from the backend network through the second network port on the first network card connected to the first network card. The first network card includes a first network port and a second network port. The first network port is connected to the frontend network and the second network port is connected to the backend network.

[0019] The second processing unit is used for the first CPU to process the second sub-request and to send the processing result of the second sub-request to the backend network through the second network port of the first network card, so that the first node can return a response.

[0020] According to a fifth aspect of the embodiments of this specification, an electronic device is provided, comprising:

[0021] processor;

[0022] Memory used to store processor-executable instructions;

[0023] The processor executes the executable instructions to implement the method described in the first aspect above.

[0024] According to a sixth aspect of the embodiments of this specification, a computer-readable storage medium is provided that stores computer instructions thereon, which, when executed by a processor, implement the steps of the method as described in the embodiments of the first aspect above.

[0025] The technical solutions provided in the embodiments of this specification may include the following beneficial effects:

[0026] In the embodiments described in this specification, a first CPU on a first node receives an I / O request from the front-end network via a first network port on a connected first network card. The first CPU decomposes the I / O request into a first sub-request that needs to be processed by the first node and a sub-request that needs to be processed by a second node. The first CPU processes the first sub-request and sends the second sub-request to the back-end network via a second network port on the first network card for processing by the second node. This ensures that the first node sends the sub-request from the network card that receives the I / O request to the second node, thus avoiding the problem of sending sub-requests across CPUs to other nodes. This solves the problem of increased latency and performance loss caused by cross-CPU memory access during I / O request processing in a distributed block storage system.

[0027] It should be understood that the above general description and the following detailed description are exemplary and explanatory only, and are not intended to limit this specification. Attached Figure Description

[0028] The accompanying drawings, which are incorporated in and form part of this specification, illustrate embodiments consistent with this specification and, together with the description, serve to explain the principles of this specification.

[0029] Figure 1 This is a schematic diagram illustrating the architecture of a commonly used IO request processing method according to an exemplary embodiment of this specification.

[0030] Figure 2 This is a flowchart illustrating an IO request processing method according to an exemplary embodiment of this specification.

[0031] Figure 3 This is a schematic diagram illustrating the architecture of an IO request processing method according to an exemplary embodiment of this specification.

[0032] Figure 4 This is a flowchart illustrating another IO request processing method according to an exemplary embodiment of this specification.

[0033] Figure 5 This is a block diagram illustrating an I / O request processing apparatus according to an exemplary embodiment.

[0034] Figure 6 This is a block diagram of another I / O request processing apparatus illustrated in this specification according to an exemplary embodiment.

[0035] Figure 7 This is a schematic diagram of the structure of an electronic device according to an exemplary embodiment of this specification. Detailed Implementation

[0036] Exemplary embodiments will now be described in detail, examples of which are illustrated in the accompanying drawings. When the following description relates to the drawings, unless otherwise indicated, the same numerals in different drawings denote the same or similar elements. The embodiments described in the following exemplary embodiments do not represent all embodiments consistent with this specification. Rather, they are merely examples of apparatuses and methods consistent with some aspects of this specification as detailed in the appended claims.

[0037] The terminology used in this specification is for the purpose of describing particular embodiments only and is not intended to be limiting of this specification. The singular forms “a,” “the,” and “the” as used in this specification and the appended claims are also intended to include the plural forms unless the context clearly indicates otherwise. It should also be understood that the term “and / or” as used herein refers to and includes any and all possible combinations of one or more of the associated listed items.

[0038] It should be understood that although the terms first, second, third, etc., may be used in this specification to describe various information, this information should not be limited to these terms. These terms are only used to distinguish information of the same type from one another. For example, without departing from the scope of this specification, first information may also be referred to as second information, and similarly, second information may also be referred to as first information. Depending on the context, the word "if" as used herein may be interpreted as "when," "when," or "in response to determination."

[0039] Figure 1 This is a schematic diagram illustrating the architecture of a commonly used I / O request processing method according to an exemplary embodiment. Figure 1 As shown, in a distributed block storage system, a certain amount of memory is typically connected to two CPUs on an even basis, two network cards are connected to two CPUs respectively, one network card is connected to the front-end network to carry front-end services, and the other network card is connected to the back-end network to carry data synchronization between nodes. A certain number of disks are connected to two CPUs on an even basis. In terms of network connectivity, for redundancy, ports connected to the same network card are aggregated and bound.

[0040] Due to the characteristics of their internal structure, many CPUs exhibit performance differences between cores, between cores and memory, network cards, disks, and even between different CPUs. Figure 1 Taking two CPUs as an example, when CPU2's core accesses the memory connected to CPU1, it has to go through the intermediate channel connecting CPU1 and CPU2. Therefore, the latency is much greater than when the core in CPU1 accesses the memory connected to CPU1, and the bandwidth is also greatly limited. Similarly, network cards and disks work on a similar principle.

[0041] In related technologies, such as Figure 1 As shown, when the application server sends an I / O request to the first node, network interface card 1 on the first node receives the data and enters the memory connected to CPU 1. After being decomposed by a data redundancy strategy, the resulting sub-request is sent to the second node via network interface card 2. In other words, a portion of the data in the memory connected to CPU 1 is sent to the second node via network interface card 2. This process involves cross-CPU memory access, increasing I / O processing latency and significantly limiting bandwidth.

[0042] Therefore, this specification provides an IO request processing method that can solve the problem of increased latency and performance loss caused by cross-CPU memory access during IO request processing in distributed block storage systems.

[0043] The embodiments described in this specification will now be described in detail.

[0044] like Figure 2 As shown, Figure 2 This is a flowchart illustrating an IO request processing method according to an exemplary embodiment of this specification. The method is applied to a first node of a distributed block storage system. The first node is configured with multiple CPUs, each CPU being connected to its own corresponding network card and storage resources. In the embodiments of this specification, the storage resources include disks, memory, or reorganized storage space on software, etc., and this specification does not limit them.

[0045] The method specifically includes the following steps:

[0046] Figure 3 This is a schematic diagram illustrating the architecture of an IO request processing method according to an exemplary embodiment of this specification.

[0047] S201, the first CPU on the first node receives an IO request from the front-end network through the first network port on the connected first network card. The first network card includes a first network port and a second network port. The first network port is connected to the front-end network, and the second network port is connected to the back-end network.

[0048] In the embodiments described in this specification, network interface aggregation is not performed. For example... Figure 3 As shown, by changing the network connection method, the network ports on the same network card are divided into two groups: one group connects to the front-end network as the first network port, and the other group connects to the back-end network as the second network port.

[0049] When an application in the application server initiates an I / O request, the I / O request is transmitted through the front-end network to the first node in the distributed block storage system. The first node receives the I / O request from the front-end network through the first network port on the first network card connected to the first CPU.

[0050] S202, the first CPU decomposes the IO request to obtain a first sub-request that needs to be processed by the first node and a second sub-request that needs to be processed by the second node.

[0051] The first node receives the IO request. The first CPU in the first node decomposes the sub-requests to be processed by each node according to a redundancy strategy, such as multiple replicas or EC, and obtains the first sub-request that needs to be processed by the first node and the second sub-request that needs to be processed by the second node.

[0052] S203, the first CPU processes the first sub-request and sends the second sub-request to the backend network through the second network port of the first network card, so that it can be processed by the second node.

[0053] The CPU in the first node processes the first sub-request and stores the data in storage resources, thus completing the first sub-request. Simultaneously, the second sub-request is sent to the backend network via the second network port of the first network interface card, thereby handing the second sub-request over to the second node for processing.

[0054] By having the first network interface card (NIC) receiving the I / O request send a sub-request to the second node, the system ensures that the network interface card receiving the request sends the request, thus solving the problem of increased latency and performance loss caused by cross-CPU memory access during I / O request processing in distributed block storage systems.

[0055] In an exemplary embodiment, sending the second sub-request to the backend network through the second network port of the first network card includes: confirming the target storage partition in the second node for processing the second sub-request based on the storage resources corresponding to the second sub-request, wherein each CPU in the second node and its connected network card and storage resources are divided into a storage partition; and sending the second sub-request to the target storage partition through the second network port of the first network card.

[0056] Specifically, in the embodiments of this specification, each node is divided into multiple storage partitions according to the architecture of its CPU. For example, as Figure 3 As shown, the area divided by the dashed line is the storage partition corresponding to the two CPUs in the second node. Each storage partition includes a CPU and its connected network card and storage resources.

[0057] When the first node sends a second sub-request to the second node, it first determines the disk to which the second sub-request needs to be written based on the data redundancy strategy, and then locates the target storage partition in the second node to process the second sub-request based on that disk. For example, assuming the disk to which the second sub-request needs to be written is located in a storage resource connected to the first CPU, then the storage partition where the first CPU is located is the target storage partition.

[0058] Once the target storage partition where the second sub-request is located is determined, the first node sends the second sub-request to the target storage partition through the second network port of the first network card, i.e., the network card that receives IO requests.

[0059] In one exemplary embodiment, sending the second sub-request to the target storage partition includes: determining the network interface address corresponding to the target storage partition; and setting the target address for sending the second sub-request to the network interface address corresponding to the target storage partition.

[0060] After determining the target storage partition where the second sub-request is located, confirm the network interface address corresponding to the target storage partition in the second node to which the second sub-request is to be sent, and set the target address of the second sub-request to the network interface address corresponding to the target storage partition.

[0061] In the embodiments of this specification, each node in the distributed block storage system maintains a system storage partition table. The system storage partition table contains storage partition information corresponding to the storage partitions on all nodes in the system, including storage partition identifiers, partition storage resource information, etc.

[0062] Furthermore, the storage partition information corresponding to any storage partition on any node also records: the network port addresses corresponding to all network ports connected to the backend network on any node and the priority of each network port address, and the priority of any network port address is positively correlated with the access efficiency of the CPU in any storage partition to the network port address.

[0063] For example, such as Figure 3 As shown, for the storage partition where the first CPU is located in the second node, the access efficiency of the first CPU when accessing the network port address corresponding to the network port connecting the first network card to the backend network is higher than that when accessing the network port address corresponding to the network port connecting the second network card to the backend network. Therefore, if the storage partition where the first CPU is located is the target storage partition, the network port address corresponding to the network port connecting the first network card to the backend network has higher priority.

[0064] In an exemplary embodiment, when the network port address corresponding to the target storage partition is determined, the system storage partition table maintained in the first node is first read, and the network port address that is currently available and has the highest priority is selected from the storage partition information corresponding to the target storage partition contained in the system storage partition table as the network port address corresponding to the target storage partition.

[0065] By selecting the target storage partition and determining the network interface corresponding to the currently available and highest-priority network interface address, the network interface address corresponding to the target storage partition is obtained, which greatly reduces the probability of cross-CPU access and solves the problem of increased latency and performance loss caused by cross-CPU memory access during IO request processing in distributed block storage systems.

[0066] In this process, the connection between the network card in any node and the network port connected to the backend network is maintained in a state through a keep-alive mechanism. Before selecting a certain network port to send data, the current connection status is checked. If the connection is not established, the network port address corresponding to that network card is determined to be unavailable.

[0067] In one exemplary embodiment, when any node in the system restarts, a new node is added, or the storage partition table information corresponding to a node changes, the information of the corresponding storage partition in the system storage partition table on each node is updated.

[0068] In the embodiments described in this specification, a first CPU on a first node receives an I / O request from the front-end network via a first network port on a connected first network card. The first CPU decomposes the I / O request into a first sub-request that needs to be processed by the first node and a sub-request that needs to be processed by a second node. The first CPU processes the first sub-request and sends the second sub-request to the back-end network via a second network port on the first network card for processing by the second node. This ensures that the first node sends the sub-request from the network card that receives the I / O request to the second node, thus avoiding the problem of sending sub-requests across CPUs to other nodes. This solves the problem of increased latency and performance loss caused by cross-CPU memory access during I / O request processing in a distributed block storage system.

[0069] like Figure 4 As shown, Figure 4 This is a flowchart illustrating an IO request processing method according to an exemplary embodiment. The method is applied to a second node of a distributed block storage system. The second node is configured with multiple CPUs, each CPU being connected to its own corresponding network interface card and storage resources. The method specifically includes the following steps:

[0070] S401, the first CPU on the second node receives a second sub-request sent by the first node from the backend network through the second network port on the connected first network card. The first network card includes a first network port and a second network port. The first network port is connected to the frontend network, and the second network port is connected to the backend network.

[0071] S402, the first CPU processes the second sub-request and sends the processing result of the second sub-request to the backend network through the second network port of the first network card, so that the first node can return a response.

[0072] like Figure 3 As shown, when the first CPU on the second node receives the second sub-request sent by the first node from the backend network through the second network port on the connected first network card, the second sub-request is processed by the first CPU, and the processing result of the second sub-request is sent from the second network port of the first network card that received the sub-request to the backend network, so as to be handed over to the first node. After collecting the processing results of all sub-requests, the first node returns a response to the application server.

[0073] In an exemplary embodiment, it is determined whether the processing result of the second sub-request can be sent to the backend network through the second network port of the first network card. If it cannot be sent, the processing result of the second sub-request is returned through other network ports in the second node.

[0074] The connection between the network interface card in any node and the network port connected to the backend network is maintained in a state through a keep-alive mechanism. Before returning the second sub-request, the current connection status is checked. If it is not in a connected state, the processing result of the second sub-request cannot be sent. Now, the network port address corresponding to the highest priority network port in the other network ports of the second node is selected to return the processing result of the second sub-request.

[0075] In the embodiments described in this specification, the second node returns the processing result of the sub-request from the second network interface of the first network interface that received the sub-request, so that the network interface that receives the sub-request is sent by that network interface, thus avoiding the problem of sending the sub-request to other nodes across CPUs. This solves the problem of increased latency and performance loss caused by cross-CPU memory access during IO request processing in distributed block storage systems.

[0076] Corresponding to the embodiments of the methods described above, this specification also provides embodiments of the apparatus.

[0077] like Figure 5 As shown, Figure 5 This specification describes an I / O request processing device according to an exemplary embodiment, applied to a first node of a distributed block storage system. The first node is configured with multiple CPUs, each CPU being connected to its corresponding network interface card and storage resources. The device specifically includes:

[0078] The first receiving unit 501 is used to receive IO requests from the front-end network through the first network port on the first CPU of the first node. The first network card includes a first network port and a second network port. The first network port is connected to the front-end network, and the second network port is connected to the back-end network.

[0079] The decomposition unit 502 is used by the first CPU to decompose the IO request to obtain a first sub-request that needs to be processed by the first node and a second sub-request that needs to be processed by the second node.

[0080] The first processing unit 503 is used to process the first sub-request by the first CPU and to send the second sub-request to the backend network through the second network port of the first network card for processing by the second node.

[0081] In an exemplary embodiment, sending the second sub-request to the backend network through the second network port of the first network card includes: confirming the target storage partition in the second node for processing the second sub-request based on the storage resources corresponding to the second sub-request, wherein each CPU in the second node and its connected network card and storage resources are divided into a storage partition;

[0082] The second sub-request is sent to the target storage partition through the second network port of the first network card.

[0083] In one exemplary embodiment, sending the second sub-request to the target storage partition includes: determining the network interface address corresponding to the target storage partition;

[0084] Set the target address of the second sub-request to the network port address corresponding to the target storage partition.

[0085] In an exemplary embodiment, determining the network port address corresponding to the target storage partition includes: reading the system storage partition table maintained in the first node, the system storage partition table containing storage partition information corresponding to storage partitions on all nodes in the system, and the storage partition information corresponding to any storage partition on any node records: the network port addresses corresponding to all network ports connected to the backend network on any node and the priority of each network port address, and the priority of any network port address is positively correlated with the access efficiency of the CPU in any storage partition to the network port address;

[0086] From the storage partition information corresponding to the target storage partition contained in the system storage partition table, select the network interface address that is currently available and has the highest priority, and use it as the network interface address corresponding to the target storage partition.

[0087] like Figure 6 As shown, Figure 6 This specification describes an I / O request processing device according to an exemplary embodiment, applied to a second node of a distributed block storage system. The second node is configured with multiple CPUs, each CPU being connected to its corresponding network interface card and storage resources. The device specifically includes:

[0088] The second receiving unit 601 is used to receive a second sub-request sent by the first node from the backend network through the second network port on the first network card connected to the first network card. The first network card includes a first network port and a second network port. The first network port is connected to the frontend network and the second network port is connected to the backend network.

[0089] The second processing unit 602 is used for the first CPU to process the second sub-request and to send the processing result of the second sub-request to the backend network through the second network port of the first network card, so that the first node can return a response.

[0090] In an exemplary embodiment, the apparatus further includes a judging unit, configured to judge whether the processing result of the second sub-request can be sent to the backend network through the second network port of the first network card; if it cannot be sent, the processing result of the second sub-request is returned through other network ports in the second node.

[0091] The specific implementation process of the functions and roles of each module in the above device can be found in the implementation process of the corresponding steps in the above method, and will not be repeated here.

[0092] Figure 7 This is a schematic diagram illustrating the structure of an electronic device according to an exemplary embodiment. (Reference) Figure 7 At the hardware level, the electronic device includes a processor 701, an internal bus 702, a network interface 703, memory 704, and non-volatile memory 705, and may also include other hardware required for business operations. The processor 701 reads the corresponding computer program from the non-volatile memory 705 into the memory 704 and then runs it. Of course, in addition to software implementation, this application does not exclude other implementation methods, such as logic devices or a combination of hardware and software, etc. That is to say, the execution subject of the following processing flow is not limited to individual logic units, but can also be hardware or logic devices.

[0093] The apparatus or module described in the above embodiments can be implemented by a computer chip or entity, or by a product with a certain function. A typical implementation device is a computer, which can be a personal computer, laptop computer, cellular phone, camera phone, smartphone, personal digital assistant, media player, navigation device, email sending and receiving device, game console, tablet computer, wearable device, or any combination of these devices.

[0094] This application also provides a computer-readable storage medium storing a computer program that, when executed by a processor, implements an I / O request processing method as shown in any of the foregoing embodiments.

[0095] In a typical configuration, a computer includes one or more processors (CPU), input / output interfaces, network interfaces, and memory.

[0096] Memory may include non-persistent storage in computer-readable media, such as random access memory (RAM) and / or non-volatile memory, such as read-only memory (ROM) or flash RAM. Memory is an example of computer-readable media.

[0097] Computer-readable media, including both permanent and non-permanent, removable and non-removable media, can store information using any method or technology. Information can be computer-readable instructions, data structures, modules of programs, or other data. Examples of computer storage media include, but are not limited to, phase-change memory (PRAM), static random access memory (SRAM), dynamic random access memory (DRAM), other types of random access memory (RAM), read-only memory (ROM), electrically erasable programmable read-only memory (EEPROM), flash memory or other memory technologies, CD-ROM, digital versatile optical disc (DVD) or other optical storage, magnetic tape, disk storage, quantum memory, graphene-based storage media or other magnetic storage devices, or any other non-transferable medium that can be used to store information accessible by a computing device. As defined herein, computer-readable media does not include transient computer-readable media, such as modulated data signals and carrier waves.

[0098] It should also be noted that the terms "comprising," "including," or any other variations thereof are intended to cover non-exclusive inclusion, such that a process, method, article, or apparatus that comprises a list of elements includes not only those elements but also other elements not expressly listed, or elements inherent to such a process, method, article, or apparatus. Without further limitation, an element defined by the phrase "comprising one..." does not exclude the presence of other identical elements in the process, method, article, or apparatus that includes said element.

[0099] The above description is merely a preferred embodiment of this application and is not intended to limit this application. Any modifications, equivalent substitutions, improvements, etc., made within the spirit and principles of this application should be included within the scope of protection of this application.

Claims

1. An I / O request processing method, characterized in that, The method, applied to the first node of a distributed block storage system, wherein the first node is configured with multiple CPUs, each CPU being connected to its own corresponding network interface card and storage resources, includes: The first CPU on the first node receives IO requests from the front-end network through the first network port on the first network card. The first network card includes a first network port and a second network port. The first network port is connected to the front-end network, and the second network port is connected to the back-end network. The first CPU decomposes the IO request to obtain a first sub-request that needs to be processed by the first node and a second sub-request that needs to be processed by the second node. The first CPU processes the first sub-request and determines the target storage partition in the second node for processing the second sub-request based on the storage resources corresponding to the second sub-request. Each CPU in the second node, its connected network card, and storage resources are divided into a storage partition. The second sub-request is sent to the target storage partition through the second network port of the first network card for processing by the second node.

2. The method according to claim 1, characterized in that, Sending the second sub-request to the target storage partition includes: Determine the network port address corresponding to the target storage partition; Set the target address of the second sub-request to the network port address corresponding to the target storage partition.

3. The method according to claim 2, characterized in that, Determining the network interface address corresponding to the target storage partition includes: The system storage partition table maintained in the first node is read. The system storage partition table contains storage partition information corresponding to the storage partitions on all nodes in the system. The storage partition information corresponding to any storage partition on any node records: the network port address corresponding to all network ports connected to the backend network on any node and the priority of each network port address. The priority of any network port address is positively correlated with the access efficiency of the CPU in any storage partition to the network port address. From the storage partition information corresponding to the target storage partition contained in the system storage partition table, select the network interface address that is currently available and has the highest priority, and use it as the network interface address corresponding to the target storage partition.

4. An I / O request processing method, characterized in that, A second node is applied to a distributed block storage system. The second node is configured with multiple CPUs, each CPU connected to its own corresponding network interface card (NIC) and storage resources. Each CPU and its connected NIC and storage resources in the second node are divided into a storage partition. The method includes: The first CPU on the second node receives a second sub-request sent by the first node from the backend network through the second network port on the first network card. The first network card includes a first network port and a second network port. The first network port is connected to the frontend network, and the second network port is connected to the backend network. The second sub-request is determined by the first node based on the storage resources corresponding to the second sub-request, and is sent to the target storage partition in the second node through the second network port of the first network card of the first node. The first CPU processes the second sub-request and sends the processing result of the second sub-request to the backend network through the second network port of the first network card, so that the first node can return a response.

5. The method according to claim 4, characterized in that, The method further includes: Determine whether the processing result of the second sub-request can be sent to the backend network through the second network port of the first network card. If it cannot be sent, return the processing result of the second sub-request through other network ports in the second node.

6. An I / O request processing apparatus, characterized in that, A first node applied to a distributed block storage system, the first node being configured with multiple CPUs, each CPU being connected to its own corresponding network interface card and storage resources, the device comprising: The first receiving unit is used to receive IO requests from the front-end network through the first network port on the first CPU of the first node. The first network card includes a first network port and a second network port. The first network port is connected to the front-end network, and the second network port is connected to the back-end network. The decomposition unit is used by the first CPU to decompose the IO request into a first sub-request that needs to be processed by the first node and a second sub-request that needs to be processed by the second node. The first processing unit is used to process the first sub-request by the first CPU, and to determine the target storage partition in the second node for processing the second sub-request based on the storage resources corresponding to the second sub-request. Each CPU in the second node, its connected network card, and storage resources are divided into a storage partition. The second sub-request is sent to the target storage partition through the second network port of the first network card for processing by the second node.

7. An I / O request processing apparatus, characterized in that, A second node applied to a distributed block storage system, the second node being configured with multiple CPUs, each CPU connected to its own corresponding network interface card (NIC) and storage resources, and each CPU and its connected NIC and storage resources in the second node being divided into a storage partition; the device includes: The second receiving unit is used for the first CPU on the second node to receive a second sub-request sent by the first node from the backend network through the second network port on the connected first network card. The first network card includes a first network port and a second network port. The first network port is connected to the frontend network, and the second network port is connected to the backend network. The second sub-request is determined by the first node based on the storage resources corresponding to the second sub-request, and is sent to the target storage partition in the second node through the second network port of the first network card of the first node. The second processing unit is used for the first CPU to process the second sub-request and to send the processing result of the second sub-request to the backend network through the second network port of the first network card, so that the first node can return a response.

8. An electronic device, characterized in that, include: processor; Memory used to store processor-executable instructions; The processor implements the method as described in any one of claims 1-5 by executing the executable instructions.

9. A computer-readable storage medium storing computer instructions thereon, characterized in that, When executed by the processor, this instruction implements the steps of the method as described in any one of claims 1-5.

Citation Information

Patent Citations

  • IO request processing method, device and equipment and readable storage medium

    CN115865803A

  • Data access method and device, storage medium and electronic equipment

    CN117032596A