A data access method, network card and server

By mapping multiple local disks as virtual disks in a server cluster and allowing them to be accessed directly by the network card, the problems of long connection times and heavy processor load are solved, achieving efficient data access and a simplified topology.

CN115344197BActive Publication Date: 2026-01-30HUAWEI TECH CO LTD
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202210781204.8
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2019-06-24
Publication Date
2026-01-30
Estimated Expiration
2039-06-24

AI Technical Summary

Technical Problem

In server clusters, the connection establishment time between nodes is too long and the network topology is complex. Accessing the local disks of other nodes increases the processor load, which is especially noticeable when using RAID/EC.

Method used

Multiple local disks can be mapped to a single virtual disk via a network interface card (NIC). The NIC can then directly access these disks, simplifying the topology and reducing processor involvement. RAID or EC group configuration information can be used to optimize data access.

Benefits of technology

It improves data read and write efficiency, simplifies network connection topology, and reduces server power consumption and processor load.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN115344197B_ABST
    Figure CN115344197B_ABST
Patent Text Reader

Abstract

A data access method, network interface card (NIC), and server are disclosed to address the problems in server clusters where, when a node providing a shared disk offers its disk to other nodes, the connection establishment time is too long, and when an accessing node accesses the shared disk provided by other nodes via EC / RAID, the processor load on the accessing node is too heavy. In this application, the NIC obtains an access request to be processed from the server. The access request is used to access a virtual disk generated by the server, which corresponds to multiple local disks on the server. The NIC accesses multiple local disks based on their configuration information and the access request. Since one virtual disk corresponds to multiple local disks, the topology of local disks and virtual disks can be effectively simplified. When accessing the virtual disk, the NIC in the server executes the access request, allowing simultaneous access to multiple local disks corresponding to the virtual disk, effectively improving data read / write efficiency.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This application relates to the field of storage technology, and in particular to a data access method, a network interface card (NIC), and a server. Background Technology

[0002] The server cluster utilizes a network-based non-volatile memory expressover Fabrics (NOF) standard to enable local disk sharing among nodes (each node in the cluster represents a server). Nodes can communicate via switches, allowing any node to read and write to the local disks of other nodes. For example, node 1 can access node 2's local disk through a switch. To access node 2's local disk, node 1 needs to establish connections with multiple local disks on node 2 and configure virtual disks on node 1 that correspond one-to-one with node 2's local disks. Node 1 can then access the corresponding local disk on node 2 by accessing these virtual disks.

[0003] When the server cluster is large and has many nodes, the connection establishment time is relatively long and the network connection topology is relatively complex because each node has to establish a connection with the local disks of other nodes. In addition, when the accessing node accesses the local disks of other nodes through redundant arrays of independent drives (RAID) / error correction code (EC), it will increase the processor load of the accessing node. Summary of the Invention

[0004] This application provides a data access method, a network interface card (NIC), and a server to solve the problem in a server cluster where, when a node providing a shared disk provides the disk to other nodes, the connection establishment time is too long, and when an accessing node accesses the shared disk provided by other nodes through EC / RAID, the processor load of the accessing node is too heavy.

[0005] Firstly, this application provides a data access method applied to a server's network interface card (NIC), the method comprising:

[0006] The network interface card (NIC) obtains access requests to be processed from the server. These requests are used to access virtual disks generated by the server, which correspond to multiple local disks on the server. Subsequently, the NIC accesses the multiple local disks based on their configuration information and the access requests.

[0007] By using the above method, since one virtual disk in the server corresponds to multiple local disks, the topology of local disks and virtual disks can be effectively simplified. When access to the virtual disk is required, the network card in the server can simultaneously access multiple local disks corresponding to the virtual disk when executing the access request, which can ensure data read and write efficiency. In addition, since the access operation to multiple local disks no longer requires the participation of the processor in the server, but is implemented by the network card, the power consumption of the server can be effectively reduced.

[0008] In one possible design, multiple local disks form a RAID or EC group. When the network interface card (NIC) accesses multiple local disks, it can determine the read / write strategy for each disk based on the RAID or EC group configuration information. Implementing data read / write operations on multiple local disks improves data access efficiency.

[0009] In one possible design, after executing an access request, the network card can also obtain configuration information of multiple local disks from the server. For example, the network card can read the configuration information of multiple local disks from the server's memory, and then data can be read and written to multiple local disks, which can improve data access efficiency.

