CN116569154A - 数据传输方法和相关装置 - Google Patents
数据传输方法和相关装置 Download PDFInfo
- Publication number
- CN116569154A CN116569154A CN202080107172.2A CN202080107172A CN116569154A CN 116569154 A CN116569154 A CN 116569154A CN 202080107172 A CN202080107172 A CN 202080107172A CN 116569154 A CN116569154 A CN 116569154A
- Authority
- CN
- China
- Prior art keywords
- data transmission
- solid state
- data
- state disk
- storage node
- Prior art date
- Legal status (The legal status 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 status listed.)
- Pending
Links
Classifications
-
- 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/32—Handling requests for interconnection or transfer for access to input/output bus using combination of interrupt and burst mode transfer
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)
- 一种数据传输方法,其特征在于,存储节点和计算节点之间基于远进程直接数据存取RDMA协议进行通信,所述存储节点与固态硬盘之间通过外围设备高速连接总线PCIe链路连接,所述数据传输方法包括:所述存储节点通过所述存储节点的接收队列RQ,从所述计算节点的发送队列SQ中接收数据传输请求,所述数据传输请求用于指定所述固态硬盘与所述计算节点之间进行数据传输;所述存储节点基于所述PCIe链路将所述数据传输请求的信息写入所述固态硬盘的内存中;所述存储节点通过所述PCIe链路从所述固态硬盘中接收数据传输指示,所述数据传输指示和所述数据传输请求的命令类型相反,所述数据传输指示是所述固态硬盘根据所述固态硬盘的内存中所述数据传输请求的信息得到的;所述存储节点通过所述存储节点的发送队列SQ,向所述计算节点的接收队列RQ中发送所述数据传输指示;所述存储节点基于所述数据传输指示从所述计算节点中读取待写入数据,并发送至所述固态硬盘进行写入;或者从所述固态硬盘中读取待读取数据,并发送至所述计算节点进行写入。
- 根据权利要求1所述的数据传输方法,其特征在于,所述数据传输请求包括第一命令和第二命令,所述第一命令基于所述RDMA协议,所述第二命令基于非易失性传输总线NVMe协议,所述存储节点基于所述PCIe链路将所述数据传输请求的信息写入所述固态硬盘的内存中,包括:所述存储节点基于所述PCIe链路将所述存储节点的内存队列建立在所述固态硬盘上;所述存储节点对所述第一命令进行解析,得到所述数据传输请求对应的固态硬盘;所述存储节点将所述第二命令的信息写入所述固态硬盘上的所述存储节点的内存队列中,以使所述数据传输请求的信息写入所述固态硬盘的内存中。
- 根据权利要求1或2所述的数据传输方法,其特征在于,在所述存储节点基于所述数据传输指示从所述计算节点中读取待写入数据,并发送至所述固态硬盘进行写入;或者从所述固态硬盘中读取待读取数据,并发送至所述计算节点进行写入之后,所述方法还包括:所述存储节点通过所述存储节点的发送队列SQ,向所述计算节点的接收队列RQ中发送数据完成消息,所述数据完成消息用于指示所述计算节点中的待写入数据写入至所述固态硬盘,或者所述固态硬盘中的待读取数据写入至所述计算节点。
- 根据权利要求1~3中任一项所述的数据传输方法,其特征在于,所述存储节点包括射频电路。
- 一种数据传输方法,其特征在于,存储节点和计算节点之间基于RDMA协议进行通信,所述存储节点与固态硬盘之间通过PCIe链路连接,所述数据传输方法包括:所述固态硬盘根据内存中数据传输请求的信息生成数据传输指示,所述数据传输请求是所述计算节点发送给所述存储节点的,且用于指定所述固态硬盘与所述计算节点之间进行数据传输,所述内存中数据传输请求的信息是所述存储节点基于所述PCIe链路将所述数据传输请求的信息写入所述固态硬盘的内存中的,所述数据传输指示用于控制所述存储节点从所述计算节点中读取待写入数据,并发送至所述固态硬盘进行写入;或者从所述固态硬盘中读取待读取数据,并发送至所述计算节点进行写入;所述固态硬盘通过所述PCIe链路向所述存储节点发送所述数据传输指示。
- 根据权利要求5所述的数据传输方法,其特征在于,所述数据传输请求包括第一命令和第二命令,所述第一命令基于所述RDMA协议,所述第二命令基于非易失性传输总线NVMe协议,所述内存中数据传输请求的信息是所述存储节点将所述第二命令的信息写入所述固态硬盘上的所述存储节点的内存队列中的信息,所述固态硬盘根据内存中数据传输请求的信息,生成数据传输指示,包括:所述固态硬盘对所述第二命令的信息进行解析,得到目标信息;所述固态硬盘根据所述目标信息生成数据传输指示。
- 一种数据传输方法,其特征在于,存储节点和计算节点之间基于RDMA协议进行通信,所述存储节点与固态硬盘之间通过PCIe链路连接,所述数据传输方法包括:所述计算节点生成数据传输请求,所述数据传输请求用于指定所述固态硬盘与所述计算节点之间进行数据传输;所述计算节点通过所述计算节点的发送队列SQ,向所述存储节点的接收队列RQ发送所述数据传输请求;所述计算节点通过所述计算节点的接收队列RQ,从所述存储节点的发送队列RQ中接收数据传输指示,所述数据传输指示是所述固态硬盘根据所述存储节点在所述固态硬盘的内存中写入所述数据传输请求的信息得到的;所述计算节点基于所述数据传输指示被所述存储节点读取待写入数据,或者,写入来自所述固态硬盘中的待读取数据。
- 根据权利要求7所述的数据传输方法,其特征在于,所述数据传输请求包括第一命令和第二命令,所述第一命令基于所述RDMA协议,所述第二命令基于NVMe协议。
- 一种设备,其特征在于,包括:如权利要求1~8中任一项所述的数据传输方法对应的单元。
- 一种计算机可读存储介质,其特征在于,其用于存储计算机程序,其中,所述计 算机程序使得计算机执行如权利要求1~8中任一项所述的方法。
- 一种计算机程序产品,其特征在于,所述计算机程序产品用于存储计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行如权利要求1~8中任一项所述的方法。
- 一种分布式系统,其特征在于,包括:如权利要求1~8中任一项所述的存储节点、固态硬盘以及计算节点。
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 |
---|---|
CN116569154A true CN116569154A (zh) | 2023-08-08 |
Family
ID=82260013
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080107172.2A Pending CN116569154A (zh) | 2020-12-30 | 2020-12-30 | 数据传输方法和相关装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN116569154A (zh) |
WO (1) | WO2022141250A1 (zh) |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9823849B2 (en) * | 2015-06-26 | 2017-11-21 | Intel Corporation | Method and apparatus for dynamically allocating storage resources to compute nodes |
CN106775434B (zh) * | 2015-11-19 | 2019-11-29 | 华为技术有限公司 | 一种NVMe网络化存储的实现方法、终端、服务器及系统 |
CN106210041B (zh) * | 2016-07-05 | 2019-09-20 | 杭州华为数字技术有限公司 | 一种数据写入方法及服务器端网卡 |
CN107992436B (zh) * | 2016-10-26 | 2021-04-09 | 华为技术有限公司 | 一种NVMe数据读写方法及NVMe设备 |
CN110888827B (zh) * | 2018-09-10 | 2021-04-09 | 华为技术有限公司 | 数据传输方法、装置、设备及存储介质 |
CN110888602A (zh) * | 2019-11-18 | 2020-03-17 | 深圳忆联信息系统有限公司 | 基于固态硬盘的读性能提升方法、装置及计算机设备 |
-
2020
- 2020-12-30 WO PCT/CN2020/141620 patent/WO2022141250A1/zh active Application Filing
- 2020-12-30 CN CN202080107172.2A patent/CN116569154A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2022141250A1 (zh) | 2022-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102388893B1 (ko) | 브리지 장치를 이용한 스토리지 인접 연산 제공 시스템 및 방법 | |
KR100555394B1 (ko) | Ngio/infiniband 어플리케이션용 리모트 키검증을 위한 방법 및 메커니즘 | |
US8719456B2 (en) | Shared memory message switch and cache | |
TWI777072B (zh) | 主機、非揮發性記憶體快速固態驅動器及儲存服務的方法 | |
CN108701004A (zh) | 一种数据处理的系统、方法及对应装置 | |
JP2021190123A (ja) | キャッシュコヒーレントインターコネクトを使用するシステム及び方法 | |
CN108984465B (zh) | 一种消息传输方法及设备 | |
US20020071450A1 (en) | Host-fabric adapter having bandwidth-optimizing, area-minimal, vertical sliced memory architecture and method of connecting a host system to a channel-based switched fabric in a data network | |
CN112214166B (zh) | 用于传输数据处理请求的方法和装置 | |
CN110119304B (zh) | 一种中断处理方法、装置及服务器 | |
US7469309B1 (en) | Peer-to-peer data transfer method and apparatus with request limits | |
US11258887B2 (en) | Payload cache | |
CN111641566B (zh) | 数据处理的方法、网卡和服务器 | |
US7460531B2 (en) | Method, system, and program for constructing a packet | |
US20210334143A1 (en) | System for cooperation of disaggregated computing resources interconnected through optical circuit, and method for cooperation of disaggregated resources | |
WO2020083067A1 (zh) | 资源管理的方法和装置 | |
CN111247508B (zh) | 网络存储架构 | |
US11231927B2 (en) | System, apparatus and method for providing a fabric for an accelerator | |
CN116569154A (zh) | 数据传输方法和相关装置 | |
WO2022073399A1 (zh) | 存储节点、存储设备及网络芯片 | |
EP2779543A1 (en) | Direct push operations and gather operations | |
CN117041186B (zh) | 数据传输方法、芯片系统、计算设备及存储介质 | |
US20240168876A1 (en) | Solving submission queue entry overflow using metadata or data pointers | |
US20240223500A1 (en) | Peripheral component interconnect express over fabric networks | |
WO2024144966A1 (en) | Peripheral component interconnect express over fabric networks |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |