一种基于RDMA网络的分布式文件系统数据传输方法和系统转让专利

申请号 : CN201910508982.8

文献号 : CN110191194B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王桦周可阴智辉

申请人 : 华中科技大学

摘要 :

本发明公开了一种基于RDMA网络的分布式文件系统数据传输方法,包括:客户端在接收到来自用户的文件访问请求时,向服务端发起RDMA连接请求,服务端在获取到来自客户端的RDMA连接请求后,建立与客户端的RDMA连接,客户端根据文件访问请求生成网络数据访问请求,并利用RDMA连接将该网络数据访问请求发送到服务端,服务端对网络数据访问请求进行解析,以获取其中的地址信息,并根据该地址信息获取其对应的文件在该服务端的内存中的地址作为服务端返回地址,服务端将服务端返回地址、以及RDMA远程访问权限信息发送到客户端。本发明能够解决现有分布式文件系统存在的数据传输过程中内存操作的开销较大的技术问题,以及服务端的负载较大、传输时延较长的技术问题。

权利要求 :

1.一种基于RDMA网络的分布式文件系统数据传输方法,其特征在于,包括以下步骤:(1)客户端在接收到来自用户的文件访问请求时,向服务端发起RDMA连接请求;

(2)服务端在获取到来自客户端的RDMA连接请求后,建立与客户端的RDMA连接;

(3)客户端根据文件访问请求生成网络数据访问请求,并利用RDMA连接将该网络数据访问请求发送到服务端;

(4)服务端判断来自于客户端的网络数据访问请求是数据读请求还是数据写请求,如果是数据读请求则进入步骤(5),如果是数据写请求则进入步骤(6);

(5)服务端对网络数据访问请求进行解析,以获取其中的地址信息,并根据该地址信息获取其对应的文件在该服务端的内存中的地址作为服务端返回地址,然后进入步骤(8);

(6)服务端判断网络数据访问请求对应文件的大小是否大于其已注册的文件存储空间,如果是则进入步骤(7),否则进入步骤(8);

(7)服务端根据网络数据访问请求对应文件的大小对其已注册的文件存储空间进行扩容操作,并获取网络数据访问请求对应的文件在扩容后的文件存储空间中的待写入地址作为服务端返回地址;

(8)服务端通过RDMA Send Inline的方式将服务端返回地址、以及RDMA远程访问权限信息发送到客户端;

(9)客户端使用来自服务端的服务端返回地址、以及RDMA远程访问权限信息完成对服务端中与网络数据访问请求对应的单个数据块的远程访问操作;

(10)客户端针对网络数据访问请求对应的其余所有数据块,重复上述步骤(9),直到完成所有数据块的访问操作为止,并通知服务端数据传输完成。

2.根据权利要求1所述的分布式文件系统数据传输方法,其特征在于,步骤(3)具体为,将文件访问请求中的路径信息进行哈希运算以得到地址信息,并将该地址信息、以及文件访问请求对应的文件大小作为网络数据访问请求、并通过RDMA Send的通信方式发送到服务端。

3.根据权利要求1或2所述的分布式文件系统数据传输方法,其特征在于,文件存储空间是系统初始化阶段,服务端通过RDMA接口向RDMA网卡注册的内存空间,该内存空间中包含了服务端为所有用户存储的文件数据。

4.根据权利要求3所述的分布式文件系统数据传输方法,其特征在于,步骤(7)中的扩容操作是首先对已有的文件存储空间进行翻倍扩容,如果翻倍扩容后的文件存储空间仍然不足以写入网络数据访问请求对应的文件,则继续进行翻倍扩容,直至能够写入网络数据访问请求对应的文件为止,若扩容过程中服务端已经没有足够的空间用于扩容,则过程结束。

5.根据权利要求1所述的分布式文件系统数据传输方法,其特征在于,步骤(8)中,RDMA远程访问权限信息是服务端在系统初始化阶段向RDMA网卡注册时,从RDMA网卡获取到的。

6.根据权利要求1所述的分布式文件系统数据传输方法,其特征在于,步骤(9)中,远程访问操作是使用RDMA内存型通讯方式,通讯过程中需要使用客户端在系统初始化阶段通过RDMA接口向RDMA网卡注册的内存空间,该内存空间是可以反复使用的。