[0010] In one possible design, the network interface card (NIC) executes access requests differently depending on the type of the request. For example, when the access request is a data read request, it requests data to be read from a virtual disk. When the NIC executes access requests to multiple local disks, it can read data from multiple local disks according to configuration information and send the read data to the sender of the data read request, i.e., other servers connected to this server via the NIC.

[0011] Using the above method, the network card can simultaneously read data from multiple local disks and execute access requests, effectively ensuring data read and write efficiency.

[0012] In one possible design, the network interface card (NIC) executes access requests differently depending on the type of the request. For example, an access request might be a data write request, used to write data to a virtual disk. When the NIC executes access requests to multiple local disks, it writes the data from the data write request to each of the multiple local disks according to its configuration information.

[0013] Using the above method, the network card can write data to multiple local disks simultaneously, achieving efficient data reading and writing.

[0014] Secondly, this application provides a data access method applied to a first server, wherein the first server and a second server are connected via a network card. The method includes: the first server generating a virtual disk, the virtual disk corresponding to multiple local disks in the first server, and setting the virtual disk to be accessible by the second server; the first server receiving a connection request from the second server, transmitting the virtual disk information to the second server, and enabling the second server to access the virtual disk based on the virtual disk information.

[0015] Using the above method, the first server can inform the second server by sending virtual disk information, so that the second server can access multiple local disks of the first server by accessing the virtual disk. In this way, the virtual disk can be associated with multiple local disks, no longer a one-to-one correspondence, which simplifies the topology of virtual disks and local disks.

[0016] In one possible design, the first server can configure multiple local disks into a RAID or EC group. This ensures that multiple local disks can be read and written to simultaneously, improving data read and write efficiency.

[0017] In one possible design, the first server and the second server communicate via the NOF protocol to achieve local disk sharing. When creating a virtual disk, the first server can create NVMe subsystems for multiple local disks; it can also create a single virtual NVMe subsystem, generate a virtual disk identifier, write the virtual disk identifier into the virtual NVMe subsystem, and establish associations between the virtual NVMe subsystem and the multiple NVMe subsystems.

[0018] Using the above method, the first server can establish an association between the virtual NVMe subsystem and the NVMe subsystems of multiple local disks, so that the virtual disk can be associated with multiple local disks, no longer a one-to-one correspondence, which simplifies the topology of the virtual disk and the local disk.

[0019] Thirdly, this application provides a network interface card (NIC) located in a server. The NIC has the functions implemented in the first aspect and any possible design of the first aspect. These functions can be implemented by hardware or by hardware executing corresponding software. The hardware or software includes one or more modules corresponding to the aforementioned functions. In one possible design, the device structure includes a transmission unit and a processing unit, which can perform the corresponding functions in the method examples of the first aspect described above. For details, please refer to the detailed description in the method examples; further elaboration is not provided here.

[0020] Fourthly, this application provides a first server, which is connected to a second server via a network interface card (NIC). The first server has the functions implemented in the second aspect and any possible design of the second aspect. These functions can be implemented in hardware or by hardware executing corresponding software. The hardware or software includes one or more modules corresponding to the aforementioned functions. In one possible design, the device structure includes a creation unit and a transmission unit, which can perform the corresponding functions in the method examples of the second aspect described above; see the detailed description in the method examples for details, which will not be repeated here.

[0021] Fifthly, this application also provides a network interface card (NIC), the beneficial effects of which can be found in the description of the first aspect and any possible design of the first aspect, and will not be repeated here. The NIC structure includes a processor and a memory. The processor is configured to support the NIC in performing the corresponding functions in the methods described in the first aspect and any possible design of the first aspect. The memory is coupled to the processor and stores the necessary program instructions and data for the NIC. The NIC structure also includes a communication interface for communicating with other devices.

[0022] Sixthly, this application also provides a first server, the beneficial effects of which can be found in the description of the first aspect and any possible design of the first aspect, and will not be repeated here. The first server includes a processor and a memory. The processor is configured to support the first server in performing the corresponding functions in the methods of the second aspect and any possible design of the second aspect described above. The memory is coupled to the processor and stores the necessary program instructions and data of the first server. The first server also includes a communication interface for communicating with other devices.

