WO2022141250A1 - 数据传输方法和相关装置 - Google Patents

数据传输方法和相关装置 Download PDF

Info

Publication number
WO2022141250A1
WO2022141250A1 PCT/CN2020/141620 CN2020141620W WO2022141250A1 WO 2022141250 A1 WO2022141250 A1 WO 2022141250A1 CN 2020141620 W CN2020141620 W CN 2020141620W WO 2022141250 A1 WO2022141250 A1 WO 2022141250A1
Authority
WO
WIPO (PCT)
Prior art keywords
data transmission
data
solid
storage node
computing node
Prior art date
Application number
PCT/CN2020/141620
Other languages
English (en)
French (fr)
Inventor
王华强
孙浩
陈林峰
Original Assignee
华为技术有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 华为技术有限公司 filed Critical 华为技术有限公司
Priority to PCT/CN2020/141620 priority Critical patent/WO2022141250A1/zh
Priority to CN202080107172.2A priority patent/CN116569154A/zh
Publication of WO2022141250A1 publication Critical patent/WO2022141250A1/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/32Handling requests for interconnection or transfer for access to input/output bus using combination of interrupt and burst mode transfer

Definitions

  • the data to be written is read from the computing node based on the data transmission instruction, and sent to the solid-state drive for writing; or the data to be read is read from the solid-state drive and sent to the computing node
  • the data transmission method further includes: sending a data completion message to the receiving queue RQ of the computing node through the sending queue SQ of the storage node, where the data completion message is used to instruct the data to be written in the computing node to be written to the solid state.
  • the data to be read in the hard disk or the solid-state disk is written to the computing node.
  • the data completion message can indicate that the data transmission of the computing node is completed, and the task queue in the computing node can be cancelled, so as to improve the data transmission efficiency of the distributed system.
  • the PCIe link writes the information of the data transmission request into the memory of the SSD, and the data transmission instruction is used to control the storage node to read the data to be written from the computing node and send it to the SSD for writing; or from the SSD
  • the data to be read is read in and sent to the computing node for writing; the data transmission instruction is sent to the storage node through the PCIe link. That is to say, the storage node does not register the data transmission request from the computing node in its own memory, but directly registers the memory on the solid-state disk, which reduces the time for memory registration.
  • the solid-state drive generates a data transmission instruction after the memory is registered to control the storage node to realize data transmission between the computing node and the solid-state drive.
  • an embodiment of the present application provides a data transmission method, which is applied to a computing node. Communication between the storage node and the computing node is based on the remote process direct data access (RDMA) protocol, and the storage node and the solid-state hard disk communicate with each other through peripheral devices.
  • RDMA remote process direct data access
  • High-speed connection bus PCIe link connection in which: a data transmission request is generated, and the data transmission request is used to specify data transmission between the SSD and the computing node; the data transmission request is sent to the receiving queue RQ of the storage node through the sending queue SQ of the computing node ; Receive the data transmission instruction from the sending queue RQ of the storage node through the receiving queue RQ of the computing node, and the data transmission instruction is obtained by the solid state drive according to the information written by the storage node in the memory of the data transmission request in the solid state drive; the computing node is based on the data The transmission indicates that the data to be written is read by the storage node, or the data to be read is written from the solid state disk.
  • the storage node does not register the data transmission request from the radio frequency circuit of the computing node in its own memory, but directly registers the memory on the solid-state disk, which reduces the time for memory registration.
  • the solid-state drive generates a data transmission instruction after the memory registration to control the data transmission between the storage node and the computing node.
  • the storage node acts as the transmission medium between the computing node and the solid-state drive, and there is no cache to be written. Incoming data or to-be-read data reduces the time for data caching by storage nodes and improves data transmission efficiency.
  • the present application provides a device, including a processing unit, a storage unit, and a communication unit, for executing instructions of steps in the method of any of the foregoing aspects.
  • the present application provides a chip, including a processor and a memory, where the processor is used to call and run instructions stored in the memory from the memory, so that the device equipped with the chip executes the steps in the method of any one of the above-mentioned aspects. instruction.
  • FIG. 4 is a schematic flowchart of a data transmission method provided by an embodiment of the present application.
  • FIG. 8 is a schematic structural diagram of a device provided by an embodiment of the present application.
  • Each data transfer request (also referred to as a send queue entry (SQE) or a submit queue element (SQE)) can be stored in a unit of the SQ, which can be referred to as a slot of the SQ (slot), each slot corresponds to two PRGs or one SGL in the buffer.
  • the SQ is provided with a head pointer and a tail pointer.
  • the head pointer is used to indicate the slot of the SQE that can be taken away at the current moment
  • the tail pointer is used to indicate the slot of the newly added SQE at the current moment.
  • the head pointer is incremented by 1.
  • the data transmission requests to be executed need to be stored in the slots of the submission queue one by one in the order of receipt, and then read one by one in the order of first in first out (FIFO).
  • the computing node may be an independent server with computing functions.
  • the computing node is a virtual block system (virtual block system, VBS).
  • the storage node can be an independent server with a solid-state drive, or an independent SSD box (just a bunch of flash, JBOF).
  • the storage node can be an object-based storage device (OSD), etc.
  • OSD object-based storage device
  • This application also does not limit the number of computing nodes and storage nodes, and one computing node can be connected to multiple storage nodes. It can be understood that the computing nodes in the computing cluster can send a data transmission request to the storage cluster through the network, so that the corresponding storage node in the storage cluster executes the data transmission request.
  • the solid-state disk in this embodiment of the present application may be a solid-state disk (SSD), and the SSD may include, but is not limited to, various types of non-volatile memory, such as three-dimensional cross point memory, flash memory, ferroelectric memory, silicon Oxide-nitride-oxide-silicon (SONOS) memory, polymer memory, nanowire, ferroelectric transistor random access memory (field-effect transistor random access memory, FeTRAM or FeRAM), nanowire or electrically erasable Programmable read only memory (Electrically Erasable Programmable read only memory, EEPROM).
  • This application does not limit the number of solid-state drives connected to the storage node, which may be 12, 24, or 36, and so on.
  • the solid state drive may include connecting with the storage node through a high-speed serial computer expansion bus standard (Peripheral Component Interconnect express, PCIe) link.
  • PCIe Peripheral Component Interconnect express
  • the protocol conversion of the commands received from the computing nodes in the storage nodes is performed through the solid-state hard disk, that is, the commands based on the RDMA protocol are converted into commands based on the NVMe protocol, so that the work task of the storage node conversion protocol can be relieved, and it is convenient to improve the storage node. processing efficiency.
  • the first response message is used to instruct the storage node to complete memory registration, or instruct the computing node to write data.
  • the solid-state disk performs memory registration based on the second data transmission command to obtain second data information.
  • the solid state disk receives the data to be written from the computing node through the PCIe link.
  • the storage node receives the data transmission request from the computing node, and the storage node can be directly on the memory queue of the storage node in the memory of the solid-state drive. Register the data transfer request in memory, and write the information of the data transfer request. That is to say, the storage node does not register the data transmission request from the computing node in its own memory, but establishes the memory queue of the storage node on the SSD in advance. In this way, the storage node can directly perform processing on the SSD. Memory registration reduces the time for memory registration.
  • the solid state disk generates a data transmission instruction according to the information of the data transmission request in the memory, and the data transmission instruction is a read command.
  • the data transmission instruction is used to control the storage node to read the data to be written from the computing node, and send it to the solid-state hard disk for writing.
  • the command types of the data transfer instruction and the data transfer request are opposite, and the data transfer instruction is relative to the computing node, and the data transfer request is relative to the solid state disk.
  • the data transfer instruction is a write command, that is, the data to be read written by the computing node into the solid-state disk.
  • the data transfer instruction is a read command, that is, the data to be written in the computing node is read by the storage node.
  • the data transfer instruction when the data transfer instruction is a write command, the data transfer instruction includes the target address in the solid state disk and the source address in the computing node.
  • the data transfer instruction when the data transfer instruction is a read command, the data transfer instruction includes the source address in the solid state disk and the destination address in the computing node.
  • the operation type of the data transfer request is the read type, that is, when the data transfer instruction is a write command, the storage node reads the data to be read from the solid-state hard disk, and sends it. Write to the compute node.
  • the storage node reads the data to be written from the computing node and sends it to the solid-state hard disk for writing.
  • the SSD first parses the commands based on the NVMe protocol to obtain target information, and does not require the storage node to perform protocol conversion, which can reduce the workload of the storage node. Then, the solid-state drive generates a data transmission instruction according to the target information, so as to control the storage node to read the data to be written, which can improve the storage efficiency of the distributed system.
  • Step S405 can also be understood as that the storage node receives the data transmission instruction from the solid-state hard disk through the PCIe connection.
  • the solid-state drive generates a data transmission instruction after the memory registration to control the data transmission between the storage node and the computing node.
  • the storage node acts as the transmission medium between the computing node and the solid-state drive, and there is no cache to be written. This reduces the time for storage nodes to cache data and improves the efficiency of data transmission.
  • the data transmission method further includes: the storage node sends a data completion message to the receiving queue RQ of the computing node through the sending queue SQ of the storage node.
  • the data completion message is used to instruct the computing node to store the data to be written in the solid-state hard disk. That is to say, after the storage node transmits the data to be written to the SSD, it can send a data completion message to the computing node to indicate that the data transmission of the computing node is completed, and can cancel the task queue in the computing node, which is convenient to improve the performance of the distributed system. Data transfer efficiency.
  • the computing node generates a data transmission request, and the data transmission request is a read command.
  • the computing node sends a data transmission request to the receiving queue RQ of the storage node through the sending queue SQ of the computing node.
  • S605 The solid-state disk sends the data transmission instruction to the storage node through the PCIe link.
  • the storage node sends a data transmission indication to the receiving queue RQ of the computing node through the sending queue SQ of the storage node.
  • the storage node reads the data to be read from the solid-state disk based on the data transmission instruction, and sends the data to the computing node for writing.
  • the SSD can generate The data transmission instruction, so as to control the storage node to read the data to be read from the solid-state hard disk according to the data transmission instruction, and write it to the computing node. That is to say, the storage node does not register the data transmission request from the computing node in its own memory, but directly registers the memory on the solid-state disk, which reduces the time for memory registration. And the solid-state drive generates a data transmission instruction after the memory registration to control the data transmission between the storage node and the computing node.
  • the storage node acts as the transmission medium between the computing node and the solid-state drive, and there is no cache to be read. Fetching data reduces the time for the storage node to cache data and improves the efficiency of data transmission.
  • FIG. 7 is a schematic structural diagram of another distributed system provided by an embodiment of the application.
  • the distributed system includes a storage node 20 connected to a second radio frequency circuit 101 of a computing node 10 through a network, and a storage node 20 connected to a second radio frequency circuit 101 of a computing node 10 through a network.
  • the solid state disk 30 connected to the storage node 20 will be described in detail.
  • the storage node 20 may include a first radio frequency circuit 201 for communicating with the computing node 10 .
  • the storage node 20 may further include a first processor 202 connected to the first radio frequency circuit 201 and the solid state disk 30 , and a first memory 203 connected to the processor 202 .
  • the first processor 202 may be connected to the first radio frequency circuit 201 , the first memory 203 and the solid state disk 30 through a PCIe link. As mentioned above, after the distributed system is powered on, the first processor 202 can perform the device operation on the first radio frequency circuit 201, the first memory 203 and the solid state disk 30 (eg, the second memory 301 and the second processor 302). Enumerate and allocate the register addresses of the first radio frequency circuit 201, the first memory 203 and the solid state drive 30, so that the first radio frequency circuit 201 can access the first memory 203 and the solid state drive through the register addresses allocated in the PCIe link 30 memory space.
  • the computing node 10 includes a second radio frequency circuit 101 for communicating with the first radio frequency circuit 201; the computing node 10 further includes a third processor 102 connected to the second radio frequency circuit 101 for writing When the data is to be written, select the solid-state drive that finally stores the data to be written according to the data size of the data to be written and the attribute information of each solid-state drive.
  • the source address and target address stored in 10 generate commands (for example, the data transmission instructions in the embodiments of the present application); it can also be used to determine the target in the computing node 10 according to the data size of the data to be written when reading data.
  • the processor in the solid state drive 30 may be configured to perform memory registration on the instruction sent by the processor of the storage node 20 to determine the target address of the data to be written or the source address of the data to be read.
  • the processor in the solid-state drive 30 can also be used to perform protocol conversion on the instruction. It can be understood that the processor in the solid-state drive 30 converts the command based on the RDMA protocol into the command based on the NVMe protocol, thereby reducing the storage node conversion protocol. Work tasks to improve the processing efficiency of storage nodes.
  • the third processor 102 is configured to generate a data transmission request, and the data transmission request is used to specify data transmission between the solid-state disk 30 and the computing node 10;
  • the second radio frequency circuit 101 is configured to send a data transmission request to the receiving queue RQ of the storage node 20 through the sending queue SQ of the computing node 10 ; and receiving the data transmission instruction from the sending queue RQ of the storage node 20 through the receiving queue RQ of the computing node 10 , the data transmission instruction is obtained by the solid-state hard disk 30 according to the information written by the storage node 20 in the memory of the solid-state hard disk 30 to the data transmission request;
  • the second radio frequency circuit 101 is further configured to receive a data completion message from the sending queue SQ of the storage node 20 through the receiving queue RQ of the computing node 10, where the data completion message is used to indicate the data completion message in the computing node 10.
  • the data to be written is written to the solid state drive 30 , or the data to be read in the solid state drive 30 is written to the computing node 10 .
  • the first radio frequency circuit 201 is further configured to send a data completion message to the receive queue RQ of the computing node 10 through the sending queue SQ of the storage node 20, where the data completion message is used to indicate the data completion message in the computing node 10.
  • the data to be written is written to the solid state drive 30 , or the data to be read in the solid state drive 30 is written to the computing node 10 .
  • the data transmission process is performed by the first radio frequency circuit 201 of the storage node 20 instead of the first processor 202 of the storage node 20.
  • the first processor 202 acts as a transit node on the PCIe link to improve storage Storage efficiency of nodes.
  • the first memory 203 of the storage node 20 does not cache the data to be written or the data to be read, which can avoid being limited by the bandwidth pressure of the first memory 203 and improve the bandwidth processing capability of the storage node 20 .
  • the communication unit 802 is configured to send a data transmission request to the receiving queue RQ of the storage node through the sending queue SQ of the computing node; receive a data transmission instruction from the sending queue RQ of the storage node through the receiving queue RQ of the computing node, and the data transmission instruction is a solid state.
  • the hard disk is obtained according to the information that the storage node writes the data transmission request in the memory of the solid-state hard disk;
  • the processor 901 in the device 900 is configured to read computer program codes stored in the memory 902.
  • the device 900 may include one of a computing node, a storage node, and a solid-state hard disk.
  • the storage node and the computing node communicate based on the RDMA protocol, and the storage node and the SSD are connected through a PCIe link.
  • the data transmission instruction is received from the sending queue RQ of the storage node through the receiving queue RQ of the computing node, and the data transmission instruction is obtained by the solid-state disk according to the information of the data transmission request written by the storage node in the memory of the solid-state disk;
  • the processor 901 is configured to perform the following operations:
  • the data transfer instruction is opposite to the command type of the data transfer request.
  • the data transfer instruction is obtained by the SSD according to the information of the data transfer request in the memory of the SSD;
  • the data transmission request includes a first command and a second command
  • the first command is based on the RDMA protocol
  • the second command is based on the NVMe protocol
  • the processor 901 is specifically configured to perform the following operations:
  • the computer instructions may be stored in or transmitted from one computer-readable storage medium to another computer-readable storage medium, for example, the computer instructions may be downloaded from a website site, computer, server, or data center Transmission to another website site, computer, server, or data center by wire (eg, coaxial cable, optical fiber, digital subscriber line, DSL) or wireless (eg, infrared, wireless, microwave, etc.).
  • the computer-readable storage medium may be any available medium that can be accessed by a computer or a data storage device such as a server, data center, etc. that includes an integration of one or more available media.
  • the usable media may be magnetic media (eg, floppy disks, hard disks, magnetic tapes), optical media (eg, digital versatile discs (DVDs)), or semiconductor media (eg, solid state drives), and the like.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Bus Control (AREA)