7.根据权利要求1所述的分布式文件系统数据传输方法,其特征在于,进一步包括所述步骤(10)以后的以下步骤:服务器在收到来自于客户端数据传输完成的通知后判断其已注册的文件存储空间的使用率是否超过阈值,如果是则进行文件存储空间的扩容操作,然后过程结束,否则过程结束。

8.一种基于RDMA网络的分布式文件系统数据传输系统,其特征在于,包括:

第一模块,其设置在客户端中,用于在接收到来自用户的文件访问请求时,向服务端发起RDMA连接请求;

第二模块,其设置于服务端中,用于在获取到来自客户端的RDMA连接请求后,建立与客户端的RDMA连接;

第三模块,其设置在客户端中,用于根据文件访问请求生成网络数据访问请求,并利用RDMA连接将该网络数据访问请求发送到服务端;

第四模块,其设置于服务端中,用于判断来自于客户端的网络数据访问请求是数据读请求还是数据写请求,如果是数据读请求则进入第五模块,如果是数据写请求则进入第六模块;

第五模块,其设置于服务端中,用于对网络数据访问请求进行解析,以获取其中的地址信息,并根据该地址信息获取其对应的文件在该服务端的内存中的地址作为服务端返回地址,然后进入第八模块;

第六模块,其设置于服务端中,用于判断网络数据访问请求对应文件的大小是否大于其已注册的文件存储空间,如果是则进入第七模块,否则进入第八模块;

第七模块,其设置于服务端中,用于根据网络数据访问请求对应文件的大小对其已注册的文件存储空间进行扩容操作,并获取网络数据访问请求对应的文件在扩容后的文件存储空间中的待写入地址作为服务端返回地址;

第八模块,其设置于服务端中,用于通过RDMA Send Inline的方式将服务端返回地址、以及RDMA远程访问权限信息发送到客户端;

第九模块,其设置在客户端中,用于使用来自服务端的服务端返回地址、以及RDMA远程访问权限信息完成对服务端中与网络数据访问请求对应的单个数据块的远程访问操作;

第十模块,其设置在客户端中,用于针对网络数据访问请求对应的其余所有数据块,重复上述第九模块,直到完成所有数据块的访问操作为止,并通知服务端数据传输完成。

9.根据权利要求8所述的分布式文件系统数据传输系统,其特征在于,进一步包括:第十一模块,其设置于服务端中,用于在收到来自于客户端数据传输完成的通知后判断其已注册的文件存储空间的使用率是否超过阈值,如果是则进行文件存储空间的扩容操作,然后过程结束,否则过程结束。

说明书 :

一种基于RDMA网络的分布式文件系统数据传输方法和系统

技术领域

[0001] 本发明属于计算机网络技术领域,更具体地,涉及一种基于RDMA网络的分布式文件系统数据传输方法和系统。

背景技术

[0002] 随着近年来大数据、云计算以及人工智能等计算机信息技术的快速发展,全球互联网数据规模呈指数级增长,众多高并发、低时延应用对高性能硬件的需求催生了高性能存储器的出现。对于高性能存储器而言,由于其存储侧I/O吞吐能力强大,分布式文件系统需要分配较多的计算资源以完成数据处理与数据交换,从而导致系统的传输时延增加,从而限制了网络传输能力与系统性能。为了解决这个问题,远程内存直接存取(Remote Direct Memory Access,简称RDMA)网络应运而生,它在减少计算资源消耗的同时,能保证极低的传输时延。
[0003] 目前使用RDMA网络的分布式文件系统大多数是将RDMA库或插件作为RDMA模块使用。在此方式下,分布式文件系统的RDMA模块封装了底层的RDMA网络传输功能,并为上层应用提供调用接口,上层应用则通过该调用接口,间接使用RDMA网络。
[0004] 然而,现有使用RDMA网络的分布式文件系统都存在一些不可忽略的技术问题:由于分布式文件系统的网络传输层基本都与逻辑处理层严格隔离,从而无法根据RDMA传输的特点将RDMA网络与分布式文件系统的数据处理机制进行有效的整合与适配,进而一方面会导致数据传输过程中的内存操作的开销较大,另一方面会使得服务端的负载较大,传输时延较长。

发明内容