[0023] In a seventh aspect, this application also provides a computer-readable storage medium storing instructions that, when executed on a computer, cause the computer to perform the methods described above.

[0024] Eighthly, this application also provides a computer program product containing instructions that, when run on a computer, cause the computer to perform the methods described above.

[0025] Ninthly, this application also provides a computer chip connected to a memory, the chip being used to read and execute a software program stored in the memory, and to perform the methods described above. Attached Figure Description

[0026] Figure 1 This is a schematic diagram of a server cluster architecture;

[0027] Figure 2 A schematic diagram of a system architecture is provided for this application;

[0028] Figure 3 This application provides a schematic diagram illustrating the relationship between a virtual NVMe subsystem and an NVMe subsystem.

[0029] Figure 4 A schematic diagram illustrating a method for mapping multiple local disks to a single virtual disk, as provided in this application;

[0030] Figure 5 A schematic diagram of a data reading and writing method provided in this application;

[0031] Figure 6 A schematic diagram of the structure of a server provided in this application;

[0032] Figure 7 This is a schematic diagram of the structure of a network interface card provided in this application. Detailed Implementation

[0033] like Figure 1 The diagram shown illustrates the structure of a server cluster, which includes multiple nodes. Figure 1 The example below includes two nodes (node ​​100 and node 200), and the nodes are connected by switch 10.

[0034] The structure of each node in the server cluster is basically the same; the following description uses node 100 as an example. Node 100 includes a processor 110, a network interface card 120, a local disk 130, a virtual disk 140, and memory 150. Optionally, it may also include a communication interface for communicating with other devices; each virtual disk 140 is associated with a local disk 230 in node 200, and the association process between the virtual disk 140 and the local disk 230 in node 200 will be described in detail below. In this embodiment, the local disk is a solid-state drive (SSD) and communicates with the processor 110 via the non-volatile memory express (NVMe) protocol.

[0035] Memory 150 is used to store computer program instructions. Processor 110 can call the computer program instructions stored in memory 150 to implement the main computing functions of node 100.

[0036] The following is based on Figure 1 Taking the server cluster shown as an example, this article describes the process of establishing a connection between node 100 and the local disk in node 200, and the process of node 100 establishing a virtual disk 140 associated with the local disk 230 in node 200.

[0037] First, according to the NVMe protocol, node 200 establishes an NVMe subsystem for each local disk 230 in node 200, and additionally generates an NVMe subsystem with a discovery service. Node 200 records the information of the NVMe subsystems of the local disks 230 that need to be accessed by node 100 in the NVMe subsystem with the discovery service. When node 100 needs to connect to the local disk 230 of node 200, it first sends a discovery command to node 200. After receiving the discovery command, node 200 sends the information of the NVMe subsystems recorded in the NVMe subsystem with the discovery service to node 100. Node 100 can then establish connections one by one with the NVMe subsystems indicated by the information in the NVMe subsystem with the discovery service, based on the information of the NVMe subsystems.

[0038] When establishing a connection with one of the NVMe subsystems, node 100 sends a connection command to node 200. The connection command carries the host's NVMe qualified name (host NQN), the NVMe subsystem's NQN, the host identifier, and relevant parameters for the submission queue and completion queue. The host NQN and host identifier identify node 100. The NVMe subsystem's NQN identifies the NVMe subsystem for which the connection is being established. Upon receiving the connection command, node 200 establishes the submission queue and completion queue used by node 100 to communicate with the NVMe subsystem. After establishing the submission queue and completion queue, node 200 returns connection success information to node 100. Node 100 establishes a virtual disk 140 and creates an NVMe subsystem for the virtual disk 140. The information of the NVMe subsystem of the local disk 230 in node 200 is recorded in the NVMe subsystem of the virtual disk 140. Node 100 can access a local disk 230 of node 200 by accessing the virtual disk 140.

[0039] When node 200 includes multiple local disks 230, node 100 must establish a connection with each local disk 230 as described above. This connection establishment process is time-consuming, and the topology maintained by node 100 is also complex. Furthermore, for data reliability and read / write efficiency, node 100 may use RAID or EC configurations for multiple virtual disks, increasing the load on node 100. RAID refers to a disk array composed of multiple independent disks, allowing simultaneous read and write operations on multiple local disks within the array. RAID configuration sets the data read / write strategy for the disk array to improve data reliability and input / output (I / O) performance. EC configuration is an extension of RAID configuration; to a certain extent, EC configuration can be considered a general form of RAID configuration, meaning any RAID configuration can be converted into a specific EC configuration.