Abstract

本申请实施例提供一种数据传输方法,存储节点和计算节点之间基于RDMA协议进行通信,存储节点与固态硬盘之间通过PCIe链路连接,存储节点通过存储节点的RQ从计算节点的SQ中接收数据传输请求;存储节点基于PCIe链路将数据传输请求的信息写入固态硬盘的内存中;存储节点通过PCIe链路从固态硬盘中接收数据传输指示;存储节点通过存储节点的SQ向计算节点的RQ中发送数据传输指示;存储节点基于数据传输指示从计算节点中读取待写入数据,并发送至固态硬盘进行写入;或者从固态硬盘中读取待读取数据,并发送至计算节点进行写入。采用本申请实施例,通过PCIe链路和存储节点提高了计算节点和固态硬盘之间的数据传输效率。

Description

数据传输方法和相关装置 技术领域
本申请涉及存储技术领域,尤其涉及一种数据传输方法和相关装置。
背景技术
随着大数据和云计算的兴起,应用环境中需要处理大数据的场景越来越多,因此以计算存储分离为代表的分布式系统逐渐成为了云计算的一个底层基础设施。存储资源和计算资源解耦,方便存储资源扩容,有利于实现存储资源池化的目的。然而,计算集群中的计算节点规模通常在几十到数万个之间,存储集群的存储节点规模一般在几个到几百个之间,大型互联网厂商甚至可以达到数百万的规模。在上述规模下,如何提高数据传输效率是本领域技术人员待解决的技术问题。
发明内容
本申请实施例公开了一种数据传输方法和相关装置,通过PCIe链路和存储节点提高了计算节点和固态硬盘之间的数据传输效率。
第一方面,本申请实施例公开了一种数据传输方法,应用于存储节点,存储节点和计算节点之间基于远进程直接数据存取RDMA协议进行通信,存储节点与固态硬盘之间通过外围设备高速连接总线PCIe链路连接,其中:通过存储节点的接收队列RQ从计算节点的发送队列SQ中接收数据传输请求,数据传输请求用于指定固态硬盘与计算节点之间进行数据传输;基于PCIe链路将数据传输请求的信息写入固态硬盘的内存中;通过PCIe链路从固态硬盘中接收数据传输指示,数据传输指示和数据传输请求的命令类型相反,数据传输指示是固态硬盘根据固态硬盘的内存中数据传输请求的信息得到的;通过存储节点的发送队列SQ向计算节点的接收队列RQ发送数据传输指示;基于数据传输指示从计算节点中读取待写入数据,并发送至固态硬盘进行写入;或者从固态硬盘中读取待读取数据,并发送至计算节点进行写入。也就是说,存储节点没有在自己的内存中对来自计算节点的数据传输请求进行内存注册,而是直接在固态硬盘上进行内存注册,减少了内存注册的时间。且固态硬盘在内存注册之后生成数据传输指示,以控制存储节点实现与计算节点之间的数据传输,该数据传输的过程中存储节点作为计算节点和固态硬盘之间的传输介质,没有缓存待写入数据或待读取数据,减少了存储节点进行数据缓存的时间,提高了数据传输效率。
在一种可能的示例中,数据传输请求包括第一命令和第二命令,第一命令基于RDMA协议,第二命令基于非易失性传输总线NVMe协议,基于PCIe链路将数据传输请求的信息写入固态硬盘的内存中包括:基于PCIe链路将存储节点的内存队列建立在固态硬盘上;对第一命令进行解析,得到数据传输请求对应的固态硬盘;将第二命令的信息写入固态硬盘上的存储节点的内存队列中,以使数据传输请求的信息写入固态硬盘的内存中。可以理 解,存储节点没有在自己的内存中对来自计算节点的数据传输请求进行内存注册,而是提前将存储节点的内存队列建立在固态硬盘上,如此,存储节点可直接在固态硬盘上进行内存注册,减少了内存注册的时间。且在内存注册之后固态硬盘可基于数据传输请求的信息在内存中为待写入数据分配内存空间,或者确定待读取数据的存储地址,从而可生成控制存储节点实现与计算节点进行数据传输的命令(即本申请实施例中的数据传输指示),提高了数据传输效率。
在一种可能的示例中,在基于数据传输指示从计算节点中读取待写入数据,并发送至固态硬盘进行写入;或者从固态硬盘中读取待读取数据,并发送至计算节点进行写入之后,该数据传输方法还包括:通过存储节点的发送队列SQ向计算节点的接收队列RQ中发送数据完成消息,数据完成消息用于指示计算节点中的待写入数据写入至固态硬盘,或者固态硬盘中的待读取数据写入至计算节点。如此,数据完成消息可指示计算节点数据传输完成,可注销计算节点中的任务队列,便于提高分布式系统的数据传输效率。
第二方面,本申请实施例提供了一种数据传输方法,应用于固态硬盘,存储节点和计算节点之间基于RDMA协议进行通信,存储节点与固态硬盘之间通过PCIe链路连接,其中:根据内存中数据传输请求的信息生成数据传输指示,数据传输请求是计算节点发送给存储节点的,且用于指定固态硬盘与计算节点之间进行数据传输,内存中数据传输请求的信息是存储节点基于PCIe链路将数据传输请求的信息写入固态硬盘的内存中的,数据传输指示用于控制存储节点从计算节点中读取待写入数据,并发送至固态硬盘进行写入;或者从固态硬盘中读取待读取数据,并发送至计算节点进行写入;通过PCIe链路向存储节点发送数据传输指示。也就是说,存储节点没有在自己的内存中对来自计算节点的数据传输请求进行内存注册,而是直接在固态硬盘上进行内存注册,减少了内存注册的时间。且固态硬盘在内存注册之后生成数据传输指示,以控制存储节点实现计算节点和固态硬盘之间的数据传输,该数据传输的过程中存储节点作为计算节点和固态硬盘之间的传输介质,没有缓存待写入数据或待读取数据,减少了存储节点进行数据缓存的时间,提高了数据传输效率。
在一种可能的示例中,数据传输请求包括第一命令和第二命令,第一命令基于RDMA协议,第二命令基于NVMe协议,根据内存中数据传输请求的信息生成数据传输指示包括:对第二命令的信息进行解析,得到目标信息;根据目标信息,生成数据传输指示。如此,由固态硬盘解析基于NVMe协议的命令得到目标信息,不需要存储节点进行协议转换,可减轻存储节点的工作量。然后由固态硬盘根据目标信息生成数据传输指示,以控制存储节点读取待写入数据,可提高分布式系统的存储效率。
第三方面,本申请实施例提供了一种数据传输方法,应用于计算节点,存储节点和计算节点之间基于远进程直接数据存取RDMA协议进行通信,存储节点与固态硬盘之间通过外围设备高速连接总线PCIe链路连接,其中:生成数据传输请求,数据传输请求用于指定固态硬盘与计算节点之间进行数据传输;通过计算节点的发送队列SQ向存储节点的接收队列RQ发送数据传输请求;通过计算节点的接收队列RQ从存储节点的发送队列RQ中接收数据传输指示,数据传输指示是固态硬盘根据存储节点在固态硬盘的内存中写入数据传输请求的信息得到的;计算节点基于数据传输指示被存储节点读取待写入数据,或者,写 入来自固态硬盘中的待读取数据。也就是说,存储节点没有在自己的内存中对来自计算节点的数据传输请求进行内存注册,而是直接在固态硬盘上进行内存注册,减少了内存注册的时间。且固态硬盘在内存注册之后生成数据传输指示,以控制存储节点实现计算节点和固态硬盘之间的数据传输,该数据传输的过程中存储节点作为计算节点和固态硬盘之间的传输介质,没有缓存待写入数据或待读取数据,减少了存储节点进行数据缓存的时间,提高了数据传输效率。在一种可能的示例中,数据传输请求包括第一命令和第二命令,第一命令基于RDMA协议,第二命令基于NVMe协议。如此,在计算节点将数据传输请求发送给存储节点之后,存储节点可基于第一命令中的RDMA协议与计算节点进行通信,存储节点还可基于第二命令中的NVMe协议与固态硬盘进行通信。且固态硬盘可基于第二命令解析数据传输请求,便于提高分布式系统的存储效率。
第四方面,本申请实施例提供了一种存储节点,存储节点和计算节点之间基于RDMA协议进行通信,存储节点与固态硬盘之间通过PCIe链路连接,存储节点包括射频电路,用于通过存储节点的接收队列RQ从计算节点的发送队列SQ中接收数据传输请求,数据传输请求用于指定固态硬盘与计算节点之间进行数据传输;基于PCIe链路将数据传输请求的信息写入固态硬盘的内存中;通过PCIe链路从固态硬盘中接收数据传输指示,数据传输指示和数据传输请求的命令类型相反,数据传输指示是固态硬盘根据固态硬盘的内存中数据传输请求的信息得到的;通过存储节点的发送队列SQ向计算节点的接收队列RQ发送数据传输指示;基于数据传输指示从计算节点中读取待写入数据,并发送至固态硬盘进行写入;或者从固态硬盘中读取待读取数据,并发送至计算节点进行写入。也就是说,存储节点的射频电路没有在存储节点的内存中对来自计算节点的数据传输请求进行内存注册,而是直接在固态硬盘上进行内存注册,减少了内存注册的时间。且固态硬盘在内存注册之后生成数据传输指示,以控制存储节点的射频电路实现与计算节点之间的数据传输,该数据传输的过程中存储节点作为计算节点和固态硬盘之间的传输介质,没有缓存待写入数据或待读取数据,减少了存储节点进行数据缓存的时间,提高了数据传输效率。
在一种可能的示例中,数据传输请求包括第一命令和第二命令,第一命令基于RDMA协议,第二命令基于非易失性传输总线NVMe协议,射频电路具体用于基于PCIe链路将存储节点的内存队列建立在固态硬盘上;对第一命令进行解析,得到数据传输请求对应的固态硬盘;将第二命令的信息写入固态硬盘上的存储节点的内存队列中,以使数据传输请求的信息写入固态硬盘的内存中。可以理解,存储节点的射频电路没有在自己的内存中对来自计算节点的数据传输请求进行内存注册,而是提前将存储节点的内存队列建立在固态硬盘上,如此,存储节点的射频电路可直接在固态硬盘上进行内存注册,减少了内存注册的时间。且在内存注册之后,固态硬盘可基于数据传输请求的信息在内存中为待写入数据分配内存空间,或者确定待读取数据的存储地址,从而可生成控制存储节点实现与计算节点进行数据传输的命令(即本申请实施例中的数据传输指示),提高了数据传输效率。
在一种可能的示例中,射频电路还用于通过存储节点的发送队列SQ向计算节点的接收队列RQ中发送数据完成消息,数据完成消息用于指示计算节点中的待写入数据写入至固态硬盘,或者固态硬盘中的待读取数据写入至计算节点。如此,数据完成消息可指示计算节点数据传输完成,可注销计算节点中的任务队列,便于提高分布式系统的数据传输效 率。
第五方面,本申请实施例提供了一种固态硬盘,存储节点和计算节点之间基于RDMA协议进行通信,存储节点与固态硬盘之间通过PCIe链路连接,固态硬盘包括处理器,用于根据内存中数据传输请求的信息生成数据传输指示,数据传输请求是计算节点发送给存储节点的,且用于指定固态硬盘与计算节点之间进行数据传输,内存中数据传输请求的信息是存储节点基于PCIe链路将数据传输请求的信息写入固态硬盘的内存中的,数据传输指示用于控制存储节点从计算节点中读取待写入数据,并发送至固态硬盘进行写入;或者从固态硬盘中读取待读取数据,并发送至计算节点进行写入;通过PCIe链路向存储节点发送数据传输指示。也就是说,存储节点没有在自己的内存中对来自计算节点的数据传输请求进行内存注册,而是直接在固态硬盘上进行内存注册,减少了内存注册的时间。且固态硬盘的处理器在内存注册之后生成数据传输指示,以控制存储节点实现计算节点和固态硬盘之间的数据传输,该数据传输的过程中存储节点作为计算节点和固态硬盘之间的传输介质,没有缓存待写入数据或待读取数据,减少了存储节点进行数据缓存的时间,提高了数据传输效率。
在一种可能的示例中,数据传输请求包括第一命令和第二命令,第一命令基于RDMA协议,第二命令基于NVMe协议,处理器具体用于对第二命令的信息进行解析,得到目标信息;根据目标信息,生成数据传输指示。如此,由固态硬盘的处理器解析基于NVMe协议的命令得到目标信息,不需要存储节点进行协议转换,可减轻存储节点的工作量。然后由固态硬盘根据目标信息生成数据传输指示,以控制存储节点读取待写入数据,可提高分布式系统的存储效率。
第六方面,本申请实施例提供了一种计算节点,存储节点和计算节点之间基于RDMA协议进行通信,存储节点与固态硬盘之间通过PCIe链路连接,计算节点包括处理器、射频电路和存储器,其中:处理器用于生成数据传输请求,数据传输请求用于指定固态硬盘与计算节点之间进行数据传输;射频电路用于通过计算节点的发送队列SQ向存储节点的接收队列RQ发送数据传输请求;通过计算节点的接收队列RQ从存储节点的发送队列RQ中接收数据传输指示,数据传输指示是固态硬盘根据存储节点在固态硬盘的内存中写入数据传输请求的信息得到的;存储器用于基于数据传输指示被存储节点读取待写入数据,或者,写入来自固态硬盘中的待读取数据。如此,也就是说,存储节点没有在自己的内存中对来自计算节点的射频电路的数据传输请求进行内存注册,而是直接在固态硬盘上进行内存注册,减少了内存注册的时间。且固态硬盘在内存注册之后生成数据传输指示,以控制存储节点实现与计算节点之间的数据传输,该数据传输的过程中存储节点作为计算节点和固态硬盘之间的传输介质,没有缓存待写入数据或待读取数据,减少了存储节点进行数据缓存的时间,提高了数据传输效率。
在一种可能的示例中,数据传输请求包括第一命令和第二命令,第一命令基于RDMA协议,第二命令基于NVMe协议。如此,在计算节点的射频电路将数据传输请求发送给存储节点之后,存储节点可基于第一命令中的RDMA协议与计算节点进行通信,存储节点还可基于第二命令中的NVMe协议与固态硬盘进行通信。且固态硬盘可基于第二命令解析数据传输请求,便于提高分布式系统的存储效率。
第七方面,本申请提供了一种设备,包括处理单元、存储单元以及通信单元,用于执行上述任一方面的方法中的步骤的指令。
第八方面,本申请提供了一种设备,包括处理器和与处理器连接的存储器和通信接口,其中,存储器用于存储一个或多个程序,并且被配置由处理器执行,上述程序包括用于执行上述任一方面的方法中的步骤的指令。
第九方面,本申请提供了一种芯片,包括处理器和存储器,处理器用于从存储器中调用并运行存储器中存储的指令,使得安装有芯片的设备执行上述任一方面的方法中的步骤的指令。
第十方面,本申请实施例还提供了另一种芯片,包括:输入接口、输出接口和处理电路,输入接口、输出接口与处理电路之间通过内部连接通路相连,处理电路用于执行上述任一方面的方法中的步骤的指令。
第十一方面,本申请实施例还提供了另一种芯片,包括:输入接口、输出接口、处理器,可选的,还包括存储器,输入接口、输出接口、处理器以及存储器之间通过内部连接通路相连,处理器用于执行存储器中的代码,当代码被执行时,处理器用于执行上述任一方面的方法中的步骤的指令。
第十二方面,本申请实施例还提供一种芯片系统,该芯片系统包括至少一个处理器,存储器和接口电路,存储器、收发器和至少一个处理器通过线路互联,至少一个存储器中存储有指令;上述指令被处理器执行时,实现上述任一方面的方法。
第十三方面,本申请提供了一种计算机可读存储介质,计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述任一方面的方法。
第十四方面,本申请提供了一种计算机程序产品,计算机程序产品用于存储计算机程序,当计算机程序在网络设备上运行时,使得计算机执行上述任一方面的方法。
第十五方面,本申请实施例提供了一种分布式系统,包括上述任一方面描述的存储节点、固态硬盘和计算节点。
附图说明
图1是本申请实施例提供的一种分布式系统的构架示意图;
图2是本申请实施例提供的一种存储节点和固态硬盘的结构示意图;
图3是现有技术提供的一种数据传输方法的流程示意图;
图4是本申请实施例提供的一种数据传输方法的流程示意图;
图5是本申请实施例提供的另一种数据传输方法的流程示意图;
图6是本申请实施例提供的另一种数据传输方法的流程示意图;
图7是本申请实施例提供的另一种分布式系统的构架示意图;
图8是本申请实施例提供的一种设备的结构示意图;
图9是本申请实施例提供的另一种设备的结构示意图。
具体实施方式
下面结合本申请实施例中的附图对本申请的实施例进行描述。
图1是本申请实施例提供的一种分布式系统的结构示意图。如图1所示,分布式系统包括多个计算节点组成的计算集群和多个存储节点组成的存储集群,以及与每一存储节点连接的至少一个固态硬盘。且计算集群和存储集群之间基于远进程直接数据存取(remote direct memory access,RDMA)协议进行通信。RDMA协议可以是RDMA过融合以太网协议(RDMA over ethernet,RoCE)、无限带宽(InfiniBand,IB)、互联网广域RDMA协议中的至少一种,在此不做限定。
RDMA的相关数据操作主要包括RDMA发送(或接收)操作(send/recv)、RDMA读操作(pull)、RDMA写操作(push)和支持立即数的RDMA写操作(RDMA write with immediate data)四种。其中,RDMA发送(/接收)是RDMA是基于消息的数据传输协议,所有数据包的组装都在RDMA硬件上完成的,也就是说开放式系统互联通信参考模型(open system interconnection reference model,OSI)中的下面4层(传输层,网络层,数据链路层,物理层)都在RDMA硬件上完成。RDMA读操作把远程系统内存里的数据拉回到本地系统的内存里。RDMA写操作把本地系统内存里的数据推送到远程系统的内存里。支持立即数的RDMA写操作本质上就是给远程系统推送(push)数据。本申请实施例中的数据传输请求包括上述的RDMA读操作、RDMA写操作和支持立即数的RDMA写操作,具体用于读取固态硬盘中的存储数据,或者向固态硬盘中写入数据。
RDMA一共支持三种队列,包括:发送队列(send queue,SQ)、接收队列(receive queue,RQ)和完成队列(completion queue,CQ)。其中,SQ和RQ通常成对创建,统称为任务队列(work queue,WQ)。SQ是一个逻辑概念,由一个或多个单元组成,每个单元存储一个数据传输请求,每个数据传输请求可以用最大64字节大小的存储空间存储。SQ对应一个用于存储一个或多个数据传输请求的环形缓冲区,具体可以利用内存区域页(physicalregion page,PRG)或散列链(scatter gather list,SGL)表示。每个数据传输请求(也可以称为提交队列条目(send queue entry,SQE)或提交队列元素(send queue element,SQE))可以存储至SQ的一个单元,该单元可以称为SQ的一个槽位(slot),每个槽位对应缓冲区中两个PRG或一个SGL。SQ设置有头指针和尾指针,头指针用于指示当前时刻可以被取走的SQE的槽位,尾指针用于指示当前时刻可以存储新增SQE的槽位。初始化阶段,头指针=尾指针=0,SQ中每新增一个SQE时,尾指针加1。SQ中每次被取走一个SQE时,头指针加1。待执行数据传输请求需要按照接收的先后顺序逐个存储至提交队列的槽位中,再按照先进先出(first in first out,FIFO)的顺序被逐一读取。
RQ可以参照SQ的描述,每个单元存储一个数据传输请求,在此不再赘述。
CQ则是一个用于存放已完成数据传输请求的操作结果的环形缓冲区。与SQ的结构类似,完成队列也是一个逻辑概念,由一个或多个单元组成,每个单元可以称为一个槽位。CQ也对应一个用于存储一个或多个数据传输请求的操作结果的环形缓冲区,具体可以利用PRG或者SGL表示,每个数据传输请求的操作结果也可以称为一个完成队列条目(complete queue entry,CQE)或完成队列元素(complete queue element,CQE)。每个SQ对应一个CQ,同一个CQ可以对应多个SQ。CQ和SQ的匹配关系由存储节点指定,每个SQ中数据传输请求的操作结果都会存储至一个指定的CQ完成队列中。
RDMA是基于消息的传输协议,数据传输都是异步操作。将主机(Host)端作为生产者,RDMA硬件作为消费者进行举例说明,Host生产任务请求(work request,WR),并放到WQ中去;RDMA硬件去WQ中消耗WR,消耗完成后往CQ中放入任务完成消息(work complete message,WC);Host从CQ中接收WC的内容。
计算节点和存储节点均可包括SQ和RQ,也就是说,计算节点可通过WQ中的SQ向存储节点发送WR(例如,现有技术中的数据传输命令),如此存储节点通过WQ中的RQ接收WR;存储节点读取该RQ中WR对应的任务之后,可以将计算节点待写入至存储节点的数据进行缓存,或者将计算节点待从固态硬盘中读取的数据进行缓存后;然后,存储节点产生一个WR(例如,现有技术中的完成消息),以通知计算节点读/写操作执行完毕。计算节点和存储节点还包括与SQ和RQ对应的CQ,例如,存储节点在为待写入的数据或待读取的数据分配缓存空间之后,存储节点可往CQ中放入WC(例如,现有技术中的响应消息),以通知计算节点发送待写入的数据或待读取的数据的命令。计算节点在接收到存储节点发的完成消息之后,可往CQ中放入WC,以确定计算节点读/写操作执行完毕。
本申请对于计算节点和存储节点的类型不做限定,计算节点可以是一个独立的具有计算功能的服务器,例如,计算节点为虚拟块系统(virtual block system,VBS)等。存储节点可以是一个独立的带有固态硬盘的服务器,或者一个独立的SSD框(just a bunch of flash,JBOF),例如,存储节点可以为对象存储设备(object-based storage device,OSD)等。本申请对于计算节点和存储节点的数量也不做限定,且一个计算节点可连接多个存储节点。可以理解,计算集群中的计算节点可以通过网络向存储集群发送数据传输请求,以使存储集群中对应的存储节点执行该数据传输请求。
本申请实施例中的固态硬盘可以是固态硬盘(solid state disk,SSD),该SSD可以包括但不仅限于各种类型的非易失性存储器,诸如三维交叉点存储器、闪存、铁电存储器、硅氧化物-氮化物-氧化物-硅(SONOS)存储器、聚合物存储器、纳米线、铁电晶体管随机存取存储器(field-effect transistor random access memory,FeTRAM或FeRAM)、纳米线或电可擦可编程只读存储器(Electrically Erasable Programmable read only memory,EEPROM)。本申请对于存储节点连接的固态硬盘的数量不做限定,可以为12、24或36等。该固态硬盘可包括通过高速串行计算机扩展总线标准(Peripheral Component Interconnect express,PCIe)链路与存储节点连接。
PCIe链路基于PCIe协议,是一种基于数据包的串行连接协议,采用端到端的连接方式。在存储节点和固态硬盘通过PCIe链路连接之后,或者可以理解为分布式系统上电之后,该PCIe链路会对连接的设备(存储节点和固态硬盘)进行枚举,得到PCIe链路的拓扑结构,并对连接的设备的寄存器地址进行映射,从而可访问连接的设备的内存空间,从而存储节点可控制固态硬盘与计算节点实现端对端的通信。
存储节点和固态硬盘之间可通过快速非易失性存储(Non-Volatile Memory express,NVMe)协议进行通信。采用NVMe协议进行通信的SSD可称为NVMe SSD,以其低延迟、低功耗、高读写速度等优势受到诸多应用领域的青睐。
NVMe是一个可扩展的主机(Host)端控制接口,本申请以存储节点中的处理器作为Host端中的CPU。如图2所示,处理器利用根端口(root port)通过一个交换器(即基于PCIe 协议的交换器,PCIe switch)连接多个固态硬盘,从而通过连接的固态硬盘实现对存储节点的存储空间扩展。其中,每一固态硬盘内部存在一个控制器,可用于解析NVMe协议以及处理输入/输出(input/output,I/O)等。可以理解,通过固态硬盘对存储节点中接收的来自计算节点的命令进行协议转换,即将基于RDMA协议的命令转换为基于NVMe协议的命令,从而可减轻存储节点转换协议的工作任务,便于提高存储节点的处理效率。
在NVMe协议中,NVMe队列分为管理队列和I/O队列两种。其中管理队列主要用于设备的控制和管理,如I/O队列的创建、删除等。I/O队列主要用于磁盘的访问。I/O队列的提交队列(submission queue,SQ)和完成队列(completion queue,CQ)不是固定一一对应的,可以在创建SQ时灵活配置,可以一个SQ对应一个CQ,也可以多个SQ对应一个CQ。SQ和CQ的描述可参照RDMA协议中的SQ和CQ的描述,在此不再赘述。需要说明的是,在NVMe协议中,SQ是由Host端发送给固态硬盘,而固态硬盘不会向Host端发送SQ,因此,RDMA协议和NVMe协议中SQ的命名存在区别。
由于存储节点从计算节点接收的信息(例如,命令和数据等)是基于RDMA协议的,存储节点向固态硬盘发送的信息是基于NVMe协议的,因此,在现有技术中,采用存储节点中的处理器进行协议转换,并采用存储节点中的存储器进行数据缓存,从而保障了数据的可靠性和安全性。
具体的,请参照图3,图3为现有技术中提供的一种数据传输方法的流程示意图。如图3所示,图3应用于如图1所示的分布式系统中,该方法以计算节点向固态硬盘中写数据为例进行描述,具体包括以下步骤,其中:
S301:计算节点向存储节点发送第一数据传输命令。
其中,第一数据传输命令基于RDMA协议,该第一数据传输命令可以是存储节点的接收队列RQ,从计算节点的发送队列SQ中接收到的。该方法以计算节点向固态硬盘中写数据为例进行描述,则在步骤S301中第一数据传输命令为写命令。该第一数据传输命令可以用最大64字节大小的存储空间存储。
S302:存储节点基于第一数据传输命令进行内存注册,得到第一数据信息。
其中,存储节点进行内存注册用于在存储节点中分配待写入数据进行缓存的存储空间。第一数据信息可包括第一数据传输命令的操作类型、计算节点中的源地址和数据大小,操作类型为写类型。
S303:存储节点向计算节点发送第一响应消息。
其中,第一响应消息用于指示存储节点完成内存注册,或者指示计算节点进行写数据。
S304:计算节点向存储节点发送待写入数据。
S305:存储节点基于第一数据信息缓存待写入数据。
S306:存储节点基于第一数据信息将第一数据传输命令进行协议转换,得到第二数据传输命令。
其中,第二数据传输命令基于NVMe协议。在步骤S306中第二数据传输命令的命令类型与第一数据传输命令相同,也是写命令。
S307:存储节点通过PCIe链路向固态硬盘发送第二数据传输命令。
S308:固态硬盘基于第二数据传输命令进行内存注册,得到第二数据信息。
其中,固态硬盘进行内存注册用于在固态硬盘中分配待写入数据的存储空间。具体可第二数据信息可包括第二数据传输命令的操作类型、计算节点中的源地址、存储节点中的缓存地址和数据大小。
S309:固态硬盘向存储节点发送第二响应消息。
其中,第二响应消息用于指示固态硬盘完成内存注册,或者指示存储节点将待写入数据传输给固态硬盘。
S310:固态硬盘通过PCIe链路接收来自计算节点的待写入数据。
S311:固态硬盘基于第二数据信息存储待写入数据。
S312:固态硬盘通过PCIe链路向存储节点发送完成消息。
其中,完成消息用于指示待写入数据已存储至固态硬盘。
S313:存储节点向计算节点发送来自固态硬盘的完成消息。
其中,完成消息可以是存储节点的发送队列SQ向计算节点的接收队列RQ发送的。
需要说明的是,步骤S306的执行顺序可以与步骤S303相同,在存储节点得到第二数据传输命令之后,即可执行步骤S307。第一数据传输命令和第二数据传输命令均可用64字节大小的存储空间存储。
当计算节点向固态硬盘中读数据时,第一数据信息至少包括第一数据传输命令的操作类型、计算节点中的目标地址、固态硬盘中的源地址和数据大小等,此时操作类型为读类型;第二数据信息除了第一数据信息之外,还可包括存储节点中的缓存地址。
可以理解,无论是计算节点发送给固态硬盘进行写入的数据,还是计算节点从固态硬盘中进行读取的数据,均通过处于计算节点和固态硬盘中间位置的存储节点的存储器进行缓存,该存储器的工作效率会直接影响到整个系统的性能。
基于此,本申请实施例提出一种数据传输方法,应用于如图1所示的分布式系统。请参照图4,该方法包括以下步骤S401~S406,该方法以计算节点向固态硬盘中写数据为例进行描述,也就是说,计算节点向存储节点发送的数据传输请求为写命令,或者可以理解为数据传输请求的操作类型为写类型。其中:
S401:计算节点生成数据传输请求,数据传输请求为写命令。
在本申请实施例中,数据传输请求用于指示固态硬盘与计算节点之间进行数据传输。该数据传输请求可携带操作类型、待读取数据或待写入数据的数据信息,例如,数据标识、数据大小、源地址或目标地址等,本申请对于数据传输请求和数据信息均不做限定。当数据传输请求的操作类型为写类型时,数据传输请求中的地址包括计算节点中的源地址。当数据传输请求的操作类型为读类型时,数据传输请求中的地址包括计算节点中的目标地址以及固态硬盘中的源地址。在本申请实施例中,源地址是指发送端的地址,目标地址是指接收端的地址。本申请对于计算节点生成数据传输请求的方法不做限定,可以根据源地址或目标地址的信息,以及数据的操作类型和数据大小进行生成。在步骤S401中,数据传输请求为写命令,也就是说,数据传输请求的操作类型为写类型。
需要说明的是,数据传输请求可包括两个64字节大小的存储空间进行存储,前一个64字节对应的命令可称为第一命令,采用RDMA协议进行描述,后一个64字节对应的命令可称为第二命令,采用NVMe协议进行描述。如此,存储节点可基于第一命令中的RDMA 协议与计算节点进行通信,存储节点还可基于第二命令中的NVMe协议与固态硬盘进行通信。
S402:计算节点通过计算节点的发送队列SQ向存储节点的接收队列RQ发送数据传输请求。
如前所述,计算节点和存储节点可通过RDMA协议进行通信,因此,可通过计算节点的发送队列SQ向存储节点的接收队列RQ发送数据传输请求,也就是说,由存储节点的接收队列从计算节点的发送队列SQ中接收到数据传输请求。
S403:存储节点基于PCIe链路将数据传输请求的信息写入固态硬盘的内存中。
如前所述,存储节点可通过PCIe链路中固态硬盘的寄存器地址访问该固态硬盘,从而可将数据传输请求的信息写入该固态硬盘的内存。也就是说,在固态硬盘中写入数据传输请求的信息之后,固态硬盘可控制存储节点从计算节点中读取待写入数据,并将待写入数据发送给固态硬盘进行存储,或者将固态硬盘中的待读取数据发送给存储节点,并控制存储节点将该待读取数据写入至计算节点。
在一种可能的示例中,数据传输请求包括基于RDMA协议的第一命令和基于NVMe协议的第二命令,步骤S403包括以下步骤:存储节点基于PCIe链路将存储节点的内存队列建立在固态硬盘上;存储节点对第一命令进行解析,得到数据传输请求对应的固态硬盘;存储节点将第二命令的信息写入固态硬盘上的存储节点的内存队列,以使数据传输请求的信息写入固态硬盘的内存中。
其中,数据传输请求的信息包括操作类型、待读取数据或待写入数据的数据信息,可参照步骤S401的描述,在此不再赘述。存储节点对第一命令解析可得到数据传输请求的信息,该信息包括数据传输请求对应的固态硬盘,可以理解为,数据传输请求指定固态硬盘与计算节点之间进行数据传输。
举例来说,如图5所示,计算节点的发送队列SQ通过计算节点的射频电路向存储节点发送数据传输请求。存储节点通过存储节点的射频电路将数据传输请求写入接收队列RQ数据传输请求,存储节点基于PCIe链路获取固态硬盘的寄存器地址,并将存储节点的内存(memory registration,MR)队列建立在固态硬盘的存储器中。然后,存储节点通过PCIe链路将数据传输请求的信息写入固态硬盘上存储节点的内存注册队列,以完成数据传输请求的内存注册。
需要说明的是,存储节点的MR队列在存储节点和固态硬盘通过PCIe链路连接之后,即可基于PCIe链路,将存储节点的MR队列建立在固态硬盘的内存中,从而可提高数据传输效率。此外,如图5所示,存储节点还可将存储节点的完成队列CQ也建立在固态硬盘的存储器中。在内存注册完成之后,向完成队列CQ中放入WR,从而存储节点可确定固态硬盘完成内存注册数据传输请求。
可以理解,当基于PCIe链路将存储节点的内存队列建立在固态硬盘上之后,存储节点接收到来自计算节点的数据传输请求,存储节点可直接在固态硬盘的内存中的存储节点的内存队列上对数据传输请求进行内存注册,写入数据传输请求的信息。也就是说,存储节点没有在自己的内存中对来自计算节点的数据传输请求进行内存注册,而是提前将存储节点的内存队列建立在固态硬盘上,如此,存储节点可直接在固态硬盘上进行内存注册,减 少了内存注册的时间。且在内存注册之后,固态硬盘可基于数据传输请求的信息在内存中为待写入数据分配内存空间,或者确定待读取数据的存储地址,从而可生成控制存储节点实现与计算节点进行数据传输的命令(即本申请实施例中的数据传输指示),提高了数据传输效率。
S404:固态硬盘根据内存中数据传输请求的信息生成数据传输指示,数据传输指示为读命令。
在本申请实施例中,数据传输指示用于控制存储节点从计算节点中读取待写入数据,并发送给固态硬盘进行写入。需要说明的是,数据传输指示和数据传输请求的命令类型相反,且数据传输指示是相对于计算节点而言的,数据传输请求是相对于固态硬盘而言的。例如,当数据传输请求为读命令时,数据传输指示为写命令,即计算节点写入固态硬盘中的待读取数据。当数据传输请求为写命令时,数据传输指示为读命令,即计算节点中的待写入数据被存储节点读取。且当数据传输指示为写命令时,数据传输指示包括固态硬盘中的目标地址以及计算节点中的源地址。当数据传输指示为读命令时,数据传输指示包括固态硬盘中的源地址以及计算节点中的目标地址。需要说明的是,数据传输请求相对于存储节点而言,其操作类型为读类型,也就是说,当数据传输指示为写命令时,存储节点从固态硬盘中读取待读取数据,并发送给计算节点进行写入。当数据传输指示为读命令时,存储节点从计算节点中读取待写入数据,并发送给固态硬盘进行写入。
数据传输指示还用于指示计算节点中的待写入数据会被存储节点读取。也就是说,计算节点会基于数据传输指示被存储节点读取待写入数据。可以理解,通过向计算节点发送数据传输指示,以指示计算节点中的数据传输请求即将被执行,便于提高计算节点中任务执行的效率。
在一种可能的示例中,数据传输请求包括基于RDMA协议的第一命令和基于NVMe协议的第二命令,步骤S404包括:固态硬盘对第二命令的信息进行解析,得到目标信息;固态硬盘根据目标信息生成数据传输指示。
其中,目标信息可包括操作类型、待读取数据或待写入数据的数据信息,可参照步骤S401的描述,在此不再赘述。需要说明的是,由于数据传输指示和数据传输请求的命令类型相反,目标信息中源地址和目标地址,与数据传输请求中的源地址或目标地址相反。
可以理解,固态硬盘先解析基于NVMe协议的命令得到目标信息,不需要存储节点进行协议转换,可减轻存储节点的工作量。然后固态硬盘根据目标信息生成数据传输指示,以控制存储节点读取待写入数据,可提高分布式系统的存储效率。
S405:固态硬盘通过PCIe链路将数据传输指示发送给存储节点。
步骤S405也可以理解为,存储节点通过PCIe连接从固态硬盘中接收到数据传输指示。
S406:存储节点通过存储节点的发送队列SQ向计算节点的接收队列RQ发送数据传输指示。
S407:存储节点基于数据传输指示从计算节点中读取待写入数据,并发送给固态硬盘进行写入。
在如图4所述的方法中,当数据传输请求为写命令时,在存储节点通过其RQ队列从计算节点的发送队列SQ中接收到数据传输请求之后,基于PCIe链路将该数据传输请求的 信息写入固态硬盘的内存中。如此,固态硬盘可基于内存中的信息生成数据传输指示,从而根据数据传输指示控制存储节点从计算节点中读取待写入数据,并发送给固态硬盘进行存储。也就是说,存储节点没有在自己的内存中对来自计算节点的数据传输请求进行内存注册,而是直接在固态硬盘上进行内存注册,减少了内存注册的时间。且固态硬盘在内存注册之后生成数据传输指示,以控制存储节点实现与计算节点之间的数据传输,该数据传输的过程中存储节点作为计算节点和固态硬盘之间的传输介质,没有缓存待写入数据,减少了存储节点进行数据缓存的时间,提高了数据传输效率。
在一种可能的示例中,在步骤S407之后,该数据传输方法还包括:存储节点通过存储节点的发送队列SQ向计算节点的接收队列RQ发送数据完成消息。
其中,数据完成消息用于指示计算节点中的待写入数据存储至固态硬盘。也就是说,当存储节点将待写入数据传输给固态硬盘之后,可向计算节点发送数据完成消息,以指示计算节点数据传输完成,可注销计算节点中的任务队列,便于提高分布式系统的数据传输效率。
与图4所示的实施例一致的,请参照图6,图6为本申请实施例提供的一种数据传输方法。该方法包括以下步骤S601~S606,该方法以计算节点向固态硬盘中读数据为例进行描述,其中:
S601:计算节点生成数据传输请求,数据传输请求为读命令。
S602:计算节点通过计算节点的发送队列SQ向存储节点的接收队列RQ发送数据传输请求。
S603:存储节点基于PCIe链路将数据传输请求的信息写入固态硬盘的内存中。
S604:固态硬盘根据内存中数据传输请求的信息生成数据传输指示,数据传输指示为写命令。
S605:固态硬盘通过PCIe链路将数据传输指示发送给存储节点。
S606:存储节点通过存储节点的发送队列SQ向计算节点的接收队列RQ发送数据传输指示。
其中,步骤S601~S606可参照步骤S401~S406的描述,在此不再赘述。在步骤S601中,数据传输请求为读命令,可以理解为数据传输请求的操作类型为读类型,即计算节点从固态硬盘中读取数据。数据传输指示为写命令,用于控制存储节点从固态硬盘中读取待读取数据,并发送至计算节点进行写入。数据传输指示还用于指示固态硬盘中的待读取数据会被发送至计算节点,并写入至计算节点中。也就是说,计算节点接收来自固态硬盘的待读取数据,并进行写入。
S607:存储节点基于数据传输指示从固态硬盘中读取待读取数据,并发送至计算节点进行写入。
在如图6所述的方法中,当数据传输请求为读命令时,在存储节点基于PCIe链路将该数据传输请求的信息写入固态硬盘的内存之后,固态硬盘可基于内存中的信息生成数据传输指示,从而根据数据传输指示控制存储节点从固态硬盘中读取待读取数据,并写入至计算节点。也就是说,存储节点没有在自己的内存中对来自计算节点的数据传输请求进行内 存注册,而是直接在固态硬盘上进行内存注册,减少了内存注册的时间。且固态硬盘在内存注册之后生成数据传输指示,以控制存储节点实现与计算节点之间的数据传输,该数据传输的过程中存储节点作为计算节点和固态硬盘之间的传输介质,没有缓存待读取数据,减少了存储节点进行数据缓存的时间,提高了数据传输效率。
在一种可能的示例中,在步骤S607之后,该数据传输方法还包括:存储节点通过存储节点的发送队列SQ向计算节点的接收队列RQ发送数据完成消息。
其中,数据完成消息用于指示固态硬盘中的待读取数据存储至计算节点。也就是说,当存储节点将待读取数据存储至计算节点之后,可向计算节点发送数据完成消息,以指示计算节点数据传输完成,可注销计算节点中的任务队列,便于提高分布式系统的数据传输效率。
上面阐述了本申请实施例的方法,下面提供本申请实施例的装置。
请参照图7,图7为本申请实施例提供的另一种分布式系统的结构示意图,该分布式系统以与一个计算节点10的第二射频电路101通过网络连接的存储节点20,以及与该存储节点20连接的固态硬盘30展开描述。如图7所示,存储节点20可包括用于与计算节点10进行通信的第一射频电路201。存储节点20还可包括与第一射频电路201和固态硬盘30连接的第一处理器202,以及与处理器202连接的第一存储器203。
第一处理器202可通过PCIe链路连接第一射频电路201、第一存储器203和固态硬盘30。如前所述,在分布式系统上电之后,第一处理器202可对第一射频电路201、第一存储器203和固态硬盘30(例如,第二存储器301和第二处理器302)进行设备枚举,并为第一射频电路201、第一存储器203和固态硬盘30的寄存器地址进行分配,以使第一射频电路201可通过PCIe链路中分配的寄存器地址访问第一存储器203和固态硬盘30的内存空间。
本申请实施例中描述的射频电路(例如,第一射频电路201和第二射频电路101)可以为网卡(network interface controller,NIC)等,在此不做限定。射频电路的具体结构图7中未示出,可包括接收器、与该接收器连接的信号处理模块和与该信号处理模块连接的发射器。其中,接收器用于接收外部或内部的处理器发送的信息,信号处理模块用于处理发射器所接收的信息,发射器用于发送信号处理模块所获取的信息。例如,当数据传输请求的操作类型为写类型时,第一射频电路201的接收器用于通过计算节点10的第二射频电路101的发射器接收数据传输请求以及数据传输请求对应的待写入数据,第一射频电路201的信号处理模块用于处理该数据传输请求,得到该数据传输请求的操作类型、数据大小、源地址以及目标地址等信息,第一射频电路201的发射器用于向固态硬盘30发送信号处理模块得到的信息。
本申请实施例中描述的处理器(例如,第一处理器202、第二处理器302和第三处理器102)和信号处理模块(例如,第一射频电路201中的信号处理模块)可以为中央处理单元(centralprocess unit,CPU),还可以是其他通用处理器、数字信号处理器(digitalsignal processor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现场可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体 管逻辑器件、分立硬件组件等,对此不做限定。通用处理器可以是微处理器或者是任何常规的处理器等。该处理器还可以为一种片上芯片(system of chip,SoC)或者嵌入式处理器。处理器和信号处理模块均可支持发送容量至少64字节的高速串行计算机扩展总线标准((Peripheral Component Interconnect express,PCIe)报文。
如图7所示,计算节点10包括第二射频电路101,用于与第一射频电路201进行通信;计算节点10还包括与第二射频电路101连接的第三处理器102,用于在写数据时,根据待写入数据的数据大小和各个固态硬盘的属性信息选取最终存储该待写入数据的固态硬盘,再根据待写入数据的操作类型和数据大小、待写入数据在计算节点10中存储的源地址以及目标地址等信息生成命令(例如,本申请实施例中的数据传输指令);还可用于在读数据时,根据待写入数据的数据大小确定在计算节点10中的目标地址,再根据待写入数据的操作类型和数据大小、待写入数据在固态硬盘中的源地址以及在计算节点10中的目标地址等信息生成命令(例如,本申请实施例中的数据传输指令)。进一步的,第三处理器102还可用于根据监控该计算节点10的射频电路的网络状态,以确定当前队列中执行的数量传输请求。
固态硬盘30中的处理器可用于基于存储节点20的处理器发送的指令,对该指令进行内存注册,以确定待写入数据的目标地址或者确定待读取数据的源地址。固态硬盘30中的处理器还可用于对该指令进行协议转换,可以理解,由固态硬盘30中的处理器将基于RDMA协议的命令转换为基于NVMe协议的命令,从而可减轻存储节点转换协议的工作任务,便于提高存储节点的处理效率。
本申请实施例中描述的存储器(例如,第一存储器203、第二存储器302和第三存储器103)可以是双倍数据速率(double data rate,DDR)存储器等,对此不做限定。需要指出的是,上述DDR存储器是DDR1、DDR2、DDR3、DDR4等存储器的统称。固态硬盘中的存储器也可以是DDR存储器。在一种可能的示例中,存储单元中的存储器203可以为主机内存缓冲区(host memory buffer,HMB),固态硬盘中的存储器可以为控制器内存缓冲区(controller memory buffer,CMB)。
在本申请实施例中,存储节点20和计算节点10之间基于RDMA协议进行通信,存储节点10与固态硬盘30之间通过PCIe链路连接,计算节点10包括第三处理器102、第二射频电路101和第三存储器103,其中:
第三处理器102,用于生成数据传输请求,数据传输请求用于指定固态硬盘30与计算节点10之间进行数据传输;
第二射频电路101,用于通过计算节点10的发送队列SQ向存储节点20的接收队列RQ发送数据传输请求;通过计算节点10的接收队列RQ从存储节点20的发送队列RQ中接收数据传输指示,数据传输指示是固态硬盘30根据存储节点20在固态硬盘30的内存中写入数据传输请求的信息得到的;
第三存储器103,用于基于数据传输指示被存储节点20读取待写入数据,或者,写入来自固态硬盘30中的待读取数据。
在一种可能的示例中,数据传输请求包括第一命令和第二命令,第一命令基于RDMA协议,第二命令基于NVMe协议。
在一种可能的示例中,第二射频电路101还用于通过计算节点10的接收队列RQ,从 存储节点20的发送队列SQ中接收数据完成消息,数据完成消息用于指示计算节点10中的待写入数据写入至固态硬盘30,或者固态硬盘30中的待读取数据写入至计算节点10。
在本申请实施例中,存储节点20包括第一射频电路201用于通过存储节点20的接收队列RQ,从计算节点10的发送队列SQ中接收数据传输请求,数据传输请求用于指定固态硬盘30与计算节点10之间进行数据传输;基于PCIe链路将数据传输请求的信息写入固态硬盘30的内存中;通过PCIe链路从固态硬盘30中接收数据传输指示,数据传输指示和数据传输请求的命令类型相反,数据传输指示是固态硬盘根据固态硬盘的内存中数据传输请求的信息得到的;通过存储节点20的发送队列SQ向计算节点10的接收队列RQ中发送数据传输指示;基于数据传输指示从计算节点10中读取待写入数据,并发送至固态硬盘30进行写入;或者从固态硬盘30中读取待读取数据,并发送至计算节点10进行写入。
在一种可能的示例中,数据传输请求包括第一命令和第二命令,第一命令基于RDMA协议,第二命令基于NVMe协议,第一射频电路201具体用于基于PCIe链路将存储节点20的内存队列建立在固态硬盘30上;对第一命令进行解析,得到数据传输请求对应的固态硬盘30;将第二命令的信息写入固态硬盘30上的存储节点20的内存队列中,以使数据传输请求的信息写入固态硬盘30的内存中。
在一种可能的示例中,第一射频电路201还用于通过存储节点20的发送队列SQ,向计算节点10的接收队列RQ中发送数据完成消息,数据完成消息用于指示计算节点10中的待写入数据写入至固态硬盘30,或者固态硬盘30中的待读取数据写入至计算节点10。
在以上示例中,数据传输过程由存储节点20的第一射频电路201执行,而非存储节点20的第一处理器202,该第一处理器202作为PCIe链路上的中转节点,提高了存储节点的存储效率。且存储节点20的第一存储器203没有缓存待写入数据或待读取数据,可避免受限于该第一存储器203的带宽压力,提高了存储节点20的带宽处理能力。
在本申请实施例中,固态硬盘30包括第二处理器301,用于根据内存中数据传输请求的信息生成数据传输指示,数据传输请求是计算节点10发送给存储节点20的,且用于指定固态硬盘30与计算节点10之间进行数据传输,内存中数据传输请求的信息是存储节点20基于PCIe链路将数据传输请求的信息写入固态硬盘30的内存中的,数据传输指示用于控制存储节点20从计算节点10中读取待写入数据,并发送至固态硬盘30进行写入;或者从固态硬盘30中读取待读取数据,并发送至计算节点10进行写入;通过PCIe链路向存储节点20发送数据传输指示。
在一种可能的示例中,数据传输请求包括第一命令和第二命令,第一命令基于RDMA协议,第二命令基于NVMe协议,第二处理器302具体用于对第二命令的信息进行解析,得到目标信息;根据目标信息,生成数据传输指示。
请参照图8,图8为本申请实施例提供的一种设备,该设备可以包括计算节点、存储节点和固态硬盘中的一种装置。存储节点和计算节点之间基于RDMA协议进行通信,存储节点与固态硬盘之间通过PCIe链路连接。
当设备800为计算节点时,处理单元801用于生成数据传输请求,数据传输请求用于指定固态硬盘与计算节点之间进行数据传输;
通信单元802用于通过计算节点的发送队列SQ,向存储节点的接收队列RQ发送数据传输请求;通过计算节点的接收队列RQ从存储节点的发送队列RQ中接收数据传输指示,数据传输指示是固态硬盘根据存储节点在固态硬盘的内存中写入数据传输请求的信息得到的;
存储单元803用于基于数据传输指示被存储节点读取待写入数据,或者,写入来自固态硬盘中的待读取数据。
在一种可能的示例中,数据传输请求包括第一命令和第二命令,第一命令基于RDMA协议,第二命令基于NVMe协议。
在一种可能的示例中,通信单元802还用于通过计算节点的接收队列RQ,从存储节点的发送队列中接收数据完成消息,数据完成消息用于指示计算节点中的待写入数据写入至固态硬盘,或者固态硬盘中的待读取数据写入至计算节点。
当设备800为存储节点时,通信单元802用于通过存储节点的接收队列RQ,从计算节点的发送队列SQ中接收数据传输请求,数据传输请求用于指定固态硬盘与计算节点之间进行数据传输;
处理单元801用于基于PCIe链路将数据传输请求的信息写入固态硬盘的内存中;
通信单元802用于通过PCIe链路从固态硬盘中接收数据传输指示,数据传输指示和数据传输请求的命令类型相反,数据传输指示是固态硬盘根据固态硬盘的内存中数据传输请求的信息得到的;通过存储节点的发送队列SQ向计算节点的接收队列RQ中发送数据传输指示;
处理单元801还用于基于数据传输指示从计算节点中读取待写入数据,并发送至固态硬盘进行写入;或者从固态硬盘中读取待读取数据,并发送至计算节点进行写入。
在一种可能的示例中,数据传输请求包括第一命令和第二命令,第一命令基于RDMA协议,第二命令基于NVMe协议,处理单元801具体用于基于PCIe链路将存储节点的内存队列建立在固态硬盘上;对第一命令进行解析,得到数据传输请求对应的固态硬盘;将第二命令的信息写入固态硬盘上的存储节点的内存队列中,以使数据传输请求的信息写入固态硬盘的内存中。
在一种可能的示例中,通信单元802还用于通过存储节点的发送队列SQ,向计算节点的接收队列RQ中发送数据完成消息,数据完成消息用于指示计算节点中的待写入数据写入至固态硬盘,或者固态硬盘中的待读取数据写入至计算节点。
当设备800为固态硬盘时,处理单元801用于根据内存中数据传输请求的信息生成数据传输指示,数据传输请求是计算节点发送给存储节点的,且用于指定固态硬盘与计算节点之间进行数据传输,内存中数据传输请求的信息是存储节点基于PCIe链路将数据传输请求的信息写入固态硬盘的内存中的,数据传输指示用于控制存储节点从计算节点中读取待写入数据,并发送至固态硬盘进行写入;或者从固态硬盘中读取待读取数据,并发送至计算节点进行写入;通过PCIe链路向存储节点发送数据传输指示。
在一种可能的示例中,数据传输请求包括第一命令和第二命令,第一命令基于RDMA协议,第二命令基于NVMe协议,处理单元801具体用于对第二命令的信息进行解析,得到目标信息;根据目标信息,生成数据传输指示。
请参见图9,图9为本申请实施例提供的一种设备的结构示意图。该设备900包括至少一个处理器901,至少一个存储器902以及至少一个通信接口903。处理器901和通信接口903通过通信总线904连接并完成相互间的通信。
该设备900中的处理器901用于读取存储器902中存储的计算机程序代码,在本申请实施例中,该设备900可以包括计算节点、存储节点和固态硬盘中的一种装置。存储节点和计算节点之间基于RDMA协议进行通信,存储节点与固态硬盘之间通过PCIe链路连接。
当设备900为计算节点时,处理器901用于执行以下操作:
生成数据传输请求,数据传输请求用于指定固态硬盘与计算节点之间进行数据传输;
通过计算节点的发送队列SQ向存储节点的接收队列RQ发送数据传输请求;
通过计算节点的接收队列RQ从存储节点的发送队列RQ中接收数据传输指示,数据传输指示是固态硬盘根据存储节点在固态硬盘的内存中写入数据传输请求的信息得到的;
基于数据传输指示被存储节点读取待写入数据,或者,写入来自固态硬盘中的待读取数据。
在一种可能的示例中,数据传输请求包括第一命令和第二命令,第一命令基于RDMA协议,第二命令基于NVMe协议。
在一种可能的示例中,处理器901还用于执行以下操作:
通过计算节点的接收队列RQ,从存储节点的发送队列SQ中接收数据完成消息,数据完成消息用于指示计算节点中的待写入数据写入至固态硬盘,或者固态硬盘中的待读取数据写入至计算节点。
当设备900为存储节点时,处理器901用于执行以下操作:
通过存储节点的接收队列RQ,从计算节点的发送队列SQ中接收数据传输请求,数据传输请求用于指定固态硬盘与计算节点之间进行数据传输;
基于PCIe链路将数据传输请求的信息写入固态硬盘的内存中;
通过PCIe链路从固态硬盘中接收数据传输指示,数据传输指示和数据传输请求的命令类型相反,数据传输指示是固态硬盘根据固态硬盘的内存中数据传输请求的信息得到的;
通过存储节点的发送队列SQ向计算节点的接收队列RQ中发送数据传输指示;
基于数据传输指示从计算节点中读取待写入数据,并发送至固态硬盘进行写入;或者从固态硬盘中读取待读取数据,并发送至计算节点进行写入。
在一种可能的示例中,数据传输请求包括第一命令和第二命令,第一命令基于RDMA协议,第二命令基于NVMe协议,处理器901具体用于执行以下操作:
基于PCIe链路将存储节点的内存队列建立在固态硬盘上;
对第一命令进行解析,得到数据传输请求对应的固态硬盘;
将第二命令的信息写入固态硬盘上的存储节点的内存队列中,以使数据传输请求的信息写入固态硬盘的内存中。
在一种可能的示例中,处理器901还用于执行以下操作:
通过存储节点的发送队列SQ向计算节点的接收队列RQ中发送数据完成消息,数据完成消息用于指示计算节点中的待写入数据写入至固态硬盘,或者固态硬盘中的待读取数据 写入至计算节点。
当设备900为固态硬盘时,处理器901用于执行以下操作:
根据内存中数据传输请求的信息生成数据传输指示,数据传输请求是计算节点发送给存储节点的,且用于指定固态硬盘与计算节点之间进行数据传输,内存中数据传输请求的信息是存储节点基于PCIe链路将数据传输请求的信息写入固态硬盘的内存中的,数据传输指示用于控制存储节点从计算节点中读取待写入数据,并发送至固态硬盘进行写入;或者从固态硬盘中读取待读取数据,并发送至计算节点进行写入;
通过PCIe链路向存储节点发送数据传输指示。
在一种可能的示例中,数据传输请求包括第一命令和第二命令,第一命令基于RDMA协议,第二命令基于NVMe协议,处理器901具体用于执行以下操作:
对第二命令的信息进行解析,得到目标信息;
根据目标信息,生成数据传输指示。
本申请实施例还提供了一种芯片,包括处理器和存储器,处理器用于从存储器中调用并运行存储器中存储的指令,使得安装有芯片的设备执行图4和图6所示的任一方法。
本申请实施例还提供了另一种芯片,包括:输入接口、输出接口和处理电路,输入接口、输出接口与处理电路之间通过内部连接通路相连,处理电路用于执行图4和图6所示的任一方法。
本申请实施例还提供了另一种芯片,包括:输入接口、输出接口、处理器,可选的,还包括存储器,输入接口、输出接口、处理器以及存储器之间通过内部连接通路相连,处理器用于执行存储器中的代码,当代码被执行时,处理器用于执行图4和图6所示的任一方法。
本申请实施例还提供一种芯片系统,包括至少一个处理器,存储器和接口电路,存储器、收发器和至少一个处理器通过线路互联,至少一个存储器中存储有计算机程序;计算机程序被处理器执行时,图4和图6所示的方法流程得以实现。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,当其在计算机上运行时,图4和图6所示的方法流程得以实现。
本申请实施例还提供一种计算机程序产品,当该计算机程序产品在计算机上运行时,图4和图6所示的方法流程得以实现。
本申请实施例还提供一种分布式系统,包括图4和图6所示的方法中的存储节点、固态硬盘以及计算节点。
综上所述,通过实施本申请实施例,在存储节点通过其RQ队列从计算节点的发送队列SQ中接收到数据传输请求之后,基于PCIe链路将该数据传输请求的信息写入固态硬盘的内存中。如此,固态硬盘可基于内存中的信息生成数据传输指示,从而根据数据传输指示控制存储节点从计算节点中读取待写入数据,并发送给固态硬盘进行存储;或者从固态硬盘中读取待读取数据,并发送至计算节点进行写入。也就是说,存储节点没有在自己的内存中对来自计算节点的数据传输请求进行内存注册,而是直接在固态硬盘上进行内存注册,减少了内存注册的时间。且固态硬盘在内存注册之后生成数据传输指示,以控制存储 节点实现与计算节点之间的数据传输,该数据传输的过程中存储节点作为计算节点和固态硬盘之间的传输介质,没有缓存待写入数据或待读取数据,减少了存储节点进行数据缓存的时间,提高了数据传输效率。
应理解,本文中涉及的第一、第二、第三、第四以及各种数字编号仅为描述方便进行的区分,并不用来限制本申请实施例的范围,该数字编号可以替代为其他数字编号。
应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各种说明性逻辑块(illustrative logical block)和步骤(step),能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,数字通用磁盘(digital versatile disc,DVD))、或者半导体介质(例如固态硬盘)等。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (12)

  1. 一种数据传输方法,其特征在于,存储节点和计算节点之间基于远进程直接数据存取RDMA协议进行通信,所述存储节点与固态硬盘之间通过外围设备高速连接总线PCIe链路连接,所述数据传输方法包括:
    所述存储节点通过所述存储节点的接收队列RQ,从所述计算节点的发送队列SQ中接收数据传输请求,所述数据传输请求用于指定所述固态硬盘与所述计算节点之间进行数据传输;
    所述存储节点基于所述PCIe链路将所述数据传输请求的信息写入所述固态硬盘的内存中;
    所述存储节点通过所述PCIe链路从所述固态硬盘中接收数据传输指示,所述数据传输指示和所述数据传输请求的命令类型相反,所述数据传输指示是所述固态硬盘根据所述固态硬盘的内存中所述数据传输请求的信息得到的;
    所述存储节点通过所述存储节点的发送队列SQ,向所述计算节点的接收队列RQ中发送所述数据传输指示;
    所述存储节点基于所述数据传输指示从所述计算节点中读取待写入数据,并发送至所述固态硬盘进行写入;或者从所述固态硬盘中读取待读取数据,并发送至所述计算节点进行写入。
  2. 根据权利要求1所述的数据传输方法,其特征在于,所述数据传输请求包括第一命令和第二命令,所述第一命令基于所述RDMA协议,所述第二命令基于非易失性传输总线NVMe协议,所述存储节点基于所述PCIe链路将所述数据传输请求的信息写入所述固态硬盘的内存中,包括:
    所述存储节点基于所述PCIe链路将所述存储节点的内存队列建立在所述固态硬盘上;
    所述存储节点对所述第一命令进行解析,得到所述数据传输请求对应的固态硬盘;
    所述存储节点将所述第二命令的信息写入所述固态硬盘上的所述存储节点的内存队列中,以使所述数据传输请求的信息写入所述固态硬盘的内存中。
  3. 根据权利要求1或2所述的数据传输方法,其特征在于,在所述存储节点基于所述数据传输指示从所述计算节点中读取待写入数据,并发送至所述固态硬盘进行写入;或者从所述固态硬盘中读取待读取数据,并发送至所述计算节点进行写入之后,所述方法还包括:
    所述存储节点通过所述存储节点的发送队列SQ,向所述计算节点的接收队列RQ中发送数据完成消息,所述数据完成消息用于指示所述计算节点中的待写入数据写入至所述固态硬盘,或者所述固态硬盘中的待读取数据写入至所述计算节点。
  4. 根据权利要求1~3中任一项所述的数据传输方法,其特征在于,所述存储节点包括射频电路。
  5. 一种数据传输方法,其特征在于,存储节点和计算节点之间基于RDMA协议进行通信,所述存储节点与固态硬盘之间通过PCIe链路连接,所述数据传输方法包括:
    所述固态硬盘根据内存中数据传输请求的信息生成数据传输指示,所述数据传输请求是所述计算节点发送给所述存储节点的,且用于指定所述固态硬盘与所述计算节点之间进行数据传输,所述内存中数据传输请求的信息是所述存储节点基于所述PCIe链路将所述数据传输请求的信息写入所述固态硬盘的内存中的,所述数据传输指示用于控制所述存储节点从所述计算节点中读取待写入数据,并发送至所述固态硬盘进行写入;或者从所述固态硬盘中读取待读取数据,并发送至所述计算节点进行写入;
    所述固态硬盘通过所述PCIe链路向所述存储节点发送所述数据传输指示。
  6. 根据权利要求5所述的数据传输方法,其特征在于,所述数据传输请求包括第一命令和第二命令,所述第一命令基于所述RDMA协议,所述第二命令基于非易失性传输总线NVMe协议,所述内存中数据传输请求的信息是所述存储节点将所述第二命令的信息写入所述固态硬盘上的所述存储节点的内存队列中的信息,所述固态硬盘根据内存中数据传输请求的信息,生成数据传输指示,包括:
    所述固态硬盘对所述第二命令的信息进行解析,得到目标信息;
    所述固态硬盘根据所述目标信息生成数据传输指示。
  7. 一种数据传输方法,其特征在于,存储节点和计算节点之间基于RDMA协议进行通信,所述存储节点与固态硬盘之间通过PCIe链路连接,所述数据传输方法包括:
    所述计算节点生成数据传输请求,所述数据传输请求用于指定所述固态硬盘与所述计算节点之间进行数据传输;
    所述计算节点通过所述计算节点的发送队列SQ,向所述存储节点的接收队列RQ发送所述数据传输请求;
    所述计算节点通过所述计算节点的接收队列RQ,从所述存储节点的发送队列RQ中接收数据传输指示,所述数据传输指示是所述固态硬盘根据所述存储节点在所述固态硬盘的内存中写入所述数据传输请求的信息得到的;
    所述计算节点基于所述数据传输指示被所述存储节点读取待写入数据,或者,写入来自所述固态硬盘中的待读取数据。
  8. 根据权利要求7所述的数据传输方法,其特征在于,所述数据传输请求包括第一命令和第二命令,所述第一命令基于所述RDMA协议,所述第二命令基于NVMe协议。
  9. 一种设备,其特征在于,包括:如权利要求1~8中任一项所述的数据传输方法对应的单元。
  10. 一种计算机可读存储介质,其特征在于,其用于存储计算机程序,其中,所述计 算机程序使得计算机执行如权利要求1~8中任一项所述的方法。
  11. 一种计算机程序产品,其特征在于,所述计算机程序产品用于存储计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行如权利要求1~8中任一项所述的方法。
  12. 一种分布式系统,其特征在于,包括:如权利要求1~8中任一项所述的存储节点、固态硬盘以及计算节点。
PCT/CN2020/141620 2020-12-30 2020-12-30 数据传输方法和相关装置 WO2022141250A1 (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
PCT/CN2020/141620 WO2022141250A1 (zh) 2020-12-30 2020-12-30 数据传输方法和相关装置
CN202080107172.2A CN116569154A (zh) 2020-12-30 2020-12-30 数据传输方法和相关装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2020/141620 WO2022141250A1 (zh) 2020-12-30 2020-12-30 数据传输方法和相关装置

Publications (1)

Publication Number Publication Date
WO2022141250A1 true WO2022141250A1 (zh) 2022-07-07

Family

ID=82260013

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2020/141620 WO2022141250A1 (zh) 2020-12-30 2020-12-30 数据传输方法和相关装置

Country Status (2)

Country Link
CN (1) CN116569154A (zh)
WO (1) WO2022141250A1 (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106210041A (zh) * 2016-07-05 2016-12-07 杭州华为数字技术有限公司 一种数据写入方法及服务器端网卡
US20160378353A1 (en) * 2015-06-26 2016-12-29 Intel Corporation Method and apparatus for dynamically allocating storage resources to compute nodes
US20180067685A1 (en) * 2015-11-19 2018-03-08 Huawei Technologies Co., Ltd. Method for Implementing NVME over Fabrics, Terminal, Server, and System
CN107992436A (zh) * 2016-10-26 2018-05-04 杭州华为数字技术有限公司 一种NVMe数据读写方法及NVMe设备
CN110888827A (zh) * 2018-09-10 2020-03-17 华为技术有限公司 数据传输方法、装置、设备及存储介质
CN110888602A (zh) * 2019-11-18 2020-03-17 深圳忆联信息系统有限公司 基于固态硬盘的读性能提升方法、装置及计算机设备

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160378353A1 (en) * 2015-06-26 2016-12-29 Intel Corporation Method and apparatus for dynamically allocating storage resources to compute nodes
US20180067685A1 (en) * 2015-11-19 2018-03-08 Huawei Technologies Co., Ltd. Method for Implementing NVME over Fabrics, Terminal, Server, and System
CN106210041A (zh) * 2016-07-05 2016-12-07 杭州华为数字技术有限公司 一种数据写入方法及服务器端网卡
CN107992436A (zh) * 2016-10-26 2018-05-04 杭州华为数字技术有限公司 一种NVMe数据读写方法及NVMe设备
CN110888827A (zh) * 2018-09-10 2020-03-17 华为技术有限公司 数据传输方法、装置、设备及存储介质
CN110888602A (zh) * 2019-11-18 2020-03-17 深圳忆联信息系统有限公司 基于固态硬盘的读性能提升方法、装置及计算机设备

Also Published As

Publication number Publication date
CN116569154A (zh) 2023-08-08

Similar Documents

Publication Publication Date Title
KR102388893B1 (ko) 브리지 장치를 이용한 스토리지 인접 연산 제공 시스템 및 방법
US10079889B1 (en) Remotely accessible solid state drive
KR101744465B1 (ko) 데이터를 저장하기 위한 방법 및 장치
CN109471833B (zh) 用于最大化PCIe对等连接的带宽的系统和方法
TWI777072B (zh) 主機、非揮發性記憶體快速固態驅動器及儲存服務的方法
US9696942B2 (en) Accessing remote storage devices using a local bus protocol
US9727503B2 (en) Storage system and server
US7937447B1 (en) Communication between computer systems over an input/output (I/O) bus
CN108701004A (zh) 一种数据处理的系统、方法及对应装置
US20110004732A1 (en) DMA in Distributed Shared Memory System
US20200081850A1 (en) Unified address space for multiple hardware accelerators using dedicated low latency links
US20090043886A1 (en) OPTIMIZING VIRTUAL INTERFACE ARCHITECTURE (VIA) ON MULTIPROCESSOR SERVERS AND PHYSICALLY INDEPENDENT CONSOLIDATED VICs
WO2019233322A1 (zh) 资源池的管理方法、装置、资源池控制单元和通信设备
US11698881B2 (en) Transferring data between solid state drives (SSDs) via a connection between the SSDs
WO2022001417A1 (zh) 一种数据传输方法、处理器系统及内存访问系统
US7469309B1 (en) Peer-to-peer data transfer method and apparatus with request limits
AU2015402888B2 (en) Computer device and method for reading/writing data by computer device
US20050089033A1 (en) Method, system, and program for constructing a packet
WO2014202003A1 (zh) 数据存储系统的数据传输方法、装置及系统
US20230325277A1 (en) Memory controller performing selective and parallel error correction, system including the same and operating method of memory device
US10853255B2 (en) Apparatus and method of optimizing memory transactions to persistent memory using an architectural data mover
WO2022141250A1 (zh) 数据传输方法和相关装置
WO2022073399A1 (zh) 存储节点、存储设备及网络芯片
CN112732176B (zh) 基于fpga的ssd访问方法及装置、存储系统及存储介质
WO2021249063A1 (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: 20967591

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 202080107172.2

Country of ref document: CN

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 20967591

Country of ref document: EP

Kind code of ref document: A1