[0005] 针对现有技术的以上缺陷或改进需求,本发明提供了一种基于RDMA网络的分布式文件系统数据传输方法和系统,其目的在于,根据RDMA网络传输的特点将其与分布式文件系统有机地结合在一起,从而解决现有使用RDMA网络的分布式文件系统存在的数据传输过程中内存操作的开销较大的技术问题,以及服务端的负载较大、传输时延较长的技术问题。
[0006] 为实现上述目的,按照本发明的一个方面,提供了一种基于RDMA网络的分布式文件系统数据传输方法,包括以下步骤:
[0007] (1)客户端在接收到来自用户的文件访问请求时,向服务端发起RDMA连接请求;
[0008] (2)服务端在获取到来自客户端的RDMA连接请求后,建立与客户端的RDMA连接;
[0009] (3)客户端根据文件访问请求生成网络数据访问请求,并利用RDMA连接将该网络数据访问请求发送到服务端;
[0010] (4)服务端判断来自于客户端的网络数据访问请求是数据读请求还是数据写请求,如果是数据读请求则进入步骤(5),如果是数据写请求则进入步骤(6);
[0011] (5)服务端对网络数据访问请求进行解析,以获取其中的地址信息,并根据该地址信息获取其对应的文件在该服务端的内存中的地址作为服务端返回地址,然后进入步骤(8);
[0012] (6)服务端判断网络数据访问请求对应文件的大小是否大于其已注册的文件存储空间,如果是则进入步骤(7),否则进入步骤(8);
[0013] (7)服务端根据网络数据访问请求对应文件的大小对其已注册的文件存储空间进行扩容操作,并获取网络数据访问请求对应的文件在扩容后的文件存储空间中的待写入地址作为服务端返回地址;
[0014] (8)服务端将服务端返回地址、以及RDMA远程访问权限信息发送到客户端;
[0015] (9)客户端使用来自服务端的服务端返回地址、以及RDMA远程访问权限信息完成对服务端中与网络数据访问请求对应的单个数据块的远程访问操作;
[0016] (10)客户端针对网络数据访问请求对应的其余所有数据块,重复上述步骤(9),直到完成所有数据块的访问操作为止,并通知服务端数据传输完成。
[0017] 优选地,步骤(3)具体为,将文件访问请求中的路径信息进行哈希运算以得到地址信息,并将该地址信息、以及文件访问请求对应的文件大小作为网络数据访问请求、并通过RDMA Send的通信方式发送到服务端。
[0018] 优选地,文件存储空间是系统初始化阶段,服务端通过RDMA接口向RDMA网卡注册的内存空间,该内存空间中包含了服务端为所有用户存储的文件数据。
[0019] 优选地,步骤(7)中的扩容操作是首先对已有的文件存储空间进行翻倍扩容,如果翻倍扩容后的文件存储空间仍然不足以写入网络数据访问请求对应的文件,则继续进行翻倍扩容,直至能够写入网络数据访问请求对应的文件为止,若扩容过程中服务端已经没有足够的空间用于扩容,则过程结束;
[0020] 优选地,步骤(8)中,RDMA远程访问权限信息是服务端在系统初始化阶段向RDMA网卡注册时,从RDMA网卡获取到的。
[0021] 优选地,步骤(8)中,服务端发送服务端返回地址、以及RDMA远程访问权限信息是通过RDMA Send Inline的方式。
[0022] 优选地,步骤(9)中,远程访问操作是使用RDMA内存型通讯方式,通讯过程中需要使用客户端在系统初始化阶段通过RDMA接口向RDMA网卡注册的内存空间,该内存空间是可以反复使用的。
[0023] 优选地,所述分布式文件系统数据传输方法进一步包括所述步骤(10)以后的以下步骤:
[0024] 服务器在收到来自于客户端数据传输完成的通知后判断其已注册的文件存储空间的使用率是否超过阈值,如果是则进行文件存储空间的扩容操作,然后过程结束,否则过程结束。
[0025] 按照本发明的另一方面,提供了一种基于RDMA网络的分布式文件系统数据传输系统,包括:
[0026] 第一模块,其设置在客户端中,用于在接收到来自用户的文件访问请求时,向服务端发起RDMA连接请求;
[0027] 第二模块,其设置于服务端中,用于在获取到来自客户端的RDMA连接请求后,建立与客户端的RDMA连接;
[0028] 第三模块,其设置在客户端中,用于根据文件访问请求生成网络数据访问请求,并利用RDMA连接将该网络数据访问请求发送到服务端;
[0029] 第四模块,其设置于服务端中,用于判断来自于客户端的网络数据访问请求是数据读请求还是数据写请求,如果是数据读请求则进入第五模块,如果是数据写请求则进入第六模块;
[0030] 第五模块,其设置于服务端中,用于对网络数据访问请求进行解析,以获取其中的地址信息,并根据该地址信息获取其对应的文件在该服务端的内存中的地址作为服务端返回地址,然后进入第八模块;
[0031] 第六模块,其设置于服务端中,用于判断网络数据访问请求对应文件的大小是否大于其已注册的文件存储空间,如果是则进入第七模块,否则进入第八模块;
[0032] 第七模块,其设置于服务端中,用于根据网络数据访问请求对应文件的大小对其已注册的文件存储空间进行扩容操作,并获取网络数据访问请求对应的文件在扩容后的文件存储空间中的待写入地址作为服务端返回地址;
[0033] 第八模块,其设置于服务端中,用于将服务端返回地址、以及RDMA远程访问权限信息发送到客户端;
[0034] 第九模块,其设置在客户端中,用于使用来自服务端的服务端返回地址、以及RDMA远程访问权限信息完成对服务端中与网络数据访问请求对应的单个数据块的远程访问操作;
[0035] 第十模块,其设置在客户端中,用于针对网络数据访问请求对应的其余所有数据块,重复上述第九模块,直到完成所有数据块的访问操作为止,并通知服务端数据传输完成。
[0036] 优选地,所述分布式文件系统数据传输系统进一步包括第十一模块,其设置于服务端中,用于在收到来自于客户端数据传输完成的通知后判断其已注册的文件存储空间的使用率是否超过阈值,如果是则进行文件存储空间的扩容操作,然后过程结束,否则过程结束。
[0037] 总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:
[0038] (1)本发明能够解决现有使用RDMA网络的分布式文件系统存在的数据传输过程中内存操作的开销较大的技术问题:由于本发明在系统初始化阶段为客户端注册了可重复使用的内存空间,并为服务端注册了包含用户文件数据的内存空间,并在步骤(11)中使用了扩容策略,从而保证了内存注册空间的充足,因此本发明的分布式文件系统无需在RDMA数据传输过程中进行内存注册,从而降低了内存操作的开销;
[0039] (2)本发明能够解决现有使用RDMA网络的分布式文件系统存在的服务端的负载较大、传输时延较长的技术问题:由于本发明采用步骤(8)、(9)和(10)实现了客户端单侧的远程数据访问,无需服务端参与,并进一步通过利用RDMA Send Inline的特性减少了数据复制与上下文切换,因此降低了服务端的负载,提升了分布式文件系统的数据传输效率;
[0040] (3)由于本发明实现了降低服务端的负载,因此本发明的方法能够适用于高并发的RDMA传输场景,并具有更高的可扩展性能。