[0040] To address the aforementioned issues, in this embodiment of the invention, multiple local disks within a node can be mapped to a single virtual disk, such as... Figure 2 As shown, taking a server cluster including two nodes (node ​​300 and node 400) as an example, the architecture of the server cluster applicable to this application embodiment is described, with the nodes connected via switch 10. The structures of node 300 and node 400 are as follows... Figure 1 Nodes 100 and 200 are similar, except that a virtual disk 340 in node 300 can be associated with multiple local disks 430 in node 400, and a virtual disk 440 in node 400 can be associated with multiple local disks 330 in node 300.

[0041] Memory 350 is used to store computer program instructions. Processor 310 calls the computer program instructions stored in memory 350 to perform some operations. Processor 310 can call the computer program instructions stored in memory 350 to execute the local disk and virtual disk association method provided in this application embodiment. For example, it can execute the method described in this application embodiment. Figure 4 The operation performed by node 300 in the illustrated embodiment. Similarly, memory 450 is used to store computer program instructions, and processor 410 calls the computer program instructions stored in memory 450 to perform some operations, such as those described in the embodiments of this application. Figure 4 The operation performed by node 400 in the illustrated embodiment.

[0042] In this embodiment, network interface card 320 can be an Ethernet card (RDA network interface controller, RNIC) with a remote direct memory access (RDMA) engine. The following description uses network interface card 420 as an example to illustrate one possible structure of a network interface card in a node. Figure 2 As shown, the network interface card 420 includes a processor 4201 and a memory 4202. The processor 4201 can invoke computer execution instructions stored in the memory 4202, enabling the network interface card to execute the data access methods provided in this embodiment (such as...). Figure 5 (As shown). Optionally, the network card 420 may also include a communication interface, through which data can be transmitted when the processor 4201 is communicating with other devices.

[0043] The processor 4201 is used to call computer program instructions stored in the memory 4202 to access the local disk 430, such as executing the data access method provided in the embodiments of this application. For details, please refer to... Figure 5 The embodiment shown. The processor 4201 may be a central processing unit (CPU) or the like.

[0044] The memory 4202 is used to store computer program instructions. The memory 4202 can be a volatile memory, such as random access memory; the memory 4202 can also be a non-volatile memory, such as read-only memory, flash memory; or other media that can store computer program instructions.

[0045] In another embodiment of this application, the network card 420 includes a programmable logic chip, and program instructions are burned into the programmable logic chip. The programmable logic chip can execute the data access method provided in the embodiment of this application by executing the program burned into it.

[0046] Please also refer to Figure 3 and Figure 4 , Figure 3 This diagram illustrates how multiple local disks 430 in node 400 are mapped to a single virtual disk 340 in node 300. Figure 4 A flowchart of a method for mapping multiple local disks 430 in node 400 to a virtual disk 340 in node 300.

[0047] Step 401: Node 400 establishes an NVMe subsystem for each local disk 430, such as... Figure 3 The NVMe subsystems are 01, 02, and 03.

[0048] Step 402: Node 400 establishes virtual NVMe subsystem 001.

[0049] When establishing a virtual NVMe subsystem, node 400 also generates a virtual disk identifier, such as dev / NVMe001, and writes the virtual disk identifier into the virtual NVMe subsystem.

[0050] Step 403: Node 400 selects multiple NVMe subsystems of local disk 430 that can be accessed by node 300, associates the multiple NVMe subsystems of local disk 430 with virtual network subsystem 001, and records the association relationship.

[0051] When associating the virtual NVMe subsystem 001 with the NVMe subsystems of multiple local disks 430, node 400 adds the information of the NVMe subsystems of the multiple local disks 430 to the device list of the virtual NVMe subsystem 001.

[0052] The information of the NVMe subsystem of the local disk 430 can be the NVMe NQN, or other information used to indicate the NVMe subsystem, which is not limited in the embodiments of this application.

[0053] The method by which node 400 selects multiple NVMe subsystems of local disk 430 is not limited in this application embodiment. Node 400 can select randomly or according to preset rules.

