WO2016101288A1 - 一种远程直接数据存取方法、设备和系统 - Google Patents
一种远程直接数据存取方法、设备和系统 Download PDFInfo
- Publication number
- WO2016101288A1 WO2016101288A1 PCT/CN2014/095232 CN2014095232W WO2016101288A1 WO 2016101288 A1 WO2016101288 A1 WO 2016101288A1 CN 2014095232 W CN2014095232 W CN 2014095232W WO 2016101288 A1 WO2016101288 A1 WO 2016101288A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- node
- memory
- rdma
- identifier
- storage
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0635—Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/46—Interconnection of networks
Definitions
- the embodiments of the present invention relate to the field of computers, and in particular, to a remote direct data access (RDMA) copy method, device, and system.
- RDMA remote direct data access
- RDMA is created to address the delay in data processing in network transmissions. RDMA enables a computing device to directly transfer information to the memory of another computing device, eliminating external memory copying and text exchange operations. This technology reduces latency and reduces network utilization by reducing processor overhead and reducing memory copy.
- RDMA solves the rapid interaction of existing data in units of computing devices.
- the storage resources and computing resources of computing devices are separated from each other to form a storage resource pool and RDMA data.
- the interaction is also extended from the data interaction between the computing device and the computing device to the data interaction between the separate components of the computing device, and the resulting changes bring new demands to RDMA. That is, when the storage resources of the computing device are separated from the computing resources, when a large amount of remote memory data copying needs occur, how to complete the data copy by means of RDMA technology.
- the embodiments of the present invention provide a remote direct data access method, device, and system.
- the computing resources of the computing device are separated from the storage resources, the RDMA operation of separating the storage resource node components is implemented.
- an embodiment of the present invention provides a method for remote direct data access RDMA data copy, the first computing device includes a first processing node and a first memory node, and the second computing device includes a second processing node and a second Memory nodes, including:
- the second processing node sends an RDMA memory request message to the first processing node, where the RDMA memory request message is used to request the first processing node for an RDMA write operation.
- the second processing node receives an RDMA memory allocation message from the first processing node, where the RDMA memory allocation message carries a first node identifier and a first storage identifier, where the first node identifier is used to indicate the first a memory node, the first storage identifier is used to indicate a storage unit in the first memory node for accepting the RDMA write operation;
- the second processing node encapsulates an RDMA copy operation message, where the RDMA copy operation message carries the first node identifier, the first storage identifier, and the second storage identifier, where the second storage identifier is used to indicate the a memory address of data for the RDMA write operation in the second memory node;
- the data in the storage unit indicated by the identifier is written to the storage unit of the first memory node indicated by the first storage identifier.
- the method further includes:
- the second processing node generates a work queue element WQE, and puts the WQE into a queue QS of the QP connection of the RDMA connection of the second memory node, where the WQE carries the first node identifier, the The first storage identifier and the second storage identifier are used to indicate that data in the storage unit indicated by the second storage identifier is copied to the storage unit indicated by the first storage identifier;
- the second processing node encapsulates the RDMA copy operation message, including: extracting the WQE from the sending queue SQ of the QP, and encapsulating the RDMA copy operation message according to the WQE.
- the first node identifier includes:
- a protection domain number which is used to identify a protection domain where the first memory node is located
- the first memory node identifier is used to identify the first memory node in the protection domain.
- the first memory node and the second memory node are in the same protection domain
- the first node identifier includes:
- the first memory node identifier is used to identify the first memory node in the same protection domain.
- the first storage identifier includes:
- a first virtual address configured to identify a virtual address of the storage node of the first memory node for receiving the RDMA write operation at the first processing node
- a first remote memory key for characterizing access to a storage device of the first memory node, and determining, in conjunction with the first virtual address, a physics of a storage unit of the first memory node for receiving an RDMA write operation address.
- the second storage identifier includes:
- a second virtual address configured to identify a virtual address of the data of the second memory node for the RDMA write operation in the second processing node
- a second remote memory key for characterizing access to the second memory node storage device, and determining, in conjunction with the second virtual address, the physics of the data for the RDMA write operation in the second memory node address.
- the second processing node sends the RDMA copy operation message to the second After the memory node, the method further includes: receiving an RDMA response message of the second memory node, where the RDMA response message is used to indicate that the RDMA write operation is completed.
- an embodiment of the present invention provides an apparatus for remote direct data access RDMA data copy, including: a processor, a memory, a bus, and a communication interface;
- the memory is for storing computer execution instructions
- the processor is coupled to the memory via the bus, and when the computing device is running, the processor executes the computer-executed instructions stored by the memory to enable
- the apparatus of the remote direct data access RDMA data copy performs the method of any of the first aspect or the first aspect.
- an embodiment of the present invention provides a method for remote direct data access RDMA data copy, the first computing device includes a first processing node and a first memory node, and the second computing device includes a second processing node and a second Memory nodes, including:
- the second memory node receives an RDMA copy operation message from the second processing node, where the RDMA copy operation message carries a first node identifier, a first storage identifier, and a second storage label
- the first node identifier is used to indicate the first memory node
- the first storage identifier is used to indicate a storage unit in the first memory node for accepting an RDMA write operation
- the second storage identifier Data for indicating that the second memory node is used for the RDMA write operation
- the second memory node extracts the data indicated by the second storage identifier according to the RDMA copy operation message, and encapsulates an RDMA write operation message according to the first storage identifier, where the RDMA write operation message includes the RDMA Data of the write operation and the first storage identifier;
- the second memory node sends the RDMA write operation message to the first memory node indicated by the first node identifier, instructing the first memory node to write the data to the storage unit indicated by the first storage identifier.
- the first node identifier includes:
- a protection domain number which is used to identify a protection domain where the first memory node is located
- the first memory node identifier is used to identify the first memory node in the protection domain.
- the first memory node and the second memory node are in the same protection domain
- the first node identifier includes:
- the first memory node identifier is used to identify the first memory node in the same protection domain.
- the first storage identifier includes:
- a first virtual address configured to identify a virtual address of the storage node of the first memory node for receiving the RDMA write operation at the first processing node
- a first remote memory key for characterizing access to a storage device of the first memory node, and determining, in conjunction with the first virtual address, a physics of a storage unit of the first memory node for receiving an RDMA write operation address.
- the second storage identifier includes:
- a second virtual address configured to identify a virtual address of the data of the second memory node for the RDMA write operation in the second processing node
- a second remote memory key for characterizing access to the second memory node storage device, and determining the data for the RDMA write operation in the second in conjunction with the second virtual address The physical address in the memory node.
- the fifth possible implementation manner of the third aspect further comprising: receiving an RDMA response message of the first memory node, the RDMA response The message is used to indicate that the RDMA write operation has completed.
- the method further includes: sending the RDMA response message to the second processing node.
- an embodiment of the present invention provides a device for remote direct data access RDMA data copy, including: a processor, a memory, a bus, and a communication interface;
- the memory is for storing computer execution instructions
- the processor is coupled to the memory via the bus, and when the computing device is running, the processor executes the computer-executed instructions stored by the memory to enable
- the apparatus of the remote direct data access RDMA data copy performs the method of any of the possible implementations of the third aspect or the third aspect.
- an embodiment of the present invention provides a method for remote direct data access RDMA data copy, where the first computing device includes a first processing node and a first memory node, including:
- the second computing device sends an RDMA memory request message to the first processing node, the RDMA memory request message for requesting the first processing node for a target memory for an RDMA write operation;
- the second computing device receives an RDMA memory allocation message from the first processing node, where the RDMA memory allocation message carries a first node identifier and a first storage identifier, where the first node identifier is used to indicate the first a memory node, the first storage identifier is used to indicate a storage unit in the first memory node for accepting the RDMA write operation;
- the second computing device encapsulates an RDMA write operation message, where the RDMA write operation message carries data for the RDMA write operation and the first storage identifier;
- the method further includes:
- the second computing device generates a work queue element WQE, and puts the WQE into a queue QS of the RTP connection established with the first processing node, where the WQE carries the first node identifier
- the first storage identifier and the second storage identifier are used to indicate Copying data in the storage unit indicated by the second storage identifier to a storage unit indicated by the first storage identifier, where the second storage identifier is used to indicate that the second storage device is used for the RDMA write operation
- the data ;
- the second computing device encapsulating the RDMA write operation message includes: the second computing device extracting the WQE from the sending queue SQ of the QP, and extracting, according to the WQE, the indication indicated by the second storage identifier Data, encapsulating the RDMA write operation message according to the first storage identifier.
- the first node identifier includes:
- a protection domain number which is used to identify a protection domain where the first memory node is located
- the first memory node identifier is used to identify the first memory node in the protection domain.
- the first memory node and the second computing device are in the same protection domain
- the first node identifier includes:
- the first memory node identifier is used to identify the first memory node in the same protection domain.
- the first storage identifier includes:
- a first virtual address configured to identify a virtual address of the storage node of the first memory node for receiving the RDMA write operation at the first processing node
- a first remote memory key for characterizing access to a storage device of the first memory node, and determining, in conjunction with the first virtual address, a physics of a storage unit of the first memory node for receiving an RDMA write operation address.
- the second computing device sends the RDMA write operation message to the first After the first memory node indicated by the node identifier, the method further includes: receiving an RDMA response message of the first memory node, where the RDMA response message is used to indicate that the RDMA write operation is completed.
- an embodiment of the present invention provides a device for remote direct data access RDMA data copy, including: a processor, a memory, a bus, and a communication interface;
- the memory is for storing computer execution instructions
- the processor is coupled to the memory via the bus, and when the computing device is running, the processor executes the memory storage
- an embodiment of the present invention provides an apparatus for remote direct data access RDMA data copy, wherein the first computing device includes a first processing node and a first memory node, and the second computing device includes the device.
- the second memory node including:
- the first processing node sends an RDMA memory request message, where the RDMA memory request message is used to request a target memory for an RDMA write operation from the first processing node;
- a receiving unit configured to receive an RDMA memory allocation message from the first processing node, where the RDMA memory allocation message carries a first node identifier and a first storage identifier, where the first node identifier is used to indicate the first memory a node, the first storage identifier is used to indicate a storage unit in the first memory node for accepting the RDMA write operation;
- An encapsulating unit configured to encapsulate an RDMA copy operation message, where the RDMA copy operation message carries the first node identifier, the first storage identifier, and a second storage identifier, where the second storage identifier is used to indicate the a memory address of data for the RDMA write operation in the two memory nodes;
- the sending unit is further configured to send the RDMA copy operation message to the second memory node, and instruct the second memory node to determine the first memory node according to the first node identifier,
- the data in the storage unit indicated by the second storage identifier is written into the storage unit of the first memory node indicated by the first storage identifier.
- the method further includes: generating a unit, generating a work queue element WQE, and placing the WQE into a queue of the second memory node RDMA connection to the QP sending queue SQ
- the WQE carries the first node identifier, the first storage identifier, and the second storage identifier, and is used to indicate that data in the storage unit indicated by the second storage identifier is copied to the first storage Identifying the indicated storage unit;
- the encapsulating unit is configured to encapsulate the RDMA copy operation message, where the encapsulating unit extracts the WQE from the sending queue SQ of the QP, and encapsulates the RDMA copy operation message according to the WQE.
- the first node identifier includes:
- a protection domain number which is used to identify a protection domain where the first memory node is located
- the first memory node identifier is used to identify the first memory node in the protection domain.
- the first memory node and the second memory node are in the same protection domain
- the first node identifier includes:
- the first memory node identifier is used to identify the first memory node in the same protection domain.
- the first storage identifier includes:
- a first virtual address configured to identify a virtual address of the storage node of the first memory node for receiving the RDMA write operation at the first processing node
- a first remote memory key for characterizing access to a storage device of the first memory node, and determining, in conjunction with the first virtual address, a physics of a storage unit of the first memory node for receiving an RDMA write operation address.
- the second storage identifier includes:
- a second virtual address configured to identify a virtual address of the data of the second memory node for the RDMA write operation in the second processing node
- a second remote memory key for characterizing access to the second memory node storage device, and determining, in conjunction with the second virtual address, the physics of the data for the RDMA write operation in the second memory node address.
- the receiving unit is further configured to: receive an RDMA response message of the second memory node, in a sixth possible implementation manner of the seventh aspect, The RDMA response message is used to indicate that the RDMA write operation has been completed.
- an embodiment of the present invention provides an apparatus for remote direct data access RDMA data copy, wherein the first computing device includes a first processing node and a first memory node, and the second computing device includes a second processing The node and the device, including:
- a receiving unit configured to receive an RDMA copy operation message from the second processing node, where the RDMA copy operation message carries a first node identifier, a first storage identifier, and a second storage identifier, where the first node identifier is used to indicate The first memory node, the first storage identifier is used to indicate a storage unit in the first memory node for accepting an RDMA write operation, and the second storage identifier is used to indicate that the second memory node is used to Data of the RDMA write operation;
- an encapsulating unit configured to: according to the RDMA copy operation message, take out the data indicated by the second storage identifier, and encapsulate an RDMA write operation message according to the first storage identifier, where the RDMA write operation message includes the Data of the RDMA write operation and the first storage identifier;
- a sending unit configured to send the RDMA write operation message to the first memory node indicated by the first node identifier, and instruct the first memory node to write the data into the storage unit indicated by the first storage identifier.
- the first node identifier includes:
- a protection domain number which is used to identify a protection domain where the first memory node is located
- the first memory node identifier is used to identify the first memory node in the protection domain.
- the first memory node and the second memory node are in the same protection domain
- the first node identifier includes:
- the first memory node identifier is used to identify the first memory node in the same protection domain.
- the first storage identifier includes:
- a first virtual address configured to identify a virtual address of the storage node of the first memory node for receiving the RDMA write operation at the first processing node
- a first remote memory key for characterizing access to a storage device of the first memory node, and determining, in conjunction with the first virtual address, a physics of a storage unit of the first memory node for receiving an RDMA write operation address.
- the second storage identifier includes:
- a second virtual address configured to identify a virtual address of the data of the second memory node for the RDMA write operation in the second processing node
- a second remote memory key for characterizing access to the second memory node storage device, and determining, in conjunction with the second virtual address, the physics of the data for the RDMA write operation in the second memory node address.
- the receiving unit is further configured to: receive the first memory node An RDMA acknowledgment message is used to indicate that the RDMA write operation has completed.
- the sending unit is further configured to: send the RDMA response message to the Two processing nodes.
- the embodiment of the present invention provides a device for remote direct data access RDMA data copy, wherein the first computing device includes a first processing node and a first memory node, including:
- a sending unit configured to send an RDMA memory request message to the first processing node, where the RDMA memory request message is used to request, by the first processing node, a target memory for an RDMA write operation;
- a receiving unit configured to receive an RDMA memory allocation message from the first processing node, where the RDMA memory allocation message carries a first node identifier and a first storage identifier, where the first node identifier is used to indicate the first memory a node, the first storage identifier is used to indicate a storage unit in the first memory node for accepting the RDMA write operation;
- a packaging unit configured to encapsulate an RDMA write operation message, where the RDMA write operation message carries data for the RDMA write operation and the first storage identifier;
- the sending unit is further configured to send the RDMA write operation message to the first memory node indicated by the first node identifier, instructing the first memory node to write the data into the first storage Identifies the indicated storage unit.
- the method further includes a generating unit, where the generating unit is configured to generate a work queue element WQE, and put the WQE into an RDMA connection established with the first processing node.
- the queue of the queue to the QP, the WQE carrying the first node identifier, the first storage identifier, and the second storage identifier, used to indicate the storage unit indicated by the second storage identifier Data is copied to the storage unit indicated by the first storage identifier, and the second storage identifier is used to indicate data used by the second storage device for the RDMA write operation;
- the encapsulating unit is configured to encapsulate the RDMA write operation message, including: extracting the WQE from the sending queue SQ of the QP, and extracting, according to the WQE, the data indicated by the second storage identifier, according to the A storage identifier encapsulating the RDMA write operation message.
- the first node identifier includes:
- a protection domain number which is used to identify a protection domain where the first memory node is located
- the first memory node identifier is used to identify the first memory node in the protection domain.
- the first memory node and the second computing device are in the same protection domain
- the first node identifier includes:
- the first memory node identifier is used to identify the first memory node in the same protection domain.
- the first storage identifier includes:
- a first virtual address configured to identify a virtual address of the storage node of the first memory node for receiving the RDMA write operation at the first processing node
- a first remote memory key for characterizing access to a storage device of the first memory node, and determining, in conjunction with the first virtual address, a physics of a storage unit of the first memory node for receiving an RDMA write operation address.
- the receiving unit is further configured to: receive an RDMA response message of the first memory node, in a fifth possible implementation manner of the ninth aspect, The RDMA response message is used to indicate that the RDMA write operation has completed.
- an embodiment of the present invention provides a remote direct data access RDMA data copy system, including a first computing device and a second computing device, where the first computing device includes a first processing node and a first a memory node, the second computing device comprising a second processing node and a second memory node:
- the second processing node is configured to send an RDMA memory request message to the first processing node, where the RDMA memory request message is used to request a target memory for an RDMA write operation from the first processing node;
- the first processing node is configured to apply, to the first memory node, a memory that accepts an RDMA write operation according to the received RDMA write operation message, and send an RDMA memory allocation message to the second processing node, where
- the RDMA memory allocation message carries a first node identifier and a first storage identifier, where the first node identifier is used to indicate the first memory node, and the first storage identifier is used to indicate that the first memory node is used in a storage unit that accepts the RDMA write operation;
- the second processing node is further configured to: encapsulate the RDMA copy operation message according to the received RDMA memory allocation message, and send the RDMA copy operation message to the second memory node, the RDMA copy operation message Carrying the first node identifier, the first storage And a second storage identifier, where the second storage identifier is used to indicate a memory address of the data in the second memory node for the RDMA write operation;
- the second memory node is configured to: take out the data indicated by the second storage identifier according to the received RDMA copy operation message, and encapsulate an RDMA write operation message according to the first storage identifier, the RDMA
- the write operation message includes the data of the RDMA write operation and the first storage identifier, and sends the RDMA write operation message to the first memory node;
- the first memory node is configured to write the data to the storage unit indicated by the first storage identifier according to the received RDMA write operation message.
- the second processing node is further configured to: generate a work queue element WQE, and put the WQE into a queue pair QP of the second memory node RDMA connection
- the WQE carries the first node identifier, the first storage identifier, and the second storage identifier, and is used to indicate that data in the storage unit indicated by the second storage identifier is copied to The storage unit indicated by the first storage identifier;
- the second processing node is configured to encapsulate the RDMA copy operation message, including: extracting the WQE from the sending queue SQ of the QP, and encapsulating the RDMA copy operation message according to the WQE.
- the first node identifier includes:
- a protection domain number which is used to identify a protection domain where the first memory node is located
- the first memory node identifier is used to identify the first memory node in the protection domain.
- the first memory node and the second memory node are in the same protection domain
- the first node identifier includes:
- the first memory node identifier is used to identify the first memory node in the same protection domain.
- the first storage identifier includes:
- a first virtual address configured to identify a virtual address of the storage node of the first memory node for receiving the RDMA write operation at the first processing node
- a first remote memory key for characterizing access to a storage device of the first memory node, and determining, in conjunction with the first virtual address, a physics of a storage unit of the first memory node for receiving an RDMA write operation address.
- the second storage identifier includes:
- a second virtual address configured to identify a virtual address of the data of the second memory node for the RDMA write operation in the second processing node
- a second remote memory key for characterizing access to the second memory node storage device, and determining, in conjunction with the second virtual address, the physics of the data for the RDMA write operation in the second memory node address.
- the second memory node is further configured to: receive the RDMA of the first memory node And responding to the message, and sending the RDMA response message to the second processing node, the RDMA response message is used to indicate that the RDMA write operation has been completed.
- an embodiment of the present invention provides a remote direct data access RDMA data copy system, including a first computing device and a second computing device, where the first computing device includes a first processing node. And the first memory node, including:
- the second computing device is configured to send an RDMA memory request message to the first processing node, where the RDMA memory request message is used to request a target memory for an RDMA write operation from the first processing node;
- the first processing node is configured to apply, to the first memory node, a memory that accepts an RDMA write operation according to the received RDMA write operation message, and send an RDMA memory allocation message to the second processing node, where
- the RDMA memory allocation message carries a first node identifier and a first storage identifier, where the first node identifier is used to indicate the first memory node, and the first storage identifier is used to indicate that the first memory node is used in a storage unit that accepts the RDMA write operation;
- the second computing device is further configured to encapsulate an RDMA write operation message, where the RDMA write operation message carries data for the RDMA write operation and the first storage identifier, and sends the RDMA write operation message Identifying, by the first node, the first memory node indicated;
- the first memory node is configured to write the data to the storage unit indicated by the first storage identifier according to the received RDMA write operation message.
- the second computing device is further configured to: generate a work queue element WQE, and put the WQE into being established with the first processing node
- the RDMA-connected queue is sent to the QP in the sending queue SQ, where the WQE carries the first node identifier, the first storage identifier, and the second storage identifier, and is used to indicate that the second storage identifier is indicated Copying data in the storage unit to the storage unit indicated by the first storage identifier, the second storage identifier is used to indicate data used by the second storage device for the RDMA write operation;
- the second computing device encapsulating the RDMA write operation message includes: the second computing device extracting the WQE from the sending queue SQ of the QP, and extracting the data indicated by the second storage identifier according to the WQE And encapsulating the RDMA write operation message according to the first storage identifier.
- the first node identifier includes:
- a protection domain number which is used to identify a protection domain where the first memory node is located
- the first memory node identifier is used to identify the first memory node in the protection domain.
- the first memory node and the second computing device are in the same protection
- the domain, the first node identifier includes:
- the first memory node identifier is used to identify the first memory node in the same protection domain.
- the first storage identifier includes:
- a first virtual address configured to identify a virtual address of the storage node of the first memory node for receiving the RDMA write operation at the first processing node
- a first remote memory key for characterizing access to a storage device of the first memory node, and determining, in conjunction with the first virtual address, a physics of a storage unit of the first memory node for receiving an RDMA write operation address.
- the second computing device is further configured to: receive the first memory The RDMA acknowledgment message of the node, the RDMA acknowledgment message is used to indicate that the RDMA write operation has completed.
- an RDMA write operation between a memory node separated from a processing node or a memory node separated from a processing node and a memory of another computing device may be implemented.
- the path of the data stream is shortened, the link resources are saved, the data transmission time is reduced, and the data transmission is no longer passed through the processing resources of the processing node or the computing device, thereby greatly saving processing.
- the computing resource of a node or computing device may be implemented.
- FIG. 1 is a block diagram of an exemplary networked environment in which computing devices share data via RDMA;
- FIG. 2 is a schematic diagram of an exemplary computing device of the present invention
- FIG. 3 is a schematic diagram of an application scenario of an RDMA method
- FIG. 5 is a schematic diagram of an application scenario of an RDMA copy method according to an embodiment of the invention.
- FIG. 6 is a signaling diagram of an RDMA copy method according to an embodiment of the invention.
- FIG. 7 is a schematic diagram of an application scenario of an RDMA copy method according to an embodiment of the invention.
- FIG. 8 is a signaling diagram of an RDMA copy method according to an embodiment of the present invention.
- FIG. 9 is a schematic diagram of an application scenario of an RDMA copy method according to an embodiment of the invention.
- FIG. 10 is a signaling diagram of an RDMA copy method according to an embodiment of the invention.
- FIG. 11 is an exemplary flowchart of an RDMA copy method according to an embodiment of the present invention.
- FIG. 12 is an exemplary flowchart of an RDMA copying method according to an embodiment of the present invention.
- FIG. 13 is an exemplary flowchart of an RDMA copy method according to an embodiment of the present invention.
- FIG. 14 is a schematic diagram showing the logical structure of an RDMA copying apparatus according to an embodiment of the present invention.
- FIG. 15 is a schematic diagram showing the logical structure of an RDMA copying apparatus according to an embodiment of the present invention.
- FIG. 16 is a schematic diagram showing the logical structure of an RDMA copying apparatus according to an embodiment of the present invention.
- FIG. 17 is a schematic structural diagram of a hardware of a computing device according to an embodiment of the invention.
- FIG. 1 illustrates an RDMA networking environment 100 in which network 102 is coupled to four computing devices 104.
- Computing devices 104 use their network 102 connections to perform mutual RDMA transfers.
- the network 102 may be the Internet, an intranet, a local area network (LAN), a wireless local area network (WLANs), a storage area network (SANs), or the like, or a combination of the above.
- LAN local area network
- WLANs wireless local area network
- SANs storage area network
- FIG. 1 is only intended to introduce RDMA participants and their interrelationships for the purposes of the following discussion.
- the depicted RDMA environment 100 is greatly simplified. Since some aspects of RDMA are well known in the art, these aspects, such as authentication schemes and security, are not discussed herein.
- the complexity involved in setting up and running a successful RDMA environment 100 is well known to those working in the art.
- the computing device 104 of Figure 1 can be of any architecture.
- 2 is a block diagram generally showing an exemplary computer system supporting the present invention.
- the computer system of Figure 2 is only an example and is not intended to suggest any limitation as to the scope of use or functionality of the invention. Neither should computing device 104 be interpreted as having any dependency or requirement relating to any one or combination of the components shown in FIG. 2.
- the invention can work with many other general purpose or special purpose computing environments or configurations.
- computing device 104 typically includes at least one processor 200 and memory 202.
- the memory 202 can be used by the computing device 104 as a memory resource, and can be a volatile random access memory (RAM), a non-volatile read only memory (ROM), or a flash memory. Or some combination of the two.
- RAM volatile random access memory
- ROM non-volatile read only memory
- flash memory flash memory
- peripherals including, but not limited to, magnetic disks and magnetic tapes, as well as optical disks and optical tapes.
- Such peripherals are stored in FIG. 2 as exemplified by removable storage 206 and non-removable storage 208.
- Computer storage media includes both volatile and nonvolatile, removable and non-removable, implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. medium.
- Memory 202, removable storage 206 and non-removable storage 208 are all examples of computer storage media.
- Computer storage media include, but are not limited to, RAM, ROM, Electrically Erasable Read Only Memory (EEPROM), flash memory, other memory technologies, CD-ROMs, digital versatile disks, and other optical storage devices. , magnetic cassettes, tapes, disk storage, other magnetic storage devices, And any other medium that can be used to store the desired information and be accessible by computing device 104. Any such computer storage media may be part of computing device 104.
- Computing device 104 may also include a communication channel 210 that allows it to communicate with other devices, including devices on network 102. Communication channel 210 is an example of a communication medium.
- Communication media typically embodies computer readable instructions, data structures, program modules, or other data in a modulated data signal or other transport mechanism, such as a carrier wave, and includes any information delivery media.
- communication media includes optical media, wired media such as wired networks and linear connections, and wireless media such as sound, radio frequency (RF), infrared, and other wireless media.
- RF radio frequency
- computer readable medium includes both storage media and communication media.
- Computing device 104 may also have input device 212 such as a touch sensitive display, a hardware keyboard, a mouse, a voice input device, and the like.
- Output device 214 includes the device itself, such as touch sensitive display screens, speakers, printers, and rendering modules (often referred to as “adapters") used to drive these devices. All of these devices are well known in the art and therefore need not be discussed in detail herein.
- Computing device 104 has a power source 216.
- the computing resources of the computing device 104 are separated from the storage resources.
- the computing device 104 is divided into a processing node and a memory node.
- the memory node herein refers to a storage resource that can be used by the computing device as a memory resource, and may also be referred to as a storage node. .
- the memory node includes a memory 202 and a memory controller for controlling operations such as data access of the memory 202; the processing node includes other features and functions of the computing device 104, and optionally, the processing node further includes memory in addition to the computing device 104. Other memory resources than nodes.
- the processing node and the memory node are connected through the network 102.
- FIG. 3 is a schematic diagram of a logical structure of an application scenario of a remote direct data access RDMA method.
- the system includes a first computing device and a second computing device, where the first computing device and the second computing device are as shown in FIG.
- the RDMA protocol allows direct access to the application buffer, and the hardware uses a so-called work queue to connect to the software.
- Work queues are created in pairs, called Queue Pairs (QPs).
- QPs include Send Queues (SQs) and Receive Queues (RQs).
- SQ is used for a transmit operation, holding instructions that cause data to be transferred between a storage device of one computing device and a storage device of another computing resource; RQ is used for receiving operations, saving information about data received from another computing device Where is the instruction.
- the computing device submits a work request to generate a Work Queue Element (WQE) to be placed in the appropriate work queue.
- WQE Work Queue Element
- the channel adapters perform WQE so that they are placed in the work queue.
- the signaling diagram is as shown in FIG. 4, and the execution steps are:
- the second computing device and the first computing device establish a queue-to-QP-based RDMA connection over the network 102.
- the second computing device receives an RDMA memory allocation message from the first computing device that belongs to the first computing device, where the RDMA memory allocation message carries the first node identifier and the first storage identifier, where the first node identifier is used to identify the first calculation.
- the device, the first storage identifier is used to characterize access to the first memory, and to identify a storage unit in which the first memory accepts an RDMA write operation.
- the first storage identifier includes a virtual address (VA) and a remote key (R_KEY).
- VA represents the virtual address of the storage unit that the first memory is used to accept the RDMA write operation
- R_KEY is used to characterize the access of the second computing device to the first memory, and is used to determine jointly with the virtual address VA.
- the first memory is for receiving a physical address of a memory location of the RDMA write operation.
- the remote memory key R_KEY provides index information.
- the specific memory slice can be found through the index information, and the specific memory block start address is found according to the VA, thereby realizing mapping the virtual address VA to the physical address of the first memory. Determining the physical address of the first memory to be accessed by VA and R-KEY is prior art, and details are not described herein again.
- the second computing device generates a work queue element WQE for the second memory RDMA write operation to the first memory, and puts the WQE into the queue QQ of the QP, the WQE carries the first storage identifier, and the Two storage identifiers.
- the second storage identifier is used to identify the second memory for the data 302 for the RDMA write operation.
- the WQE is used to indicate that the data 302 of the second memory is copied to the memory address of the first memory.
- the second storage identifier includes a first address and a data address length of the data 302 in the second memory.
- the RDMA Network Interface Card (RNIC) 314 of the second computing device extracts the WQE from the queue to the QP, and extracts the first storage identifier and the second storage identifier, and according to The second storage identifier extracts the second memory for the data 302 of the RDMA write operation, and encapsulates the data 302 with the first storage identifier into an RDMA write operation (RDMA WRITE) message, the RDMA WRITE message is used to indicate that the data 302 is written And entering a storage unit of the first memory indicated by the first storage identifier.
- RNIC RDMA Network Interface Card
- the second computing device According to an RDMA connection relationship between the first computing device and the second computing device, the second computing device The standby RNIC sends an RDMA WRITE message to the RNIC of the first computing device.
- the RNIC of the first computing device according to the RDMA WRITE message indication, after verifying the message authority, writes the data 302 into the storage unit of the first memory indicated by the first storage identifier.
- the method further includes the first computing device transmitting a response message to complete the RDMA write operation to the second computing device, to indicate that the RDMA write operation is complete.
- an RDMA write operation based on the first computing device 104 and the second computing device 104 can be implemented. If the processor and the memory of the computing device 104 are separated from each other, the RDMA method corresponding to FIG. 3 cannot be implemented. RDMA write operations between separate memories.
- FIG. 5 is a schematic diagram of an application scenario of a remote direct data access method according to an embodiment of the present invention.
- the system includes a first computing device and a second computing device, where the first computing device and the second computing device
- the device is a computing device as shown in FIG. 2, only the processor, memory and memory controller of the computing device are shown, other features and functions are not shown in FIG.
- the first processor of the first computing device is separate from the first memory, and the first computing device is divided into a first processing node 502 and a first memory node 504 as shown in FIG.
- the first processing node 502 includes a first processor And other features and functions of the computing device 104 (not shown), the first memory node 504 includes a first memory controller 506 and a first memory, and the first processing node 502 and the first memory node 504 pass through the network 102.
- the second processor of the second computing device is separate from the second memory, dividing the second computing device into a second processing node 508 and a second memory node 510 as shown in FIG.
- the second processing node 508 includes a second processor And other features and functions of the computing device 104 (not shown), the second memory node 510 includes a second memory controller 512 and a second memory, and the second processing node 508 and the second memory node 510 are routed through the network 102. Communication.
- the first processing node 502 further includes other storage resources of the first computing device 104 than the first memory node 504.
- the second processing node 508 further includes other storage resources of the second computing device 104 than the second memory node 510.
- the signaling diagram is as shown in FIG. 6, and the execution steps are:
- the second processing node 508 sends an RDMA memory request message to the first processing node 502 over the network 102, the RDMA memory request message being used to request the target memory for the RDMA write operation from the first processing node.
- the RDMA memory request message carries a data size to be subjected to an RDMA write operation.
- the first processing node 502 applies to the first memory node 504 for memory for accepting the RDMA write operation based on the received RDMA memory request message.
- the first memory node 504 allocates memory to the first processing node 502 in the first memory according to the data size and physical memory usage of the RDMA write operation, and sends the memory allocation message to the first processing node 502.
- the first processing node 502 further generates a queue pair QP, associates the QP with the memory allocated by the first memory node 504, and sends the queue pair QP information to the second processing node 508, and the second processing node 508. Establish an RDMA connection based on queue-to-QP.
- the first memory node 504 further generates a queue pair, associates the QP with the memory allocated by the first memory node 504, and sends the queue pair QP information to the first processing node 502, where the first processing node 502 sets the QP information.
- the second processing node 508 is sent to the second processing node 508 to establish an RDMA connection based on the queue pair QP.
- the first processing node 502 further generates a virtual address (VA) and a remote key (R_KEY), and sends the VA and the R_KEY to the second processing node 508.
- VA is used to characterize the virtual address of the memory allocated by the first memory node 504 for accepting the RDMA write operation
- the R_KEY is used to characterize the access to the memory allocated by the first memory node 504 for accepting the RDMA write operation
- the virtual address VA collectively determines the physical address of the storage unit used by the first memory node to receive the RDMA write operation, ie, implements mapping the virtual address to the physical address of the first memory of the first memory node 504.
- the first memory node 504 further generates VA and R_KEY, and sends the VA and the R_KEY to the first processing node 502, and the first processing node 502 sends the VA and the R_KEY to the second processing node 508.
- the VA is used to indicate the virtual address of the memory allocated by the first memory node 504 for accepting the RDMA write operation
- the R_KEY is used to characterize the access to the memory allocated by the first memory node 504 for accepting the RDMA write operation, and is used for combining
- the virtual address VA collectively determines the physical address of the storage unit used by the first memory node to receive the RDMA write operation, ie, implements mapping the virtual address to the physical address of the first memory of the first memory node 504.
- the second processing node 508 receives the RDMA memory allocation message from the first processing node 502, where the RDMA memory allocation message carries the first node identifier and the first storage identifier, where the first node identifier is used to identify the first memory node 504, the first The storage identifier is used to characterize access to the first memory, and the storage unit that identifies the first memory of the first memory node 504 to accept an RDMA write operation.
- the first node identifier includes: a protection domain number, configured to identify the first memory node 504.
- the first protection domain, and the first memory node identifier are used to determine the first memory node 504 in the first protection domain.
- the first memory node 504 and the second memory node 510 are in the same protection domain, and the first node identifier includes only the first memory node identifier, and is used to determine the first memory node 504 in the protection domain.
- the first storage identifier includes: a first virtual address, a virtual address for identifying a first memory of the first memory node 504 for receiving a storage unit of the RDMA write operation, and a first remote memory key for Characterizing access to the first memory, and jointly determining the physical address of the first memory for receiving the RDMA write operation in conjunction with the virtual address, ie, mapping the first virtual address to the physical address of the first memory.
- the second processing node 508 encapsulates an RDMA copy operation message, where the RDMA copy operation message carries a first node identifier, a first storage identifier, and a second storage identifier, where the second storage identifier is used to represent the right to access the second storage. And data 514 identifying the second memory for an RDMA write operation, the RDMA copy operation message being used to instruct the second memory node 510 to copy the data 514 to the memory location of the first memory of the first memory node.
- the second storage identifier includes: a second virtual address, a virtual address for identifying the data 514 of the second memory for the RDMA write operation; a data length for identifying the data address length of the data 514; and a second far a memory key for characterizing access to the second memory, and a physical address of the storage unit that jointly determines the data of the second memory for the RDMA write operation in conjunction with the virtual address VA, ie, mapping the second virtual address to the second memory Physical address.
- the method further includes: the second processing node 508 generates a work queue element WQE, and places the WQE into a queue QQ of the QP connected to the second memory node 510RDMA, where the WQE carries the first a node identifier, a first storage identifier, and a second storage identifier, the WQE being used to indicate that the data 514 in the second memory is copied to the storage unit of the first memory.
- the WQE further includes a second node identifier, configured to indicate the second memory node 510.
- the RNIC of the second processing node 508 fetches the WQE from the SQ and encapsulates the RDMA copy operation message according to the WQE indication.
- the RNIC of the second processing node 508 sends an RDMA copy operation message to the second memory node 510 via the network 102.
- the second memory controller 512 according to the RDMA copy operation message indication, after verifying the message authority, extracting the data 514 of the second storage identifier, and in combination with the first storage identifier, encapsulating the RDMAWRITE message, the RDMA WRITE message is used to indicate the first memory.
- the node writes data 514 to the first A storage unit of the first memory indicated by the storage identifier.
- the second memory controller 512 sends an RDMA write operation message through the network 102 to the first memory node 504 indicated by the first node identifier.
- the method further includes: the first memory node 504 sends an RDMA response message to the second memory node 510, to indicate that the RDMA write operation is completed, and the second memory node 510 sends the RDMA response message to the second process. Node 508.
- the method further includes: the first memory node 504 sends an RDMA response message to the second processing node 508, to indicate that the RDMA write operation is completed.
- the memory resource of the computing device is separated from the computing resource.
- the RDMA copy operation message is added to indicate that the second memory node is directly Writing data to the first memory node implements an RDMA write operation between memory resources that are separate from the computing resources.
- the RDMA write operation between the memory nodes is realized, and the data of the RDMA write operation between the memory nodes does not pass through the second processing node and the first processing node, thereby shortening the path through which the data stream passes, saving the link.
- the resource reduces the time required for data transmission, and the data transmission no longer passes through the processing node, thereby greatly saving the computing resources of the processing node.
- FIG. 7 is an application scenario of a remote direct data access method according to an embodiment of the present invention.
- the system includes a first computing device and a second computing device, where the first computing device and the second computing device
- the first computing device and the second computing device For the computing device shown in FIG. 2, only the processor, memory, and memory controller of the computing device are shown, other features and functions are not shown in FIG.
- the first processor of the first computing device is separate from the first memory, and the first computing device is divided into a first processing node 702 and a first memory node 704 shown in FIG.
- the first processing node 702 includes a first processor And other features and functions (not shown), the first memory node 704 includes a first memory controller 706 and a first memory, and the first processing node 702 communicates with the first memory node 704 over the network 102.
- the first processing node 702 further includes other memory resources of the first computing device 104 than the first memory node 704.
- the signaling diagram is as shown in FIG. 8 , and the execution steps are:
- the second computing device sends an RDMA memory request message to the first processing node 702,
- the RDMA Memory Request message is used to request the target memory for the RDMA write operation from the first processing node.
- the RDMA memory request message carries data size information to be subjected to an RDMA write operation
- the first processing node 702 applies, to the first memory node 704, a memory for accepting an RDMA write operation according to the received RDMA memory request message.
- the first memory node 704 allocates memory to the first processing node 702 in the first memory according to the data size and physical memory usage of the RDMA write operation, and sends the memory allocation message to the first processing node 702.
- the first processing node 702 further generates a queue pair QP, and associates the QP with the memory allocated by the first memory node 704, and sends the queue pair QP information to the second computing device, and establishes a basis with the second computing device. Queue RDMA connection to QP.
- the first memory node 704 further generates a queue pair, associates the QP with the memory allocated by the first memory node 704, and sends the queue pair QP information to the first processing node 702, where the first processing node 702 sets the QP information.
- the first processing node 702 further generates a virtual address (VA) and a remote key (R_KEY), and sends the VA and the R_KEY to the second computing device.
- VA is used to characterize the virtual address of the memory allocated by the first memory node 704 for accepting the RDMA write operation
- the R_KEY is used to characterize the access to the memory allocated by the first memory node 704 for accepting the RDMA write operation, and is used for combining
- the virtual address VA collectively determines the physical address of the storage unit used by the first memory node to receive the RDMA write operation, that is, implements mapping the virtual address to the physical address of the first memory of the first memory node 704.
- the first memory node 704 also generates VA and R_KEY, and sends the VA and R_KEY to the first processing node 702, and the first processing node 702 sends the VA and the R_KEY to the second computing device.
- the VA is used to indicate the virtual address of the memory allocated by the first memory node 704 for accepting the RDMA write operation
- the R_KEY is used to characterize the access to the memory allocated by the first memory node 704 for accepting the RDMA write operation, and is used for combining
- the virtual address VA collectively determines the physical address of the storage unit used by the first memory node to receive the RDMA write operation, that is, implements mapping the virtual address to the physical address of the first memory of the first memory node 704.
- the second computing device receives an RDMA memory allocation message from the first processing node 702, where the RDMA memory allocation message carries a first node identifier and a first storage identifier, where the first node identifier is used A first memory node 704 is identified, the first storage identifier is used to characterize access to the first memory, and the first memory identifying the first memory node 704 is to accept a RDMA write operation.
- the first node identifier includes: a protection domain number, a first protection domain where the first memory node 704 is located, and a first memory node identifier, where the first memory node 704 is determined in the first protection domain. .
- the first memory node 704 and the second computing device are in the same protection domain, and the first node identifier includes only the first memory node identifier, and is used to determine the first memory node 704 in the protection domain.
- the first storage identifier includes: a first virtual address, a virtual address for identifying a first memory of the first memory node 704 for accepting an RDMA write operation, and a first remote memory key for Characterizing access to the first memory, and jointly determining the physical address of the first memory for receiving the RDMA write operation in conjunction with the virtual address, ie, mapping the first virtual address to the physical address of the first memory.
- the second computing device fetches data 708 for the RDMA write operation from the second memory, and encapsulates the data 708 with the first storage identifier into an RDMA Write Operation (RDMA WRITE) message, the RDMA WRITE message is used to indicate the first Memory node 702 writes the data 708 into a memory location of the first memory.
- RDMA WRITE RDMA Write Operation
- the method further includes: the second computing device generates a work queue element WQE, and puts the WQE into a sending queue SQ of the queue pair QP connected to the first processing node 702RDMA, where the WQE carries the first a node identifier, a first storage identifier, and a second storage identifier, wherein the second storage identifier is used to identify a second memory for data 708 for an RDMA write operation, the WQE being used to indicate that the data 708 in the second memory is copied to the first A memory in a memory unit.
- the RNIC of the second computing device fetches the WQE from the SQ and encapsulates the RDMA write operation message according to the WQE indication.
- the second storage identifier comprises a first address and a data address length of the data 708 in the second memory.
- the RNIC of the second computing device sends the RDMA WRITE message through the network 102 to the first memory node 704 indicated by the first node identifier.
- the method further includes: the first memory node 504 sends a response message that the RDMA write operation is completed to the second computing device, to indicate that the RDMA write operation is completed.
- the memory resource of the first computing device is separated from the computing resource.
- the data in the memory of the second computing device needs to be written into the first memory node, the data may not pass through the first processing node.
- An RDMA write operation between the memory of the second computing device and the first memory node is implemented.
- the RDMA write operation between the second computing device and the first memory node is implemented, and the data of the RDMA write operation does not pass through the second computing set computing resource and the first processing node, thereby shortening the data flow.
- the path saves the link resources, reduces the data transmission time, and the data transmission no longer passes through the processing node, thereby greatly saving the computing resources of the processing node.
- FIG. 9 is an application scenario of a remote direct data access method according to an embodiment of the present invention.
- the system includes a first computing device and a second computing device, where the first computing device and the second computing device
- the first computing device and the second computing device For the computing device shown in FIG. 2, only the processor, memory, and memory controller of the computing device are shown, other features and functions are not shown in FIG.
- the second processor of the second computing device is separate from the second memory, dividing the second computing device into a second processing node 902 and a second memory node 904 as shown in FIG.
- the second processing node 902 includes a second processor And other features and functions (not shown), the second memory node 904 includes a second memory controller 906 and a second memory, and the second processing node 902 communicates with the second memory node 904 over the network 102.
- the second processing node 902 further includes other memory resources of the second computing device 104 than the second memory node 904.
- the signaling diagram is as shown in FIG. 10, and the execution steps are:
- the second processing node 902 sends an RDMA memory request message to the first computing device over the network 102, the RDMA memory request message being used to request a target memory for the RDMA write operation from the first computing device.
- the RDMA memory request message carries data size information to be subjected to an RDMA write operation
- the first computing device allocates memory in the first memory for the RDMA write operation according to the received RDMA memory request message, and allocates a memory allocation message.
- the first computing device further generates a queue pair QP, associates the QP with the allocated memory, and sends the queue pair QP information to the second processing node 902, and establishes a queue-based QP with the second processing node 902. RDMA connection.
- the first computing device further generates a virtual address VA and a remote memory key R_KEY, and sends the VA and the R_KEY to the second processing node 902.
- VA is used to characterize the allocation of the first computing device
- the virtual address of the memory that accepts the RDMA write operation, the R_KEY is used to characterize access to the memory allocated by the first computing device for accepting the RDMA write operation, and is used to jointly determine the first memory for receiving the RDMA write in conjunction with the virtual address VA.
- the physical address of the operating storage unit that is, the physical address that maps the virtual address to the first memory.
- the first computing device further generates a queue pair QP, and associates the QP with the memory allocated for the RDMA memory request message, and sends the queue pair QP information to the second processing node 902, and the second processing node 902 Establish an RDMA connection based on queue-to-QP.
- the second processing node 902 receives an RDMA memory allocation message from the first computing device that belongs to the first computing device, where the RDMA memory allocation message carries the first node identifier and the first storage identifier, where the first node identifier is used to identify the first And a computing device, the first storage identifier is used to characterize access to the first memory, and a storage unit that identifies the first memory to accept an RDMA write operation.
- the first node identifier includes: a protection domain number, a first protection domain where the first computing device is located, and a first computing device identifier, configured to determine the first computing device in the first protection domain.
- the first computing device and the second memory node 904 are in the same protection domain, and the first node identifier includes only the first computing device identifier, and is used to determine the first computing device in the protection domain.
- the first storage identifier includes: a first virtual address (VA) and a first remote memory key (Remote Key, R_KEY).
- VA represents a virtual address of the storage unit for accepting the RDMA write operation
- R_KEY is used to represent the right to access the first memory, and is used to determine jointly with the virtual address VA.
- the first memory is configured to receive a physical address of a memory unit of the RDMA write operation, that is, to implement mapping the first virtual address VA to a physical address of the first memory.
- the second processing node 902 encapsulates an RDMA copy operation message, where the RDMA copy operation message carries a first node identifier, a first storage identifier, and a second storage identifier, where the second storage identifier is used to represent the right to access the second storage. And data 908 identifying the second memory for an RDMA write operation, the RDMA copy operation message being used to instruct the second memory node 904 to copy the data 908 to the memory location of the first memory of the first memory node.
- the second storage identifier includes a second virtual address, a virtual address for identifying the data 908 of the second memory for the RDMA write operation, a data length for identifying the data address length of the data 908, and a second remote end a memory key for characterizing access to the second memory, and a physical location of the storage unit that collectively determines the data of the second memory for the RDMA write operation in conjunction with the virtual address Address, that is, a physical address that maps the second virtual address to the second memory.
- the method further includes: the second processing node 902 generates a work queue element WQE, and puts the WQE into a queue QQ of the QP connected to the second memory node 904, the WQE carrying the A node identifier, a first storage identifier, and a second storage identifier, the WQE being used to instruct to copy the data 908 in the second memory to the storage unit of the first memory.
- the RNIC of the second processing node 902 fetches the WQE from the SQ, and encapsulates the RDMA copy operation message according to the WQE indication.
- the WQE further includes a second node identifier, configured to indicate the second memory node 904.
- the RNIC of the second processing node 902 sends an RDMA copy operation message to the second memory node 904 over the network 102.
- the second memory controller 906 indicates, according to the RDMA copy operation message, that after the message authority is verified, the data 908 of the second storage identifier is extracted, and the RDMAWRITE message is encapsulated in combination with the first storage identifier, and the RDMA WRITE message is used to indicate the data 908. Writing into the storage unit of the first memory indicated by the first storage identifier.
- the second memory controller 906 sends an RDMA write operation message over the network 102 to the first computing device indicated by the first node identification.
- the RNIC of the first computing device after verifying the message authority, writes the data 908 into the storage unit of the first memory indicated by the first storage identifier.
- the method further includes: the first computing device sends an RDMA response message to the second memory node 904, where the RDMA write operation is completed, and the second memory node 904 sends the RDMA response message to the second processing node. 902.
- the method further includes: the first computing device sends an RDMA response message to the second processing node 902, to indicate that the RDMA write operation is completed.
- the memory resource of the second computing device is separated from the computing resource.
- the RDMA copy operation message is added, indicating The two memory nodes directly write data to the memory of the first computing device, and implement an RDMA write operation between the second memory node and the first computing device.
- the RDMA write operation between the second memory node and the first computing device is implemented, and the data of the RDMA write operation does not pass the computing resources of the second processing node and the first computing device, thereby shortening the data flow.
- the path saves the link resources, reduces the data transmission time, and the data transmission no longer passes through the processing node, thereby greatly saving the computing resources of the processing node.
- the first computing device includes a first processing node and a first memory node
- the second computing device includes a second processing node and a second memory node.
- the second memory node performs an RDMA write operation on the first memory node, including:
- the second processing node sends an RDMA memory request message to the first processing node, where the RDMA memory request message is used to request the first processing node for the target memory for the RDMA write operation.
- the second processing node receives an RDMA memory allocation message from the first processing node, where the RDMA memory allocation message carries a first node identifier and a first storage identifier, where the first node identifier is used to indicate the a first memory node, the first storage identifier being used to indicate a storage unit in the first memory node for accepting the RDMA write operation.
- the second processing node encapsulates an RDMA copy operation message, where the RDMA copy operation message carries the first node identifier, the first storage identifier, and the second storage identifier, where the second storage identifier is used to indicate a memory address of the data in the second memory node for the RDMA write operation;
- the second processing node sends the RDMA copy operation message to the second memory node, instructing the second memory node to determine the first memory node according to the first node identifier, The data in the storage unit indicated by the second storage identifier is written into the storage unit of the first memory node indicated by the first storage identifier.
- the first processing node of the first computing device is separated from the first memory node, where the first processing node and the first processing node are two separate nodes, and the two communicate through the network.
- the first processing node of the first computing device is not separated from the first memory node, and the first processing node and the first memory node are on the same computing device node, and the two are indicated by the same node identifier.
- the method 1100 further includes: the second processing node generates a work queue element WQE, and puts the WQE into a queue queue Q of the QP connection of the second memory node RDMA connection, where the WQE carries The first node identifier, the first storage identifier, and the second storage identifier are used to indicate that data in the storage unit indicated by the second storage identifier is copied to the storage unit indicated by the first storage identifier And the second processing node encapsulates the RDMA copy operation message, including: extracting the WQE from the sending queue SQ of the QP, and encapsulating the RDMA copy operation message according to the WQE.
- the first node identifier includes:
- a protection domain number which is used to identify a protection domain where the first memory node is located
- the first memory node identifier is used to identify the first memory node in the protection domain.
- the first memory node and the second memory node are in the same protection domain, and the first node identifier includes:
- the first memory node identifier is used to identify the first memory node in the same protection domain.
- the first storage identifier includes:
- a first virtual address configured to identify a virtual address of the storage node of the first memory node for receiving the RDMA write operation at the first processing node
- a first remote memory key for characterizing access to a storage device of the first memory node, and determining, in conjunction with the first virtual address, a physics of a storage unit of the first memory node for receiving an RDMA write operation address.
- the second storage identifier includes:
- a second virtual address configured to identify a virtual address of the data of the second memory node for the RDMA write operation in the second processing node
- a second remote memory key for characterizing access to the second memory node storage device, and determining, in conjunction with the second virtual address, the physics of the data for the RDMA write operation in the second memory node address.
- the method further includes: receiving an RDMA response message of the second memory node, where the RDMA response message is used to indicate The RDMA write operation has been completed.
- an RDMA write operation between separate memory nodes or between separate memory nodes and memory of other computing devices can be implemented by the RDMA copy operation message indication.
- the path of the data flow is shortened, the link resources are saved, the data transmission time is reduced, and the data transmission is no longer processed by the processing node or the computing device, thereby greatly reducing the computing resources of the processing node or the computing device.
- FIG. 12 is an exemplary flowchart of an RDMA data copying method 1200 according to an embodiment of the present invention.
- the first computing device includes a first processing node and a first memory node
- the second computing device includes a second processing node and a second memory node.
- the second memory node performs an RDMA write operation on the first memory node, including:
- the second memory node receives an RDMA copy operation message from the second processing node, where the RDMA copy operation message carries a first node identifier, a first storage identifier, and a second storage identifier, where the first node identifier
- the first storage identifier is used to indicate a storage unit in the first memory node for accepting an RDMA write operation
- the second storage identifier is used to indicate the second memory a node for data of the RDMA write operation
- the second memory node extracts the data indicated by the second storage identifier according to the RDMA copy operation message, and encapsulates an RDMA write operation message according to the first storage identifier, where the RDMA write operation message includes Determining data of the RDMA write operation and the first storage identifier;
- the second memory node sends the RDMA write operation message to the first memory node indicated by the first node identifier, and instructs the first memory node to write the data into the storage unit indicated by the first storage identifier.
- the first processing node of the first computing device is separated from the first memory node, where the first processing node and the first processing node are two separate nodes, and the two communicate through the network.
- the first processing node of the first computing device is not separated from the first memory node, and the first processing node and the first memory node are on the same computing device node, and the two are indicated by the same node identifier.
- the first node identifier includes:
- a protection domain number which is used to identify a protection domain where the first memory node is located
- the first memory node identifier is used to identify the first memory node in the protection domain.
- the first memory node and the second memory node are in the same protection domain, and the first node identifier includes:
- the first memory node identifier is used to identify the first memory node in the same protection domain.
- the first storage identifier includes:
- a first virtual address configured to identify a virtual address of the storage node of the first memory node for receiving the RDMA write operation at the first processing node
- a first remote memory key for characterizing access to a storage device of the first memory node, and determining, in conjunction with the first virtual address, a physics of a storage unit of the first memory node for receiving an RDMA write operation address.
- the second storage identifier includes:
- a second virtual address configured to identify a virtual address of the data of the second memory node for the RDMA write operation in the second processing node
- a second remote memory key for characterizing access to the second memory node storage device, and determining, in conjunction with the second virtual address, the physics of the data for the RDMA write operation in the second memory node address.
- the method 1200 further includes: receiving an RDMA response message of the first memory node, where the RDMA response message is used to indicate that the RDMA write operation is completed.
- the method 1200 further includes sending the RDMA response message to the second processing node.
- an RDMA write operation between separate memory nodes or between separate memory nodes and memory of other computing devices can be implemented by the RDMA copy operation message indication.
- the path of the data flow is shortened, the link resources are saved, the data transmission time is reduced, and the data transmission is no longer processed by the processing node or the computing device, thereby greatly reducing the computing resources of the processing node or the computing device.
- FIG. 13 is an exemplary flowchart of an RDMA data copying method 1300 according to an embodiment of the present invention.
- the first computing device includes a first processing node and a first memory node.
- the second storage device of the second computing device performs an RDMA write operation on the first memory node, including:
- the second computing device sends an RDMA memory request message to the first processing node, where the RDMA memory request message is used to request a target memory for an RDMA write operation from the first processing node.
- the second computing device receives an RDMA memory allocation message from the first processing node, where the RDMA memory allocation message carries a first node identifier and a first storage identifier, where the first node identifier is used to indicate the a first memory node, where the first storage identifier is used to indicate a storage unit in the first memory node for accepting the RDMA write operation;
- the second computing device encapsulates an RDMA write operation message, where the RDMA write operation message carries data for the RDMA write operation and the first storage identifier.
- the second computing device sends the RDMA write operation message to the first memory node indicated by the first node identifier, instructing the first memory node to write the data into the first storage. Identifies the indicated storage unit.
- the method 1300 further includes: the second computing device generates a work queue element WQE, And placing the WQE into a queue QS of the RTP connection established by the first processing node, where the WQE carries the first node identifier, the first storage identifier, and the second a storage identifier, configured to indicate that data in the storage unit indicated by the second storage identifier is copied to the storage unit indicated by the first storage identifier, where the second storage identifier is used to indicate that the second storage device is used Data of the RDMA write operation; the second computing device encapsulating the RDMA write operation message includes: the second computing device extracting the WQE from the send queue SQ of the QP, and extracting the WQE according to the WQE The data indicated by the second storage identifier is encapsulated according to the first storage identifier, and the RDMA write operation message is encapsulated.
- the first node identifier includes:
- a protection domain number which is used to identify a protection domain where the first memory node is located
- the first memory node identifier is used to identify the first memory node in the protection domain.
- the first memory node and the second computing device are in the same protection domain, and the first node identifier includes:
- the first memory node identifier is used to identify the first memory node in the same protection domain.
- the first storage identifier includes:
- a first virtual address configured to identify a virtual address of the storage node of the first memory node for receiving the RDMA write operation at the first processing node
- a first remote memory key for characterizing access to a storage device of the first memory node, and determining, in conjunction with the first virtual address, a physics of a storage unit of the first memory node for receiving an RDMA write operation address.
- the method further includes: receiving an RDMA response message of the first memory node, The RDMA reply message is used to indicate that the RDMA write operation has completed.
- an RDMA write operation between the computing device and the memory node can be implemented.
- the path of the data stream is shortened, the link resources are saved, the data transmission time is reduced, and the data transmission is no longer processed by the processing node or the computing device, thereby greatly reducing the computing resources of the processing node and the computing device.
- FIG. 14 is a schematic diagram showing the logical structure of an RDMA copying apparatus 1400 according to an embodiment of the present invention.
- the first computing device includes a first processing node and a first memory node. When the device 1400 is separated from the second memory node of the device 1400, it is used for control.
- the second memory node performs an RDMA write operation on the first memory node, including:
- the sending unit 1402 the first processing node sends an RDMA memory request message, where the RDMA memory request message is used to request the first processing node for a target memory for an RDMA write operation;
- the receiving unit 1404 is configured to receive an RDMA memory allocation message from the first processing node, where the RDMA memory allocation message carries a first node identifier and a first storage identifier, where the first node identifier is used to indicate the first a memory node, the first storage identifier is used to indicate a storage unit in the first memory node for accepting the RDMA write operation;
- the encapsulating unit 1406 is configured to encapsulate an RDMA copy operation message, where the RDMA copy operation message carries the first node identifier, the first storage identifier, and the second storage identifier, where the second storage identifier is used to indicate the a memory address of data for the RDMA write operation in the second memory node;
- the sending unit 1402 is further configured to send the RDMA copy operation message to the second memory node, and instruct the second memory node to determine the first memory node according to the first node identifier, and the second The data in the storage unit indicated by the storage identifier is written to the storage unit of the first memory node indicated by the first storage identifier.
- the first processing node of the first computing device is separated from the first memory node, where the first processing node and the first processing node are two separate nodes, and the two communicate through the network.
- the first processing node of the first computing device is not separated from the first memory node, and the first processing node and the first memory node are on the same computing device node, and the two are indicated by the same node identifier.
- the apparatus 1400 further includes: a generating unit, configured to generate a work queue element WQE, and put the WQE into a queue QQ of the second memory node RDMA connection, where the WQE carries the The first node identifier, the first storage identifier, and the second storage identifier are used to indicate that data in the storage unit indicated by the second storage identifier is copied to the storage unit indicated by the first storage identifier;
- the encapsulating unit 1406 is configured to encapsulate the RDMA copy operation message, and the encapsulating unit 1406 extracts the WQE from the sending queue SQ of the QP, and encapsulates the RDMA copy operation message according to the WQE.
- the first node identifier includes:
- a protection domain number which is used to identify a protection domain where the first memory node is located
- the first memory node identifier is used to identify the first memory node in the protection domain.
- the first memory node and the second memory node are in the same protection domain, and the first node identifier includes:
- the first memory node identifier is used to identify the first memory node in the same protection domain.
- the first storage identifier includes:
- a first virtual address configured to identify a virtual address of the storage node of the first memory node for receiving the RDMA write operation at the first processing node
- a first remote memory key for characterizing access to a storage device of the first memory node, and determining, in conjunction with the first virtual address, a physics of a storage unit of the first memory node for receiving an RDMA write operation address.
- the second storage identifier includes:
- a second virtual address configured to identify a virtual address of the data of the second memory node for the RDMA write operation in the second processing node
- a second remote memory key for characterizing access to the second memory node storage device, and determining, in conjunction with the second virtual address, the physics of the data for the RDMA write operation in the second memory node address.
- the receiving unit 1404 is further configured to: receive an RDMA response message of the second memory node, where the RDMA response message is used to indicate that the RDMA write operation is completed.
- an RDMA write operation between separate memory nodes or between separate memory nodes and memory of other computing devices can be implemented by the RDMA copy operation message indication.
- the path of the data flow is shortened, the link resources are saved, the data transmission time is reduced, and the data transmission is no longer processed by the processing node or the computing device, thereby greatly reducing the computing resources of the processing node or the computing device.
- FIG. 15 is a schematic diagram showing the logical structure of an RDMA copying apparatus 1500 according to an embodiment of the present invention.
- the first computing device includes a first processing node and a first memory node.
- the first memory node performs an RDMA write operation, including:
- the receiving unit 1502 is configured to receive an RDMA copy operation message from the second processing node, where the RDMA copy operation message carries a first node identifier, a first storage identifier, and a second storage identifier, where the first node identifier is used by Instructing the first memory node, the first storage identifier is used to indicate a storage unit in the first memory node for accepting an RDMA write operation, and the second storage identifier is used to indicate the second memory node Data for the RDMA write operation;
- Encapsulating unit 1504 configured to fetch the second storage according to the RDMA copy operation message
- the data indicated by the identifier, the RDMA write operation message is encapsulated according to the first storage identifier, and the RDMA write operation message includes data of the RDMA write operation and the first storage identifier;
- the sending unit 1506 is configured to send the RDMA write operation message to the first memory node indicated by the first node identifier, and instruct the first memory node to write the data into the storage unit indicated by the first storage identifier.
- the first processing node of the first computing device is separated from the first memory node, where the first processing node and the first processing node are two separate nodes, and the two communicate through the network.
- the first processing node of the first computing device is not separated from the first memory node, and the first processing node and the first memory node are on the same computing device node, and the two are indicated by the same node identifier.
- the first node identifier includes:
- a protection domain number which is used to identify a protection domain where the first memory node is located
- the first memory node identifier is used to identify the first memory node in the protection domain.
- the first memory node and the second memory node are in the same protection domain, and the first node identifier includes:
- the first memory node identifier is used to identify the first memory node in the same protection domain.
- the first storage identifier includes:
- a first virtual address configured to identify a virtual address of the storage node of the first memory node for receiving the RDMA write operation at the first processing node
- a first remote memory key for characterizing access to a storage device of the first memory node, and determining, in conjunction with the first virtual address, a physics of a storage unit of the first memory node for receiving an RDMA write operation address.
- the second storage identifier includes:
- a second virtual address configured to identify a virtual address of the data of the second memory node for the RDMA write operation in the second processing node
- a second remote memory key for characterizing access to the second memory node storage device, and determining, in conjunction with the second virtual address, the physics of the data for the RDMA write operation in the second memory node address.
- the receiving unit 1502 is further configured to: receive the RDMA response cancellation of the first memory node.
- the RDMA response message is used to indicate that the RDMA write operation has completed.
- the sending unit 1506 is further configured to: send the RDMA response message to the second processing node.
- an RDMA write operation between separate memory nodes or between separate memory nodes and memory of other computing devices can be implemented by the RDMA copy operation message indication.
- the path of the data flow is shortened, the link resources are saved, the data transmission time is reduced, and the data transmission is no longer processed by the processing node or the computing device, thereby greatly reducing the computing resources of the processing node or the computing device.
- FIG. 16 is a schematic diagram showing the logical structure of an RDMA copying apparatus 1600 according to an embodiment of the present invention.
- the first computing device includes a first processing node and a first memory node. When the first processing node is separated from the first memory node, the first processing node is used for the associated device.
- the second storage device of 1600 performs an RDMA write operation on the first memory node, including:
- the sending unit 1602 is configured to send, to the first processing node, an RDMA memory request message, where the RDMA memory request message is used to request, by the first processing node, a target memory for an RDMA write operation;
- the receiving unit 1604 is configured to receive an RDMA memory allocation message from the first processing node, where the RDMA memory allocation message carries a first node identifier and a first storage identifier, where the first node identifier is used to indicate the first a memory node, the first storage identifier is used to indicate a storage unit in the first memory node for accepting the RDMA write operation;
- Encapsulating unit 1606, configured to encapsulate an RDMA write operation message, where the RDMA write operation message carries data for the RDMA write operation and the first storage identifier;
- the sending unit 1602 is further configured to send the RDMA write operation message to the first memory node indicated by the first node identifier, and instruct the first memory node to write the data into the first Stores the storage unit indicated by the identifier.
- the apparatus 1600 further includes: a generating unit, configured to generate a work queue element WQE, and put the WQE into a queue QQ of the RDMA connection established with the first processing node, the WQE
- the first node identifier, the first storage identifier, and the second storage identifier are used to indicate that data in the storage unit indicated by the second storage identifier is copied to the storage indicated by the first storage identifier
- the second storage identifier is used to indicate data of the second storage device for the RDMA write operation
- the encapsulation unit 1606 is configured to encapsulate an RDMA write operation message, including: a sending queue from the QP Extracting the WQE in the SQ, according to the WQE, Extracting the data indicated by the second storage identifier, and packaging the RDMA write operation message according to the first storage identifier.
- the first node identifier includes:
- a protection domain number which is used to identify a protection domain where the first memory node is located
- the first memory node identifier is used to identify the first memory node in the protection domain.
- the first memory node and the second computing device are in the same protection domain, and the first node identifier includes:
- the first memory node identifier is used to identify the first memory node in the same protection domain.
- the first storage identifier includes:
- a first virtual address configured to identify a virtual address of the storage node of the first memory node for receiving the RDMA write operation at the first processing node
- a first remote memory key for characterizing access to a storage device of the first memory node, and determining, in conjunction with the first virtual address, a physics of a storage unit of the first memory node for receiving an RDMA write operation address.
- the receiving unit 1604 is further configured to: receive an RDMA response message of the first memory node, where the RDMA response message is used to indicate that the RDMA write operation is completed.
- an RDMA write operation between the computing device and the memory node can be implemented.
- the path of the data stream is shortened, the link resources are saved, the data transmission time is reduced, and the data transmission is no longer processed by the processing node or the computing device, thereby greatly reducing the computing resources of the processing node and the computing device.
- FIG. 17 is a schematic diagram showing the hardware structure of a computing device device 1700 according to an embodiment of the invention.
- computing device 1700 includes a processor 1702, a memory 1704, an input/output interface 1706, a communication interface 1708, and a bus 1710.
- the processor 1702, the memory 1704, the input/output interface 1706, and the communication interface 1708 implement a communication connection with each other through the bus 1710.
- the processor 1702 can be a general-purpose central processing unit (CPU), a microprocessor, an application-specific integrated circuit (ASIC), or one or more integrated circuits for executing related programs.
- CPU central processing unit
- ASIC application-specific integrated circuit
- the memory 1704 can be a read only memory (ROM), a static memory device, a dynamic memory device, or a random access memory (RAM).
- the memory 1704 can memory the operating system and other applications. Implemented by software or firmware
- the program code for implementing the technical solution provided by the embodiment of the present invention is stored in the memory 1704 and executed by the processor 1702.
- the input/output interface 1706 is for receiving input data and information, and outputting data such as operation results.
- Communication interface 1708 enables communication between computing device 1700 and other devices or communication networks using transceivers such as, but not limited to, transceivers.
- Bus 1710 can include a path for communicating information between various components of computing device 1700, such as processor 1702, memory 1704, input/output interface 1706, and communication interface 1708.
- computing device 1700 shown in FIG. 17 only shows the processor 1702, the memory 1704, the input/output interface 1706, the communication interface 1708, and the bus 1710, in a specific implementation process, those skilled in the art It should be understood that computing device 1700 also includes other devices necessary to achieve proper operation. Also, those skilled in the art will appreciate that computing device 1700 can also include hardware devices that implement other additional functions, depending on the particular needs. Moreover, those skilled in the art will appreciate that computing device 1700 may also only include the components necessary to implement embodiments of the present invention, and does not necessarily include all of the devices shown in FIG.
- the hardware structure shown in FIG. 17 and the foregoing description are applicable to various RDMA copying methods, devices, and systems provided by the embodiments of the present invention, and are applicable to performing various virtual data center methods provided by the embodiments of the present invention.
- the disclosed systems, devices, and methods may be implemented in other manners.
- the device embodiments described above are merely illustrative.
- the division of the modules is only a logical function division, and may be implemented in another manner, for example, multiple modules or components may be combined or may be Integrate into another system, or some features can be ignored or not executed.
- the mutual coupling or direct coupling or communication connection shown or discussed may be an indirect coupling or communication connection through some interface, device or module, and may be electrical, mechanical or otherwise.
- the modules described as separate components may or may not be physically separated.
- the components displayed as modules may or may not be physical modules, that is, may be located in one place, or may be distributed to multiple network modules. Some or all of the modules may be selected according to actual needs to achieve the purpose of the solution of the embodiment.
- each functional module in each embodiment of the present invention may be integrated into one processing module, or each module may exist physically separately, or two or more modules may be integrated into one module.
- the above integrated modules can be implemented in the form of hardware or hardware plus software. The form of the functional module is implemented.
- the above-described integrated module implemented in the form of a software function module can be stored in a computer readable memory medium.
- the software function module described above resides in a memory medium and includes instructions for causing a computer device (which may be a personal computer, server, or network device, etc.) to perform some of the steps of the methods described in various embodiments of the present invention.
- the foregoing memory medium includes: a mobile hard disk, a read-only memory (English: Read-Only Memory, ROM for short), a random access memory (English: Random Access Memory, RAM), a magnetic disk or an optical disk, and the like.
- the media for the memory program code includes: a mobile hard disk, a read-only memory (English: Read-Only Memory, ROM for short), a random access memory (English: Random Access Memory, RAM), a magnetic disk or an optical disk, and the like.
- the media for the memory program code includes: a mobile hard disk, a read-only memory (English: Read-Only Memory, ROM for short
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Human Computer Interaction (AREA)
- Bus Control (AREA)
Abstract
本发明实施例提供了一种远程直接数据存取RDMA拷贝方法、设备和系统,在计算设备的计算资源与存储资源分离的情况下,实现了分离存储资源节点之间或分离存储资源与计算设备之间的RDMA拷贝操作,以此缩短了数据流经过的路径,节省了链路资源,降低了数据传输耗时。该方法包括:第二处理节点向第一处理节点发送RDMA内存请求消息,所述RDMA内存请求消息用于向第一处理节点请求用于RDMA写操作的目标内存;第二处理节点接收来自所述第一处理节点的RDMA内存分配消息;第二处理节点封装RDMA拷贝操作消息;第二处理节点将所述RDMA拷贝操作消息发送给所述第二内存节点,指示所述第二内存节点将数据写入所述第一内存节点的存储单元。
Description
本发明实施例涉及计算机领域,尤其涉及一种远程直接数据存取(Remote Direct Memory Access,简称RDMA)拷贝方法、设备和系统。
随着计算机网络技术的迅猛发展,网络的性能目前已经达到每秒100千兆比特级别,如何充分利用高速网络的特性是我们面对的一个重要问题。RDMA是为了解决网络传输中数据处理的延迟而产生的,RDMA使一台计算设备可以直接将信息传送到另一台计算设备的内存中,消除了外部存储器复制和文本交换操作。这项技术通过减少处理器开销和减少内存的拷贝降低了时延,提高了网络利用率。
RDMA解决了现有以计算设备为单位的数据快速交互,然而随着提高资源利用率的需求越来越受到重视,计算设备的存储资源与计算资源相互分离,形成存储资源池,RDMA方式的数据交互也被从计算设备与计算设备之间模式的数据交互引申到计算设备的分离部件之间的数据交互,由此带来的变化对RDMA带来了新的需求。即当计算设备的存储资源与计算资源分离后,当出现大量远端内存数据拷贝的需求时,如何通过RDMA技术手段完成数据拷贝。
发明内容
有鉴于此,本发明实施例提供了一种远程直接数据存取方法、设备和系统,在计算设备的计算资源与其存储资源分离的情况下,实现了分离存储资源节点部件的RDMA操作。
第一方面,本发明实施例提供了一种远程直接数据存取RDMA数据拷贝的方法,第一计算设备包括第一处理节点和第一内存节点,第二计算设备包括第二处理节点和第二内存节点,包括:
所述第二处理节点向所述第一处理节点发送RDMA内存请求消息,所述RDMA内存请求消息用于向所述第一处理节点请求用于RDMA写操作的目
标内存;
所述第二处理节点接收来自所述第一处理节点的RDMA内存分配消息,所述RDMA内存分配消息携带第一节点标识和第一存储标识,所述第一节点标识用于指示所述第一内存节点,所述第一存储标识用于指示所述第一内存节点中用于接受所述RDMA写操作的存储单元;
所述第二处理节点封装RDMA拷贝操作消息,所述RDMA拷贝操作消息中携带所述第一节点标识、所述第一存储标识和第二存储标识,所述第二存储标识用于指示所述第二内存节点中用于所述RDMA写操作的数据的内存地址;
所述第二处理节点将所述RDMA拷贝操作消息发送给所述第二内存节点,指示所述第二内存节点根据所述第一节点标识确定所述第一内存节点,将所述第二存储标识指示的存储单元中的数据写入所述第一存储标识指示的第一内存节点的存储单元。
结合第一方面,在第一种可能的实现方式中,所述第二处理节点接收来自所述第一处理节点的RDMA内存分配消息之后,还包括:
所述第二处理节点生成工作队列元素WQE,并将所述WQE放入所述第二内存节点RDMA连接的队列对QP的发送队列SQ中,所述WQE携带所述第一节点标识、所述第一存储标识和所述第二存储标识,用于指示将所述第二存储标识指示的存储单元中的数据拷贝至所述第一存储标识指示的存储单元中;
则所述第二处理节点封装RDMA拷贝操作消息,包括:从所述QP的发送队列SQ中取出所述WQE,根据所述WQE,封装所述RDMA拷贝操作消息。
结合第一方面或第一方面或以上任一种可能的实现方式,在第一方面第二种可能的实现方式中,所述第一节点标识包括:
保护域编号,用于标识所述第一内存节点所在的保护域;
第一内存节点标识,用于在所述保护域中标识所述第一内存节点。
结合第一方面或第一方面或以上任一种可能的实现方式,在第一方面第三种可能的实现方式中,所述第一内存节点和所述第二内存节点在同一保护域,所述第一节点标识包括:
第一内存节点标识,用于在所述同一保护域中标识所述第一内存节点。
结合第一方面或第一方面或以上任一种可能的实现方式,在第一方面第四种可能的实现方式中,所述第一存储标识包括:
第一虚拟地址,用于标识所述第一内存节点的用于接收所述RDMA写操作的存储单元的在所述第一处理节点的虚拟地址;和
第一远端内存钥匙,用于表征访问所述第一内存节点的存储设备的权限,以及结合所述第一虚拟地址确定所述第一内存节点的用于接收RDMA写操作的存储单元的物理地址。
结合第一方面或第一方面或以上任一种可能的实现方式,在第一方面第五种可能的实现方式中,所述第二存储标识包括:
第二虚拟地址,用于标识所述第二内存节点的用于RDMA写操作的数据在所述第二处理节点中的虚拟地址;
数据长度,用于标识所述第二内存节点的用于RDMA写操作的数据的长度;和
第二远端内存钥匙,用于表征访问所述第二内存节点存储设备的权限,以及结合所述第二虚拟地址确定所述用于RDMA写操作的数据在所述第二内存节点中的物理地址。
结合第一方面或第一方面或以上任一种可能的实现方式,在第一方面第六种可能的实现方式中,所述第二处理节点将所述RDMA拷贝操作消息发送给所述第二内存节点之后,进一步包括:接收所述第二内存节点的RDMA应答消息,所述RDMA应答消息用于指示所述RDMA写操作已完成。
第二方面,本发明实施例提供了一种远程直接数据存取RDMA数据拷贝的设备,包括:处理器、存储器、总线和通信接口;
所述存储器用于存储计算机执行指令,所述处理器与所述存储器通过所述总线连接,当所述计算设备运行时,所述处理器执行所述存储器存储的所述计算机执行指令,以使所述远程直接数据存取RDMA数据拷贝的设备执行第一方面或第一方面任一种可能的实现方式的方法。
第三方面,本发明实施例提供了一种远程直接数据存取RDMA数据拷贝的方法,第一计算设备包括第一处理节点和第一内存节点,第二计算设备包括第二处理节点和第二内存节点,包括:
所述第二内存节点接收来自所述第二处理节点的RDMA拷贝操作消息,所述RDMA拷贝操作消息携带第一节点标识、第一存储标识和第二存储标
识,所述第一节点标识用于指示所述第一内存节点,所述第一存储标识用于指示所述第一内存节点中用于接受RDMA写操作的存储单元,所述第二存储标识用于指示所述第二内存节点用于所述RDMA写操作的数据;
第二内存节点根据所述RDMA拷贝操作消息,取出所述第二存储标识指示的所述数据,根据所述第一存储标识,封装RDMA写操作消息,所述RDMA写操作消息中包含所述RDMA写操作的数据和所述第一存储标识;
第二内存节点将所述RDMA写操作消息发送给所述第一节点标识指示的第一内存节点,指示第一内存节点将所述数据写入所述第一存储标识指示的存储单元。
结合第三方面,在第一种可能的实现方式中,所述第一节点标识包括:
保护域编号,用于标识所述第一内存节点所在的保护域;
第一内存节点标识,用于在所述保护域中标识所述第一内存节点。
结合第三方面或第三方面或以上任一种可能的实现方式,在第三方面第二种可能的实现方式中,所述第一内存节点和所述第二内存节点在同一保护域,所述第一节点标识包括:
第一内存节点标识,用于在所述同一保护域中标识所述第一内存节点。
结合第三方面或第三方面或以上任一种可能的实现方式,在第三方面第三种可能的实现方式中,所述第一存储标识包括:
第一虚拟地址,用于标识所述第一内存节点的用于接收所述RDMA写操作的存储单元的在所述第一处理节点的虚拟地址;和
第一远端内存钥匙,用于表征访问所述第一内存节点的存储设备的权限,以及结合所述第一虚拟地址确定所述第一内存节点的用于接收RDMA写操作的存储单元的物理地址。
结合第三方面或第三方面或以上任一种可能的实现方式,在第三方面第四种可能的实现方式中,所述第二存储标识包括:
第二虚拟地址,用于标识所述第二内存节点的用于RDMA写操作的数据在所述第二处理节点中的虚拟地址;
数据长度,用于标识所述第二内存节点的用于RDMA写操作的数据的长度;和
第二远端内存钥匙,用于表征访问所述第二内存节点存储设备的权限,以及结合所述第二虚拟地址确定所述用于RDMA写操作的数据在所述第二
内存节点中的物理地址。
结合第三方面或第三方面或以上任一种可能的实现方式,在第三方面第五种可能的实现方式中,还包括:接收所述第一内存节点的RDMA应答消息,所述RDMA应答消息用于指示RDMA写操作已完成。
结合第三方面或第三方面或以上任一种可能的实现方式,在第三方面第六种可能的实现方式中,还包括,将所述RDMA应答消息发送给所述第二处理节点。
第四方面,本发明实施例提供了一种远程直接数据存取RDMA数据拷贝的设备,包括:处理器、存储器、总线和通信接口;
所述存储器用于存储计算机执行指令,所述处理器与所述存储器通过所述总线连接,当所述计算设备运行时,所述处理器执行所述存储器存储的所述计算机执行指令,以使所述远程直接数据存取RDMA数据拷贝的设备执行第三方面或第三方面任一种可能的实现方式的方法。
第五方面,本发明实施例提供了一种远程直接数据存取RDMA数据拷贝的方法,第一计算设备包括第一处理节点和第一内存节点,包括:
第二计算设备向所述第一处理节点发送RDMA内存请求消息,所述RDMA内存请求消息用于向所述第一处理节点请求用于RDMA写操作的目标内存;
所述第二计算设备接收来自所述第一处理节点的RDMA内存分配消息,所述RDMA内存分配消息携带第一节点标识和第一存储标识,所述第一节点标识用于指示所述第一内存节点,所述第一存储标识用于指示所述第一内存节点中用于接受所述RDMA写操作的存储单元;
所述第二计算设备封装RDMA写操作消息,所述RDMA写操作消息中携带用于所述RDMA写操作的数据和所述第一存储标识;
所述第二计算设备将所述RDMA写操作消息发送给所述第一节点标识指示的所述第一内存节点,指示所述第一内存节点将所述数据写入所述第一存储标识指示的存储单元。
结合第五方面,在第一种可能的实现方式中,还包括:
所述第二计算设备生成工作队列元素WQE,并将所述WQE放入与所述第一处理节点建立的RDMA连接的队列对QP的发送队列SQ中,所述WQE携带所述第一节点标识、所述第一存储标识和所述第二存储标识,用于指示
将所述第二存储标识指示的存储单元中的数据拷贝至所述第一存储标识指示的存储单元中,所述第二存储标识用于指示所述第二存储设备用于所述RDMA写操作的数据;
则所述第二计算设备封装RDMA写操作消息包括:所述第二计算设备从所述QP的发送队列SQ中取出所述WQE,根据所述WQE,取出所述第二存储标识指示的所述数据,根据所述第一存储标识,封装所述RDMA写操作消息。
结合第五方面或第五方面或以上任一种可能的实现方式,在第五方面第二种可能的实现方式中,所述第一节点标识包括:
保护域编号,用于标识所述第一内存节点所在的保护域;
第一内存节点标识,用于在所述保护域中标识所述第一内存节点。
结合第五方面或第五方面或以上任一种可能的实现方式,在第五方面第三种可能的实现方式中,所述第一内存节点和所述第二计算设备在同一保护域,所述第一节点标识包括:
第一内存节点标识,用于在所述同一保护域中标识所述第一内存节点。
结合第五方面或第五方面或以上任一种可能的实现方式,在第五方面第四种可能的实现方式中,所述第一存储标识包括:
第一虚拟地址,用于标识所述第一内存节点的用于接收所述RDMA写操作的存储单元的在所述第一处理节点的虚拟地址;和
第一远端内存钥匙,用于表征访问所述第一内存节点的存储设备的权限,以及结合所述第一虚拟地址确定所述第一内存节点的用于接收RDMA写操作的存储单元的物理地址。
结合第五方面或第五方面或以上任一种可能的实现方式,在第五方面第五种可能的实现方式中,所述第二计算设备将所述RDMA写操作消息发送给所述第一节点标识指示的所述第一内存节点之后,进一步包括:接收所述第一内存节点的RDMA应答消息,所述RDMA应答消息用于指示RDMA写操作已完成。
第六方面,本发明实施例提供了一种远程直接数据存取RDMA数据拷贝的设备,其特征在于,包括:处理器、存储器、总线和通信接口;
所述存储器用于存储计算机执行指令,所述处理器与所述存储器通过所述总线连接,当所述计算设备运行时,所述处理器执行所述存储器存储的所
述计算机执行指令,以使所述远程直接数据存取RDMA数据拷贝的设备执行第五方面或第五方面任一种可能的实现方式的方法。
第七方面,本发明实施例提供了一种远程直接数据存取RDMA数据拷贝的装置,其特征在于,第一计算设备包括第一处理节点和第一内存节点,第二计算设备包括所述装置与第二内存节点,包括:
发送单元,所述第一处理节点发送RDMA内存请求消息,所述RDMA内存请求消息用于向所述第一处理节点请求用于RDMA写操作的目标内存;
接收单元,用于接收来自所述第一处理节点的RDMA内存分配消息,所述RDMA内存分配消息携带第一节点标识和第一存储标识,所述第一节点标识用于指示所述第一内存节点,所述第一存储标识用于指示所述第一内存节点中用于接受所述RDMA写操作的存储单元;
封装单元,用于封装RDMA拷贝操作消息,所述RDMA拷贝操作消息中携带所述第一节点标识、所述第一存储标识和第二存储标识,所述第二存储标识用于指示所述第二内存节点中用于所述RDMA写操作的数据的内存地址;
所述发送单元,还用于将所述RDMA拷贝操作消息发送给所述第二内存节点,指示所述第二内存节点根据所述第一节点标识确定所述第一内存节点,将所述第二存储标识指示的存储单元中的数据写入所述第一存储标识指示的第一内存节点的存储单元。
结合第七方面,在第一种可能的实现方式中,还包括生成单元,生成工作队列元素WQE,并将所述WQE放入所述第二内存节点RDMA连接的队列对QP的发送队列SQ中,所述WQE携带所述第一节点标识、所述第一存储标识和所述第二存储标识,用于指示将所述第二存储标识指示的存储单元中的数据拷贝至所述第一存储标识指示的存储单元中;
则所述封装单元用于封装RDMA拷贝操作消息,包括:所述封装单元从所述QP的发送队列SQ中取出所述WQE,根据所述WQE,封装所述RDMA拷贝操作消息。
结合第七方面或第七方面或以上任一种可能的实现方式,在第七方面第二种可能的实现方式中,所述第一节点标识包括:
保护域编号,用于标识所述第一内存节点所在的保护域;
第一内存节点标识,用于在所述保护域中标识所述第一内存节点。
结合第七方面或第七方面或以上任一种可能的实现方式,在第七方面第三种可能的实现方式中,所述第一内存节点和所述第二内存节点在同一保护域,所述第一节点标识包括:
第一内存节点标识,用于在所述同一保护域中标识所述第一内存节点。
结合第七方面或第七方面或以上任一种可能的实现方式,在第七方面第四种可能的实现方式中,所述第一存储标识包括:
第一虚拟地址,用于标识所述第一内存节点的用于接收所述RDMA写操作的存储单元的在所述第一处理节点的虚拟地址;和
第一远端内存钥匙,用于表征访问所述第一内存节点的存储设备的权限,以及结合所述第一虚拟地址确定所述第一内存节点的用于接收RDMA写操作的存储单元的物理地址。
结合第七方面或第七方面或以上任一种可能的实现方式,在第七方面第五种可能的实现方式中,所述第二存储标识包括:
第二虚拟地址,用于标识所述第二内存节点的用于RDMA写操作的数据在所述第二处理节点中的虚拟地址;
数据长度,用于标识所述第二内存节点的用于RDMA写操作的数据的长度;和
第二远端内存钥匙,用于表征访问所述第二内存节点存储设备的权限,以及结合所述第二虚拟地址确定所述用于RDMA写操作的数据在所述第二内存节点中的物理地址。
结合第七方面或第七方面或以上任一种可能的实现方式,在第七方面第六种可能的实现方式中,所述接收单元还用于:接收所述第二内存节点的RDMA应答消息,所述RDMA应答消息用于指示所述RDMA写操作已完成。
第八方面,本发明实施例提供了一种远程直接数据存取RDMA数据拷贝的装置,其特征在于,第一计算设备包括第一处理节点和第一内存节点,第二计算设备包括第二处理节点和所述装置,包括:
接收单元,用于接收来自所述第二处理节点的RDMA拷贝操作消息,所述RDMA拷贝操作消息携带第一节点标识、第一存储标识和第二存储标识,所述第一节点标识用于指示所述第一内存节点,所述第一存储标识用于指示所述第一内存节点中用于接受RDMA写操作的存储单元,所述第二存储标识用于指示所述第二内存节点用于所述RDMA写操作的数据;
封装单元,用于根据所述RDMA拷贝操作消息,取出所述第二存储标识指示的所述数据,根据所述第一存储标识,封装RDMA写操作消息,所述RDMA写操作消息中包含所述RDMA写操作的数据和所述第一存储标识;
发送单元,用于将所述RDMA写操作消息发送给所述第一节点标识指示的第一内存节点,指示第一内存节点将所述数据写入所述第一存储标识指示的存储单元。
结合第八方面,在第一种可能的实现方式中,所述第一节点标识包括:
保护域编号,用于标识所述第一内存节点所在的保护域;
第一内存节点标识,用于在所述保护域中标识所述第一内存节点。
结合第八方面或第八方面或以上任一种可能的实现方式,在第八方面第二种可能的实现方式中,所述第一内存节点和所述第二内存节点在同一保护域,所述第一节点标识包括:
第一内存节点标识,用于在所述同一保护域中标识所述第一内存节点。
结合第八方面或第八方面或以上任一种可能的实现方式,在第八方面第三种可能的实现方式中,所述第一存储标识包括:
第一虚拟地址,用于标识所述第一内存节点的用于接收所述RDMA写操作的存储单元的在所述第一处理节点的虚拟地址;和
第一远端内存钥匙,用于表征访问所述第一内存节点的存储设备的权限,以及结合所述第一虚拟地址确定所述第一内存节点的用于接收RDMA写操作的存储单元的物理地址。
结合第八方面或第八方面或以上任一种可能的实现方式,在第八方面第四种可能的实现方式中,所述第二存储标识包括:
第二虚拟地址,用于标识所述第二内存节点的用于RDMA写操作的数据在所述第二处理节点中的虚拟地址;
数据长度,用于标识所述第二内存节点的用于RDMA写操作的数据的长度;和
第二远端内存钥匙,用于表征访问所述第二内存节点存储设备的权限,以及结合所述第二虚拟地址确定所述用于RDMA写操作的数据在所述第二内存节点中的物理地址。
结合第八方面或第八方面或以上任一种可能的实现方式,在第八方面第五种可能的实现方式中,所述接收单元还用于:接收所述第一内存节点的
RDMA应答消息,所述RDMA应答消息用于指示RDMA写操作已完成。
结合第八方面或第八方面或以上任一种可能的实现方式,在第八方面第六种可能的实现方式中,所述发送单元还用于:将所述RDMA应答消息发送给所述第二处理节点。
第九方面,本发明实施例提供了一种远程直接数据存取RDMA数据拷贝的装置,其特征在于,第一计算设备包括第一处理节点和第一内存节点,包括:
发送单元,用于向所述第一处理节点发送RDMA内存请求消息,所述RDMA内存请求消息用于向所述第一处理节点请求用于RDMA写操作的目标内存;
接收单元,用于接收来自所述第一处理节点的RDMA内存分配消息,所述RDMA内存分配消息携带第一节点标识和第一存储标识,所述第一节点标识用于指示所述第一内存节点,所述第一存储标识用于指示所述第一内存节点中用于接受所述RDMA写操作的存储单元;
封装单元,用于封装RDMA写操作消息,所述RDMA写操作消息中携带用于所述RDMA写操作的数据和所述第一存储标识;
所述发送单元还用于,将所述RDMA写操作消息发送给所述第一节点标识指示的所述第一内存节点,指示所述第一内存节点将所述数据写入所述第一存储标识指示的存储单元。
结合第九方面,在第一种可能的实现方式中,还包括生成单元,所述生成单元用于生成工作队列元素WQE,并将所述WQE放入与所述第一处理节点建立的RDMA连接的队列对QP的发送队列SQ中,所述WQE携带所述第一节点标识、所述第一存储标识和所述第二存储标识,用于指示将所述第二存储标识指示的存储单元中的数据拷贝至所述第一存储标识指示的存储单元中,所述第二存储标识用于指示所述第二存储设备用于所述RDMA写操作的数据;
所述封装单元用于封装RDMA写操作消息,包括:从所述QP的发送队列SQ中取出所述WQE,根据所述WQE,取出所述第二存储标识指示的所述数据,根据所述第一存储标识,封装所述RDMA写操作消息。
结合第九方面或第九方面或以上任一种可能的实现方式,在第九方面第二种可能的实现方式中,所述第一节点标识包括:
保护域编号,用于标识所述第一内存节点所在的保护域;
第一内存节点标识,用于在所述保护域中标识所述第一内存节点。
结合第九方面或第九方面或以上任一种可能的实现方式,在第九方面第三种可能的实现方式中,所述第一内存节点和所述第二计算设备在同一保护域,所述第一节点标识包括:
第一内存节点标识,用于在所述同一保护域中标识所述第一内存节点。
结合第九方面或第九方面或以上任一种可能的实现方式,在第九方面第四种可能的实现方式中,所述第一存储标识包括:
第一虚拟地址,用于标识所述第一内存节点的用于接收所述RDMA写操作的存储单元的在所述第一处理节点的虚拟地址;和
第一远端内存钥匙,用于表征访问所述第一内存节点的存储设备的权限,以及结合所述第一虚拟地址确定所述第一内存节点的用于接收RDMA写操作的存储单元的物理地址。
结合第九方面或第九方面或以上任一种可能的实现方式,在第九方面第五种可能的实现方式中,所述接收单元还用于:接收所述第一内存节点的RDMA应答消息,所述RDMA应答消息用于指示RDMA写操作已完成。
第十方面,本发明实施例提供了一种远程直接数据存取RDMA数据拷贝的系统,其特征在于,包括第一计算设备和第二计算设备,第一计算设备包括第一处理节点和第一内存节点,第二计算设备包括第二处理节点和第二内存节点:
所述第二处理节点,用于向所述第一处理节点发送RDMA内存请求消息,所述RDMA内存请求消息用于向第一处理节点请求用于RDMA写操作的目标内存;
所述第一处理节点,用于根据接收到的所述RDMA写操作消息,向所述第一内存节点申请接受RDMA写操作的内存,并向所述第二处理节点发送RDMA内存分配消息,所述RDMA内存分配消息携带第一节点标识和第一存储标识,所述第一节点标识用于指示所述第一内存节点,所述第一存储标识用于指示所述第一内存节点中用于接受所述RDMA写操作的存储单元;
所述第二处理节点还用于:根据接收到的所述RDMA内存分配消息,封装RDMA拷贝操作消息,并将所述RDMA拷贝操作消息发送给所述第二内存节点,所述RDMA拷贝操作消息中携带所述第一节点标识、所述第一存储
标识和第二存储标识,所述第二存储标识用于指示所述第二内存节点中用于所述RDMA写操作的数据的内存地址;
所述第二内存节点,用于根据接收到的所述RDMA拷贝操作消息,取出所述第二存储标识指示的所述数据,根据所述第一存储标识,封装RDMA写操作消息,所述RDMA写操作消息中包含所述RDMA写操作的数据和所述第一存储标识,并将所述RDMA写操作消息发送给所述第一内存节点;
所述第一内存节点,用于根据接收到的所述RDMA写操作消息,将所述数据写到所述第一存储标识指示的存储单元中。
结合第十方面,在第一种可能的实现方式中,所述第二处理节点还用于:生成工作队列元素WQE,并将所述WQE放入所述第二内存节点RDMA连接的队列对QP的发送队列SQ中,所述WQE携带所述第一节点标识、所述第一存储标识和所述第二存储标识,用于指示将所述第二存储标识指示的存储单元中的数据拷贝至所述第一存储标识指示的存储单元中;
所述第二处理节点用于封装RDMA拷贝操作消息,包括:从所述QP的发送队列SQ中取出所述WQE,根据所述WQE,封装所述RDMA拷贝操作消息。
结合第十方面或第十方面或以上任一种可能的实现方式,在第十方面第二种可能的实现方式中,所述第一节点标识包括:
保护域编号,用于标识所述第一内存节点所在的保护域;
第一内存节点标识,用于在所述保护域中标识所述第一内存节点。
结合第十方面或第十方面或以上任一种可能的实现方式,在第十方面第三种可能的实现方式中,所述第一内存节点和所述第二内存节点在同一保护域,所述第一节点标识包括:
第一内存节点标识,用于在所述同一保护域中标识所述第一内存节点。
结合第十方面或第十方面或以上任一种可能的实现方式,在第十方面第四种可能的实现方式中,所述第一存储标识包括:
第一虚拟地址,用于标识所述第一内存节点的用于接收所述RDMA写操作的存储单元的在所述第一处理节点的虚拟地址;和
第一远端内存钥匙,用于表征访问所述第一内存节点的存储设备的权限,以及结合所述第一虚拟地址确定所述第一内存节点的用于接收RDMA写操作的存储单元的物理地址。
结合第十方面或第十方面或以上任一种可能的实现方式,在第十方面第五种可能的实现方式中,所述第二存储标识包括:
第二虚拟地址,用于标识所述第二内存节点的用于RDMA写操作的数据在所述第二处理节点中的虚拟地址;
数据长度,用于标识所述第二内存节点的用于RDMA写操作的数据的长度;和
第二远端内存钥匙,用于表征访问所述第二内存节点存储设备的权限,以及结合所述第二虚拟地址确定所述用于RDMA写操作的数据在所述第二内存节点中的物理地址。
结合第十方面或第十方面或以上任一种可能的实现方式,在第十方面第六种可能的实现方式中,所述第二内存节点还用于:接收所述第一内存节点的RDMA应答消息,并将所述RDMA应答消息发送给所述第二处理节点,所述RDMA应答消息用于指示所述RDMA写操作已完成。
第十一方面,本发明实施例提供了一种远程直接数据存取RDMA数据拷贝的系统,其特征在于,包括第一计算设备和第二计算设备,所述第一计算设备包括第一处理节点和第一内存节点,包括:
所述第二计算设备,用于向所述第一处理节点发送RDMA内存请求消息,所述RDMA内存请求消息用于向所述第一处理节点请求用于RDMA写操作的目标内存;
所述第一处理节点,用于根据接收到的所述RDMA写操作消息,向所述第一内存节点申请接受RDMA写操作的内存,并向所述第二处理节点发送RDMA内存分配消息,所述RDMA内存分配消息携带第一节点标识和第一存储标识,所述第一节点标识用于指示所述第一内存节点,所述第一存储标识用于指示所述第一内存节点中用于接受所述RDMA写操作的存储单元;
所述第二计算设备还用于,封装RDMA写操作消息,所述RDMA写操作消息中携带用于所述RDMA写操作的数据和所述第一存储标识,并将所述RDMA写操作消息发送给所述第一节点标识指示的第一内存节点;
所述第一内存节点,用于根据接收到的所述RDMA写操作消息,将所述数据写到所述第一存储标识指示的存储单元中。
结合第十一方面,在第一种可能的实现方式中,所述第二计算设备还用于:生成工作队列元素WQE,并将所述WQE放入与所述第一处理节点建立
的RDMA连接的队列对QP的发送队列SQ中,所述WQE携带所述第一节点标识、所述第一存储标识和所述第二存储标识,用于指示将所述第二存储标识指示的存储单元中的数据拷贝至所述第一存储标识指示的存储单元中,所述第二存储标识用于指示所述第二存储设备用于所述RDMA写操作的数据;
所述第二计算设备封装RDMA写操作消息包括:所述第二计算设备从所述QP的发送队列SQ中取出所述WQE,根据所述WQE,取出所述第二存储标识指示的所述数据,根据所述第一存储标识,封装所述RDMA写操作消息。
结合第十一方面或第十一方面或以上任一种可能的实现方式,在第十一方面第二种可能的实现方式中,所述第一节点标识包括:
保护域编号,用于标识所述第一内存节点所在的保护域;
第一内存节点标识,用于在所述保护域中标识所述第一内存节点。
结合第十一方面或第十一方面或以上任一种可能的实现方式,在第十一方面第三种可能的实现方式中,所述第一内存节点和所述第二计算设备在同一保护域,所述第一节点标识包括:
第一内存节点标识,用于在所述同一保护域中标识所述第一内存节点。
结合第十一方面或第十一方面或以上任一种可能的实现方式,在第十一方面第三种可能的实现方式中,所述第一存储标识包括:
第一虚拟地址,用于标识所述第一内存节点的用于接收所述RDMA写操作的存储单元的在所述第一处理节点的虚拟地址;和
第一远端内存钥匙,用于表征访问所述第一内存节点的存储设备的权限,以及结合所述第一虚拟地址确定所述第一内存节点的用于接收RDMA写操作的存储单元的物理地址。
结合第十一方面或第十一方面或以上任一种可能的实现方式,在第十一方面第四种可能的实现方式中,所述第二计算设备还用于:接收所述第一内存节点的RDMA应答消息,所述RDMA应答消息用于指示RDMA写操作已完成。
根据本发明提供的技术方案,可以实现与处理节点分离的内存节点之间,或者与处理节点分离的内存节点与其他计算设备的内存之间的RDMA写操作。缩短了数据流经过的路径,节省了链路资源,降低了数据传输耗时,而且数据传输不再经过处理节点或计算设备的计算资源,从而大大节省了处理
节点或计算设备的计算资源。
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为各计算设备经由RDMA共享数据的示例性联网环境框图;
图2为本发明的示例性计算设备的示意图;
图3为一种RDMA方法的应用场景示意图;
图4为一种RDMA方法的信令图;
图5为依据本发明一实施例的RDMA拷贝方法的应用场景示意图;
图6为依据本发明一实施例的RDMA拷贝方法信令图;
图7为依据本发明一实施例的RDMA拷贝方法的应用场景示意图;
图8为依据本发明一实施例的RDMA拷贝方法信令图;
图9为依据本发明一实施例的RDMA拷贝方法的应用场景示意图;
图10为依据本发明一实施例的RDMA拷贝方法信令图;
图11为依据本发明一实施例的RDMA拷贝方法的示范性流程图;
图12为依据本发明一实施例的RDMA拷贝方法的示范性流程图;
图13为依据本发明一实施例的RDMA拷贝方法的示范性流程图;
图14为依据本发明一实施例的RDMA拷贝装置的逻辑结构示意图;
图15为依据本发明一实施例的RDMA拷贝装置的逻辑结构示意图;
图16为依据本发明一实施例的RDMA拷贝装置的逻辑结构示意图;
图17为依据本发明一实施例的计算设备硬件结构示意图。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1示出了RDMA连网环境100,其中网络102连接了四个计算设备104。
计算设备104使用它们的网络102连接来执行相互的RDMA传递。网络102可以是因特网,内联网,局域网(Local Area Networks,简称LANs),广域网络(Wireless Local Area Networks,简称WLANs),存储区域网络(Storage Area Networks,简称SANs)等,或者以上网络的组合。
图1仅旨在为以下讨论目的而引入RDMA参与者以及它们的相互关系。因此,所描绘的RDMA环境100被大大地简化。由于RDMA的一些方面在本领域中是公知的,因此这些方面,诸如认证方案和安全等在此不再讨论。在设置和运行成功的RDMA环境100中所涉及的复杂性对于在本领域中工作的人来说都是公知的。
图1的计算设备104可以是任意体系结构的。图2是一般化地示出支持本发明的示例性计算机系统的框图。图2的计算机系统仅是一个例子,并不试图对本发明的使用范围或功能提出任何限定。也不应当将计算设备104解释为具有与图2中所示的组件中的任何一个或其组合有关的任何依赖性或要求。本发明可与许多其他的通用或专用计算环境或配置一起工作。适于与本发明一起使用的公知计算系统、环境和配置的示例包括但不限于,个人计算机、服务器、手持式或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电器、网络PC、微型计算机、大型计算机、以及包括任意以上系统或设备的分布式计算环境。在其最基本的配置中,计算设备104通常包括至少一个处理器200和存储器202。存储器202可以被计算设备104当做内存资源使用,可以是易失性的随机存取存储器(Random Access Memory,简称RAM)、非易失性的只读存储器(Read Only Memory,简称ROM)或闪存、或这两者的某种组合。这个最基本的配置在图2中由04例示。计算设备104可以具有外加的特征和功能。例如,它可以包括外设的存储(可移动的和不可移动的),其包括但不限于,磁盘和磁带以及光盘和光带。这样的外设存储在图2中由可移动存储206和不可移动存储208例示。计算机存储介质包括易失性和非易失性的,可移动的和不可移动的,在任何方法或技术中实现的用来存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的介质。存储器202,可移动存储206和不可移动存储208都是计算机存储介质的示例。计算机存储介质包括,但不限于,RAM、ROM、电可擦出只读存储器(Electrically Erasable Read Only Memory,简称EEPROM)、闪存、其他的存储器技术,CD-ROM、数字通用盘、其他的光存储,磁卡带、磁带、磁盘存储、其他的磁存储设备,
以及任何其他可以用来存储所需信息并可由计算设备104访问的介质。任何这样的计算机存储介质都可以是计算设备104的一部分。计算设备104还可以包含允许其与其他设备,包括在网络102上的设备,通信的通信信道210。通信信道210是通信介质的示例。通信介质通常在诸如载波等的已调制数据信号或其它传输机制中包含计算机可读指令、数据结构、程序模块、或其他数据,并包括任何信息传递介质。作为示例而非限定,通信介质包括光介质、诸如有线网络和直线连接等的有线介质、诸如声音、射频(Radio Frequency,简称RF)、红外线和其他无线介质等的无线介质。在此使用的术语"计算机可读介质"包括存储介质和通信介质两者。计算设备104还可以具有诸如触敏式显示屏、硬件键盘、鼠标、语音输入设备等的输入设备212。输出设备214包括设备本身,诸如触敏式显式屏、扬声器、打印机和用来驱动这些设备的呈现模块(常称之为"适配器")。所有这些设备都是本领域公知的,因此在此无需详细讨论。计算设备104具有电源216。
可选的,计算设备104的计算资源与存储资源分离,计算设备104分为处理节点和内存节点,这里的内存节点是指可以被计算设备当做内存资源使用的存储资源,也可以称作存储节点。内存节点包括存储器202和存储器控制器,存储器控制器用于控制存储器202的数据存取等操作;处理节点包括计算设备104的其他特征和功能,可选的,处理节点还包括计算设备104的除内存节点以外的其他内存资源。处理节点和内存节点之间通过网络102进行连接。
图3是远程直接数据存取RDMA方法应用场景的逻辑结构示意图,如图3所示,该系统包括第一计算设备和第二计算设备,其中第一计算设备和第二计算设备为图2所示的计算设备,图中仅示出计算设备的处理器和存储器,其他特征和功能在图3未示出。
RDMA协议允许对应用程序缓冲区进行直接访问,硬件使用所谓的工作队列与软件连接。工作队列是成对地创建的,叫做队列对(Queue Pair,QP),QP包括发送队列(Send Queue,SQ)和接收队列(Receive Queue,RQ)。SQ用于发送操作,保存使数据在一个计算设备的存储设备和另一个计算资源的存储设备之间传输的指令;RQ用于接收操作,保存有关将从另一个计算设备接收到的数据放在哪里的指令。计算设备提交工作请求,生成要放置在适当的工作队列中的工作队列元素(Work Queue Element,WQE)。通道适配器执行WQE,以便它们放置在工作队列中。
当第二计算设备的第二存储器需要向第一计算设备的第一存储器采用RDMA方法写数据时,其信令图如图4所示,执行步骤为:
402:第二计算设备与第一计算设备通过网络102建立基于队列对QP的RDMA连接。
404:第二计算设备接收来自第一计算设备的,属于第一计算设备的RDMA内存分配消息,RDMA内存分配消息携带第一节点标识和第一存储标识,第一节点标识用于标识第一计算设备,第一存储标识用于表征访问第一存储器的权限,和标识第一存储器接受RDMA写操作的存储单元。
可选的,第一存储标识包含虚拟地址(Virtual Address,VA)和远端内存钥匙(Remote Key,R_KEY)。其中,虚拟地址VA表示第一存储器用于接受RDMA写操作的存储单元的虚拟地址,远端内存钥匙R_KEY用于表征第二计算设备访问第一存储器的权限,且用于结合虚拟地址VA共同确定第一存储器用于接收RDMA写操作的存储单元的物理地址。远端内存钥匙R_KEY提供了索引的信息,可以通过索引信息找到具体的内存片,并根据VA找到具体的内存块起始地址,从而实现将虚拟地址VA映射为第一存储器的物理地址。通过VA和R-KEY实现确定要访问的第一存储器的物理地址是现有技术,具体细节此处不再赘述。
406:第二计算设备生成用于第二存储器向第一存储器RDMA写操作的工作队列元素WQE,并将该WQE放入队列对QP的发送队列SQ中,该WQE携带第一存储标识,以及第二存储标识。其中,第二存储标识用于标识第二存储器用于RDMA写操作的数据302。该WQE用于指示将第二存储器的数据302拷贝至第一存储器的内存地址。
可选的,第二存储标识包括数据302在第二存储器的首地址和数据地址长度。
408:第二计算设备的RDMA网络接口控制器(RDMA Network Interface Card,RNIC)314从队列对QP的发送队列SQ中,将该WQE取出,并提取第一存储标识和第二存储标识,并根据第二存储标识,提取第二存储器用于RDMA写操作的数据302,并将数据302与第一存储标识一起封装成RDMA写操作(RDMA WRITE)消息,RDMA WRITE消息用于指示将该数据302写入第一存储标识指示的第一存储器的存储单元中。
410:根据第一计算设备与第二计算设备的RDMA连接关系,第二计算设
备的RNIC将RDMA WRITE消息发送给第一计算设备的RNIC。
412:第一计算设备的RNIC根据RDMA WRITE消息指示,验证消息权限后,将数据302写入第一存储标识指示的第一存储器的存储单元中。
可选的,在步骤412之后,该方法还包括第一计算设备将RDMA写操作完成的响应消息发送给第二计算设备,用于指示RDMA写操作完成。
依据图4所示的RDMA方法,可以实现基于第一计算设备104与第二计算设备104之间的RDMA写操作,如果计算设备104的处理器与存储器相互分离,图3对应的RDMA方法无法实现分离的存储器之间的RDMA写操作。
图5为依据本发明实施例的一种远程直接数据存取方法的应用场景示意图,如图5所示,该系统包括第一计算设备和第二计算设备,其中第一计算设备和第二计算设备为图2所示的计算设备,图中仅示出计算设备的处理器、存储器和存储器控制器,其他特征和功能在图5未示出。第一计算设备的第一处理器与第一存储器分离,将第一计算设备划分为图5所示的第一处理节点502和第一内存节点504,其中第一处理节点502包括第一处理器和计算设备104的其他特征和功能(图中未示出),第一内存节点504包括第一存储器控制器506和第一存储器,第一处理节点502与第一内存节点504之间通过网络102进行通信。第二计算设备的第二处理器与第二存储器分离,将第二计算设备划分为图5所示的第二处理节点508和第二内存节点510,其中第二处理节点508包括第二处理器和计算设备104其他特征和功能(图中未示出),第二内存节点510包括第二存储器控制器512和第二存储器,第二处理节点508与第二内存节点510之间通过网络102进行通信。
可选的,第一处理节点502还包括第一计算设备104的除第一内存节点504外的其他存储资源。
可选的,第二处理节点508还包括第二计算设备104的除第二内存节点510外的其他存储资源。
当第二计算设备的第二存储器需要向第一计算设备的第一存储器采用RDMA方法写数据时,其信令图如图6所示,执行步骤为:
602:第二处理节点508向第一处理节点502通过网络102发送RDMA内存请求消息,所述RDMA内存请求消息用于向第一处理节点请求用于RDMA写操作的目标内存。
可选的,所述RDMA内存请求消息携带要进行RDMA写操作的数据大小
信息,第一处理节点502根据收到的RDMA内存请求消息,向第一内存节点504申请用于接受RDMA写操作的内存。
可选的,第一内存节点504根据RDMA写操作的数据大小和物理内存使用情况,为第一处理节点502在第一存储器分配内存,并将内存分配消息发送给第一处理节点502。
可选的,第一处理节点502还生成队列对QP,并将QP与第一内存节点504分配的内存关联起来,并将队列对QP信息发送给第二处理节点508,与第二处理节点508建立基于队列对QP的RDMA连接。
可选的,第一内存节点504还生成队列对,将QP与第一内存节点504分配的内存关联起来,并将队列对QP信息发送给第一处理节点502,第一处理节点502将QP信息发送给第二处理节点508,与第二处理节点508建立基于队列对QP的RDMA连接。
可选的,第一处理节点502还生成虚拟地址(Virtual Address,简称VA)和远端内存钥匙(Remote Key,简称R_KEY),并将VA和R_KEY发送给第二处理节点508。VA用于表征第一内存节点504分配的用于接受RDMA写操作的内存的虚拟地址,R_KEY用于表征访问第一内存节点504分配的用于接受RDMA写操作的内存的权限,且用于结合虚拟地址VA共同确定第一内存节点用于接收RDMA写操作的存储单元的物理地址,即实现将虚拟地址映射为第一内存节点504的第一存储器的物理地址。
可选的,第一内存节点504还生成VA和R_KEY,并将VA和R_KEY发送给第一处理节点502,第一处理节点502将VA和R_KEY发送给第二处理节点508。VA用于指示第一内存节点504分配的用于接受RDMA写操作的内存的虚拟地址,R_KEY用于表征访问第一内存节点504分配的用于接受RDMA写操作的内存的权限,且用于结合虚拟地址VA共同确定第一内存节点用于接收RDMA写操作的存储单元的物理地址,即实现将虚拟地址映射为第一内存节点504的第一存储器的物理地址。
604:第二处理节点508接收来自第一处理节点502的RDMA内存分配消息,RDMA内存分配消息携带第一节点标识和第一存储标识,第一节点标识用于标识第一内存节点504,第一存储标识用于表征访问第一存储器的权限,和标识第一内存节点504的第一存储器接受RDMA写操作的存储单元。
可选的,第一节点标识包括:保护域编号,用于标识第一内存节点504所
在的第一保护域,和第一内存节点标识,用于在第一保护域中确定第一内存节点504。
可选的,第一内存节点504和第二内存节点510在同一保护域,第一节点标识仅包括第一内存节点标识,用于在该保护域中确定第一内存节点504。
可选的,第一存储标识包括:第一虚拟地址,用于标识第一内存节点504的第一存储器用于接受RDMA写操作的存储单元的虚拟地址,和第一远端内存钥匙,用于表征访问第一存储器的权限,以及结合虚拟地址共同确定第一存储器用于接收RDMA写操作的存储单元的物理地址,即实现将第一虚拟地址映射到第一存储器的物理地址。
606:第二处理节点508封装RDMA拷贝操作消息,该RDMA拷贝操作消息中携带第一节点标识、第一存储标识和第二存储标识,其中,第二存储标识用于表征访问第二存储器的权限,和标识第二存储器用于RDMA写操作的数据514,该RDMA拷贝操作消息用于指示第二内存节点510将数据514拷贝至第一内存节点的第一存储器的存储单元中。
可选的,第二存储标识包括:第二虚拟地址,用于标识第二存储器用于RDMA写操作的数据514的虚拟地址;数据长度,用于标识数据514的数据地址长度;和第二远端内存钥匙,用于表征访问第二存储器的权限,以及结合虚拟地址VA共同确定第二存储器用于RDMA写操作的数据的存储单元的物理地址,即实现将第二虚拟地址映射到第二存储器的物理地址。
可选的,步骤606之前,进一步包括:第二处理节点508生成工作队列元素WQE,并将该WQE放入与第二内存节点510RDMA连接的队列对QP的发送队列SQ中,该WQE携带第一节点标识、第一存储标识和第二存储标识,该WQE用于指示将第二存储器中的数据514拷贝至第一存储器的存储单元中。
可选的,所述WQE还包括第二节点标识,用于指示第二内存节点510。
第二处理节点508的RNIC将该WQE从SQ中取出,根据该WQE指示,封装RDMA拷贝操作消息。
608:第二处理节点508的RNIC将RDMA拷贝操作消息通过网络102发送给第二内存节点510。
610:第二存储器控制器512根据RDMA拷贝操作消息指示,验证消息权限后,取出第二存储标识标识的数据514,结合第一存储标识,封装RDMAWRITE消息,该RDMA WRITE消息用于指示第一内存节点将数据514写入第
一存储标识指示的第一存储器的存储单元中。
612:第二存储器控制器512将RDMA写操作消息通过网络102发送给第一节点标识指示的第一内存节点504。
614:第一存储器控制器506根据RDMA WRITE消息指示,验证消息权限后,将数据514写入第一存储标识指示的第一存储器的存储单元中。
可选的,步骤614之后,进一步包括,第一内存节点504向第二内存节点510发送RDMA响应消息,用于指示RDMA写操作完成,第二内存节点510将该RDMA响应消息发送给第二处理节点508。
可选的,步骤614之后,进一步包括,第一内存节点504向第二处理节点508发送RDMA响应消息,用于指示RDMA写操作完成。
根据本实施例公开的技术方案,计算设备的内存资源与计算资源分离,当需要将第二内存节点内的数据写入第一内存节点时,通过增加RDMA拷贝操作消息,指示第二内存节点直接向第一内存节点写数据,实现了与计算资源分离的内存资源之间的RDMA写操作。采用本方案,实现了内存节点之间的RDMA写操作,内存节点之间的RDMA写操作的数据不经过第二处理节点和第一处理节点,从而缩短了数据流经过的路径,节省了链路资源,降低了数据传输耗时,而且数据传输不再经过处理节点,从而大大节省了处理节点的计算资源。
图7为依据本发明实施例的一种远程直接数据存取方法的应用场景,如图7所示,该系统包括第一计算设备和第二计算设备,其中第一计算设备和第二计算设备为图2所示的计算设备,图中仅示出计算设备的处理器、存储器和存储器控制器,其他特征和功能在图7未示出。第一计算设备的第一处理器与第一存储器分离,将第一计算设备划分为图7所示的第一处理节点702和第一内存节点704,其中第一处理节点702包括第一处理器和其他特征和功能(图中未示出),第一内存节点704包括第一存储器控制器706和第一存储器,第一处理节点702与第一内存节点704之间通过网络102进行通信。
可选的,第一处理节点702还包括第一计算设备104的除第一内存节点704外的其他内存资源。
当第二计算设备的第二存储器需要向第一计算设备的第一存储器采用RDMA方法写数据时,其信令图如图8所示,执行步骤为:
802:第二计算设备向第一处理节点702发送RDMA内存请求消息,所述
RDMA内存请求消息用于向第一处理节点请求用于RDMA写操作的目标内存。
可选的,所述RDMA内存请求消息携带要进行RDMA写操作的数据大小信息,第一处理节点702根据收到的RDMA内存请求消息,向第一内存节点704申请用于接受RDMA写操作的内存。
可选的,第一内存节点704根据RDMA写操作的数据大小和物理内存使用情况,为第一处理节点702在第一存储器分配内存,并将内存分配消息发送给第一处理节点702。
可选的,第一处理节点702还生成队列对QP,并将QP与第一内存节点704分配的内存关联起来,并将队列对QP信息发送给第二计算设备,与第二计算设备建立基于队列对QP的RDMA连接。
可选的,第一内存节点704还生成队列对,将QP与第一内存节点704分配的内存关联起来,并将队列对QP信息发送给第一处理节点702,第一处理节点702将QP信息发送给第二计算设备,与第二计算设备建立基于队列对QP的RDMA连接。
可选的,第一处理节点702还生成虚拟地址(Virtual Address,简称VA)和远端内存钥匙(Remote Key,简称R_KEY),并将VA和R_KEY发送给第二计算设备。VA用于表征第一内存节点704分配的用于接受RDMA写操作的内存的虚拟地址,R_KEY用于表征访问第一内存节点704分配的用于接受RDMA写操作的内存的权限,且用于结合虚拟地址VA共同确定第一内存节点用于接收RDMA写操作的存储单元的物理地址,即实现将虚拟地址映射为第一内存节点704的第一存储器的物理地址。
可选的,第一内存节点704还生成VA和R_KEY,并将VA和R_KEY发送给第一处理节点702,第一处理节点702将VA和R_KEY发送给第二计算设备。VA用于指示第一内存节点704分配的用于接受RDMA写操作的内存的虚拟地址,R_KEY用于表征访问第一内存节点704分配的用于接受RDMA写操作的内存的权限,且用于结合虚拟地址VA共同确定第一内存节点用于接收RDMA写操作的存储单元的物理地址,即实现将虚拟地址映射为第一内存节点704的第一存储器的物理地址。
804:第二处计算设备接收来自第一处理节点702的RDMA内存分配消息,RDMA内存分配消息携带第一节点标识和第一存储标识,第一节点标识用于
标识第一内存节点704,第一存储标识用于表征访问第一存储器的权限,和标识第一内存节点704的第一存储器接受RDMA写操作的存储单元。
可选的,第一节点标识包括:保护域编号,用于标识第一内存节点704所在的第一保护域,和第一内存节点标识,用于在第一保护域中确定第一内存节点704。
可选的,第一内存节点704和第二计算设备在同一保护域,第一节点标识仅包括第一内存节点标识,用于在该保护域中确定第一内存节点704。
可选的,第一存储标识包括:第一虚拟地址,用于标识第一内存节点704的第一存储器用于接受RDMA写操作的存储单元的虚拟地址,和第一远端内存钥匙,用于表征访问第一存储器的权限,以及结合虚拟地址共同确定第一存储器用于接收RDMA写操作的存储单元的物理地址,即实现将第一虚拟地址映射到第一存储器的物理地址。
806:第二计算设备从第二存储器中取出用于RDMA写操作的数据708,并将数据708与第一存储标识一起封装成RDMA写操作(RDMA WRITE)消息,RDMA WRITE消息用于指示第一内存节点702将该数据708写入第一存储器的存储单元中。
可选的,在步骤806之前,进一步包括:第二计算设备生成工作队列元素WQE,并将该WQE放入与第一处理节点702RDMA连接的队列对QP的发送队列SQ中,该WQE携带第一节点标识、第一存储标识和第二存储标识,其中,第二存储标识用于标识第二存储器用于RDMA写操作的数据708,该WQE用于指示将第二存储器中的数据708拷贝至第一存储器的存储单元中。第二计算设备的RNIC将该WQE从SQ中取出,根据该WQE指示,封装RDMA写操作消息。
可选的,第二存储标识包括数据708在第二存储器的首地址和数据地址长度。
808:第二计算设备的RNIC将RDMA WRITE消息通过网络102发送给第一节点标识指示的第一内存节点704。
810:第一存储器控制器706根据RDMA WRITE消息指示,验证消息权限后,将数据708写入第一存储标识指示的第一存储器的存储单元中。
可选的,在步骤810之后,该方法还包括:第一内存节点504将RDMA写操作完成的响应消息发送给第二计算设备,用于指示RDMA写操作完成。
根据本实施例公开的技术方案,第一计算设备的内存资源与计算资源分离,当需要将第二计算设备内存中的数据写入第一内存节点时,可以让数据不经过第一处理节点,实现了第二计算设备的内存与第一内存节点之间的RDMA写操作。采用本方案,实现了第二计算设备与第一内存节点之间的RDMA写操作,且RDMA写操作的数据不经过第二计算设比的计算资源和第一处理节点,从而缩短了数据流经过的路径,节省了链路资源,降低了数据传输耗时,而且数据传输不再经过处理节点,从而大大节省了处理节点的计算资源。
图9为依据本发明实施例的一种远程直接数据存取方法的应用场景,如图9所示,该系统包括第一计算设备和第二计算设备,其中第一计算设备和第二计算设备为图2所示的计算设备,图中仅示出计算设备的处理器、存储器和存储器控制器,其他特征和功能在图9未示出。第二计算设备的第二处理器与第二存储器分离,将第二计算设备划分为图9所示的第二处理节点902和第二内存节点904,其中第二处理节点902包括第二处理器和其他特征和功能(图中未示出),第二内存节点904包括第二存储器控制器906和第二存储器,第二处理节点902与第二内存节点904之间通过网络102进行通信。
可选的,第二处理节点902还包括第二计算设备104的除第二内存节点904外的其他内存资源。
当第二计算设备的第二存储器需要向第一计算设备的第一存储器采用RDMA方法写数据时,其信令图如图10所示,执行步骤为:
1002:第二处理节点902通过网络102向第一计算设备发送RDMA内存请求消息,所述RDMA内存请求消息用于向第一计算设备请求用于RDMA写操作的目标内存。
可选的,所述RDMA内存请求消息携带要进行RDMA写操作的数据大小信息,第一计算设备根据收到的RDMA内存请求消息,为RDMA写操作在第一存储器分配内存,并将内存分配消息发送给第二处理节点902。
可选的,第一计算设备还生成队列对QP,并将QP与分配的内存关联起来,并将队列对QP信息发送给第二处理节点902,与第二处理节点902建立基于队列对QP的RDMA连接。
可选的,第一计算设备还生成虚拟地址VA和远端内存钥匙R_KEY,并将VA和R_KEY发送给第二处理节点902。VA用于表征第一计算设备分配的用
于接受RDMA写操作的内存的虚拟地址,R_KEY用于表征访问第一计算设备分配的用于接受RDMA写操作的内存的权限,且用于结合虚拟地址VA共同确定第一存储器用于接收RDMA写操作的存储单元的物理地址,即实现将虚拟地址映射为第一存储器的物理地址。可选的,第一计算设备还生成队列对QP,并将QP与为RDMA内存请求消息分配的内存关联起来,并将该队列对QP信息发送给第二处理节点902,与第二处理节点902建立基于队列对QP的RDMA连接。
1004:第二处理节点902接收来自第一计算设备的,属于第一计算设备的RDMA内存分配消息,RDMA内存分配消息携带第一节点标识和第一存储标识,第一节点标识用于标识第一计算设备,第一存储标识用于表征访问第一存储器的权限,和标识第一存储器接受RDMA写操作的存储单元。
可选的,第一节点标识包括:保护域编号,用于标识第一计算设备所在的第一保护域,和第一计算设备标识,用于在第一保护域中确定第一计算设备。
可选的,第一计算设备和第二内存节点904在同一保护域,第一节点标识仅包括第一计算设备标识,用于在该保护域中确定第一计算设备。
可选的,第一存储标识包括:第一虚拟地址(Virtual Address,VA)和第一远端内存钥匙(Remote Key,R_KEY)。其中,第一虚拟地址VA表示第一存储器用于接受RDMA写操作的存储单元的虚拟地址,第一远端内存钥匙R_KEY用于表征访问第一存储器的权限,且用于结合虚拟地址VA共同确定第一存储器用于接收RDMA写操作的存储单元的物理地址,即实现将第一虚拟地址VA映射为第一存储器的物理地址。
1006:第二处理节点902封装RDMA拷贝操作消息,该RDMA拷贝操作消息中携带第一节点标识、第一存储标识和第二存储标识,其中,第二存储标识用于表征访问第二存储器的权限,和标识第二存储器用于RDMA写操作的数据908,该RDMA拷贝操作消息用于指示第二内存节点904将数据908拷贝至第一内存节点的第一存储器的存储单元中。
可选的,第二存储标识包括第二虚拟地址,用于标识第二存储器用于RDMA写操作的数据908的虚拟地址;数据长度,用于标识数据908的数据地址长度;和第二远端内存钥匙,用于表征访问第二存储器的权限,以及结合虚拟地址共同确定第二存储器用于RDMA写操作的数据的存储单元的物理地
址,即实现将第二虚拟地址映射到第二存储器的物理地址。
可选的,在步骤1006之前,进一步包括:第二处理节点902生成工作队列元素WQE,并将该WQE放入与第二内存节点904RDMA连接的队列对QP的发送队列SQ中,该WQE携带第一节点标识、第一存储标识和第二存储标识,该WQE用于指示将第二存储器中的数据908拷贝至第一存储器的存储单元中。第二处理节点902的RNIC将该WQE从SQ中取出,根据该WQE指示,封装RDMA拷贝操作消息。
可选的,所述WQE还包括第二节点标识,用于指示第二内存节点904。
1008:第二处理节点902的RNIC将RDMA拷贝操作消息通过网络102发送给第二内存节点904。
1010:第二存储器控制器906根据RDMA拷贝操作消息指示,验证消息权限后,取出第二存储标识标识的数据908,结合第一存储标识,封装RDMAWRITE消息,该RDMA WRITE消息用于指示将数据908写入第一存储标识指示的第一存储器的存储单元中。
1012:第二存储器控制器906将RDMA写操作消息通过网络102发送给第一节点标识指示的第一计算设备。
1014:第一计算设备的RNIC根据RDMA WRITE消息指示,验证消息权限后,将数据908写入第一存储标识指示的第一存储器的存储单元中。
可选的,步骤1014之后,进一步包括,第一计算设备向第二内存节点904发送RDMA响应消息,用于指示RDMA写操作完成,第二内存节点904将该RDMA响应消息发送给第二处理节点902。
可选的,步骤1014之后,进一步包括,第一计算设备向第二处理节点902发送RDMA响应消息,用于指示RDMA写操作完成。
根据本实施例公开的技术方案,第二计算设备的内存资源与计算资源分离,当需要将第二内存节点内的数据写入第一计算设备的内存时,通过增加RDMA拷贝操作消息,指示第二内存节点直接向第一计算设备的内存写数据,实现了第二内存节点与第一计算设备之间的RDMA写操作。采用本方案,实现了第二内存节点与第一计算设备之间的RDMA写操作,且RDMA写操作的数据不经过第二处理节点和第一计算设备的计算资源,从而缩短了数据流经过的路径,节省了链路资源,降低了数据传输耗时,而且数据传输不再经过处理节点,从而大大节省了处理节点的计算资源。
图11为依据本发明一实施例的RDMA数据拷贝方法1100的示范性流程图,第一计算设备包括第一处理节点和第一内存节点,第二计算设备包括第二处理节点和第二内存节点,第二处理节点与第二内存节点分离时,用于第二内存节点对第一内存节点进行RDMA写操作,包括:
S1102:第二处理节点向第一处理节点发送RDMA内存请求消息,RDMA内存请求消息用于向所述第一处理节点请求用于RDMA写操作的目标内存。
S1104:所述第二处理节点接收来自所述第一处理节点的RDMA内存分配消息,所述RDMA内存分配消息携带第一节点标识和第一存储标识,所述第一节点标识用于指示所述第一内存节点,所述第一存储标识用于指示所述第一内存节点中用于接受所述RDMA写操作的存储单元。
S1106:所述第二处理节点封装RDMA拷贝操作消息,所述RDMA拷贝操作消息中携带所述第一节点标识、所述第一存储标识和第二存储标识,所述第二存储标识用于指示所述第二内存节点中用于所述RDMA写操作的数据的内存地址;
S1108:所述第二处理节点将所述RDMA拷贝操作消息发送给所述第二内存节点,指示所述第二内存节点根据所述第一节点标识确定所述第一内存节点,将所述第二存储标识指示的存储单元中的数据写入所述第一存储标识指示的第一内存节点的存储单元。
可选的,所述第一计算设备的第一处理节点和第一内存节点分离,第一处理节点与第一处理节点是两个分离的节点,二者通过网络进行通信。
可选的,所述第一计算设备的第一处理节点和第一内存节点不分离,第一处理节点和第一内存节点在同一计算设备节点上,二者用同一节点标识来进行指示。
可选的,方法1100还包括:所述第二处理节点生成工作队列元素WQE,并将所述WQE放入所述第二内存节点RDMA连接的队列对QP的发送队列SQ中,所述WQE携带所述第一节点标识、所述第一存储标识和所述第二存储标识,用于指示将所述第二存储标识指示的存储单元中的数据拷贝至所述第一存储标识指示的存储单元中;则所述第二处理节点封装RDMA拷贝操作消息,包括:从所述QP的发送队列SQ中取出所述WQE,根据所述WQE,封装所述RDMA拷贝操作消息。
可选的,所述第一节点标识包括:
保护域编号,用于标识所述第一内存节点所在的保护域;
第一内存节点标识,用于在所述保护域中标识所述第一内存节点。
可选的,所述第一内存节点和所述第二内存节点在同一保护域,所述第一节点标识包括:
第一内存节点标识,用于在所述同一保护域中标识所述第一内存节点。
可选的,所述第一存储标识包括:
第一虚拟地址,用于标识所述第一内存节点的用于接收所述RDMA写操作的存储单元的在所述第一处理节点的虚拟地址;和
第一远端内存钥匙,用于表征访问所述第一内存节点的存储设备的权限,以及结合所述第一虚拟地址确定所述第一内存节点的用于接收RDMA写操作的存储单元的物理地址。
可选的,所述第二存储标识包括:
第二虚拟地址,用于标识所述第二内存节点的用于RDMA写操作的数据在所述第二处理节点中的虚拟地址;
数据长度,用于标识所述第二内存节点的用于RDMA写操作的数据的长度;和
第二远端内存钥匙,用于表征访问所述第二内存节点存储设备的权限,以及结合所述第二虚拟地址确定所述用于RDMA写操作的数据在所述第二内存节点中的物理地址。
可选的,所述第二处理节点将所述RDMA拷贝操作消息发送给所述第二内存节点之后,进一步包括:接收所述第二内存节点的RDMA应答消息,所述RDMA应答消息用于指示所述RDMA写操作已完成。
采用本实施例提供的技术方案,通过RDMA拷贝操作消息的指示,可以实现分离的内存节点之间,或者分离的内存节点与其他计算设备的内存之间的RDMA写操作。缩短了数据流经过的路径,节省了链路资源,降低了数据传输耗时,而且数据传输不再经过处理节点或计算设备的计算资源,从而大大节省了处理节点或计算设备的计算资源。
图12为依据本发明一实施例的RDMA数据拷贝方法1200的示范性流程图,第一计算设备包括第一处理节点和第一内存节点,第二计算设备包括第二处理节点和第二内存节点,第二处理节点与第二内存节点分离时,用于第二内存节点对第一内存节点进行RDMA写操作,包括:
S1202:所述第二内存节点接收来自所述第二处理节点的RDMA拷贝操作消息,所述RDMA拷贝操作消息携带第一节点标识、第一存储标识和第二存储标识,所述第一节点标识用于指示所述第一内存节点,所述第一存储标识用于指示所述第一内存节点中用于接受RDMA写操作的存储单元,所述第二存储标识用于指示所述第二内存节点用于所述RDMA写操作的数据;
S1204:第二内存节点根据所述RDMA拷贝操作消息,取出所述第二存储标识指示的所述数据,根据所述第一存储标识,封装RDMA写操作消息,所述RDMA写操作消息中包含所述RDMA写操作的数据和所述第一存储标识;
S1206:第二内存节点将所述RDMA写操作消息发送给所述第一节点标识指示的第一内存节点,指示第一内存节点将所述数据写入所述第一存储标识指示的存储单元。
可选的,所述第一计算设备的第一处理节点和第一内存节点分离,第一处理节点与第一处理节点是两个分离的节点,二者通过网络进行通信。
可选的,所述第一计算设备的第一处理节点和第一内存节点不分离,第一处理节点和第一内存节点在同一计算设备节点上,二者用同一节点标识来进行指示。
可选的,所述第一节点标识包括:
保护域编号,用于标识所述第一内存节点所在的保护域;
第一内存节点标识,用于在所述保护域中标识所述第一内存节点。
可选的,所述第一内存节点和所述第二内存节点在同一保护域,所述第一节点标识包括:
第一内存节点标识,用于在所述同一保护域中标识所述第一内存节点。
可选的,所述第一存储标识包括:
第一虚拟地址,用于标识所述第一内存节点的用于接收所述RDMA写操作的存储单元的在所述第一处理节点的虚拟地址;和
第一远端内存钥匙,用于表征访问所述第一内存节点的存储设备的权限,以及结合所述第一虚拟地址确定所述第一内存节点的用于接收RDMA写操作的存储单元的物理地址。
可选的,所述第二存储标识包括:
第二虚拟地址,用于标识所述第二内存节点的用于RDMA写操作的数据在所述第二处理节点中的虚拟地址;
数据长度,用于标识所述第二内存节点的用于RDMA写操作的数据的长度;和
第二远端内存钥匙,用于表征访问所述第二内存节点存储设备的权限,以及结合所述第二虚拟地址确定所述用于RDMA写操作的数据在所述第二内存节点中的物理地址。
可选的,方法1200还包括:接收所述第一内存节点的RDMA应答消息,所述RDMA应答消息用于指示RDMA写操作已完成。
可选的,方法1200还包括,将所述RDMA应答消息发送给所述第二处理节点。
采用本实施例提供的技术方案,通过RDMA拷贝操作消息的指示,可以实现分离的内存节点之间,或者分离的内存节点与其他计算设备的内存之间的RDMA写操作。缩短了数据流经过的路径,节省了链路资源,降低了数据传输耗时,而且数据传输不再经过处理节点或计算设备的计算资源,从而大大节省了处理节点或计算设备的计算资源。
图13为依据本发明一实施例的RDMA数据拷贝方法1300的示范性流程图,第一计算设备包括第一处理节点和第一内存节点,第一处理节点与第一内存节点分离时,用于第二计算设备的第二存储设备对第一内存节点进行RDMA写操作,包括:
S1302:第二计算设备向所述第一处理节点发送RDMA内存请求消息,所述RDMA内存请求消息用于向所述第一处理节点请求用于RDMA写操作的目标内存;
S1304:所述第二计算设备接收来自所述第一处理节点的RDMA内存分配消息,所述RDMA内存分配消息携带第一节点标识和第一存储标识,所述第一节点标识用于指示所述第一内存节点,所述第一存储标识用于指示所述第一内存节点中用于接受所述RDMA写操作的存储单元;
S1306:所述第二计算设备封装RDMA写操作消息,所述RDMA写操作消息中携带用于所述RDMA写操作的数据和所述第一存储标识;
S1308:所述第二计算设备将所述RDMA写操作消息发送给所述第一节点标识指示的所述第一内存节点,指示所述第一内存节点将所述数据写入所述第一存储标识指示的存储单元。
可选的,方法1300还包括:所述第二计算设备生成工作队列元素WQE,
并将所述WQE放入与所述第一处理节点建立的RDMA连接的队列对QP的发送队列SQ中,所述WQE携带所述第一节点标识、所述第一存储标识和所述第二存储标识,用于指示将所述第二存储标识指示的存储单元中的数据拷贝至所述第一存储标识指示的存储单元中,所述第二存储标识用于指示所述第二存储设备用于所述RDMA写操作的数据;则所述第二计算设备封装RDMA写操作消息包括:所述第二计算设备从所述QP的发送队列SQ中取出所述WQE,根据所述WQE,取出所述第二存储标识指示的所述数据,根据所述第一存储标识,封装所述RDMA写操作消息。
可选的,所述第一节点标识包括:
保护域编号,用于标识所述第一内存节点所在的保护域;
第一内存节点标识,用于在所述保护域中标识所述第一内存节点。
可选的,所述第一内存节点和所述第二计算设备在同一保护域,所述第一节点标识包括:
第一内存节点标识,用于在所述同一保护域中标识所述第一内存节点。
可选的,所述第一存储标识包括:
第一虚拟地址,用于标识所述第一内存节点的用于接收所述RDMA写操作的存储单元的在所述第一处理节点的虚拟地址;和
第一远端内存钥匙,用于表征访问所述第一内存节点的存储设备的权限,以及结合所述第一虚拟地址确定所述第一内存节点的用于接收RDMA写操作的存储单元的物理地址。
可选的,所述第二计算设备将所述RDMA写操作消息发送给所述第一节点标识指示的所述第一内存节点之后,进一步包括:接收所述第一内存节点的RDMA应答消息,所述RDMA应答消息用于指示RDMA写操作已完成。
采用本实施例提供的技术方案,可以实现计算设备与内存节点之间的RDMA写操作。缩短了数据流经过的路径,节省了链路资源,降低了数据传输耗时,而且数据传输不再经过处理节点或计算设备的计算资源,从而大大节省了处理节点和计算设备的计算资源。
图14为依据本发明一实施例的RDMA拷贝装置1400的逻辑结构示意图,第一计算设备包括第一处理节点和第一内存节点,装置1400与装置1400的第二内存节点分离时,用于控制第二内存节点对第一内存节点进行RDMA写操作,包括:
发送单元1402,所述第一处理节点发送RDMA内存请求消息,所述RDMA内存请求消息用于向所述第一处理节点请求用于RDMA写操作的目标内存;
接收单元1404,用于接收来自所述第一处理节点的RDMA内存分配消息,所述RDMA内存分配消息携带第一节点标识和第一存储标识,所述第一节点标识用于指示所述第一内存节点,所述第一存储标识用于指示所述第一内存节点中用于接受所述RDMA写操作的存储单元;
封装单元1406,用于封装RDMA拷贝操作消息,所述RDMA拷贝操作消息中携带所述第一节点标识、所述第一存储标识和第二存储标识,所述第二存储标识用于指示所述第二内存节点中用于所述RDMA写操作的数据的内存地址;
发送单元1402,还用于将所述RDMA拷贝操作消息发送给所述第二内存节点,指示所述第二内存节点根据所述第一节点标识确定所述第一内存节点,将所述第二存储标识指示的存储单元中的数据写入所述第一存储标识指示的第一内存节点的存储单元。
可选的,所述第一计算设备的第一处理节点和第一内存节点分离,第一处理节点与第一处理节点是两个分离的节点,二者通过网络进行通信。
可选的,所述第一计算设备的第一处理节点和第一内存节点不分离,第一处理节点和第一内存节点在同一计算设备节点上,二者用同一节点标识来进行指示。
可选的,装置1400还包括生成单元,用于生成工作队列元素WQE,并将所述WQE放入所述第二内存节点RDMA连接的队列对QP的发送队列SQ中,所述WQE携带所述第一节点标识、所述第一存储标识和所述第二存储标识,用于指示将所述第二存储标识指示的存储单元中的数据拷贝至所述第一存储标识指示的存储单元中;则所述封装单元1406用于封装RDMA拷贝操作消息,包括:所述封装单元1406从所述QP的发送队列SQ中取出所述WQE,根据所述WQE,封装所述RDMA拷贝操作消息。
可选的,所述第一节点标识包括:
保护域编号,用于标识所述第一内存节点所在的保护域;
第一内存节点标识,用于在所述保护域中标识所述第一内存节点。
可选的,所述第一内存节点和所述第二内存节点在同一保护域,所述第一节点标识包括:
第一内存节点标识,用于在所述同一保护域中标识所述第一内存节点。
可选的,所述第一存储标识包括:
第一虚拟地址,用于标识所述第一内存节点的用于接收所述RDMA写操作的存储单元的在所述第一处理节点的虚拟地址;和
第一远端内存钥匙,用于表征访问所述第一内存节点的存储设备的权限,以及结合所述第一虚拟地址确定所述第一内存节点的用于接收RDMA写操作的存储单元的物理地址。
可选的,所述第二存储标识包括:
第二虚拟地址,用于标识所述第二内存节点的用于RDMA写操作的数据在所述第二处理节点中的虚拟地址;
数据长度,用于标识所述第二内存节点的用于RDMA写操作的数据的长度;和
第二远端内存钥匙,用于表征访问所述第二内存节点存储设备的权限,以及结合所述第二虚拟地址确定所述用于RDMA写操作的数据在所述第二内存节点中的物理地址。
可选的,接收单元1404还用于:接收所述第二内存节点的RDMA应答消息,所述RDMA应答消息用于指示所述RDMA写操作已完成。
采用本实施例提供的技术方案,通过RDMA拷贝操作消息的指示,可以实现分离的内存节点之间,或者分离的内存节点与其他计算设备的内存之间的RDMA写操作。缩短了数据流经过的路径,节省了链路资源,降低了数据传输耗时,而且数据传输不再经过处理节点或计算设备的计算资源,从而大大节省了处理节点或计算设备的计算资源。
图15为依据本发明一实施例的RDMA拷贝装置1500的逻辑结构示意图,第一计算设备包括第一处理节点和第一内存节点,装置1500与装置1500的第二处理节点分离时,用于对第一内存节点进行RDMA写操作,包括:
接收单元1502,用于接收来自所述第二处理节点的RDMA拷贝操作消息,所述RDMA拷贝操作消息携带第一节点标识、第一存储标识和第二存储标识,所述第一节点标识用于指示所述第一内存节点,所述第一存储标识用于指示所述第一内存节点中用于接受RDMA写操作的存储单元,所述第二存储标识用于指示所述第二内存节点用于所述RDMA写操作的数据;
封装单元1504,用于根据所述RDMA拷贝操作消息,取出所述第二存储
标识指示的所述数据,根据所述第一存储标识,封装RDMA写操作消息,所述RDMA写操作消息中包含所述RDMA写操作的数据和所述第一存储标识;
发送单元1506,用于将所述RDMA写操作消息发送给所述第一节点标识指示的第一内存节点,指示第一内存节点将所述数据写入所述第一存储标识指示的存储单元。
可选的,所述第一计算设备的第一处理节点和第一内存节点分离,第一处理节点与第一处理节点是两个分离的节点,二者通过网络进行通信。
可选的,所述第一计算设备的第一处理节点和第一内存节点不分离,第一处理节点和第一内存节点在同一计算设备节点上,二者用同一节点标识来进行指示。
可选的,所述第一节点标识包括:
保护域编号,用于标识所述第一内存节点所在的保护域;
第一内存节点标识,用于在所述保护域中标识所述第一内存节点。
可选的,所述第一内存节点和所述第二内存节点在同一保护域,所述第一节点标识包括:
第一内存节点标识,用于在所述同一保护域中标识所述第一内存节点。
可选的,所述第一存储标识包括:
第一虚拟地址,用于标识所述第一内存节点的用于接收所述RDMA写操作的存储单元的在所述第一处理节点的虚拟地址;和
第一远端内存钥匙,用于表征访问所述第一内存节点的存储设备的权限,以及结合所述第一虚拟地址确定所述第一内存节点的用于接收RDMA写操作的存储单元的物理地址。
可选的,所述第二存储标识包括:
第二虚拟地址,用于标识所述第二内存节点的用于RDMA写操作的数据在所述第二处理节点中的虚拟地址;
数据长度,用于标识所述第二内存节点的用于RDMA写操作的数据的长度;和
第二远端内存钥匙,用于表征访问所述第二内存节点存储设备的权限,以及结合所述第二虚拟地址确定所述用于RDMA写操作的数据在所述第二内存节点中的物理地址。
可选的,接收单元1502还用于:接收所述第一内存节点的RDMA应答消
息,所述RDMA应答消息用于指示RDMA写操作已完成。
可选的,发送单元1506还用于:将所述RDMA应答消息发送给所述第二处理节点。
采用本实施例提供的技术方案,通过RDMA拷贝操作消息的指示,可以实现分离的内存节点之间,或者分离的内存节点与其他计算设备的内存之间的RDMA写操作。缩短了数据流经过的路径,节省了链路资源,降低了数据传输耗时,而且数据传输不再经过处理节点或计算设备的计算资源,从而大大节省了处理节点或计算设备的计算资源。
图16为依据本发明一实施例的RDMA拷贝装置1600的逻辑结构示意图,第一计算设备包括第一处理节点和第一内存节点,第一处理节点与第一内存节点分离时,用于所属装置1600的第二存储设备对第一内存节点进行RDMA写操作,包括:
发送单元1602,用于向所述第一处理节点发送RDMA内存请求消息,所述RDMA内存请求消息用于向所述第一处理节点请求用于RDMA写操作的目标内存;
接收单元1604,用于接收来自所述第一处理节点的RDMA内存分配消息,所述RDMA内存分配消息携带第一节点标识和第一存储标识,所述第一节点标识用于指示所述第一内存节点,所述第一存储标识用于指示所述第一内存节点中用于接受所述RDMA写操作的存储单元;
封装单元1606,用于封装RDMA写操作消息,所述RDMA写操作消息中携带用于所述RDMA写操作的数据和所述第一存储标识;
所述发送单元1602还用于,将所述RDMA写操作消息发送给所述第一节点标识指示的所述第一内存节点,指示所述第一内存节点将所述数据写入所述第一存储标识指示的存储单元。
可选的,装置1600还包括生成单元,用于生成工作队列元素WQE,并将所述WQE放入与所述第一处理节点建立的RDMA连接的队列对QP的发送队列SQ中,所述WQE携带所述第一节点标识、所述第一存储标识和所述第二存储标识,用于指示将所述第二存储标识指示的存储单元中的数据拷贝至所述第一存储标识指示的存储单元中,所述第二存储标识用于指示所述第二存储设备用于所述RDMA写操作的数据;所述封装单元1606用于封装RDMA写操作消息,包括:从所述QP的发送队列SQ中取出所述WQE,根据所述WQE,
取出所述第二存储标识指示的所述数据,根据所述第一存储标识,封装所述RDMA写操作消息。
可选的,所述第一节点标识包括:
保护域编号,用于标识所述第一内存节点所在的保护域;
第一内存节点标识,用于在所述保护域中标识所述第一内存节点。
可选的,所述第一内存节点和所述第二计算设备在同一保护域,所述第一节点标识包括:
第一内存节点标识,用于在所述同一保护域中标识所述第一内存节点。
可选的,所述第一存储标识包括:
第一虚拟地址,用于标识所述第一内存节点的用于接收所述RDMA写操作的存储单元的在所述第一处理节点的虚拟地址;和
第一远端内存钥匙,用于表征访问所述第一内存节点的存储设备的权限,以及结合所述第一虚拟地址确定所述第一内存节点的用于接收RDMA写操作的存储单元的物理地址。
可选的,所述接收单元1604还用于:接收所述第一内存节点的RDMA应答消息,所述RDMA应答消息用于指示RDMA写操作已完成。
采用本实施例提供的技术方案,可以实现计算设备与内存节点之间的RDMA写操作。缩短了数据流经过的路径,节省了链路资源,降低了数据传输耗时,而且数据传输不再经过处理节点或计算设备的计算资源,从而大大节省了处理节点和计算设备的计算资源。
图17是依据本发明一实施例的计算设备设备1700的硬件结构示意图。如图17所示,计算设备1700包括处理器1702、内存器1704、输入/输出接口1706、通信接口1708和总线1710。其中,处理器1702、内存器1704、输入/输出接口1706和通信接口1708通过总线1710实现彼此之间的通信连接。
处理器1702可以采用通用的中央处理器(Central Processing Unit,CPU),微处理器,应用专用集成电路(Application SQecific Integrated Circuit,ASIC),或者一个或多个集成电路,用于执行相关程序,以实现本发明实施例所提供的技术方案。
内存器1704可以是只读内存器(Read Only Memory,ROM),静态内存设备,动态内存设备或者随机存取内存器(Random Access Memory,RAM)。内存器1704可以内存操作系统和其他应用程序。在通过软件或者固件来实现
本发明实施例提供的技术方案时,用于实现本发明实施例提供的技术方案的程序代码保存在内存器1704中,并由处理器1702来执行。
输入/输出接口1706用于接收输入的数据和信息,输出操作结果等数据。
通信接口1708使用例如但不限于收发器一类的收发装置,来实现计算设备1700与其他设备或通信网络之间的通信。
总线1710可包括一通路,在计算设备1700各个部件(例如处理器1702、内存器1704、输入/输出接口1706和通信接口1708)之间传送信息。
应注意,尽管图17所示的计计算设备1700仅仅示出了处理器1702、内存器1704、输入/输出接口1706、通信接口1708以及总线1710,但是在具体实现过程中,本领域的技术人员应当明白,计算设备1700还包含实现正常运行所必须的其他器件。同时,根据具体需要,本领域的技术人员应当明白,计算设备1700还可包含实现其他附加功能的硬件器件。此外,本领域的技术人员应当明白,计算设备1700也可仅仅包含实现本发明实施例所必须的器件,而不必包含图17中所示的全部器件。
图17所示的硬件结构以及上述描述适用于本发明实施例所提供的各种RDMA拷贝方法、设备和系统,适用于执行本发明实施例所提供的各种虚拟数据中心方法。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,设备和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用硬件加软件
功能模块的形式实现。
上述以软件功能模块的形式实现的集成的模块,可以内存在一个计算机可读取内存介质中。上述软件功能模块内存在一个内存介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的部分步骤。而前述的内存介质包括:移动硬盘、只读内存器(英文:Read-Only Memory,简称ROM)、随机存取内存器(英文:Random Access Memory,简称RAM)、磁碟或者光盘等各种可以内存程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的保护范围。
Claims (56)
- 一种远程直接数据存取RDMA数据拷贝的方法,其特征在于,第一计算设备包括第一处理节点和第一内存节点,第二计算设备包括第二处理节点和第二内存节点,包括:所述第二处理节点向所述第一处理节点发送RDMA内存请求消息,所述RDMA内存请求消息用于向所述第一处理节点请求用于RDMA写操作的目标内存;所述第二处理节点接收来自所述第一处理节点的RDMA内存分配消息,所述RDMA内存分配消息携带第一节点标识和第一存储标识,所述第一节点标识用于指示所述第一内存节点,所述第一存储标识用于指示所述第一内存节点中用于接受所述RDMA写操作的存储单元;所述第二处理节点封装RDMA拷贝操作消息,所述RDMA拷贝操作消息中携带所述第一节点标识、所述第一存储标识和第二存储标识,所述第二存储标识用于指示所述第二内存节点中用于所述RDMA写操作的数据的内存地址;所述第二处理节点将所述RDMA拷贝操作消息发送给所述第二内存节点,指示所述第二内存节点根据所述第一节点标识确定所述第一内存节点,将所述第二存储标识指示的存储单元中的数据写入所述第一存储标识指示的第一内存节点的存储单元。
- 根据权利要求1所述的方法,其特征在于,所述第二处理节点接收来自所述第一处理节点的RDMA内存分配消息之后,还包括:所述第二处理节点生成工作队列元素WQE,并将所述WQE放入所述第二内存节点RDMA连接的队列对QP的发送队列SQ中,所述WQE携带所述第一节点标识、所述第一存储标识和所述第二存储标识,用于指示将所述第二存储标识指示的存储单元中的数据拷贝至所述第一存储标识指示的存储单元中;则所述第二处理节点封装RDMA拷贝操作消息,包括:从所述QP的发送队列SQ中取出所述WQE,根据所述WQE,封装所述RDMA拷贝操作消息。
- 根据权利要求1或2所述的方法,其特征在于,所述第一节点标识 包括:保护域编号,用于标识所述第一内存节点所在的保护域;第一内存节点标识,用于在所述保护域中标识所述第一内存节点。
- 根据权利要求1或2所述的方法,其特征在于,所述第一内存节点和所述第二内存节点在同一保护域,所述第一节点标识包括:第一内存节点标识,用于在所述同一保护域中标识所述第一内存节点。
- 根据权利要求1-4任一项所述的方法,其特征在于,所述第一存储标识包括:第一虚拟地址,用于标识所述第一内存节点的用于接收所述RDMA写操作的存储单元的在所述第一处理节点的虚拟地址;和第一远端内存钥匙,用于表征访问所述第一内存节点的存储设备的权限,以及结合所述第一虚拟地址确定所述第一内存节点的用于接收RDMA写操作的存储单元的物理地址。
- 根据权利要求1-5任一项所述的方法,其特征在于,所述第二存储标识包括:第二虚拟地址,用于标识所述第二内存节点的用于RDMA写操作的数据在所述第二处理节点中的虚拟地址;数据长度,用于标识所述第二内存节点的用于RDMA写操作的数据的长度;和第二远端内存钥匙,用于表征访问所述第二内存节点存储设备的权限,以及结合所述第二虚拟地址确定所述用于RDMA写操作的数据在所述第二内存节点中的物理地址。
- 根据权利要求1-6任一项所述的方法,其特征在于,所述第二处理节点将所述RDMA拷贝操作消息发送给所述第二内存节点之后,进一步包括:接收所述第二内存节点的RDMA应答消息,所述RDMA应答消息用于指示所述RDMA写操作已完成。
- 一种远程直接数据存取RDMA数据拷贝的设备,其特征在于,包括:处理器、存储器、总线和通信接口;所述存储器用于存储计算机执行指令,所述处理器与所述存储器通过所述总线连接,当所述计算设备运行时,所述处理器执行所述存储器存储的所述计算机执行指令,以使所述远程直接数据存取RDMA数据拷贝的设备执 行权利要求1-7任一项所述的方法。
- 一种远程直接数据存取RDMA数据拷贝的方法,其特征在于,第一计算设备包括第一处理节点和第一内存节点,第二计算设备包括第二处理节点和第二内存节点,包括:所述第二内存节点接收来自所述第二处理节点的RDMA拷贝操作消息,所述RDMA拷贝操作消息携带第一节点标识、第一存储标识和第二存储标识,所述第一节点标识用于指示所述第一内存节点,所述第一存储标识用于指示所述第一内存节点中用于接受RDMA写操作的存储单元,所述第二存储标识用于指示所述第二内存节点用于所述RDMA写操作的数据;第二内存节点根据所述RDMA拷贝操作消息,取出所述第二存储标识指示的所述数据,根据所述第一存储标识,封装RDMA写操作消息,所述RDMA写操作消息中包含所述RDMA写操作的数据和所述第一存储标识;第二内存节点将所述RDMA写操作消息发送给所述第一节点标识指示的第一内存节点,指示第一内存节点将所述数据写入所述第一存储标识指示的存储单元。
- 根据权利要求9所述的方法,其特征在于,所述第一节点标识包括:保护域编号,用于标识所述第一内存节点所在的保护域;第一内存节点标识,用于在所述保护域中标识所述第一内存节点。
- 根据权利要求9所述的方法,其特征在于,所述第一内存节点和所述第二内存节点在同一保护域,所述第一节点标识包括:第一内存节点标识,用于在所述同一保护域中标识所述第一内存节点。
- 根据权利要求9-11任一项所述的方法,其特征在于,所述第一存储标识包括:第一虚拟地址,用于标识所述第一内存节点的用于接收所述RDMA写操作的存储单元的在所述第一处理节点的虚拟地址;和第一远端内存钥匙,用于表征访问所述第一内存节点的存储设备的权限,以及结合所述第一虚拟地址确定所述第一内存节点的用于接收RDMA写操作的存储单元的物理地址。
- 根据权利要求9-12任一项所述的方法,其特征在于,所述第二存储标识包括:第二虚拟地址,用于标识所述第二内存节点的用于RDMA写操作的数 据在所述第二处理节点中的虚拟地址;数据长度,用于标识所述第二内存节点的用于RDMA写操作的数据的长度;和第二远端内存钥匙,用于表征访问所述第二内存节点存储设备的权限,以及结合所述第二虚拟地址确定所述用于RDMA写操作的数据在所述第二内存节点中的物理地址。
- 根据权利要求9-13任一项所述的方法,其特征在于,还包括:接收所述第一内存节点的RDMA应答消息,所述RDMA应答消息用于指示RDMA写操作已完成。
- 根据权利要求14所述的方法,其特征在于,还包括,将所述RDMA应答消息发送给所述第二处理节点。
- 一种远程直接数据存取RDMA数据拷贝的设备,其特征在于,包括:处理器、存储器、总线和通信接口;所述存储器用于存储计算机执行指令,所述处理器与所述存储器通过所述总线连接,当所述计算设备运行时,所述处理器执行所述存储器存储的所述计算机执行指令,以使所述远程直接数据存取RDMA数据拷贝的设备执行权利要求9-15任一项所述的方法。
- 一种远程直接数据存取RDMA数据拷贝的方法,其特征在于,第一计算设备包括第一处理节点和第一内存节点,包括:第二计算设备向所述第一处理节点发送RDMA内存请求消息,所述RDMA内存请求消息用于向所述第一处理节点请求用于RDMA写操作的目标内存;所述第二计算设备接收来自所述第一处理节点的RDMA内存分配消息,所述RDMA内存分配消息携带第一节点标识和第一存储标识,所述第一节点标识用于指示所述第一内存节点,所述第一存储标识用于指示所述第一内存节点中用于接受所述RDMA写操作的存储单元;所述第二计算设备封装RDMA写操作消息,所述RDMA写操作消息中携带用于所述RDMA写操作的数据和所述第一存储标识;所述第二计算设备将所述RDMA写操作消息发送给所述第一节点标识指示的所述第一内存节点,指示所述第一内存节点将所述数据写入所述第一存储标识指示的存储单元。
- 根据权利要求17所述的方法,其特征在于,还包括:所述第二计算设备生成工作队列元素WQE,并将所述WQE放入与所述第一处理节点建立的RDMA连接的队列对QP的发送队列SQ中,所述WQE携带所述第一节点标识、所述第一存储标识和所述第二存储标识,用于指示将所述第二存储标识指示的存储单元中的数据拷贝至所述第一存储标识指示的存储单元中,所述第二存储标识用于指示所述第二存储设备用于所述RDMA写操作的数据;则所述第二计算设备封装RDMA写操作消息包括:所述第二计算设备从所述QP的发送队列SQ中取出所述WQE,根据所述WQE,取出所述第二存储标识指示的所述数据,根据所述第一存储标识,封装所述RDMA写操作消息。
- 根据权利要求17或18所述的方法,其特征在于,所述第一节点标识包括:保护域编号,用于标识所述第一内存节点所在的保护域;第一内存节点标识,用于在所述保护域中标识所述第一内存节点。
- 根据权利要求17或18所述的方法,其特征在于,所述第一内存节点和所述第二计算设备在同一保护域,所述第一节点标识包括:第一内存节点标识,用于在所述同一保护域中标识所述第一内存节点。
- 根据权利要求17-20任一项所述的方法,其特征在于,所述第一存储标识包括:第一虚拟地址,用于标识所述第一内存节点的用于接收所述RDMA写操作的存储单元的在所述第一处理节点的虚拟地址;和第一远端内存钥匙,用于表征访问所述第一内存节点的存储设备的权限,以及结合所述第一虚拟地址确定所述第一内存节点的用于接收RDMA写操作的存储单元的物理地址。
- 根据权利要求17-21任一项的方法,其特征在于,所述第二计算设备将所述RDMA写操作消息发送给所述第一节点标识指示的所述第一内存节点之后,进一步包括:接收所述第一内存节点的RDMA应答消息,所述RDMA应答消息用于指示RDMA写操作已完成。
- 一种远程直接数据存取RDMA数据拷贝的设备,其特征在于,包括:处理器、存储器、总线和通信接口;所述存储器用于存储计算机执行指令,所述处理器与所述存储器通过所述总线连接,当所述计算设备运行时,所述处理器执行所述存储器存储的所述计算机执行指令,以使所述远程直接数据存取RDMA数据拷贝的设备执行权利要求17-22任一项所述的方法。
- 一种远程直接数据存取RDMA数据拷贝的装置,其特征在于,第一计算设备包括第一处理节点和第一内存节点,第二计算设备包括所述装置与第二内存节点,包括:发送单元,所述第一处理节点发送RDMA内存请求消息,所述RDMA内存请求消息用于向所述第一处理节点请求用于RDMA写操作的目标内存;接收单元,用于接收来自所述第一处理节点的RDMA内存分配消息,所述RDMA内存分配消息携带第一节点标识和第一存储标识,所述第一节点标识用于指示所述第一内存节点,所述第一存储标识用于指示所述第一内存节点中用于接受所述RDMA写操作的存储单元;封装单元,用于封装RDMA拷贝操作消息,所述RDMA拷贝操作消息中携带所述第一节点标识、所述第一存储标识和第二存储标识,所述第二存储标识用于指示所述第二内存节点中用于所述RDMA写操作的数据的内存地址;所述发送单元,还用于将所述RDMA拷贝操作消息发送给所述第二内存节点,指示所述第二内存节点根据所述第一节点标识确定所述第一内存节点,将所述第二存储标识指示的存储单元中的数据写入所述第一存储标识指示的第一内存节点的存储单元。
- 根据权利要求24所述的装置,其特征在于,还包括生成单元,生成工作队列元素WQE,并将所述WQE放入所述第二内存节点RDMA连接的队列对QP的发送队列SQ中,所述WQE携带所述第一节点标识、所述第一存储标识和所述第二存储标识,用于指示将所述第二存储标识指示的存储单元中的数据拷贝至所述第一存储标识指示的存储单元中;则所述封装单元用于封装RDMA拷贝操作消息,包括:所述封装单元从所述QP的发送队列SQ中取出所述WQE,根据所述WQE,封装所述RDMA拷贝操作消息。
- 根据权利要求24或25所述的装置,其特征在于,所述第一节点标 识包括:保护域编号,用于标识所述第一内存节点所在的保护域;第一内存节点标识,用于在所述保护域中标识所述第一内存节点。
- 根据权利要求24或25所述的装置,其特征在于,所述第一内存节点和所述第二内存节点在同一保护域,所述第一节点标识包括:第一内存节点标识,用于在所述同一保护域中标识所述第一内存节点。
- 根据权利要求24-27任一项所述的装置,其特征在于,所述第一存储标识包括:第一虚拟地址,用于标识所述第一内存节点的用于接收所述RDMA写操作的存储单元的在所述第一处理节点的虚拟地址;和第一远端内存钥匙,用于表征访问所述第一内存节点的存储设备的权限,以及结合所述第一虚拟地址确定所述第一内存节点的用于接收RDMA写操作的存储单元的物理地址。
- 根据权利要求24-28任一项所述的装置,其特征在于,所述第二存储标识包括:第二虚拟地址,用于标识所述第二内存节点的用于RDMA写操作的数据在所述第二处理节点中的虚拟地址;数据长度,用于标识所述第二内存节点的用于RDMA写操作的数据的长度;和第二远端内存钥匙,用于表征访问所述第二内存节点存储设备的权限,以及结合所述第二虚拟地址确定所述用于RDMA写操作的数据在所述第二内存节点中的物理地址。
- 根据权利要求24-29任一项所述的装置,其特征在于,所述接收单元还用于:接收所述第二内存节点的RDMA应答消息,所述RDMA应答消息用于指示所述RDMA写操作已完成。
- 一种远程直接数据存取RDMA数据拷贝的装置,其特征在于,第一计算设备包括第一处理节点和第一内存节点,第二计算设备包括第二处理节点和所述装置,包括:接收单元,用于接收来自所述第二处理节点的RDMA拷贝操作消息,所述RDMA拷贝操作消息携带第一节点标识、第一存储标识和第二存储标识,所述第一节点标识用于指示所述第一内存节点,所述第一存储标识用于 指示所述第一内存节点中用于接受RDMA写操作的存储单元,所述第二存储标识用于指示所述第二内存节点用于所述RDMA写操作的数据;封装单元,用于根据所述RDMA拷贝操作消息,取出所述第二存储标识指示的所述数据,根据所述第一存储标识,封装RDMA写操作消息,所述RDMA写操作消息中包含所述RDMA写操作的数据和所述第一存储标识;发送单元,用于将所述RDMA写操作消息发送给所述第一节点标识指示的第一内存节点,指示第一内存节点将所述数据写入所述第一存储标识指示的存储单元。
- 根据权利要求31所述的装置,其特征在于,所述第一节点标识包括:保护域编号,用于标识所述第一内存节点所在的保护域;第一内存节点标识,用于在所述保护域中标识所述第一内存节点。
- 根据权利要求31所述的装置,其特征在于,所述第一内存节点和所述第二内存节点在同一保护域,所述第一节点标识包括:第一内存节点标识,用于在所述同一保护域中标识所述第一内存节点。
- 根据权利要求31-33任一项所述的装置,其特征在于,所述第一存储标识包括:第一虚拟地址,用于标识所述第一内存节点的用于接收所述RDMA写操作的存储单元的在所述第一处理节点的虚拟地址;和第一远端内存钥匙,用于表征访问所述第一内存节点的存储设备的权限,以及结合所述第一虚拟地址确定所述第一内存节点的用于接收RDMA写操作的存储单元的物理地址。
- 根据权利要求31-34任一项所述的装置,其特征在于,所述第二存储标识包括:第二虚拟地址,用于标识所述第二内存节点的用于RDMA写操作的数据在所述第二处理节点中的虚拟地址;数据长度,用于标识所述第二内存节点的用于RDMA写操作的数据的长度;和第二远端内存钥匙,用于表征访问所述第二内存节点存储设备的权限,以及结合所述第二虚拟地址确定所述用于RDMA写操作的数据在所述第二 内存节点中的物理地址。
- 根据权利要求31-35任一项所述的装置,其特征在于,所述接收单元还用于:接收所述第一内存节点的RDMA应答消息,所述RDMA应答消息用于指示RDMA写操作已完成。
- 根据权利要求36所述的装置,其特征在于,所述发送单元还用于:将所述RDMA应答消息发送给所述第二处理节点。
- 一种远程直接数据存取RDMA数据拷贝的装置,其特征在于,第一计算设备包括第一处理节点和第一内存节点,包括:发送单元,用于向所述第一处理节点发送RDMA内存请求消息,所述RDMA内存请求消息用于向所述第一处理节点请求用于RDMA写操作的目标内存;接收单元,用于接收来自所述第一处理节点的RDMA内存分配消息,所述RDMA内存分配消息携带第一节点标识和第一存储标识,所述第一节点标识用于指示所述第一内存节点,所述第一存储标识用于指示所述第一内存节点中用于接受所述RDMA写操作的存储单元;封装单元,用于封装RDMA写操作消息,所述RDMA写操作消息中携带用于所述RDMA写操作的数据和所述第一存储标识;所述发送单元还用于,将所述RDMA写操作消息发送给所述第一节点标识指示的所述第一内存节点,指示所述第一内存节点将所述数据写入所述第一存储标识指示的存储单元。
- 根据权利要求38所述的装置,其特征在于,还包括生成单元,所述生成单元用于生成工作队列元素WQE,并将所述WQE放入与所述第一处理节点建立的RDMA连接的队列对QP的发送队列SQ中,所述WQE携带所述第一节点标识、所述第一存储标识和所述第二存储标识,用于指示将所述第二存储标识指示的存储单元中的数据拷贝至所述第一存储标识指示的存储单元中,所述第二存储标识用于指示所述第二存储设备用于所述RDMA写操作的数据;所述封装单元用于封装RDMA写操作消息,包括:从所述QP的发送队列SQ中取出所述WQE,根据所述WQE,取出所述第二存储标识指示的所述数据,根据所述第一存储标识,封装所述RDMA写操作消息。
- 根据权利要求38或39所述的装置,其特征在于,所述第一节点标 识包括:保护域编号,用于标识所述第一内存节点所在的保护域;第一内存节点标识,用于在所述保护域中标识所述第一内存节点。
- 根据权利要求38或39所述的装置,其特征在于,所述第一内存节点和所述第二计算设备在同一保护域,所述第一节点标识包括:第一内存节点标识,用于在所述同一保护域中标识所述第一内存节点。
- 根据权利要求38-41任一项所述的装置,其特征在于,所述第一存储标识包括:第一虚拟地址,用于标识所述第一内存节点的用于接收所述RDMA写操作的存储单元的在所述第一处理节点的虚拟地址;和第一远端内存钥匙,用于表征访问所述第一内存节点的存储设备的权限,以及结合所述第一虚拟地址确定所述第一内存节点的用于接收RDMA写操作的存储单元的物理地址。
- 根据权利要求38-42任一项所述的装置,其特征在于,所述接收单元还用于:接收所述第一内存节点的RDMA应答消息,所述RDMA应答消息用于指示RDMA写操作已完成。
- 一种远程直接数据存取RDMA数据拷贝的系统,其特征在于,包括第一计算设备和第二计算设备,第一计算设备包括第一处理节点和第一内存节点,第二计算设备包括第二处理节点和第二内存节点:所述第二处理节点,用于向所述第一处理节点发送RDMA内存请求消息,所述RDMA内存请求消息用于向第一处理节点请求用于RDMA写操作的目标内存;所述第一处理节点,用于根据接收到的所述RDMA写操作消息,向所述第一内存节点申请接受RDMA写操作的内存,并向所述第二处理节点发送RDMA内存分配消息,所述RDMA内存分配消息携带第一节点标识和第一存储标识,所述第一节点标识用于指示所述第一内存节点,所述第一存储标识用于指示所述第一内存节点中用于接受所述RDMA写操作的存储单元;所述第二处理节点还用于:根据接收到的所述RDMA内存分配消息,封装RDMA拷贝操作消息,并将所述RDMA拷贝操作消息发送给所述第二内存节点,所述RDMA拷贝操作消息中携带所述第一节点标识、所述第一 存储标识和第二存储标识,所述第二存储标识用于指示所述第二内存节点中用于所述RDMA写操作的数据的内存地址;所述第二内存节点,用于根据接收到的所述RDMA拷贝操作消息,取出所述第二存储标识指示的所述数据,根据所述第一存储标识,封装RDMA写操作消息,所述RDMA写操作消息中包含所述RDMA写操作的数据和所述第一存储标识,并将所述RDMA写操作消息发送给所述第一内存节点;所述第一内存节点,用于根据接收到的所述RDMA写操作消息,将所述数据写到所述第一存储标识指示的存储单元中。
- 根据权利要求44所述的系统,其特征在于,所述第二处理节点还用于:生成工作队列元素WQE,并将所述WQE放入所述第二内存节点RDMA连接的队列对QP的发送队列SQ中,所述WQE携带所述第一节点标识、所述第一存储标识和所述第二存储标识,用于指示将所述第二存储标识指示的存储单元中的数据拷贝至所述第一存储标识指示的存储单元中;所述第二处理节点用于封装RDMA拷贝操作消息,包括:从所述QP的发送队列SQ中取出所述WQE,根据所述WQE,封装所述RDMA拷贝操作消息。
- 根据权利要求44或45所述的系统,其特征在于,所述第一节点标识包括:保护域编号,用于标识所述第一内存节点所在的保护域;第一内存节点标识,用于在所述保护域中标识所述第一内存节点。
- 根据权利要求44或45所述的系统,其特征在于,所述第一内存节点和所述第二内存节点在同一保护域,所述第一节点标识包括:第一内存节点标识,用于在所述同一保护域中标识所述第一内存节点。
- 根据权利要求44-47任一项所述的系统,其特征在于,所述第一存储标识包括:第一虚拟地址,用于标识所述第一内存节点的用于接收所述RDMA写操作的存储单元的在所述第一处理节点的虚拟地址;和第一远端内存钥匙,用于表征访问所述第一内存节点的存储设备的权限,以及结合所述第一虚拟地址确定所述第一内存节点的用于接收RDMA写操作的存储单元的物理地址。
- 根据权利要求44-48任一项所述的系统,其特征在于,所述第二存 储标识包括:第二虚拟地址,用于标识所述第二内存节点的用于RDMA写操作的数据在所述第二处理节点中的虚拟地址;数据长度,用于标识所述第二内存节点的用于RDMA写操作的数据的长度;和第二远端内存钥匙,用于表征访问所述第二内存节点存储设备的权限,以及结合所述第二虚拟地址确定所述用于RDMA写操作的数据在所述第二内存节点中的物理地址。
- 根据权利要求44-49所述的系统,其特征在于,所述第二内存节点还用于:接收所述第一内存节点的RDMA应答消息,并将所述RDMA应答消息发送给所述第二处理节点,所述RDMA应答消息用于指示所述RDMA写操作已完成。
- 一种远程直接数据存取RDMA数据拷贝的系统,其特征在于,包括第一计算设备和第二计算设备,所述第一计算设备包括第一处理节点和第一内存节点,包括:所述第二计算设备,用于向所述第一处理节点发送RDMA内存请求消息,所述RDMA内存请求消息用于向所述第一处理节点请求用于RDMA写操作的目标内存;所述第一处理节点,用于根据接收到的所述RDMA写操作消息,向所述第一内存节点申请接受RDMA写操作的内存,并向所述第二处理节点发送RDMA内存分配消息,所述RDMA内存分配消息携带第一节点标识和第一存储标识,所述第一节点标识用于指示所述第一内存节点,所述第一存储标识用于指示所述第一内存节点中用于接受所述RDMA写操作的存储单元;所述第二计算设备还用于,封装RDMA写操作消息,所述RDMA写操作消息中携带用于所述RDMA写操作的数据和所述第一存储标识,并将所述RDMA写操作消息发送给所述第一节点标识指示的第一内存节点;所述第一内存节点,用于根据接收到的所述RDMA写操作消息,将所述数据写到所述第一存储标识指示的存储单元中。
- 根据权利要求51所述的系统,其特征在于,所述第二计算设备还用于:生成工作队列元素WQE,并将所述WQE放入与所述第一处理节点 建立的RDMA连接的队列对QP的发送队列SQ中,所述WQE携带所述第一节点标识、所述第一存储标识和所述第二存储标识,用于指示将所述第二存储标识指示的存储单元中的数据拷贝至所述第一存储标识指示的存储单元中,所述第二存储标识用于指示所述第二存储设备用于所述RDMA写操作的数据;所述第二计算设备封装RDMA写操作消息包括:所述第二计算设备从所述QP的发送队列SQ中取出所述WQE,根据所述WQE,取出所述第二存储标识指示的所述数据,根据所述第一存储标识,封装所述RDMA写操作消息。
- 根据权利要求51或52所述的系统,其特征在于,所述第一节点标识包括:保护域编号,用于标识所述第一内存节点所在的保护域;第一内存节点标识,用于在所述保护域中标识所述第一内存节点。
- 根据权利要求51或52所述的系统,其特征在于,所述第一内存节点和所述第二计算设备在同一保护域,所述第一节点标识包括:第一内存节点标识,用于在所述同一保护域中标识所述第一内存节点。
- 根据权利要求51-54任一项所述的系统,其特征在于,所述第一存储标识包括:第一虚拟地址,用于标识所述第一内存节点的用于接收所述RDMA写操作的存储单元的在所述第一处理节点的虚拟地址;和第一远端内存钥匙,用于表征访问所述第一内存节点的存储设备的权限,以及结合所述第一虚拟地址确定所述第一内存节点的用于接收RDMA写操作的存储单元的物理地址。
- 根据权利要求51-55任一项所述的系统,其特征在于,所述第二计算设备还用于:接收所述第一内存节点的RDMA应答消息,所述RDMA应答消息用于指示RDMA写操作已完成。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201480037832.9A CN105518611B (zh) | 2014-12-27 | 2014-12-27 | 一种远程直接数据存取方法、设备和系统 |
PCT/CN2014/095232 WO2016101288A1 (zh) | 2014-12-27 | 2014-12-27 | 一种远程直接数据存取方法、设备和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2014/095232 WO2016101288A1 (zh) | 2014-12-27 | 2014-12-27 | 一种远程直接数据存取方法、设备和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2016101288A1 true WO2016101288A1 (zh) | 2016-06-30 |
Family
ID=55725008
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/CN2014/095232 WO2016101288A1 (zh) | 2014-12-27 | 2014-12-27 | 一种远程直接数据存取方法、设备和系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN105518611B (zh) |
WO (1) | WO2016101288A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111352578A (zh) * | 2018-12-24 | 2020-06-30 | 深圳先进技术研究院 | 一种全新服务器之间的内存借用策略 |
CN111654519A (zh) * | 2017-09-06 | 2020-09-11 | 华为技术有限公司 | 用于传输数据处理请求的方法和装置 |
CN116361037A (zh) * | 2023-05-18 | 2023-06-30 | 之江实验室 | 一种分布式通信系统及方法 |
US11893425B2 (en) | 2020-09-25 | 2024-02-06 | Intel Corporation | Disaggregated computing for distributed confidential computing environment |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106487896B (zh) * | 2016-10-14 | 2019-10-08 | 北京百度网讯科技有限公司 | 用于处理远程直接内存访问请求的方法和装置 |
WO2018119738A1 (en) * | 2016-12-28 | 2018-07-05 | Intel Corporation | Speculative read mechanism for distributed storage system |
CN109144972B (zh) * | 2017-06-26 | 2022-07-12 | 华为技术有限公司 | 一种数据迁移的方法以及数据节点 |
CN108228476B (zh) * | 2017-12-22 | 2021-02-09 | 新华三技术有限公司 | 一种数据获取方法及装置 |
CN109426632B (zh) * | 2018-02-01 | 2021-09-21 | 新华三技术有限公司 | 内存访问方法和装置 |
CN108494817B (zh) * | 2018-02-08 | 2022-03-04 | 华为技术有限公司 | 数据传输方法、相关装置及系统 |
CN108984465B (zh) | 2018-06-06 | 2021-08-20 | 华为技术有限公司 | 一种消息传输方法及设备 |
CN109582592B (zh) * | 2018-10-26 | 2021-06-15 | 华为技术有限公司 | 资源管理的方法和装置 |
CN111277616B (zh) * | 2018-12-04 | 2023-11-03 | 中兴通讯股份有限公司 | 一种基于rdma的数据传输方法和分布式共享内存系统 |
CN111274176B (zh) * | 2020-01-15 | 2022-04-22 | 联想(北京)有限公司 | 一种信息处理方法、电子设备、系统及存储介质 |
CN113407357B (zh) * | 2020-03-17 | 2023-08-22 | 华为技术有限公司 | 进程间数据搬移的方法及装置 |
CN113852656B (zh) * | 2020-06-28 | 2023-02-10 | 华为技术有限公司 | 一种数据传输方法、处理器系统及内存访问系统 |
CN114090274A (zh) * | 2020-07-31 | 2022-02-25 | 华为技术有限公司 | 网络接口卡、存储装置、报文接收方法和发送方法 |
CN113326154B (zh) * | 2021-06-28 | 2023-07-14 | 深信服科技股份有限公司 | 连接管理方法、装置、电子设备和存储介质 |
CN113760798A (zh) * | 2021-08-05 | 2021-12-07 | 阿里巴巴新加坡控股有限公司 | Rdma设备的分配方法、计算设备及存储介质 |
CN116414735A (zh) * | 2021-12-30 | 2023-07-11 | 华为技术有限公司 | 数据存储方法、系统、存储访问配置方法及相关设备 |
CN114827234B (zh) * | 2022-04-29 | 2024-09-06 | 广东浪潮智慧计算技术有限公司 | 一种数据传输方法、系统、装置及存储介质 |
CN114979001B (zh) * | 2022-05-20 | 2023-06-13 | 北京百度网讯科技有限公司 | 基于远程直接数据存取的数据传输方法、装置以及设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1751297A (zh) * | 2002-12-17 | 2006-03-22 | 甲骨文国际公司 | 用直接存储器存取在两台或更多机器之间执行数据库操作 |
US8407377B1 (en) * | 2012-03-23 | 2013-03-26 | DSSD, Inc. | Storage system with multicast DMA and unified address space |
CN103440202A (zh) * | 2013-08-07 | 2013-12-11 | 华为技术有限公司 | 一种基于rdma的通信方法、系统及通信设备 |
CN103607428A (zh) * | 2013-10-30 | 2014-02-26 | 华为技术有限公司 | 一种访问共享内存的方法和装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7299266B2 (en) * | 2002-09-05 | 2007-11-20 | International Business Machines Corporation | Memory management offload for RDMA enabled network adapters |
US20060165084A1 (en) * | 2005-01-21 | 2006-07-27 | International Business Machines Corporation | RNIC-BASED OFFLOAD OF iSCSI DATA MOVEMENT FUNCTION BY TARGET |
CN104166597B (zh) * | 2013-05-17 | 2018-07-03 | 华为技术有限公司 | 一种分配远程内存的方法及装置 |
CN104202391B (zh) * | 2014-08-28 | 2018-09-25 | 浪潮(北京)电子信息产业有限公司 | 共享系统地址空间的非紧耦合系统间的rdma通信方法 |
-
2014
- 2014-12-27 CN CN201480037832.9A patent/CN105518611B/zh active Active
- 2014-12-27 WO PCT/CN2014/095232 patent/WO2016101288A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1751297A (zh) * | 2002-12-17 | 2006-03-22 | 甲骨文国际公司 | 用直接存储器存取在两台或更多机器之间执行数据库操作 |
US8407377B1 (en) * | 2012-03-23 | 2013-03-26 | DSSD, Inc. | Storage system with multicast DMA and unified address space |
CN103440202A (zh) * | 2013-08-07 | 2013-12-11 | 华为技术有限公司 | 一种基于rdma的通信方法、系统及通信设备 |
CN103607428A (zh) * | 2013-10-30 | 2014-02-26 | 华为技术有限公司 | 一种访问共享内存的方法和装置 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111654519A (zh) * | 2017-09-06 | 2020-09-11 | 华为技术有限公司 | 用于传输数据处理请求的方法和装置 |
CN111654519B (zh) * | 2017-09-06 | 2024-04-30 | 华为技术有限公司 | 用于传输数据处理请求的方法和装置 |
CN111352578A (zh) * | 2018-12-24 | 2020-06-30 | 深圳先进技术研究院 | 一种全新服务器之间的内存借用策略 |
US11893425B2 (en) | 2020-09-25 | 2024-02-06 | Intel Corporation | Disaggregated computing for distributed confidential computing environment |
US11941457B2 (en) | 2020-09-25 | 2024-03-26 | Intel Corporation | Disaggregated computing for distributed confidential computing environment |
US11989595B2 (en) | 2020-09-25 | 2024-05-21 | Intel Corporation | Disaggregated computing for distributed confidential computing environment |
US12033005B2 (en) | 2020-09-25 | 2024-07-09 | Intel Corporation | Disaggregated computing for distributed confidential computing environment |
US12093748B2 (en) | 2020-09-25 | 2024-09-17 | Intel Corporation | Disaggregated computing for distributed confidential computing environment |
CN116361037A (zh) * | 2023-05-18 | 2023-06-30 | 之江实验室 | 一种分布式通信系统及方法 |
CN116361037B (zh) * | 2023-05-18 | 2023-08-18 | 之江实验室 | 一种分布式通信系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105518611A (zh) | 2016-04-20 |
CN105518611B (zh) | 2019-10-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2016101288A1 (zh) | 一种远程直接数据存取方法、设备和系统 | |
US11792307B2 (en) | Methods and apparatus for single entity buffer pool management | |
US10698717B2 (en) | Accelerator virtualization method and apparatus, and centralized resource manager | |
US9578034B2 (en) | Trusted peripheral device for a host in a shared electronic environment | |
US9344490B2 (en) | Cross-channel network operation offloading for collective operations | |
US10868743B2 (en) | System and method for providing fast platform telemetry data | |
US9342448B2 (en) | Local direct storage class memory access | |
CN109445905B (zh) | 虚拟机数据通信方法和系统以及虚拟机配置方法和装置 | |
US7634650B1 (en) | Virtualized shared security engine and creation of a protected zone | |
US9378049B1 (en) | Servicing I/O requests in an I/O adapter device | |
CN113326228B (zh) | 基于远程直接数据存储的报文转发方法、装置及设备 | |
JP2018509674A (ja) | ネットワーク・マップド・ストレージを用いたホスト・ベースの不揮発性メモリのクラスタ化 | |
CN108701004A (zh) | 一种数据处理的系统、方法及对应装置 | |
WO2015058698A1 (en) | Data forwarding | |
WO2015058699A1 (en) | Data forwarding | |
WO2019129167A1 (zh) | 一种处理数据报文的方法和网卡 | |
KR20140021677A (ko) | 모바일 컴퓨팅 디바이스를 통한 관리형 usb 서비스들의 원격 전달을 위한 방법 및 장치 | |
CN104021069A (zh) | 基于分布式虚拟机系统的软件性能测试的管理方法和系统 | |
US20210297370A1 (en) | Enhanced virtual switch for network function virtualization | |
WO2021063160A1 (zh) | 访问固态硬盘的方法及存储设备 | |
WO2016095762A1 (zh) | 一种虚拟机访问控制方法,及虚拟机访问控制系统 | |
US20150277924A1 (en) | Chained-instruction dispatcher | |
WO2018040622A1 (zh) | 信息处理方法和装置 | |
US20180181421A1 (en) | Transferring packets between virtual machines via a direct memory access device | |
CN112422357A (zh) | 网络通信路径的状态检测方法以及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 14908856 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 14908856 Country of ref document: EP Kind code of ref document: A1 |