基于用户态网络文件系统的连接控制方法、装置和设备与流程
- 国知局
- 2024-08-02 14:10:08
本发明涉及通信及云计算,尤其涉及一种基于用户态网络文件系统的连接控制方法、装置和设备。
背景技术:
1、nfs-ganesha是一个用户态的支持nfs协议(nfsv3,nfsv4.0,nfsv4.1,nfsv4.2等)的文件服务器,通过文件系统抽象层(file system abstraction layer,fsal)将后端存储抽象成一个统一的应用程序接口api,提供给ganesha的服务端,客户端通过nfs协议将其挂载到本地,用户在本地即可对服务端导出文件系统的内容进行操作。
2、网络文件系统nfs是一种基于tcp/ip协议传输的网络文件系统协议,其中nfsv3支持tcp和用户数据报协议udp,nfsv4.0及以上仅支持tcp。tcp是一种面向连接的可靠的传输协议;udp是一种无连接的传输协议,udp不会在发送数据之前建立连接,也不会确保数据的顺序和完整性。原nfs-ganesha在客户端采用nfsv3协议挂载服务端,默认挂载的是tcp,当挂载数量超过服务端节点最大限制后,客户端继续采用nfsv3协议挂载服务端,会自动转为udp挂载,导致服务端最大连接数不可控,用户会认为服务端最大连接数限制已失效。
技术实现思路
1、有鉴于此,本发明提供一种基于用户态网络文件系统的连接控制方法、装置和设备,用于解决因nfs协议版本问题导致的连接数限制不受控的技术问题。
2、基于本发明实施例的一方面,本发明还提供了一种基于用户态网络文件系统的连接控制方法,该方法应用于网络文件系统nfs服务端,该方法包括:
3、nfs服务端基于nfs端口号与nfs客户端进行tcp会话连接握手过程,在成功建立tcp会话连接后,记录当前tcp会话的总连接数(g_nfs_mount_cnt),并创建和初始化与tcp会话连接一一对应的连接对象(xprt),连接对象中包括过载限制属性(is_mount_exceed);
4、在nfs服务端判定当前tcp会话的总连接数超过最大连接数(g_nfs_mount_max_num)限制时,标记nfs客户端对应的连接对象的过载限制属性为过载状态(置为true),以禁止nfs客户端通过会话连接进行读写操作。
5、进一步地,所述禁止nfs客户端通过会话连接进行读写操作的方法包括:
6、在接收到nfs客户端通过tcp会话连接发起的nfs握手请求(null请求)后,判断所述nfs客户端的连接对象的过载限制属性是否为过载状态,在判定为过载状态时,向nfs客户端发送携带错误码的nfs握手响应,以使nfs客户端主动断开tcp会话连接。
7、进一步地,所述方法还包括:
8、nfs服务端判定当前tcp会话总连接数未超过最大连接数限制时,记录将当前总有效业务连接数(g_nfs_mount_valid_num);
9、nfs服务端接收到nfs客户端通过tcp会话连接发起的nfs握手请求(null请求)后,判断所述nfs客户端的连接对象的过载限制属性是否为过载状态,在判定为非过载状态时,向nfs客户端发送携带指示握手成功的nfs握手响应,以使nfs客户端进行后续的获取挂载端口号的步骤。
10、进一步地,所述方法还包括:
11、在nfs客户端因长时间未操作导致断开tcp会话连接,nfs客户端发起业务请求触发nfs客户端再次发起tcp会话连接握手过程的情况下,所述方法还包括:
12、判断当前是否满足业务请求处理条件,在满足条件时允许处理当前业务请求,否则不允许处理当前业务请求;
13、所述业务请求处理条件为:当前请求不是nfs握手请求且过载限制属性为非过载状态。
14、进一步地,所述方法还包括:
15、在nfs服务端接收到nfs客户端的卸载(unmount)请求后,判断tcp会话连接的目的端口号是否为nfs端口号;在判定为nfs端口号后,使用原子操作更新总连接数(计数减1);
16、nfs服务端判断连接对象(xprt)的过载限制属性是否被标记为非过载状态(false),若判定为是,则使用原子操作更新总有效业务连接数(计数减1)并销毁连接对象。
17、基于本发明实施例的另一方面,本发明还提供一种基于用户态网络文件系统的连接控制装置,该装置应用于网络文件系统nfs服务端,该装置包括:
18、tcp握手模块,用于基于nfs端口号与nfs客户端进行tcp会话连接握手过程,在成功建立tcp会话连接后,记录当前tcp会话的总连接数,并创建和初始化与tcp会话连接一一对应的连接对象,连接对象中包括过载限制属性;
19、过载控制模块,用于在判定当前tcp会话的总连接数超过最大连接数限制时,标记nfs客户端对应的连接对象的过载限制属性为过载状态,以禁止nfs客户端通过会话连接进行读写操作。
20、进一步地,所述过载控制模块包括:
21、过载判断子模块,用于在接收到nfs客户端通过tcp会话连接发起的nfs握手请求后,判断所述nfs客户端的连接对象的过载限制属性是否为过载状态;
22、过载限制子模块,用于在判定为过载状态时,向nfs客户端发送携带错误码的nfs握手响应,以使nfs客户端主动断开tcp会话连接。
23、进一步地,所述过载控制模块,还用于在判定当前tcp会话总连接数未超过最大连接数限制时,记录将当前总有效业务连接数;
24、所述过载限制子模块,还用于在接收到nfs客户端通过tcp会话连接发起的nfs握手请求(null请求)后,判断所述nfs客户端的连接对象的过载限制属性是否为过载状态,在判定为非过载状态时,向nfs客户端发送携带指示握手成功的nfs握手响应,以使nfs客户端进行后续的获取挂载端口号的步骤。
25、进一步地,所述过载控制模块还包括:
26、重连控制子模块,用于在nfs客户端因长时间未操作导致断开tcp会话连接,nfs客户端发起业务请求触发nfs客户端再次发起tcp会话连接握手过程的情况下,判断当前是否满足业务请求处理条件,在满足条件时允许处理当前业务请求,否则不允许处理当前业务请求;所述业务请求处理条件为:当前请求不是nfs握手请求且过载限制属性为非过载状态。
27、进一步地,所述过载控制模块,还用于在nfs服务端接收到nfs客户端的卸载(unmount)请求后,判断tcp会话连接的目的端口号是否为nfs端口号;在判定为nfs端口号后,使用原子操作更新总连接数(计数减1),以及判断连接对象(xprt)的过载限制属性是否被标记为非过载状态(false),若判定为是,则使用原子操作更新总有效业务连接数(计数减1)并销毁连接对象。
28、本发明提供的装置可以以软件、硬件或软硬结合的方式实现。当以软件模块方式实现时,该软件模块的程序代码被加载到设备的存储介质中,由处理器读取存储介质中的程序代码并执行。
29、本发明提出了一种基于用户态网络文件系统的连接控制方法,以解决nfs服务端业务连接数不可控的技术问题。本发明在客户端挂载到服务端的连接数达到最大后,通过新增的用户态下的控制参数禁止用户端继续挂载。在多个客户端挂载成功后,长时间不操作导致自动断开的情况下,服务端自动检测连接数的变化,允许新的客户端的正常挂载,限制已断开tcp会话连接的客户端的业务操作。
本文地址:https://www.jishuxx.com/zhuanli/20240801/241836.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。
下一篇
返回列表