[0054] For example, one or more local disk groups may be pre-configured in node 400, each local disk group including multiple local disks 430. Node 400 may select one local disk group from the multiple local disk groups; then, the NVMe subsystems of the multiple local disks 430 in the local disk group are associated with the virtual NVMe subsystem 001.

[0055] Node 400 can also perform RAID / EC configuration on multiple local disks 430 associated with the virtual NVMe subsystem 001, and assign the role of each local disk 430 in RAID / EC, such as using local disk 430 to store raw data or to store verification data.

[0056] After establishing the association between the virtual NVMe subsystem 001 and the NVMe subsystems of multiple local disks 430, node 400 can store this association and the RAID / EC configurations of the multiple local disks 430 locally, such as in memory 450. Network interface card 420 can read this association and the RAID / EC configurations of the multiple local disks 430 from memory 450, and perform data read / write operations on the multiple local disks 430 according to the association and the RAID / EC configurations. The data access method performed by network interface card 420 will be described below. Figure 5 The illustrated embodiments are described in detail.

[0057] Step 404: Node 300 sends a discovery command to node 400.

[0058] Step 405: After receiving the discovery command from node 300, node 400 sends the identifier of virtual NVMe subsystem 001 to node 300. This allows node 300 to access the virtual disk created by node 400 for the virtual NVMe subsystem.

[0059] Node 300 can first send a discovery command to node 400. This discovery command is used to query the NVMe subsystem of the local disk 430 that node 300 is allowed to access. In this embodiment of the invention, since node 400 has constructed a virtual NVMe subsystem 001, when it receives the discovery command, it sends the relevant information of the virtual NVMe subsystem 001 to node 300. The relevant information of the virtual NVMe subsystem 001 includes the identifier of the virtual NVMe subsystem 001 and the identifier of the corresponding virtual disk.

[0060] Step 406: After receiving the identifier of the virtual NVMe subsystem 001 from node 400, node 300 can send a connection command to node 400 to request a connection with the virtual NVMe subsystem. The connection command carries the host's NVMe NQN, the identifier of the virtual NVMe subsystem 001, the host identifier, and relevant parameters for the submission and completion queues. The host NQN and host identifier are used to identify node 300. The identifier of the virtual NVMe subsystem 001 is used to identify the virtual NVMe subsystem 001 in this connection establishment; for example, the identifier of the virtual NVMe subsystem 001 can be the NVMe NQN of the virtual NVMe subsystem 001.

[0061] Step 407: After receiving the connection command, node 400 establishes a commit queue and a completion queue for communication between node 300 and the virtual NVMe subsystem 001. After establishing the commit and completion queues, node 400 returns connection success information to node 300. Node 300 creates a virtual disk 340 and its NVMe subsystem, recording the information of the virtual NVMe subsystem in node 400 within the NVMe subsystem of virtual disk 340. The association between virtual disk 340 and the virtual NVMe subsystem is established, thus mapping multiple local disks 430 of node 400 to a single virtual disk 340 of node 300. Node 300 can access its multiple local disks 430 by accessing the virtual disk 340.

[0062] like Figure 5 The diagram shown is a flowchart of a method for accessing multiple local disks 430 in node 400 by accessing virtual disk 340, according to an embodiment of this application. The method includes:

[0063] Step 501: Node 300 generates an access request to access the virtual disk 340 and sends the access request to Node 400.

[0064] Since the node 300 records the association between the virtual disk 340 and the virtual NVMe subsystem, the node 300 will convert the access request to the virtual disk 140 into a request to access the virtual NVMe subsystem.

[0065] Step 502: Network interface card 420 obtains an access request from node 400.

[0066] Specifically, after the virtual disk 340 establishes a connection with the virtual NVMe subsystem, a send queue and a completion queue are generated in node 300, and a receive queue and a commit queue are generated in node 400. The send queue and receive queue correspond one-to-one, and the commit queue and completion queue correspond one-to-one. When node 300 generates an access request, it places the access request in its send queue and waits to be sent to node 400. After the access request is sent to node 400, node 400 places the access request in its receive queue, and the network interface card 420 retrieves the access request from the receive queue.

[0067] Step 503: The network card 420 accesses the multiple local disks 430 according to the association between the virtual NVMe subsystem 001 and the NVMe subsystems of the multiple local disks 430 and the RAID / EC configuration of the multiple local disks 430, in order to execute the access request.

