CN115509435A - 一种数据读写方法、装置、设备、介质 - Google Patents
一种数据读写方法、装置、设备、介质 Download PDFInfo
- Publication number
- CN115509435A CN115509435A CN202110698932.8A CN202110698932A CN115509435A CN 115509435 A CN115509435 A CN 115509435A CN 202110698932 A CN202110698932 A CN 202110698932A CN 115509435 A CN115509435 A CN 115509435A
- Authority
- CN
- China
- Prior art keywords
- node
- rdma
- data read
- memory
- data
- 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
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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
- G06F3/0622—Securing storage systems in relation to access
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Information Transfer Systems (AREA)
Abstract
本申请公开了一种数据读写方法、装置、设备、介质,该方法包括:利用双边接口RDMA recv接收所述分布式存储系统中的第二节点上的存储客户端发送的数据读写请求;从所述数据读写请求中获取单边内存地址;对所述单边内存地址对应的内存进行RDMA单边数据读写操作,以响应所述数据读写请求;利用双边接口RDMA send向所述第二节点上的存储客户端发送所述数据读写请求对应的回复信息,以便所述第二节点上的存储客户端利用双边接口RDMA recv接收所述回复信息,其中,所述回复信息用于表示所述数据读写请求对应的操作已完成。这样能够兼容现有网络通信架构,降低数据读写时延、提高IOPS,且可以节约通信开销。
Description
技术领域
本申请涉及存储技术领域,特别涉及一种数据读写方法、装置、设备、介质。
背景技术
随着人工智能和5G技术的发展,客户的业务与应用不断丰富,因此需要存储和传输的数据量不断增加,而分布式存储系统采用传统TCP/IP(Transmission ControlProtocol/Internet Protocol,传输控制协议/网际协议)协议进行跨节点数据通信,跨节点网络延迟高,增加了用户IO(Input/Output,输入/输出)时延和降低了系统IOPS(Input/Output Operations Per Second,每秒钟读写次数),网络性能成为制约超融合读写性能的瓶颈。
为了解决以上问题,RDMA(Remote Direct Memmory Access,远程直接内存访问)技术和网卡等产生,允许不同服务器上应用内存之间可以直接移动数据,可以绕过内核协议栈(Kernel Bypass),而不需要CPU(central processing unit,中央处理器)干预,从而提升网络性能。
但目前提出的RDMA技术仅仅采用双边原语进行数据传输,或者仅仅采用单边原语进行数据传输。例如,Baidu RPC(Brpc)是百度的RPC(Remote Procedure Call,远程系统调用)框架,通过建立一种类Socket的RDMA通信库,客户端先与服务器建立TCP TCP(Transmission Control Protocol,传输控制协议)连接,然后通过RDMA cm(RDMAConnection Management,RDMA链路管理)进行握手建立RDMA连接。数据传输采用RDMA的双边接口RDMA send/RDMA recv,Brpc仅仅采用RDMA的双边接口,但双边操作时延高、IOPS低。当然,也有仅仅采用基于单边操作的RDMA技术,由于单边操作需要提前协商操作内存的地址、偏移和密钥,而不同应用为了免拷贝会直接使用业务申请的内存,内存地址不断变化,所以每次通信需要多次交互,增加通信开销。
发明内容
有鉴于此,本申请的目的在于提供一种数据读写方法、装置、设备、介质,能够兼容现有网络通信架构,降低数据读写时延、提高IOPS,且可以节约通信开销。其具体方案如下:
第一方面,本申请公开了一种数据读写方法,应用于分布式存储系统中的第一节点上的存储服务端,包括:
利用双边接口RDMA recv接收所述分布式存储系统中的第二节点上的存储客户端发送的数据读写请求,其中,所述数据读写请求为所述第二节点上的存储客户端利用双边接口RDMA send发送的,所述第一节点上的存储服务端和所述第二节点上的存储客户端之间存在基于RoCE协议建立的RDMA连接;
从所述数据读写请求中获取单边内存地址,其中,所述单边内存地址为所述第二节点上的,用于存储所述第一节点和所述第二节点之间通过所述RDMA连接传输的读写数据的第一单边内存中的地址;
对所述单边内存地址对应的内存进行RDMA单边数据读写操作,以响应所述数据读写请求;
利用双边接口RDMA send向所述第二节点上的存储客户端发送所述数据读写请求对应的回复信息,以便所述第二节点上的存储客户端利用双边接口RDMA recv接收所述回复信息,其中,所述回复信息用于表示所述数据读写请求对应的操作已完成。
可选地,所述利用双边接口RDMA recv接收所述分布式存储系统中的第二节点上的存储客户端发送的数据读写请求之前,还包括:
在所述第一节点上的存储服务端初始化时,申请并注册第一双边内存和第二双边内存,并预注册第二单边内存,其中,所述第一双边内存为所述第一节点中用于存储通过双边接口RDMA recv接收到的数据的内存,所述第二双边内存为所述第一节点中用于存储通过双边接口RDMA send发送到的数据的内存,所述第二单边内存为所述第一节点中用于存储所述第一节点和所述第二节点之间通过所述RDMA连接传输的待写入数据的内存;
在所述第一节点上的存储服务端接收到所述第二节点上的存储客户端发送的连接建立请求时,创建所述RDMA连接对应的连接资源并建立所述RDMA连接。
可选地,所述利用双边接口RDMA recv接收所述分布式存储系统中的第二节点上的存储客户端发送的数据读写请求,包括:
从本地保存的接收地址集中取出目标接收双边内存地址,其中,所述接收地址集中的地址为所述第一双边内存中的地址;
利用双边接口RDMA recv接收所述分布式存储系统中的第二节点上的存储客户端发送的数据读写请求,并将所述数据读写请求中包括的信息存储到所述目标接收双边内存地址下。
可选地,所述利用双边接口RDMA send向所述第二节点上的存储客户端发送所述数据读写请求对应的回复信息,包括:
从本地保存的发送地址集中取出目标发送双边内存地址,其中,所述发送地址集中的地址为所述第二双边内存中的地址;
将所述数据读写请求对应的回复信息写入到所述目标发送双边内存地址下,并将所述回复信息提交至回复信息队列中;
检查所述回复信息是否满足发送条件,并在所述回复信息满足发送条件时,利用双边接口RDMA send向所述第二节点上的存储客户端发送所述回复信息。
可选地,所述对所述单边内存地址对应的内存进行RDMA单边数据读写操作,包括:
当所述数据读写请求为数据写请求时,对所述单边内存地址对应的内存进行RDMA单边数据读操作,获取待写入数据,并将所述待写入数据写入到所述第二单边内存中。
可选地,所述对所述单边内存地址对应的内存进行RDMA单边数据读写操作,包括:
当所述数据读写请求为数据读请求时,从所述第一节点的存储设备中读取出所述数据读请求对应的待读取数据,并将所述待读取数据写到所述单边内存地址对应的内存中。
可选地,所述方法,还包括:
在所述RDMA连接销毁时,释放所述第一双边内存、所述第二双边内存、所述第二单边内存以及所述连接资源。
第二方面,本申请公开了一种数据读写装置,应用于分布式存储系统中的第一节点上的存储服务端,包括:
请求获取模块,用于利用双边接口RDMA recv接收所述分布式存储系统中的第二节点上的存储客户端发送的数据读写请求,其中,所述数据读写请求为所述第二节点上的存储客户端利用双边接口RDMA send发送的,所述第一节点上的存储服务端和所述第二节点上的存储客户端之间存在基于RoCE协议建立的RDMA连接;
信息提取模块,用于从所述数据读写请求中获取单边内存地址,其中,所述单边内存地址为所述第二节点上的,用于存储所述第一节点和所述第二节点之间通过所述RDMA连接传输的读写数据的第一单边内存中的地址;
读写模块,用于对所述单边内存地址对应的内存进行RDMA单边数据读写操作,以响应所述数据读写请求;
回复信息发送模块,用于利用双边接口RDMA send向所述第二节点上的存储客户端发送所述数据读写请求对应的回复信息,以便所述第二节点上的存储客户端利用双边接口RDMA recv接收所述回复信息,其中,所述回复信息用于表示所述数据读写请求对应的操作已完成。
第三方面,本申请公开了一种电子设备,包括:
存储器和处理器;
其中,所述存储器,用于存储计算机程序;
所述处理器,用于执行所述计算机程序,以实现前述公开的数据读写方法。
第四方面,本申请公开了一种计算机可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述公开的数据读写方法。
可见,本申请应用于分布式存储系统中的第一节点上的存储服务端,首先利用双边接口RDMA recv接收所述分布式存储系统中的第二节点上的存储客户端发送的数据读写请求,其中,所述数据读写请求为所述第二节点上的存储客户端利用双边接口RDMA send发送的,所述第一节点上的存储服务端和所述第二节点上的存储客户端之间存在基于RoCE协议建立的RDMA连接。然后从所述数据读写请求中获取单边内存地址,其中,所述单边内存地址为所述第二节点上的,用于存储所述第一节点和所述第二节点之间通过所述RDMA连接传输的读写数据的第一单边内存中的地址。接着对所述单边内存地址对应的内存进行RDMA单边数据读写操作,以响应所述数据读写请求。并利用双边接口RDMA send向所述第二节点上的存储客户端发送所述数据读写请求对应的回复信息,以便所述第二节点上的存储客户端利用双边接口RDMA recv接收所述回复信息,其中,所述回复信息用于表示所述数据读写请求对应的操作已完成。由此可见,本申请中第一节点上的存储服务端利用双边接口RDMArecv接收第二节点上的存储客户端利用双边接口RDMA send发送的数据读写请求,然后由第一节点上的存储服务端对所述数据读写请求中的单边内存地址对应的内存进行单边数据读写操作,以响应数据读写请求,然后第一节点上的存储服务端还会利用双边接口RDMAsend发送请求完成的回复信息给第二节点上的存储客户端,这样第一节点上的存储服务端和所述第二节点上的存储客户端之间存在基于RoCE协议建立的RDMA连接,第一节点和第二节点之间实现RDMA的过程中,利用双边接口RDMA send和RDMA recv进行数据读写请求以及回复信息的发送和接收,由于RDMA连接是基于RoCE协议建立的,且数据读写请求以及回复信息的发送和接收利用的是双边接口RDMA send和RDMA recv,所以可以兼容现有网络通信结构。且分布式存储系统中的两个节点之间基于RDMA技术进行数据传输,绕过了内核协议栈,降低系统读写时延和降低CPU使用率。此外,在数据读写请求中已经包括了单边内存地址,只需要对单边内存地址对应的内存进行单边数据读写操作,从单边内存地址中读出待写入到第一节点的待写入数据或将第一节点中读取出的数据写入到单边内存地址对应的内存中,这样在节点之间实现RDMA时,便是将单边操作和双边操作结合起来,降低了数据读写时延、提高了IOPS。且由于单边数据读写操作对应的单边内存地址在数据读写请求中便发送到了第一节点中的存储服务端,所以可以避免第一节点的存储服务端和第二节点的存储客户端之间需要多次通信才能获取到操作地址的问题,节约了通信开销。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请公开的一种数据读写方法流程图;
图2为本申请公开的一种具体的数据读写方法流程图;
图3为本申请公开的一种具体的分布式存储系统示意图;
图4为本申请公开的一种具体的数据写流程图;
图5为本申请公开的一种具体的数据读流程图;
图6为本申请公开的一种数据读写处理过程流程图;
图7为本申请公开的一种数据读写装置结构示意图;
图8为本申请公开的一种电子设备结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
参见图1所示,本申请实施例公开了一种数据读写方法,应用于分布式存储系统中的第一节点上的存储服务端,该方法包括:
步骤S11:利用双边接口RDMA recv接收所述分布式存储系统中的第二节点上的存储客户端发送的数据读写请求,其中,所述数据读写请求为所述第二节点上的存储客户端利用双边接口RDMA send发送的,所述第一节点上的存储服务端和所述第二节点上的存储客户端之间存在基于RoCE协议建立的RDMA连接。
所述分布式存储系统包括第一节点和第二节点,其中,所述第一节点可以为所述分布式存储系统中任意一个节点,所述第二节点为所述分布式存储系统中除所述第一节点之外的任意一个节点,所述第一节点和所述第二节点上均包括自身的存储服务端、存储客户端以及存储设备,存储设备包括但不限于固态硬盘等。也即,所述第一节点上包括存储客户端和存储服务端,所述第二节点上也包括存储客户端和存储服务端,且所述第一节点上的存储客户端与所述分布式存储系统中除自身之外的各个节点上的存储服务端之间均存在基于RoCE(RDMA over Convergent Ethernet)协议建立的RDMA连接,所述第二节点的存储客户端与所述分布式存储系统中除自身之外的各个节点上的存储服务端之间也均存在基于RoCE协议建立的RDMA连接,所述存储客户端需要接收自身所处节点上的应用下发的数据读写请求,以便调用自身所处节点上的存储服务端或其他节点上的存储服务端完成数据读写请求对应操作,而存储服务端需要管理挂载的存储设备。
所述第一节点上的存储服务端需要利用双边接口RDMA recv接收所述第二节点上的存储客户端发送的数据读写请求,其中,所述数据读写请求为所述第二节点上的存储客户端利用双边接口RDMA send发送的。
也即,当所述第二节点需要对所述第一节点进行RDMA操作时,所述第二节点上的存储客户端会利用双边接口RDMA send向所述第一节点上的存储服务端发送数据读取请求,相应地,所述第一节点上的存储服务端便需要利用双边接口RDMA recv接收所述数据读写请求,其中,所述数据读写请求中包括单边内存地址、偏移和密钥,所述单边内存地址为所述第二节点上的,用于存储所述第一节点和所述第二节点之间通过所述RDMA连接传输的读写数据的第一单边内存中的地址。也即,所述第一单边内存用于存储需要通过所述第一节点和所述第二节点之间的RDMA连接传输的待写入到所述第一节点中的待存储数据,以及用于存储需要通过所述第一节点和所述第二节点之间的RDMA连接传输的,从所述第一节点中读取出并返回给所述第二节点的待读取数据。
步骤S12:从所述数据读写请求中获取单边内存地址,其中,所述单边内存地址为所述第二节点上的,用于存储所述第一节点和所述第二节点之间通过所述RDMA连接传输的读写数据的第一单边内存中的地址。
可以理解的是,在接收到所述数据读写请求之后,所述第一节点上的存储服务端还需要从所述数据读写请求中获取所述单边内存地址,除了所述单边内存地址之外,还需要获取所述偏移以及所述密钥。在获取到所述单边内存地址之后,所述第一节点上的存储服务端便知道需要从哪里读取出待写入数据写入到所述第一节点中,以及第一节点上的存储服务端从存储设备中读取出的待读取数据需要写入到第二节点中的什么地方。
步骤S13:对所述单边内存地址对应的内存进行RDMA单边数据读写操作,以响应所述数据读写请求。
可以理解的是,在获取到所述单边内存地址之后,便可以对所述单边内存地址对应的内存进行RDMA单边数据读写操作,以响应所述数据读写请求。其中,所述RDMA单边数据读写操作也即RDMA技术中的RDMA READ/Write操作,由于RDMA技术中的RDMA READ/Write操作本就是基于单边原语的操作,所以在此将RDMA技术中的RDMA READ/Write操作称为RDMA单边数据读写操作。
具体的,当所述数据读写请求为数据写请求时,对所述单边内存地址对应的内存进行RDMA单边数据读操作,获取待写入数据,并将所述待写入数据写入到所述第一节点上的第二单边内存中,所述第二单边内存为所述第一节点中用于存储所述第一节点和所述第二节点之间通过所述RDMA连接传输的待写入数据的内存。在将所述待写入数据写入到所述第一单边内存之后,所述第一节点上的存储服务端可以根据自身的数据落盘机制将所述待写入数据存储到所述第一节点中的存储设备中。
当所述数据读写请求为数据读请求时,从所述第一节点的存储设备中读取出所述数据读请求对应的待读取数据,并将所述待读取数据写到所述单边内存地址对应的内存中。
步骤S14:利用双边接口RDMA send向所述第二节点上的存储客户端发送所述数据读写请求对应的回复信息,以便所述第二节点上的存储客户端利用双边接口RDMA recv接收所述回复信息,其中,所述回复信息用于表示所述数据读写请求对应的操作已完成。
在响应所述数据读写请求之后,所述第一节点上的存储服务端还需要通知所述第二节点上的存储客户端所述数据读写请求对应的操作已完成。具体的,就是所述第一节点上的存储服务端利用双边接口RDMA send向所述第二节点上的存储客户端发送所述数据读写请求对应的回复信息,所述第二节点上的存储客户端再利用双边接口RDMA recv接收所述回复信息,其中,所述回复信息用于表示所述数据读写请求对应的操作已完成。
可见,本申请应用于分布式存储系统中的第一节点上的存储服务端,首先利用双边接口RDMA recv接收所述分布式存储系统中的第二节点上的存储客户端发送的数据读写请求,其中,所述数据读写请求为所述第二节点上的存储客户端利用双边接口RDMA send发送的,所述第一节点上的存储服务端和所述第二节点上的存储客户端之间存在基于RoCE协议建立的RDMA连接。然后从所述数据读写请求中获取单边内存地址,其中,所述单边内存地址为所述第二节点上的,用于存储所述第一节点和所述第二节点之间通过所述RDMA连接传输的读写数据的第一单边内存中的地址。接着对所述单边内存地址对应的内存进行RDMA单边数据读写操作,以响应所述数据读写请求。并利用双边接口RDMA send向所述第二节点上的存储客户端发送所述数据读写请求对应的回复信息,以便所述第二节点上的存储客户端利用双边接口RDMA recv接收所述回复信息,其中,所述回复信息用于表示所述数据读写请求对应的操作已完成。由此可见,本申请中第一节点上的存储服务端利用双边接口RDMArecv接收第二节点上的存储客户端利用双边接口RDMA send发送的数据读写请求,然后由第一节点上的存储服务端对所述数据读写请求中的单边内存地址对应的内存进行单边数据读写操作,以响应数据读写请求,然后第一节点上的存储服务端还会利用双边接口RDMAsend发送请求完成的回复信息给第二节点上的存储客户端,这样第一节点上的存储服务端和所述第二节点上的存储客户端之间存在基于RoCE协议建立的RDMA连接,第一节点和第二节点之间实现RDMA的过程中,利用双边接口RDMA send和RDMA recv进行数据读写请求以及回复信息的发送和接收,由于RDMA连接是基于RoCE协议建立的,且数据读写请求以及回复信息的发送和接收利用的是双边接口RDMA send和RDMA recv,所以可以兼容现有网络通信结构。且分布式存储系统中的两个节点之间基于RDMA技术进行数据传输,绕过了内核协议栈,降低系统读写时延和降低CPU使用率。此外,在数据读写请求中已经包括了单边内存地址,只需要对单边内存地址对应的内存进行单边数据读写操作,从单边内存地址中读出待写入到第一节点的待写入数据或将第一节点中读取出的数据写入到单边内存地址对应的内存中,这样在节点之间实现RDMA时,便是将单边操作和双边操作结合起来,降低了数据读写时延、提高了IOPS。且由于单边数据读写操作对应的单边内存地址在数据读写请求中便发送到了第一节点中的存储服务端,所以可以避免第一节点的存储服务端和第二节点的存储客户端之间需要多次通信才能获取到操作地址的问题,节约了通信开销。
参见图2所示,本申请实施例公开了一种具体的数据读写方法,应用于分布式存储系统中的第一节点上的存储服务端,该方法包括:
步骤S21:在所述第一节点上的存储服务端初始化时,申请并注册第一双边内存和第二双边内存,并预注册第二单边内存,其中,所述第一双边内存为所述第一节点中用于存储通过双边接口RDMA recv接收到的数据的内存,所述第二双边内存为所述第一节点中用于存储通过双边接口RDMA send发送到的数据的内存,所述第二单边内存为所述第一节点中用于存储所述第一节点和所述第二节点之间通过所述RDMA连接传输的待写入数据的内存。
在实际应用中,需要先对所述分布式存储系统中各个节点上的存储服务端和存储客户端进行初始化,以便一个节点上的存储客户端可以与除自身节点之外的其他节点上的存储服务端之间进行RDMA操作。
具体的,在所述第一节点上的存储服务端初始化时,申请并注册第一双边内存和第二双边内存,并预注册第二单边内存,其中,所述第一双边内存为所述第一节点中用于存储通过双边接口RDMA recv接收到的数据的内存,所述第二双边内存为所述第一节点中用于存储通过双边接口RDMA send发送到的数据的内存,所述第二单边内存为所述第一节点中用于存储所述第一节点和所述第二节点之间通过所述RDMA连接传输的待写入数据的内存。此外,所述第一节点上的存储服务端还需要创建RDMA cm事件通道,注册RDMA cm的事件处理函数,以及创建RDMA_PS_TCP类型的cm_id(Identity,标识),调用所述第一节点上的RDMA动态库中的RDMA_listen接口开启监听服务,以监听所述分布式存储系统中除所述第一节点之外的其他节点上的存储客户端发送的事件。
相应地,在所述第二节点上的存储客户端初始化时,申请并注册第三双边内存和第四双边内存,并预注册第一单边内存,其中,所述第三双边内存为所述第二节点中用于存储通过双边接口RDMA recv接收到的数据的内存,所述第四双边内存为所述第二节点中用于存储通过双边接口RDMA send发送到的数据的内存,所述第一单边内存为所述第二节点中用于存储所述第一节点和所述第二节点之间通过所述RDMA连接传输的待写入数据或从所述第一节点读取返回的待读取数据的内存。此外,所述第二节点上的存储客户端还需要创建RDMA cm事件通道,注册RDMA cm事件的事件处理函数。
步骤S22:在所述第一节点上的存储服务端接收到所述第二节点上的存储客户端发送的连接建立请求时,创建所述RDMA连接对应的连接资源并建立所述RDMA连接。
可以理解的是,还需要基于RoCE协议建立所述第一节点上的存储服务端和所述第二节点上的存储客户端之间的RDMA连接。具体地,在所述第一节点上的存储服务端接收到所述第二节点上的存储客户端发送的连接建立请求时,创建所述RDMA连接对应的连接资源并建立所述RDMA连接。
在实际应用中,在所述第一节点上的存储服务端接收所述第二节点上的存储客户端发送的连接建立请求时,创建所述RDMA连接对应的连接资源并建立所述RDMA连接的整个过程包括:所述第二节点上的存储客户端根据所述第一节点上的存储服务端的IP地址(Internet Protocol,网际互连协议)和端口,调用RDMA_resolve_addr接口将所述IP地址映射成可用的RDMA地址,并产生RDMA_CM_EVENT_ADDR_RESOLVED类型的RDMA cm事件,所述第一节点上的存储服务端便会处理该RDMA_CM_EVENT_ADDR_RESOLVED事件,获取映射后可用的RDMA地址,并调用RDMA_resolve_route接口获取连接所需的RDMA路由信息,成功后产生RDMA cm事件RDMA_CM_EVENT_ROUTE_RESOLVED。
第一节点上的存储服务端收到RDMA_CM_EVENT_ROUTE_RESOLVED事件,根据连接支持的最大深度,创建所述RDMA连接所需的连接资源:QP(Queue Pair,队列对)、CQ(Completion Queue,完成队列)、SQ(Send Queue,发送队列)、接收地址集、发送地址集、comp_channel(连接创建的完成队列),调用ibv_post_recv接口将接收地址集推送到接收队列上,并根据comp_channel的事件Fd(file descriptor,文件描述符),注册连接的事件处理函数。所述第二节点上的存储客户端调用RDMA_connect接口向所述第一节点上的存储服务端发起连接建立请求。所述第一节点上的存储服务端收到连接建立请求后,便会产生RDMA_CM_EVENT_CONNECT_REQUEST类型的RDMA cm事件,并生成新的child_cm_id,创建新的RDMA连接,根据最大深度初始化所需连接资源:QP、CQ、SQ、接收地址集、发送地址集、comp_channel,调用ibv_post_recv接口将接收地址集推送到接收队列上,并根据comp_channel的事件Fd,注册连接的事件处理函数;调用RDMA_accept接受连接建立请求,建立所述RDMA连接。所述第一节点上的存储服务端和所述第二节点上的存储客户端都会收到RDMA_CM_EVENT_ESTABLISHED类型的RDMA cm事件,表示连接建立成功,其中,所述接收地址集中的地址为所述第一双边内存中的地址,其中,所述发送地址集中的地址为所述第二双边内存中的地址,所述最大深度为所述RDMA连续发送的不需要等回复的数据包的最大个数,达到最大深度后就必须等收到一个回复信息才能发送下一个包。
所述第二节点上的存储客户端与所述第一节点上的存储服务端相同,也需要创建所述RDMA连接对应的连接资源,所述第二节点上的存储客户端建立RDMA连接成功后将连接状态置为1。
步骤S23:利用双边接口RDMA recv接收所述分布式存储系统中的第二节点上的存储客户端发送的数据读写请求,其中,所述数据读写请求为所述第二节点上的存储客户端利用双边接口RDMA send发送的,所述第一节点上的存储服务端和所述第二节点上的存储客户端之间存在基于RoCE协议建立的RDMA连接。
当所述第二节点需要对所述第一节点进行RDMA操作时,所述第二节点上的存储客户端会利用双边接口RDMA send向所述第一节点上的存储服务端发送数据读取请求,相应地,所述第一节点上的存储客户端便需要利用双边接口RDMA recv接收所述数据读写请求。具体地,从本地保存的接收地址集中取出目标接收双边内存地址;利用双边接口RDMA recv接收所述分布式存储系统中的第二节点上的存储客户端发送的数据读写请求,并将所述数据读写请求中包括的信息存储到所述目标接收双边内存地址下。
步骤S24:从所述数据读写请求中获取单边内存地址,其中,所述单边内存地址为所述第二节点上的,用于存储所述第一节点和所述第二节点之间通过所述RDMA连接传输的读写数据的第一单边内存中的地址。
步骤S25:对所述单边内存地址对应的内存进行RDMA单边数据读写操作,以响应所述数据读写请求。
步骤S24和步骤S25的具体实施过程可以参考前述实施例中公开的具体内容,在此不再进行赘述。
步骤S26:利用双边接口RDMA send向所述第二节点上的存储客户端发送所述数据读写请求对应的回复信息,以便所述第二节点上的存储客户端利用双边接口RDMA recv接收所述回复信息,其中,所述回复信息用于表示所述数据读写请求对应的操作已完成。
所述第一节点上的存储服务端在响应所述数据读写请求之后,所述第一节点上的存储服务端还需要利用双边接口RDMA send向所述第二节点上的存储客户端发送所述数据读写请求对应的回复信息,以便所述第二节点上的存储客户端利用双边接口RDMA recv接收所述回复信息,其中,所述回复信息用于表示所述数据读写请求对应的操作已完成。
具体地,所述第一节点上地存储服务端从本地保存的所述发送地址集中取出目标发送双边内存地址,其中,所述发送地址集中的地址为所述第二双边内存中的地址;将所述数据读写请求对应的回复信息写入到所述目标发送双边内存地址下,并将所述回复信息提交至回复信息队列中;检查所述回复信息是否满足发送条件,并在所述回复信息满足发送条件时,利用双边接口RDMA send向所述第二节点上的存储客户端发送所述回复信息。其中,检查所述回复信息是否满足发送条件,具体为,检查所述第一节点的剩余深度是否为0,剩余深度也即所述最大深度与所述第一节点的存储服务端已向所述第二节点的存储客户端发送但未收到回复信息的数据包个数之间的差值,如果否,且回复信息队列中所述回复信息之前入队的所有信息均发送,则所述回复信息满足发送条件。
所述第二节点上的存储客户端发送所述数据读写请求的具体过程与所述第一节点上的存储服务端发送回复信息的过程相同。
步骤S27:在所述RDMA连接销毁时,释放所述第一双边内存、所述第二双边内存、所述第二单边内存以及所述连接资源。
在第一节点上的存储服务端中所述RDMA连接出现异常状态,会收到RDMA_cm的异常事件类型,针对不同异常事件进行异常处理,保证连接的健壮性。如果所述RDMA连接被销毁,需要释放所述第一双边内存、所述第二双边内存、所述第二单边内存以及所述连接资源。如果RDMA连接销毁,所述第二节点上的存储客户端需要将连接状态置为0,然后释放第二节点上的存储客户端中的连接资源。
参见图3所示,为分布式存储系统示意图。整个系统由虚拟机/客户端模块和分布式存储系统组成,虚拟机/客户端模块也即上层的应用,虚拟机/客户端模块向存储系统下发数据读写等请求,其中,存储系统包括每个节点上的存储客户端、存储服务端以及存储设备。各个节点上的存储客户端通过基于RoCE建立的RDMA连接与其他节点的存储服务端相连接,跨节点采用基于RoCE协议进行数据传输。且各个存储服务端和存储客户端中均包括RoCE模块和RPC模块,在RPC模块在传输层调用RoCE模块进行数据读写请求和待读写数据传输,最终从其他节点获取数据后返回给虚拟机/客户端模块。其中,前述的步骤S11至步骤S14,以及步骤S21至步骤S27具体可以由所述第一节点上的存储服务端中的RoCE模块完成。
参见图4所示,为数据写流程图。第二节点上的存储客户端中的RoCE模块发起写请求write_request(也即前述的数据写请求),并将该请求添加到第二节点上的存储客户端与第一节点上的存储服务端之间的RDMA连接对应的请求发送队列尾部。第二节点上的存储客户端中的RoCE模块通过检查此连接的剩余深度,确定是否满足发送条件;如果满足,则利用双边接口RDMA send发送写请求write_request,且剩余深度quota减1,否则继续等待。第一节点上的存储服务端中的RoCE模块利用双边接口RDMA recv接收所述写请求write_request,第一节点上的存储服务端中的RoCE模块调用ibv_poll_cq接口获取所述写请求write_request;根据所述写请求write_request中的数据内存地址(也即前述的单边内存地址)、偏移和key(也即前述的密钥),执行RDMA READ操作(也即前述的RDMA单边数据读操作),从第二节点中获取待写入数据并放置到第一节点中的单边内存,所述第一节点上的存储服务端中的RoCE模块将所述写请求write_request和待写入数据通知给第一节点上的存储服务端中的RPC模块;所述第一节点上的存储服务端中的RoCE模块提交回复信息reply到此连接对应的回复信息队列的尾部,检查队列深度(也即前述的剩余深度),确定是否可以发送回复信息reply;如果可以,则利用双边接口RDMA send发送回复信息reply,队列深度quota减1;否则继续等待;第二节点上的存储客户端中的RoCE模块调用ibv_poll_cq接口收到回复信息reply,获取回复信息reply返还给自身的RPC模块,自身的队列深度quota加1还原队列深度,第一节点上的存储服务端中的RoCE模块收到发送的回复信息reply完成提示,自身的队列深度quota加1。
参见图5所示,为数据读流程图。第二节点上的存储客户端中的RoCE模块发起读请求read_request(也即前述的数据读请求),并将该请求添加到第二节点上的存储客户端与第一节点上的存储服务端之间的RDMA连接对应的请求发送队列尾部。第二节点上的存储客户端中的RoCE模块通过检查此连接的剩余深度,确定是否满足发送条件;如果满足,则利用双边接口RDMA send发送读请求read_request,且剩余深度quota减1;否则继续等待。第一节点上的存储服务端利用双边接口RDMA recv接收所述读请求read_request,第一节点上的存储服务端中的RoCE模块调用ibv_poll_cq接口获取所述读请求read_request;根据所述读请求read_request中的数据内存地址(也即前述的单边内存地址)、偏移和key(也即前述的密钥),执行RDMA Write操作(也即前述的RDMA单边数据写操作)将从第一节点中读取出的待读取数据写入所述数据内存地址对应的内存中,所述第一节点上的存储服务端中的RoCE模块通知给第一节点上的存储服务端中的RPC模块;所述第一节点上的存储服务端中的RoCE模块提交回复信息reply到此连接对应的回复信息队列的尾部,检查队列深度(也即前述的剩余深度),确定是否可以发送回复信息reply;如果可以,则利用双边接口RDMAsend发送回复信息reply,队列深度quota减1;否则继续等待;第二节点上的存储客户端中的RoCE模块调用ibv_poll_cq接口收到回复信息reply,获取回复信息reply返还给自身的RPC模块,自身的队列深度quota加1还原队列深度,第一节点上的存储服务端中的RoCE模块收到发送的回复信息reply完成提示,自身的队列深度quota加1。
参见图6所示,为数据读写处理过程流程图。第二节点上的存储客户端中的RoCE模块获取到RPC模块发送的RPC请求之后,需要进行连接建立、数据传输以及连接销毁,其中,所述第二节点上的存储客户端中的RoCE模块中的连接建立包括RDMA资源初始化以及向第一节点上的存储服务端发起连接RDMA_connect,通过RDMA cm事件机制与第一节点上的存储服务端之间建立RDMA连接。第一节点上的存储服务端中的RoCE模块的连接建立包括RDMA资源初始化、监听RDMA listen以及接受连接RDMA accetp。第二节点上的存储客户端提交数据读写请求给所述第一节点上的存储服务端的过程中,通过双边传输请求和回复,也即,通过RDMA send/RDMA recv发送数据读写请求和接收回复信息,单边传输数据包,也即,通过单边数据读操作(RDMA read)获取待写入数据写入到所述第一节点的第二单边内存中,通过单边数据写操作(RDMA write)将从所述第一节点中读取出的待读取数据写入到所述第二节点中的第一单边内存中。连接销毁主要是通过RDMA cm事件机制进行连接的异常状态处理以及在连接销毁时进行连接资源释放。
参见图7所示,本申请实施例公开了一种数据读写装置,应用于分布式存储系统中的第一节点上的存储服务端,包括:
请求获取模块11,用于利用双边接口RDMA recv接收所述分布式存储系统中的第二节点上的存储客户端发送的数据读写请求,其中,所述数据读写请求为所述第二节点上的存储客户端利用双边接口RDMA send发送的,所述第一节点上的存储服务端和所述第二节点上的存储客户端之间存在基于RoCE协议建立的RDMA连接;
信息提取模块12,用于从所述数据读写请求中获取单边内存地址,其中,所述单边内存地址为所述第二节点上的,用于存储所述第一节点和所述第二节点之间通过所述RDMA连接传输的读写数据的第一单边内存中的地址;
读写模块13,用于对所述单边内存地址对应的内存进行RDMA单边数据读写操作,以响应所述数据读写请求;
回复信息发送模块14,用于利用双边接口RDMA send向所述第二节点上的存储客户端发送所述数据读写请求对应的回复信息,以便所述第二节点上的存储客户端利用双边接口RDMA recv接收所述回复信息,其中,所述回复信息用于表示所述数据读写请求对应的操作已完成。
可见,本申请应用于分布式存储系统中的第一节点上的存储服务端,首先利用双边接口RDMA recv接收所述分布式存储系统中的第二节点上的存储客户端发送的数据读写请求,其中,所述数据读写请求为所述第二节点上的存储客户端利用双边接口RDMA send发送的,所述第一节点上的存储服务端和所述第二节点上的存储客户端之间存在基于RoCE协议建立的RDMA连接。然后从所述数据读写请求中获取单边内存地址,其中,所述单边内存地址为所述第二节点上的,用于存储所述第一节点和所述第二节点之间通过所述RDMA连接传输的读写数据的第一单边内存中的地址。接着对所述单边内存地址对应的内存进行RDMA单边数据读写操作,以响应所述数据读写请求。并利用双边接口RDMA send向所述第二节点上的存储客户端发送所述数据读写请求对应的回复信息,以便所述第二节点上的存储客户端利用双边接口RDMA recv接收所述回复信息,其中,所述回复信息用于表示所述数据读写请求对应的操作已完成。由此可见,本申请中第一节点上的存储服务端利用双边接口RDMArecv接收第二节点上的存储客户端利用双边接口RDMA send发送的数据读写请求,然后由第一节点上的存储服务端对所述数据读写请求中的单边内存地址对应的内存进行单边数据读写操作,以响应数据读写请求,然后第一节点上的存储服务端还会利用双边接口RDMAsend发送请求完成的回复信息给第二节点上的存储客户端,这样第一节点上的存储服务端和所述第二节点上的存储客户端之间存在基于RoCE协议建立的RDMA连接,第一节点和第二节点之间实现RDMA的过程中,利用双边接口RDMA send和RDMA recv进行数据读写请求以及回复信息的发送和接收,由于RDMA连接是基于RoCE协议建立的,且数据读写请求以及回复信息的发送和接收利用的是双边接口RDMA send和RDMA recv,所以可以兼容现有网络通信结构。且分布式存储系统中的两个节点之间基于RDMA技术进行数据传输,绕过了内核协议栈,降低系统读写时延和降低CPU使用率。此外,在数据读写请求中已经包括了单边内存地址,只需要对单边内存地址对应的内存进行单边数据读写操作,从单边内存地址中读出待写入到第一节点的待写入数据或将第一节点中读取出的数据写入到单边内存地址对应的内存中,这样在节点之间实现RDMA时,便是将单边操作和双边操作结合起来,降低了数据读写时延、提高了IOPS。且由于单边数据读写操作对应的单边内存地址在数据读写请求中便发送到了第一节点中的存储服务端,所以可以避免第一节点的存储服务端和第二节点的存储客户端之间需要多次通信才能获取到操作地址的问题,节约了通信开销。
在一些具体的实施过程中,所述数据读写装置,还包括:
初始化模块,用于在所述第一节点上的存储服务端初始化时,申请并注册第一双边内存和第二双边内存,并预注册第二单边内存,其中,所述第一双边内存为所述第一节点中用于存储通过双边接口RDMA recv接收到的数据的内存,所述第二双边内存为所述第一节点中用于存储通过双边接口RDMA send发送到的数据的内存,所述第二单边内存为所述第一节点中用于存储所述第一节点和所述第二节点之间通过所述RDMA连接传输的待写入数据的内存;在所述第一节点上的存储服务端接收到所述第二节点上的存储客户端发送的连接建立请求时,创建所述RDMA连接对应的连接资源并建立所述RDMA连接。
在一些具体的实施过程中,所述请求获取模块11,用于:
从本地保存的接收地址集中取出目标接收双边内存地址,其中,所述接收地址集中的地址为所述第一双边内存中的地址;
利用双边接口RDMA recv接收所述分布式存储系统中的第二节点上的存储客户端发送的数据读写请求,并将所述数据读写请求中包括的信息存储到所述目标接收双边内存地址下。
在一些具体的实施过程中,所述回复信息发送模块14,用于:
从本地保存的发送地址集中取出目标发送双边内存地址,其中,所述发送地址集中的地址为所述第二双边内存中的地址;
将所述数据读写请求对应的回复信息写入到所述目标发送双边内存地址下,并将所述回复信息提交至回复信息队列中;
检查所述回复信息是否满足发送条件,并在所述回复信息满足发送条件时,利用双边接口RDMA send向所述第二节点上的存储客户端发送所述回复信息。
在一些具体的实施过程中,所述读写模块13,用于:
当所述数据读写请求为数据写请求时,对所述单边内存地址对应的内存进行RDMA单边数据读操作,获取待写入数据,并将所述待写入数据写入到所述第二单边内存中。
在一些具体的实施过程中,所述读写模块13,用于:
当所述数据读写请求为数据读请求时,从所述第一节点的存储设备中读取出所述数据读请求对应的待读取数据,并将所述待读取数据写到所述单边内存地址对应的内存中。
在一些具体的实施过程中,所述数据读写装置,还包括:
连接异常处理模块,用于在所述RDMA连接销毁时,释放所述第一双边内存、所述第二双边内存、所述第二单边内存以及所述连接资源。
进一步的,参见图8所示,本申请实施例还公开了一种电子设备,包括:处理器21和存储器22。
其中,所述存储器22,用于存储计算机程序;所述处理器21,用于执行所述计算机程序,以实现前述实施例中公开的数据读写方法。
其中,关于上述数据读写方法的具体过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
进一步的,本申请实施例还公开了一种计算机可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述任一实施例中公开的数据读写方法。
其中,关于上述数据读写方法的具体过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
最后,还需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或者操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得一系列包含其他要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本申请所提供的一种数据读写方法、装置、设备、介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种数据读写方法,其特征在于,应用于分布式存储系统中的第一节点上的存储服务端,包括:
利用双边接口RDMA recv接收所述分布式存储系统中的第二节点上的存储客户端发送的数据读写请求,其中,所述数据读写请求为所述第二节点上的存储客户端利用双边接口RDMA send发送的,所述第一节点上的存储服务端和所述第二节点上的存储客户端之间存在基于RoCE协议建立的RDMA连接;
从所述数据读写请求中获取单边内存地址,其中,所述单边内存地址为所述第二节点上的,用于存储所述第一节点和所述第二节点之间通过所述RDMA连接传输的读写数据的第一单边内存中的地址;
对所述单边内存地址对应的内存进行RDMA单边数据读写操作,以响应所述数据读写请求;
利用双边接口RDMA send向所述第二节点上的存储客户端发送所述数据读写请求对应的回复信息,以便所述第二节点上的存储客户端利用双边接口RDMA recv接收所述回复信息,其中,所述回复信息用于表示所述数据读写请求对应的操作已完成。
2.根据权利要求1所述的数据读写方法,其特征在于,所述利用双边接口RDMA recv接收所述分布式存储系统中的第二节点上的存储客户端发送的数据读写请求之前,还包括:
在所述第一节点上的存储服务端初始化时,申请并注册第一双边内存和第二双边内存,并预注册第二单边内存,其中,所述第一双边内存为所述第一节点中用于存储通过双边接口RDMA recv接收到的数据的内存,所述第二双边内存为所述第一节点中用于存储通过双边接口RDMA send发送到的数据的内存,所述第二单边内存为所述第一节点中用于存储所述第一节点和所述第二节点之间通过所述RDMA连接传输的待写入数据的内存;
在所述第一节点上的存储服务端接收到所述第二节点上的存储客户端发送的连接建立请求时,创建所述RDMA连接对应的连接资源并建立所述RDMA连接。
3.根据权利要求2所述的数据读写方法,其特征在于,所述利用双边接口RDMA recv接收所述分布式存储系统中的第二节点上的存储客户端发送的数据读写请求,包括:
从本地保存的接收地址集中取出目标接收双边内存地址,其中,所述接收地址集中的地址为所述第一双边内存中的地址;
利用双边接口RDMA recv接收所述分布式存储系统中的第二节点上的存储客户端发送的数据读写请求,并将所述数据读写请求中包括的信息存储到所述目标接收双边内存地址下。
4.根据权利要求2所述的数据读写方法,其特征在于,所述利用双边接口RDMA send向所述第二节点上的存储客户端发送所述数据读写请求对应的回复信息,包括:
从本地保存的发送地址集中取出目标发送双边内存地址,其中,所述发送地址集中的地址为所述第二双边内存中的地址;
将所述数据读写请求对应的回复信息写入到所述目标发送双边内存地址下,并将所述回复信息提交至回复信息队列中;
检查所述回复信息是否满足发送条件,并在所述回复信息满足发送条件时,利用双边接口RDMA send向所述第二节点上的存储客户端发送所述回复信息。
5.根据权利要求2所述的数据读写方法,其特征在于,所述对所述单边内存地址对应的内存进行RDMA单边数据读写操作,包括:
当所述数据读写请求为数据写请求时,对所述单边内存地址对应的内存进行RDMA单边数据读操作,获取待写入数据,并将所述待写入数据写入到所述第二单边内存中。
6.根据权利要求2所述的数据读写方法,其特征在于,所述对所述单边内存地址对应的内存进行RDMA单边数据读写操作,包括:
当所述数据读写请求为数据读请求时,从所述第一节点的存储设备中读取出所述数据读请求对应的待读取数据,并将所述待读取数据写到所述单边内存地址对应的内存中。
7.根据权利要求2所述的数据读写方法,其特征在于,还包括:
在所述RDMA连接销毁时,释放所述第一双边内存、所述第二双边内存、所述第二单边内存以及所述连接资源。
8.一种数据读写装置,其特征在于,应用于分布式存储系统中的第一节点上的存储服务端,包括:
请求获取模块,用于利用双边接口RDMA recv接收所述分布式存储系统中的第二节点上的存储客户端发送的数据读写请求,其中,所述数据读写请求为所述第二节点上的存储客户端利用双边接口RDMA send发送的,所述第一节点上的存储服务端和所述第二节点上的存储客户端之间存在基于RoCE协议建立的RDMA连接;
信息提取模块,用于从所述数据读写请求中获取单边内存地址,其中,所述单边内存地址为所述第二节点上的,用于存储所述第一节点和所述第二节点之间通过所述RDMA连接传输的读写数据的第一单边内存中的地址;
读写模块,用于对所述单边内存地址对应的内存进行RDMA单边数据读写操作,以响应所述数据读写请求;
回复信息发送模块,用于利用双边接口RDMA send向所述第二节点上的存储客户端发送所述数据读写请求对应的回复信息,以便所述第二节点上的存储客户端利用双边接口RDMA recv接收所述回复信息,其中,所述回复信息用于表示所述数据读写请求对应的操作已完成。
9.一种电子设备,其特征在于,包括:
存储器和处理器;
其中,所述存储器,用于存储计算机程序;
所述处理器,用于执行所述计算机程序,以实现权利要求1至7任一项所述的数据读写方法。
10.一种计算机可读存储介质,其特征在于,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的数据读写方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110698932.8A CN115509435A (zh) | 2021-06-23 | 2021-06-23 | 一种数据读写方法、装置、设备、介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110698932.8A CN115509435A (zh) | 2021-06-23 | 2021-06-23 | 一种数据读写方法、装置、设备、介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115509435A true CN115509435A (zh) | 2022-12-23 |
Family
ID=84500440
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110698932.8A Pending CN115509435A (zh) | 2021-06-23 | 2021-06-23 | 一种数据读写方法、装置、设备、介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115509435A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116069262A (zh) * | 2023-03-06 | 2023-05-05 | 苏州浪潮智能科技有限公司 | 一种分布式存储卸载方法、装置、电子设备及存储介质 |
-
2021
- 2021-06-23 CN CN202110698932.8A patent/CN115509435A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116069262A (zh) * | 2023-03-06 | 2023-05-05 | 苏州浪潮智能科技有限公司 | 一种分布式存储卸载方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11115481B2 (en) | Transmission control of protocol state exchange for dynamic stateful service insertion | |
EP2720431B1 (en) | Full-duplex bi-directional communication over a remote procedure call based communications protocol, and applications thereof | |
EP3352431B1 (en) | Network load balance processing system, method, and apparatus | |
US11632361B2 (en) | Combined authentication and connection establishment for a communication channel | |
WO2023005773A1 (zh) | 基于远程直接数据存储的报文转发方法、装置、网卡及设备 | |
CN111277616A (zh) | 一种基于rdma的数据传输方法和分布式共享内存系统 | |
CN107528891B (zh) | 一种基于WebSocket的自动集群方法及其系统 | |
WO2022148363A1 (zh) | 数据传输方法及数据传输服务器 | |
WO2021068973A1 (zh) | 一种基于应用层协议的数据通信方法及其装置 | |
WO2024037296A1 (zh) | 基于协议族的quic数据传输方法及装置 | |
CN110535811B (zh) | 远端内存管理方法及系统、服务端、客户端、存储介质 | |
WO2021139264A1 (zh) | 对象存储控制方法、装置、计算机设备及存储介质 | |
US11843642B1 (en) | Serverless signaling in peer-to-peer session initialization | |
CN107995233B (zh) | 建立连接的方法及相应的设备 | |
CN114124929A (zh) | 跨网络的数据处理方法和装置 | |
CN110417632B (zh) | 一种网络通信方法、系统及服务器 | |
WO2008103196A1 (en) | Hanging request system and method for client/server communication | |
CN115509435A (zh) | 一种数据读写方法、装置、设备、介质 | |
CN113076281B (zh) | 一种Ceph内核客户端进行通信的方法、系统、设备及介质 | |
WO2023241331A1 (zh) | 物联网系统及其认证与通信方法、相关设备 | |
KR20160102348A (ko) | Tcp 핸드셰이크를 수행하기 위한 장치 및 방법 | |
CN111131470B (zh) | 终端设备及其数据处理方法以及数据处理系统 | |
WO2022148364A1 (zh) | 数据发送方法及装置、建立p2p连接的方法及系统 | |
CN110753043B (zh) | 一种通信方法、装置、服务器及介质 | |
CN111949918B (zh) | 基于分布式环境下的websocket连接优化方法及系统 |
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 |