附图说明

[0041] 图1是本发明基于RDMA网络的分布式文件系统数据传输方法的流程图。

具体实施方式

[0042] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
[0043] 如图1所示,本发明基于RDMA网络的分布式文件系统数据传输方法包括以下步骤:
[0044] (1)客户端在接收到来自用户的文件访问请求时,向服务端发起RDMA连接请求;
[0045] (2)服务端在获取到来自客户端的RDMA连接请求后,建立与客户端的RDMA连接;
[0046] (3)客户端根据文件访问请求生成网络数据访问请求,并利用RDMA连接将该网络数据访问请求发送到服务端;
[0047] 具体而言,本步骤是将文件访问请求中的路径信息进行哈希运算以得到地址信息,将该地址信息、以及文件访问请求对应的文件大小作为网络数据访问请求、并通过RDMA Send的通信方式发送到服务端。
[0048] (4)服务端判断来自于客户端的网络数据访问请求是数据读请求还是数据写请求,如果是数据读请求则进入步骤(5),如果是数据写请求则进入步骤(6);
[0049] (5)服务端对网络数据访问请求进行解析,以获取其中的地址信息,并根据该地址信息获取其对应的文件在该服务端的内存中的地址作为服务端返回地址,然后进入步骤(8);
[0050] (6)服务端判断网络数据访问请求对应文件的大小是否大于其已注册的文件存储空间,如果是则进入步骤(7),否则进入步骤(8);
[0051] 具体而言,文件存储空间是系统初始化阶段,服务端通过RDMA接口向RDMA网卡注册的内存空间,该内存空间中包含了服务端为所有用户存储的文件数据。
[0052] 现有的分布式文件系统中,用于为用户存储文件数据的空间(即文件存储空间)、以及向RDMA网卡注册的内存空间(即内存注册空间)是彼此独立的,在读写数据过程中,文件存储空间和内存注册空间需要进行彼此的数据复制。
[0053] 本发明上述实现的优点在于,消除了RDMA通讯过程期间文件存储空间和内存注册空间之间的数据复制过程,降低了内存开销,和操作时延。
[0054] (7)服务端根据网络数据访问请求对应文件的大小对其已注册的文件存储空间进行扩容操作,并获取网络数据访问请求对应的文件在扩容后的文件存储空间中的待写入地址作为服务端返回地址;
[0055] 具体而言,扩容操作是首先对已有的文件存储空间进行翻倍扩容,如果翻倍扩容后的文件存储空间仍然不足以写入网络数据访问请求对应的文件,则继续进行翻倍扩容,直至能够写入网络数据访问请求对应的文件为止,若扩容过程中服务端已经没有足够的空间用于扩容,则过程结束;
[0056] (8)服务端将服务端返回地址、以及RDMA远程访问权限信息发送到客户端;
[0057] 其中RDMA远程访问权限信息是服务端在系统初始化阶段向RDMA网卡注册时,从RDMA网卡获取到的。
[0058] 本步骤中服务端发送服务端返回地址、以及RDMA远程访问权限信息是通过RDMA Send Inline的方式。
[0059] (9)客户端使用来自服务端的服务端返回地址、以及RDMA远程访问权限信息完成对服务端中与网络数据访问请求对应的单个数据块的远程访问操作;
[0060] 具体而言,该远程访问操作是使用RDMA内存型通讯方式,通讯过程中需要使用客户端在系统初始化阶段通过RDMA接口向RDMA网卡注册的内存空间,该内存空间是可以反复使用的,从而避免多次注册所导致的高内存开销。
[0061] (10)客户端针对网络数据访问请求对应的其余所有数据块,重复上述步骤(9),直到完成所有数据块的访问操作为止,并通知服务端数据传输完成。
[0062] 具体而言,是通过RDMA Send空请求的方式通知服务端数据传输完成。
[0063] (11)服务器在收到来自于客户端数据传输完成的通知后判断其已注册的文件存储空间的使用率是否超过阈值,如果是则进行文件存储空间的扩容操作,然后过程结束,否则过程结束;
[0064] 具体而言,阈值的取值范围是0.3到0.8之间,优选为0.5。
[0065] 本步骤中的扩容操作是首先对已有的文件存储空间进行翻倍扩容,如果翻倍扩容后的文件存储空间仍然不足以写入网络数据访问请求对应的文件,则继续进行翻倍扩容,直至能够写入网络数据访问请求对应的文件为止,若扩容过程中服务端已经没有足够的空间用于扩容,则过程结束。
[0066] 总而言之,本发明的优点包括:
[0067] (1)本发明能够解决现有使用RDMA网络的分布式文件系统存在的数据传输过程中内存操作的开销较大的技术问题:由于本发明在系统初始化阶段为客户端注册了可重复使用的内存空间,并为服务端注册了包含用户文件数据的内存空间,并在步骤(11)中使用了扩容策略,从而保证了内存注册空间的充足,因此本发明的分布式文件系统无需在RDMA数据传输过程中进行内存注册,从而降低了内存操作的开销;
[0068] (2)本发明能够解决现有使用RDMA网络的分布式文件系统存在的服务端的负载较大、传输时延较长的技术问题:由于本发明采用步骤(8)、(9)和(10)实现了客户端单侧的远程数据访问,无需服务端参与,并进一步通过利用RDMA Send Inline的特性减少了数据复制与上下文切换,因此降低了服务端的负载,提升了分布式文件系统的数据传输效率;
[0069] (3)由于本发明实现了降低服务端的负载,因此本发明的方法能够适用于高并发的RDMA传输场景,并具有更高的可扩展性能。
[0070] 本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。