[0068] In addition to obtaining the access request, the network card 420 can also obtain multiple local disks 430 corresponding to the NVMe subsystem 001 and their RAID / EC configurations, and access the multiple local disks 430 according to their RAID / EC configurations.

[0069] In this embodiment of the invention, the network interface card 420 has Remote Direct Memory Access (RDMA) functionality. The network interface card 420 can read the access request from the memory 450 and execute step 503. When the access request is a data write request, in step 503, the network interface card 400 obtains the data write request and the data being written, and writes the data in the write request to the local disk 430 of the node 400. The network interface card 400 writes the data in the write request to the multiple local disks 430 corresponding to the NVMe subsystem 001 according to the RAID / EC configuration of the multiple local disks 430.

[0070] When the access request is a data read request, in step 503, when the node 400 receives the data read request, the network card 420 reads the data read request from the memory 450, and reads data from the multiple local disks 430 corresponding to the NVMe subsystem 001 according to the RAID / EC configuration of the multiple local disks 430.

[0071] Since the access request can be executed by the network card 420 in step 503, the load on node 400 can be effectively reduced.

[0072] Based on the same inventive concept as the method embodiments, this application also provides a first server, which (such as node 400 in this application embodiment) and a second server (such as node 300 in this application embodiment) are connected via a network interface card. This first server can be used to perform operations such as... Figure 4 The method executed by node 400 in the method embodiment shown above has related features that can be found in the above method embodiment and will not be repeated here. Figure 6 As shown, the server includes a creation unit 601 and a transmission unit 602:

[0073] Creation unit 601 is used to generate virtual disks, which correspond to multiple local disks in the first server, and to configure the virtual disks to be accessible by the second server; for example, creation unit 601 can perform the following... Figure 4 The method executed by node 400 in steps 401 to 403 of the illustrated embodiment can be found in the foregoing content for details, and will not be repeated here.

[0074] Transmission unit 602 is used to receive connection requests from the second server, transmit virtual disk information to the second server, and enable the second server to access the virtual disk based on the virtual disk information. For example, transmission unit 602 can perform actions such as... Figure 4 In the illustrated embodiment, in steps 405 to 407, node 400 performs sending and receiving operations, such as receiving discovery commands, connection commands, and sending the identifier of virtual NVMe subsystem 001. For details, please refer to the foregoing content, which will not be repeated here.

[0075] Optionally, the creation unit 601 can be configured with multiple local disks as RAID groups or EC groups.

[0076] Optionally, the first server and the second server communicate via the NOF protocol. When creating a virtual disk, the creation unit can first generate NVMe subsystems for multiple local disks; generate a virtual NVMe subsystem and a virtual disk identifier, write the virtual disk identifier into the virtual NVMe subsystem; and associate the virtual NVMe subsystem with multiple NVMe subsystems.

[0077] Based on the same inventive concept as the method embodiments, this application also provides a network interface card (NIC) for executing the method executed by NIC 420 in the above method embodiments. Related features can be found in the above method embodiments, and will not be repeated here. Figure 7 As shown, the network interface card includes a transmission unit 701 and a processing unit 702:

[0078] Transmission unit 701 is used to obtain access requests to be processed from the server. These access requests are for accessing virtual disks, which correspond to multiple local disks on the server. Transmission unit 701 can perform actions such as... Figure 5 The operation of obtaining the access request in step 502 of the illustrated embodiment can be found in the foregoing content, and will not be repeated here.

[0079] Processing unit 702 is used to access multiple local disks based on configuration information and access requests. Processing unit 702 can perform actions such as... Figure 5 The operation of executing the access request in step 503 of the illustrated embodiment can be found in the foregoing content, and will not be repeated here.

[0080] Optionally, the configuration information for multiple local disks is the configuration information for multiple local disks forming a RAID or error correction code EC group.

[0081] Optionally, the processing unit 702 can also obtain configuration information for multiple local disks.

[0082] Optionally, the access operation performed by the processing unit will differ depending on the type of access request. The following sections will describe these two cases separately:

[0083] First, the access request is a data read request, which is used to request data to be read from the virtual disk;

[0084] When the processing unit accesses multiple local disks, it can read data from multiple local disks according to the configuration information and send the read data to another server connected to the server via a network card. The data read request is sent from the other server to the server.

[0085] Second, the access request is a data write request, which is used to write data to the virtual disk.

