本公开涉及分布式存储,特别是涉及一种数据写入方法、装置、设备、介质和分布式文件系统。
背景技术:
1、当前的分布式文件系统数据写入采用传统以太网tcp/ip(transmission controlprotocol/internet protocol,传输控制协议/互联网络协议)网络技术,数据在节点间的传输需要经过多次复制,增加了数据传输的延时,降低了传输速度,此外数据在写入过程,通过创建串行管道,实现数据在数据节点之间逐一复制写入,导致数据传输速度较慢。
技术实现思路
1、基于此,有必要针对上述技术问题,提供一种数据写入传输速度快的数据写入方法、装置、设备、介质和分布式文件系统。
2、在第一方面,本公开实施例提供了一种数据写入方法,应用于分布式文件系统的客户端节点,该方法包括以下步骤:
3、向名字节点发送数据写入请求;
4、接收名字节点基于数据写入请求反馈的允许写入信息,允许写入信息至少包括可用的数据节点信息;
5、基于允许写入信息确定多个目标数据节点;
6、将待写入数据通过远程直接内存访问网络并行写入至多个目标数据节点的内存扩展设备中,内存扩展设备支持cxl协议;
7、在所有目标数据节点的数据写入完成时,控制数据流关闭。
8、在一些实施例中,待写入数据包括多个数据包。数据写入方法还包括:将多个数据包传输至数据队列中。将待写入数据通过远程直接内存访问网络并行写入多个目标数据节点的内存扩展设备中,包括:
9、创建与多个目标数据节点分别对应的多条远程直接内存访问传输线程;
10、基于传输线程将数据队列中的数据包并行写入多个目标数据节点的内存扩展设备中。
11、在一些实施例中,基于传输线程将数据队列中的数据包并行写入多个目标数据节点的内存扩展设备中,还包括:
12、将多个数据包传输至确认队列中,确认队列用于在数据队列出现传输故障时,将确认队列中的数据包传输至数据队列中。
13、在一些实施例中,在所有目标数据节点的数据写入完成时,控制数据流关闭,包括:
14、在确定所有目标数据节点的数据写入完成时,将确认队列中的数据包移除。
15、在一些实施例中,在所有目标数据节点的数据写入完成时,控制数据流关闭,包括:
16、在接收到所有目标数据节点发出的写入完成信息时,控制数据流关闭。
17、在一些实施例中,数据写入方法还包括:
18、对待写入数据的写入过程计时;
19、在待写入数据的写入时长大于预设阈值时,将待写入数据由传输管道依次写入多个目标数据节点中;
20、在确定所有目标数据节点的数据写入完成时,控制数据流关闭。
21、在第二方面,本公开实施例提供了一种数据写入方法,应用于分布式文件系统的数据节点,数据节点是安装有支持cxl协议的内存扩展设备的数据节点;该方法包括:
22、向名字节点发送内存扩展设备的配置信息,内存扩展设备的配置信息至少包括内存扩展设备的空间信息和地址信息;
23、接收客户端节点通过远程直接内存访问网络写入的待写入数据;
24、向客户端节点反馈写入完成信息,客户端节点用于向名字节点发送数据写入请求,接收名字节点反馈的允许写入信息,基于允许写入信息确定多个目标数据节点,将待写入数据通过远程直接内存访问网络并行写入多个目标数据节点的内存扩展设备中,在所有目标数据节点的数据写入完成时,控制数据流关闭。
25、在一些实施例中,向名字节点发送内存扩展设备的配置信息之前,数据写入方法还包括:
26、扫描内存扩展设备的基址寄存器和内部存储器;
27、根据扫描结果注册内存扩展设备,为基址寄存器和内部存储器分配地址空间,并对内存扩展设备进行空间分配;
28、将内存扩展设备的空间信息和地址信息写入节点配置文件中。
29、在第三方面,本公开实施例提供了一种数据写入装置,应用于分布式文件系统的客户端节点;该装置包括:
30、数据写入请求模块,用于向名字节点发送数据写入请求;
31、允许写入信息接收模块,用于接收名字节点基于数据写入请求反馈的允许写入信息,允许写入信息至少包括可用的数据节点信息;
32、目标数据节点确认模块,用于基于允许写入信息确定多个目标数据节点;
33、数据写入执行模块,用于将待写入数据通过远程直接内存访问网络并行写入至多个目标数据节点的内存扩展设备中,内存扩展设备支持cxl协议;
34、确认写入完成模块,用于在确定所有目标数据节点的数据写入完成时,控制数据流关闭。
35、在第四方面,本公开实施例提供了一种数据写入装置,应用于分布式文件系统的数据节点,数据节点是安装有支持cxl协议的内存扩展设备的数据节点;该装置包括:
36、配置信息发送模块,用于向名字节点发送内存扩展设备的配置信息,内存扩展设备的配置信息至少包括内存扩展设备的空间信息和地址信息;
37、数据接收模块,用于接收客户端节点通过远程直接内存访问网络写入的待写入数据;
38、写入完成反馈模块,用于向客户端节点反馈写入完成信息,客户端节点用于向名字节点发送数据写入请求,接收名字节点反馈的允许写入信息,基于允许写入信息确定多个目标数据节点,将待写入数据通过远程直接内存访问网络并行写入多个目标数据节点的内存扩展设备中,在所有目标数据节点的数据写入完成时,控制数据流关闭。
39、在第五方面,本公开实施例提供了一种分布式文件系统,该系统包括:
40、客户端节点,用于向名字节点发送数据写入请求,接收名字节点反馈的允许写入信息,基于允许写入信息确定多个目标数据节点,将待写入数据通过远程直接内存访问网络并行写入多个目标数据节点的内存扩展设备中,并在接收到来自全部目标数据节点的写入完成信息时,控制数据流关闭;
41、名字节点,用于接收客户端节点的数据写入请求,并反馈允许写入信息,允许写入信息至少包括可用的数据节点信息;
42、数据节点,用于接收客户端节点写入的待写入数据,并向客户端节点反馈写入完成信息,其中,数据节点中安装有支持cxl协议的内存扩展设备。
43、在一些实施例中,客户端节点配置有支持远程直接内存访问协议的第一设备;
44、名字节点配置有支持远程直接内存访问协议的第二设备;
45、名字节点,用于在目标数据节点的实际使用数量小于预先分配的数量时,增加其他数据节点作为目标数据节点,以使实际使用的目标数据节点数量等于预先分配的数量;
46、数据节点配置有支持远程直接内存访问协议的第三设备;
47、内存扩展设备支持cxl.io协议和cxl.mem协议;
48、数据节点,用于扫描内存扩展设备的基址寄存器和内部存储器,根据扫描结果注册内存扩展设备,为基址寄存器和内部存储器分配地址空间,对内存扩展设备进行空间分配,并将内存扩展设备的配置信息发送至名字节点;
49、数据节点,还用于在数据节点重启时,读取数据节点的内存扩展设备的配置信息,内存扩展设备的配置信息用于发送至名字节点。
50、在第六方面,本公开实施例提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现第一方面本公开任一实施例中的数据写入方法。
51、在第七方面,本公开实施例提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现第二方面本公开任一实施例中的数据写入方法。
52、在第八方面,本公开实施例提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,计算机程序被处理器执行时实现第一方面本公开任一实施例中提供的数据写入方法的步骤。
53、在第九方面,本公开实施例提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,计算机程序被处理器执行时实现第二方面本公开任一实施例中提供的数据写入方法的步骤。
54、上述数据写入方法、装置、系统、计算机设备和存储介质,客户端节点通过rdma传输线程,将待写入数据直接写入目标数据节点中,实现了数据由用户态缓存发送到了目标数据节点的缓存区,通过多条传输线程并行写入数据的方式,提高了数据写入的传输速度。此外通过在数据节点中增加支持cxl协议的内存扩展设备,使得rdma网络与cxl内存设备的连接,实现了待写入数据由客户端节点到目标数据节点的内存扩展设备之间的远程直接传输,同时内存扩展设备扩展了分布式文件系统的内存容量,提高了数据传输速度。