[0086] When the processing unit accesses multiple local disks, it writes the data in the data write request to the multiple local disks according to the configuration information.

[0087] It should be noted that the division of units in the embodiments of this application is illustrative and only represents one logical functional division. In actual implementation, there may be other division methods. The functional units in the 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. The integrated units described above can be implemented in hardware or as software functional units.

[0088] The above embodiments can be implemented, in whole or in part, by software, hardware, firmware, or any other combination thereof. When implemented using software, the above embodiments can be implemented, in whole or in part, as a computer program product. The computer program product includes one or more computer instructions. When the computer program instructions are loaded or executed on a computer, all or part of the processes or functions described in the embodiments of the present invention are generated. The computer can be a general-purpose computer, a special-purpose computer, a computer network, or other programmable device. The computer instructions can be stored in a computer-readable storage medium or transmitted from one computer-readable storage medium to another. For example, the computer instructions can be transmitted from one website, computer, server, or data center to another website, computer, server, or data center via wired (e.g., coaxial cable, fiber optic, digital subscriber line (DSL)) or wireless (e.g., infrared, wireless, microwave, etc.) means. The computer-readable storage medium can be any available medium that a computer can access or a data storage device such as a server or data center that includes one or more sets of 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. A semiconductor medium can be a solid-state drive (SSD).

[0089] Based on the same inventive concept as the method embodiments, this application also provides a server for executing the method executed by node 400 in the above method embodiments. The structure of the server can be found in [reference needed]. Figure 2 The structure of node 400.

[0090] Figure 6 The functions / implementation processes of the transmission unit and the creation unit can all be achieved through... Figure 2 The processor 410 calls instructions stored in memory 450 to implement the function. Alternatively, Figure 6 The function / implementation process of creating units in the middle can be achieved through Figure 2 The processor 410 calls computer program instructions stored in memory 450 to implement this. Figure 6 The function / implementation process of the transmission unit in the server can be realized through the communication interface in the server.

[0091] Based on the same inventive concept as the method embodiments, this application also provides a network interface card (NIC) for executing the method executed by the NIC 420 in the above method embodiments. The structure of the NIC can be found in [reference needed]. Figure 2 The structure of the NIC 420.

[0092] Figure 7 The functions and implementation processes of the transmission unit and processing unit can be understood through... Figure 2The processor 4201 in the memory calls the instructions stored in the memory 4202 to implement the function. Alternatively, Figure 7 The function / implementation process of the processing unit in the middle can be obtained through Figure 2 The processor 4201 in the memory calls computer program instructions stored in memory 4202 to implement this. Figure 6 The function / implementation process of the transmission unit in the network card 420 can be realized through the communication interface in the network card 420.

[0093] 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.

[0094] 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.

[0095] The above description is merely a specific embodiment of the present invention. Those skilled in the art can conceive of variations or substitutions based on the specific embodiments provided by the present invention, and all such variations or substitutions should be covered within the scope of protection of the present invention.

Claims

1. A data access method, characterized by, A method applied to a network card of a server, the method comprising: obtaining an access request from another server, the access request being used to access a virtual storage space on the another server, the virtual storage space corresponding to a plurality of local hard disks in the server; determining the plurality of local hard disks corresponding to the virtual storage space; and accessing the plurality of local hard disks according to the access request.

2. The method of claim 1, wherein, The server and the another server communicate through a network-based non-volatile storage standard NOF protocol.

3. The method of claim 1 or 2, wherein, The plurality of local hard disks are NVMe hard disks.

4. The method according to any one of claims 1 to 3, characterized in that, The accessing the plurality of local hard disks according to the access request comprises: accessing the plurality of local hard disks according to configuration information of the plurality of local hard disks and the access request, the configuration information being configuration information of the plurality of local hard disks constituting a redundant array of independent disks RAID or an error correction code EC group.

5. The method of claim 4, wherein, The method further comprises: obtaining the configuration information of the plurality of local hard disks from the server.

6. The method of claim 4 or 5, wherein, The method further comprises: The access request is a data read request, the data read request being used to request reading data from the virtual storage space. The accessing the plurality of local hard disks according to the configuration information of the plurality of local hard disks and the access request comprises: reading data from the plurality of local hard disks according to the configuration information, and sending the read data to another server connected to the server through a network card, the data read request being sent to the server by the another server.

7. The method of claim 4 or 5, wherein, The method further comprises: The access request is a data write request, the data write request being used to write data to the virtual storage space. The accessing the plurality of local hard disks according to the configuration information of the plurality of local hard disks and the access request comprises: writing data in the data write request into the plurality of local hard disks according to the configuration information.

8. A data access method applied to a server, the server including a processor and a network interface card (NIC), the NIC connecting the server to a remote server, characterized in that, The method comprises: The processor generates a virtual storage space, the virtual storage space corresponding to a plurality of local hard disks in the server, and sets the virtual storage space to be accessible by the remote server; The processor receives a connection request of the remote server, transmits virtual storage space information to the remote server, and enables the remote server to access the virtual storage space according to the virtual storage space information; The network card obtains an access request from the remote server, the access request being used to access a virtual storage space on the remote server, the virtual storage space corresponding to a plurality of local hard disks in the server; The network card determines the plurality of local hard disks corresponding to the virtual storage space, and accesses the plurality of local hard disks according to the access request.

9. The method of claim 8, wherein, The processor configures the plurality of local hard disks as a RAID group or an EC group.

10. The method of claim 8 or 9, wherein, The server and the remote server communicate through a network-based non-volatile storage standard NOF protocol.

11. The method of claim 9, wherein, The generating a virtual storage space comprises: generating a non-volatile storage standard NVMe subsystem for the plurality of local hard disks; generating a virtual NVMe subsystem, and generating a virtual storage space identifier, and writing the virtual storage space identifier into the virtual NVMe subsystem; associating the virtual NVMe subsystem with the plurality of NVMe subsystems.

12. A network card, characterized by The network card is located in a server, and the network card includes a transmission unit and a processing unit: The transmission unit is configured to obtain a to-be-processed access request from another server, the access request being used to access a virtual storage space on the another server, the virtual storage space corresponding to a plurality of local hard disks in the server; The processing unit is configured to determine the plurality of local hard disks corresponding to the virtual storage space, and access the plurality of local hard disks according to the access request.

13. The network card of claim 12, wherein, The server and the another server communicate through a network-based non-volatile storage standard protocol NOF.

14. The network card of claim 12 or 13, wherein, The plurality of local hard disks are NVMe hard disks.

15. The network card of any of claims 12 to 14, wherein, When the processing unit accesses the plurality of local hard disks according to the access request, the processing unit is configured to access the plurality of local hard disks according to configuration information of the plurality of local hard disks and the access request, the configuration information being configuration information of the plurality of local hard disks constituting a redundant array of independent disks RAID or an error correction code EC group.

16. The network card of any of claims 12 to 15, wherein, The processing unit is further configured to: obtain the configuration information of the plurality of local hard disks from the server.

17. The network card of claim 15, wherein, The access request is a data read request, the data read request being used to request reading data from the virtual storage space; When the processing unit accesses the plurality of local hard disks according to the configuration information of the plurality of local hard disks and the access request, the processing unit is specifically configured to: read data from the plurality of local hard disks according to the configuration information, and send the read data to another server connected to the server through a network card, the data read request being sent to the server by the another server.

18. The network card of claim 15, wherein, The access request is a data write request, the data write request being used to write data to the virtual storage space; When the processing unit accesses the plurality of local hard disks according to the configuration information of the plurality of local hard disks and the access request, the processing unit is specifically configured to: write data in the data write request into the plurality of local hard disks according to the configuration information.

19. A server, comprising a processor and a network card, wherein: the processor is configured to: generate a virtual storage space, and set the virtual storage space to be accessible by a remote server, the virtual storage space corresponding to a plurality of local hard disks in the server; receive a connection request of the remote server, and transmit information of the virtual storage space to the remote server; the network card is configured to: connect the server and the remote server, and obtain a to-be-processed access request from the remote server, the access request being used to access the virtual storage space on the remote server; determine the plurality of local hard disks corresponding to the virtual storage space; and access the plurality of local hard disks according to the access request. The processing unit is further configured to configure the plurality of local hard disks as a RAID group or an EC group.

20. The server of claim 19, wherein, ​

Citation Information

Patent Citations

  • Configuration node fault transfer method and system in SVC cluster

    CN102035862A

  • Apparatus, system, and method for efficient mapping of virtual and physical addresses

    CN102084330A