CN117997939A - 一种监控nfs客户端状态的方法、装置及*** - Google Patents
一种监控nfs客户端状态的方法、装置及*** Download PDFInfo
- Publication number
- CN117997939A CN117997939A CN202410394230.4A CN202410394230A CN117997939A CN 117997939 A CN117997939 A CN 117997939A CN 202410394230 A CN202410394230 A CN 202410394230A CN 117997939 A CN117997939 A CN 117997939A
- Authority
- CN
- China
- Prior art keywords
- client
- state
- file system
- request
- nfs
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 58
- 238000012544 monitoring process Methods 0.000 title claims abstract description 30
- 230000008569 process Effects 0.000 claims abstract description 25
- 238000004590 computer program Methods 0.000 claims description 13
- 238000012545 processing Methods 0.000 claims description 10
- 230000008859 change Effects 0.000 claims description 2
- 230000015556 catabolic process Effects 0.000 description 19
- 238000006731 degradation reaction Methods 0.000 description 19
- 238000010586 diagram Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 239000000126 substance Substances 0.000 description 2
- 230000000593 degrading effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种监控NFS客户端状态的方法、装置及***,方法包括:定义客户端对文件***正在进行文件或目录操作为活跃状态、指定时长内客户端未对文件***进行文件或目录操作为非活跃状态,客户端对文件***正在进行文件或目录操作时出错为错误状态,在预设租约时间内未收到请求客户端的状态为断开状态;当服务端接收到客户端请求时,获取客户端和对应文件***信息;在服务端执行客户端请求过程中,获取是否成功执行请求的状态以及请求的活跃类型,记录当前客户端和对应文件***的状态,更新至对应的状态数据库中。本发明能够实现对客户端与NFS服务端连接状态的准确监控,避免因直接关闭NFS共享文件***导致业务中断、数据丢失等问题。
Description
技术领域
本发明涉及信息共享技术领域,尤其涉及一种监控NFS客户端状态的方法、装置及***。
背景技术
NFS(网络文件***)是在网络环境下实现不同计算机之间的共享数据,NFS客户端可以像访问本地硬盘中的文件一样访问挂载到本地NFS服务器上的共享文件。当前NFS***中通常仅关注NFS服务器实际上所链接的客户端数量是否要小于理论上所链接的客户端的数量,及服务端的连接客户端数量和带宽分配不合理等问题,并不能准确获知客户端是否连接NFS服务或正在使用文件***的状态,也无法判定客户端是暂时未使用NFS服务还是已处于宕机等状态。而在进行NFS***维护或升级等情况时,NFS存储***的管理员需要先关闭NFS共享文件***,再对NFS***进行相关操作。如果直接关闭NFS共享文件***,会导致已连接的客户端和正在读写的NFS客户端出现卡死和业务中断等现象,进而造成数据丢失等后果。
现有技术中要实现设备或服务信息的监控通常都是定时获取设备或服务的某一状态信息,且需要被监控方的状态值可以直接获取,获取方式可以是由监控方主动向被监控方查询状态信息,也可以是由被监控方主动向监控方上报。但这需要被监控方有获取状态值和与监控方通信的能力。如果考虑采用传统监控信息的方式对客户端连接NFS服务或正在使用文件***的客户端状态进行监控,则需要NFS客户端必须具有获取状态或生成状态值的功能,并提供主动上报或被动获取的接口,以实现对NFS客户端状态信息的获取,即必须对NFS客户端进行修改,这会影响NFS客户端的正常运行,导致通用的NFS客户端变成专用的NFS客户端。而在实际使用环境中,会存在各种不同的客户端使用NFS服务,传统监控方式会极大影响客户端的用户体验。
发明内容
本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种结构简单、适用性广的监控NFS客户端状态的方法、装置及***,以实现对NFS存储***的维护和管理,能够精准监控客户端与NFS服务端的连接状态,利用监控状态确定是否需要关闭NFS共享文件***,有效避免因直接关闭NFS共享文件***导致的业务中断、数据丢失等问题。
为解决上述技术问题,本发明提出的技术方案为:
一种监控NFS客户端状态的方法,包括:
定义客户端对文件***正在进行文件或目录操作为活跃状态、指定时长内客户端未对文件***进行文件或目录操作为非活跃状态,以及客户端对文件***正在进行文件或目录操作时出错为错误状态以及在预设租约时间内未收到请求客户端的状态为断开状态;
当服务端接收到客户端请求时,获取客户端和对应文件***的信息;
在服务端执行客户端的请求过程中,获取是否成功执行请求的状态以及请求的活跃类型,记录当前客户端和对应文件***的状态,更新至对应的状态数据库中,其中如果执行请求错误则对应更新为错误状态,服务端执行请求过程中客户端对文件***正在进行文件或目录操作则对应更新为活跃状态,如果指定时长内客户端未对文件***进行文件或目录操作则对应更新为非活跃状态,如果判断到服务端在预设租约时间内未收到请求客户端的状态,则更新客户端对应的状态为断开状态。
进一步的,还包括定义服务端在预设租约时间内未收到请求客户端的状态为断开状态,如果判断到服务端在预设租约时间内未收到请求客户端的状态,则更新客户端对应的状态为断开状态。
进一步的,所述客户端请求包括活跃请求和非活跃请求,所述活跃请求包括除卸载请求和单一的SEQUENCE请求以外的任何请求;所述非活跃请求包括单一的SEQUENCE请求;
当服务端接收到客户端请求时,如果所述客户端请求为除挂载、卸载以外的请求时,判断请求是否执行成功,若执行成功则根据客户端请求的活跃类型更新对应的客户端状态,否则将客户端IP和文件***名称对应的客户端状态更新为错误状态;
如果所述客户端请求为挂载请求时,则***新的客户端活跃状态记录到数据库;
如果所述客户端请求为卸载请求时,则删除客户端的IP和文件***名称对应的状态记录。
进一步的,所述根据客户端请求的活跃类型更新对应的客户端状态包括:
当所述客户端请求为非活跃请求时,维持当前客户端IP对应的非活跃状态记录;
当所述客户端请求是活跃请求时,检查客户端活跃状态缓存中是否存在当前客户端IP和文件***名称对应的记录,若存在则跳过当前请求,否则更新客户端活跃状态记录。
进一步的,还包括预先对各状态进行等级划分,定期根据状态类型以及在指定时长内的更新趋势对状态数据库中记录的各状态进行降级更新,使得在指定时长内如果存在目标状态未发生改变则将目标状态降低为指定等级的状态。
进一步的,各状态按照等级高低依次配置为活跃状态、非活跃状态、断开和错误状态,所述定期根据状态类型以及在指定时长内的更新趋势对状态数据库中记录的各状态进行降级更新的步骤包括:
如果状态数据库中目标状态为活跃状态,且所述目标状态最后更新时间与当前时间的时间间隔超过预设租约时间,则将所述数据库中目标状态更新为非活跃状态;
如果状态数据库中目标状态为非活跃状态,且所述目标状态最后更新时间与当前时间的时间间隔超过预设租约时间,则将所述数据库中目标状态更新为断开状态。
进一步的,还包括识别客户端挂载的请求以及需要挂载的文件***,步骤包括:
服务端关联保存文件***的导出目录的文件句柄和对应的文件***名称;
服务端收到会话请求时获取并保存对应客户端的IP以及session_id,使用session_id作为唯一标识设置一个对应的状态值,以用于表示对应客户端正在挂载中并记录当前的时间戳;
当服务端接收到查找请求时,判断session_id对应的状态值是否为客户端正在挂载中,如果不是则结束当前流程;否则判断获取的目录文件句柄是否与文件***的导出目录的文件句柄一致,若不一致则结束此流程,若一致则判定客户端已挂载完成,通过目录的文件句柄获取对应的文件***名称,***活跃状态的客户端状态记录,将客户端IP和文件***名称关联保存,并将session_id对应的状态值设置为客户端已挂载。
进一步的,还包括当需要关闭NFS共享文件***时,根据状态数据库中记录的NFS客户端状态判断当前是否关闭当前NFS共享文件***,步骤包括:
判断当前接收到的请求是否是强制关闭类请求,如果是则直接关闭NFS共享文件***;
如果当前接收到的请求不是强制关闭类请求,获取服务端所有的文件***名称和对应的客户端状态记录,并判断所需操作的类型,若是属于关闭NFS共享文件***的操作,根据是否存在活跃状态或非活跃状态的客户端控制关闭NFS共享文件***,其中若存在活跃状态或非活跃状态的客户端,阻止关闭NFS共享文件***,否则直接关闭NFS共享文件***;若是属于重启服务的操作,根据是否存在活跃状态的客户端控制重启NFS共享文件***,其中若存在活跃状态的客户端,阻止重启NFS共享文件***,否则直接重启NFS共享文件***。
进一步的,所述根据状态数据库中记录的NFS客户端状态判断当前是否关闭当前NFS共享文件***中,还包括如果是否允许后台关闭或重启NFS共享文件***,创建后台检查任务并将其加入后台任务队列中,对后台任务队列中后台任务的处理步骤包括:
判断后台任务队列是否为空,若为空进入睡眠等待状态:
若后台任务队列不为空,获取后台任务并判断任务的类型;
如果判断到后台任务是属于关闭NFS共享文件***的操作,判断是否存在活跃状态或非活跃状态的客户端,若存在活跃状态或非活跃状态的客户端,重新创建后台关闭NFS共享文件***任务,并加入到后台任务队列中,否则直接关闭NFS共享文件***;
若判断到后台任务是属于重启NFS共享文件***的操作,判断是否存在活跃状态的客户端,若存在活跃状态的客户端,重新创建后台重启NFS共享文件***任务,并加入到后台任务队列中,否则直接重启NFS共享文件***。
一种监控NFS客户端状态的装置,包括:
状态定义模块,用于定义客户端对文件***正在进行文件或目录操作为活跃状态、指定时长内客户端未对文件***进行文件或目录操作为非活跃状态,以及客户端对文件***正在进行文件或目录操作时出错为错误状态;
信息获取模块,当服务端接收到客户端请求时,获取客户端和对应文件***的信息;
状态记录模块,在服务端执行客户端的请求过程中,获取是否成功执行请求的状态以及请求的活跃类型,记录当前客户端和对应文件***的状态,更新至对应的状态数据库中,其中如果执行请求错误则对应更新为错误状态,服务端执行请求过程中客户端对文件***正在进行文件或目录操作则对应更新为活跃状态,如果指定时长内客户端未对文件***进行文件或目录操作则对应更新为非活跃状态。
一种NFS***,包括服务端、客户端以及文件***,还包括处理器以及存储器,所述存储器用于存储计算机程序,所述处理器用于在服务端执行客户端请求的过程中,执行所述计算机程序以执行上述方法。
与现有技术相比,本发明的优点在于:
1、本发明根据客户端对文件***进行文件或目录操作的状态定义客户端的状态,并在服务端执行客户端的请求过程中,获取是否成功执行请求的状态以及请求的活跃类型,记录当前客户端和对应文件***的状态,更新至对应的状态数据库中。使得服务端可以准确获知客户端连接NFS服务端的情况,以及客户端使用文件***的状态,能够有效避免因直接关闭NFS共享文件***而导致的已连接的客户端和正在读写的NFS客户端出现卡死和业务中断的情况,有效避免了数据丢失等后果,提高了用户的使用体验。
2、本发明通过实时监控客户端的操作状态,有助于发现并解决***的潜在问题,降低***故障率,提供***稳定性。另外,当执行请求错误时对应更新状态数据库为错误状态,使得NFS***管理员能够快速定位问题,有效提高问题的解决效率。
3、本发明进一步通过将目标状态最后更新时间与当前时间的时间间隔与预设租约时间进行比较,当目标状态最后更新时间与当前时间的时间间隔超过预设租约时间,则通过降级策略对客户端当前状态进行降级处理,以准确获知客户端状态是暂时未使用NFS服务还是已经宕机,从而合理分配服务器资源,提高整个***的运行效率。
附图说明
图1为本发明实施例监控NFS客户端状态的方法流程图。
图2为本发明具体应用实施例中监控NFS客户端状态的方法流程图。
图3为本发明实施例服务端降级检查与降级操作流程图。
图4为本发明实施例服务端对客户端状态的更新和降级操作以及状态转换示意图。
图5为本发明实施例监控NFS客户端状态的装置组成示意图。
图6为本发明实施例根据NFS客户端状态决定是否停止NFS共享文件***的实现流程图。
图7为本发明实施例后台任务处理的实现流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
NFS存储***的管理员需要对整个NFS存储***进行维护管理,其中包括关闭NFS共享文件***的操作。当需要关闭NFS共享文件***时,若是直接关闭NFS共享文件***,如果此时存在客户端正在对文件***进行文件或目录操作,会导致已连接的客户端和正在读写的NFS客户端出现卡死和业务中断的情况,进而造成数据丢失、影响用户体验等后果。如果管理员在关闭NFS共享文件***时,能够先确认是否有客户端连接NFS服务或正在使用文件***,然后再决定是否关闭NFS共享文件***,则可以有效避免因直接关闭NFS共享文件***导致业务中断、数据丢失等问题。为实现在关闭NFS共享文件***前,确认是否有客户端连接NFS服务或正在使用文件***,本发明对服务端的文件***、客户端IP和客户端请求进行区分,得到相应的状态并将状态保存,以提供给外部应用获取,利用该监控信息可以进行NFS共享文件***关闭的控制,使得当需要关闭NFS共享文件***时,根据状态数据库中记录的状态能够精准判断当前是否能够直接关闭当前NFS共享文件***。
如图1所示,本实施例监控NFS客户端状态的方法的步骤包括:
步骤1.定义客户端对文件***正在进行文件或目录操作为活跃状态、指定时长内客户端未对文件***进行文件或目录操作为非活跃状态,以及客户端对文件***正在进行文件或目录操作时出错为错误状态。
本实施例先根据客户端是否对文件***正在进行文件或目录操作定义客户端的活跃状态/非活跃状态,同时定义如果客户端对文件***正在进行文件或目录操作时出错时为错误状态,后续在执行客户端请求时相应的进行客户端的活跃状态、非活跃状态与错误状态的判断与记录。
优选的,本实施例还包括定义服务端在预设租约时间内未收到请求客户端的状态为断开状态,如果判断到服务端在预设租约时间内未收到请求客户端的状态,则更新客户端对应的状态为断开状态。
在具体应用实施例中,定义的各客户端状态分别为:
1)活跃状态:客户端对文件***正在进行文件或目录操作。服务端接收到客户端发送的请求是卸载请求和单一的SEQUENCE请求以外的任何请求,则定义客户端状态为活跃状态。
2)非活跃状态:一段时间内客户端未对文件***进行任何文件或目录操作。指定时长内服务端未收到任何活跃请求,但收到了单一的SEQUENCE(序列)请求,则定义客户端状态为非活跃状态。上述SEQUENCE请求并不是数据库的SEQUENCEN请求,而是由客户端发出的只包含SEQUENCE的请求。
3)断开状态:服务端在预设租约时间内没有收到任何请求,则定义客户端进入断开状态。
4)错误状态:客户端对文件***正在进行文件或目录操作时出错、服务端执行活跃请求时出错,则定义客户端进入错误状态。
步骤2.当服务端接收到客户端请求时,获取客户端和对应文件***的信息。
本实施例中,客户端请求包括活跃请求和非活跃请求,活跃请求可以是卸载和单一的SEQUENCE请求以外的任何请求,非活跃请求是单一的SEQUENCE请求,请求类型的具体划分也可以根据实际需求配置。
本实施例中,服务端使用状态数据库表存储客户端状态信息,外部应用通过查询状态数据库表获取客户端状态信息,其中客户端状态信息由客户端挂载的文件***名称、客户端IP、状态的最后更新时间、客户端状态类型四部分组成,也根据实际需求增加其他更多类型的信息。
步骤3.在服务端执行客户端的请求过程中,获取是否成功执行请求的状态以及请求的活跃类型,记录当前客户端和对应文件***的状态,更新至对应的状态数据库中,其中如果执行请求错误则对应更新为错误状态,服务端执行请求过程中客户端对文件***正在进行文件或目录操作则对应更新为活跃状态,如果指定时长内客户端未对文件***进行文件或目录操作则对应更新为非活跃状态。
本实施例当服务端接收客户端请求时,判断客户端请求的类型;如果客户端请求为除挂载、卸载以外的请求,判断是否执行成功,若执行成功则根据客户端请求的活跃类型更新对应的客户端状态,否则将客户端IP和文件***名称对应的客户端状态更新为错误状态;如果客户端请求为挂载请求,则***新的客户端活跃状态记录到数据库;如果客户端请求为卸载请求,则删除客户端的IP和文件***名称对应的状态记录。
上述如果客户端请求为挂载请求,***新的客户端活跃状态记录到数据库时,还包括在***新的客户端活跃状态记录之前,先检测状态记录数据库中是否已经存在对应的客户端IP和文件***名称的记录,若存在就先删除对应的客户端IP和文件***名称的记录,然后再***。
本实施例中,根据客户端请求的活跃类型更新对应的客户端状态包括:
当客户端请求为非活跃请求时,维持当前客户端IP对应的非活跃状态记录;
当客户端请求是活跃请求时,检查客户端活跃状态缓存中是否存在当前客户端IP和文件***名称对应的记录,若存在则跳过当前请求,否则更新客户端活跃状态记录。
如图2所示,在具体应用实施例中,服务端接收客户端请求后的详细步骤包括:
步骤301.若客户端请求为挂载请求,则***新的客户端活跃状态记录到状态数据库,在***新的客户端活跃状态记录之前先检测状态记录数据库中,是否已经存在对应的客户端IP和文件***名称的记录,若存在就先删除对应的客户端IP和文件***名称的记录,然后再***;
步骤302.若客户端请求为卸载请求,则删除客户端IP和文件***名称对应的状态记录;
步骤303.若客户端请求为其他类型请求,则等待请求执行完成,再判断是否执行成功;
若执行失败则将对应的客户端IP和文件***名称对应的客户端状态更新为错误状态;若执行成功,则判断客户端请求的活跃类型是否为活跃请求;
步骤304.如果客户端请求的活跃类型是非活跃请求,则维持客户端IP对应的非活跃状态记录;如果客户端请求的活跃类型是活跃请求时,检查客户端活跃状态缓存中是否有此活跃请求IP和文件***名称对应的记录;
步骤305.如果存在客户端的活跃状态请求IP和文件***名称对应的记录,即当前已经在客户端活跃状态缓存中则跳过该活跃请求;如果客户端的活跃状态请求IP和文件***名称对应的记录,未缓存在客户端活跃状态缓存中,则更新客户端活跃状态记录,并缓存此状态记录。
在NFS4协议中客户端挂载是由多个请求来完成的,在服务端可以通过请求类型确认有客户端连接服务端,并且通过网络套接字可以获取到客户端的IP,但由于挂载文件***时并没有一个特定的请求类型来表示这是客户端的挂载请求,而是从根目录开始,通过多次LOOKUP(查找)请求来获取到最终要挂载的目录的文件句柄,而正常的目录访问也是通过多次LOOKUP请求来获取到最终要访问目录的文件句柄,所以服务端无法直接通过请求类型来判断是否属于客户端挂载的请求,也无法直接获取客户端要挂载的文件***名称。本实施例进一步在不修改客户端的情况下,从服务端识别客户端挂载的请求和需要挂载的文件***名称,具体步骤包括:
服务端关联保存文件***的导出目录的文件句柄和对应的文件***名称;
服务端收到会话请求时获取并保存对应客户端的IP以及session_id,使用session_id作为唯一标识设置一个对应的状态值,以用于表示对应客户端正在挂载中并记录当前的时间戳;
当服务端接收到查找请求时,判断session_id对应的状态值是否为客户端正在挂载中,如果不是则结束当前流程;否则判断获取的目录文件句柄是否与文件***的导出目录的文件句柄一致,若不一致则结束此流程,若一致,则判定客户端已挂载完成,通过目录的文件句柄获取对应的文件***名称,并***活跃状态的客户端状态记录,将客户端IP和文件***名称关联保存,并将session_id对应的状态值设置为客户端已挂载。
进一步的,如果指定时间内session_id对应的状态值一直为客户端正在挂载中,还包括在超过指定时间后将session_id对应的状态值设置为挂载超时。
进一步的,还包括从服务端识别客户端卸载的请求以及需要卸载的文件***名称,步骤包括; 当服务端收到服务端的卸载请求时,根据session_id获取客户端IP和对应的文件***名称,并将客户端对应的状态记录删除。
在具体应用实施例中,在不修改客户端的情况下,从服务端识别客户端挂载/卸载的请求和需要挂载/卸载的文件***名称的详细步骤为:
1)服务端关联保存文件***的导出目录的文件句柄和对应的文件***名称;
2)服务端收到CREATE_SESSION创建会话请求时获取并保存客户端的IP和session_id(会话号)。使用session_id作为唯一标识,设置一个session_id对应的状态值,以用于表示此客户端正在挂载中,并记录当前的时间戳。
3)若服务端接收到LOOKUP请求,判断session_id对应的状态值是否为客户端正在挂载中,若客户端不为正在挂载中的状态,结束当前流程。
4)若客户端正在挂载中,判断获取的目录文件句柄是否与文件***的导出目录的文件句柄一致,若不一致,结束当前流程;若一致,则认为客户端已挂载完成,通过目录的文件句柄获取对应的文件***名称,并***活跃状态的客户端状态记录,将客户端IP和文件***名称关联保存,最后将session_id对应的状态值设置为客户端已挂载。
5)若指定时间内session_id对应的状态值一直为客户端正在挂载中,超过指定时间后将session_id对应的状态值设置为挂载超时。
6)服务端收到DESTROY_SESSION删除会话请求时,则认为客户端发起了卸载请求,根据session_id获取客户端IP和对应的文件***名称,将客户端对应的状态记录删除。
本实施例还包括预先对各状态进行等级划分,定期根据状态类型以及在指定时长内的更新趋势对状态数据中记录的各状态进行降级更新,使得在指定时长内如果存在目标状态未发生改变的状态降低为指定等级的状态的步骤4。
如图4所示,服务端对客户端状态进行更新和降级操作以及状态转换分别定义为:
降级:租约时间之内状态的最后更新时间未更新,由高等级逐级变为低等级,降级操作最低只能变为断开,错误状态无法由降级完成;
更新:更改状态,并将状态的最后更新时间更改为当前时间。
本实施例中,服务端对客户端状态的操作还包括:
维持:不更改状态,只将状态的最后更新时间更改为当前时间;
删除:删除文件***名称和客户端IP对应的客户端状态记录;
***:添加一条文件***名称、客户端IP、活跃状态的记录,设置状态的最后更新时间为当前时间。
本实施例中,预先按照等级高低依次配置为活跃状态、非活跃状态、断开和错误状态,对于在指定时长内状态未发生改变的状态降为低指定个等级的状态的步骤4包括:
步骤401.如果状态数据库中目标状态为活跃状态,且目标状态最后更新时间与当前时间的时间间隔超过预设租约时间,则将数据库中目标状态更新为非活跃状态;
步骤402.如果状态数据库中目标状态为非活跃状态,且目标状态最后更新时间与当前时间的时间间隔超过预设租约时间,则将数据库中目标状态更新为断开状态。
可以理解的是,具体的降级策略也可以根据实际需求调整,例如配置为当判定到满足降级条件时直接降低指定个级别数,也可以根据状态的优先级为每个级别配置对应的降级策略,具体均可以根据实际需求配置。
如图3所示,在具体应用实施例中,服务端通过启动另外的线程进行降级检查与降级操作,具体步骤如下:
1)降级检查线程将客户端活跃状态缓存中的状态更新到数据库,并将活跃状态缓存清空;
2)将数据库中为活跃状态,并且最后更新时间与当前时间的间隔超过租约时间的记录更新为非活跃状态;
3)将数据库中为非活跃状态,并且最后更新时间与当前时间的间隔超过租约时间的记录更新为断开状态;
4)等待指定比例的租约时间;
5)判断降级检查是否设置为结束,若未设置为结束,继续跳转到步骤1),若设置为结束,就结束降级检查线程。
本实施例通过NFS共享文件***关闭时对NFS客户端状态进行检查,根据NFS客户端状态确定是否能够关闭当前NFS服务,可以有效避免因直接关闭NFS共享文件***导致业务中断、数据丢失等问题,提升用户体验。
本实施例中,根据状态数据库中记录的NFS客户端状态判断当前是否关闭当前NFS共享文件***,步骤包括:
判断当前接收到的请求是否是强制关闭类请求,如果是则直接关闭NFS共享文件***;
如果当前接收到的请求不是强制关闭类请求,获取服务端所有的文件***名称和对应的客户端状态记录,并判断所需操作的类型,若是属于关闭NFS共享文件***的操作,根据是否存在活跃状态或非活跃状态的客户端控制关闭NFS共享文件***,其中若存在活跃状态或非活跃状态的客户端,阻止关闭NFS共享文件***,否则直接关闭NFS共享文件***;若是属于重启服务的操作,根据是否存在活跃状态的客户端控制重启NFS共享文件***,其中若存在活跃状态的客户端,阻止重启NFS共享文件***,否则直接重启NFS共享文件***。
如图6所示,在具体应用实施例中,根据NFS客户端状态判断当前是否关闭NFS共享文件***的详细步骤为:
1)管理员重启或关闭服务;
2)管理***判断是否是强制关闭的请求,若是强制关闭就直接关闭NFS共享文件***,若非强制关闭则进入下列步骤;
3)获取服务端所有的文件***名称和对应的客户端状态记录;
4)判断操作的类型,是属于重启NFS共享文件***还是关闭NFS共享文件***;
5)若是属于关闭NFS共享文件***的操作,判断是否存在活跃状态或非活跃状态的客户端,若存在活跃状态或非活跃状态的客户端,阻止关闭NFS共享文件***,否则直接关闭NFS共享文件***,结束流程;
6)若是属于重启服务的操作,判断是否存在活跃状态的客户端,若存在活跃状态的客户端,阻止重启NFS共享文件***,否则直接重启NFS共享文件***,结束流程;
7)判断是否允许后台关闭或重启NFS共享文件***,若不允许,跳过当前步骤。若允许后台关闭或重启NFS共享文件***,创建后台检查任务并将其加入后台任务队列中;
8)返回客户端的IP,提示管理员存在活跃状态客户端,建议停止客户端的使用后再关闭或重启NFS共享文件***。
本实施例中,根据状态数据库中记录的NFS客户端状态判断当前是否关闭当前NFS共享文件***中,还包括如果是否允许后台关闭或重启NFS共享文件***,创建后台检查任务并将其加入后台任务队列中,对后台任务队列中后台任务的处理步骤包括:
判断后台任务队列是否为空,若为空进入睡眠等待状态:
若后台任务队列不为空,获取后台任务并判断任务的类型;
如果判断到后台任务是属于关闭NFS共享文件***的操作,判断是否存在活跃状态或非活跃状态的客户端,若存在活跃状态或非活跃状态的客户端,重新创建后台关闭NFS共享文件***任务,并加入到后台任务队列中,否则直接关闭NFS共享文件***;
若判断到后台任务是属于重启NFS共享文件***的操作,判断是否存在活跃状态的客户端,若存在活跃状态的客户端,重新创建后台重启NFS共享文件***任务,并加入到后台任务队列中,否则直接重启NFS共享文件***。
如图7所示,在具体应用实施例中后台任务处理的详细步骤如下:
1)启动后台任务处理线程;
2)等待指定时长;
3)判断后台任务队列是否为空,若为空,进入睡眠等待状态:若不为空,获取后台任务;
4)判断任务的类型,是属于重启NFS共享文件***还关闭NFS共享文件***;
5)若是属于关闭NFS共享文件***的操作,判断是否存在活跃状态或非活跃状态的客户端,若存在活跃状态或非活跃状态的客户端,重新创建后台关闭NFS共享文件***任务,并加入到后台任务队列中,否则直接关闭NFS共享文件***,并返回执行结果;
6)若是属于重启NFS共享文件***的操作,判断是否存在活跃状态的客户端,若存在活跃状态的客户端,重新创建后台重启NFS共享文件***任务,并加入到后台任务队列中,否则直接重启NFS共享文件***,并返回执行结果;
7)判断后台任务处理线程是否需要结束,若需要,结束线程;若不需要,重新进入步骤2)。
本实施例还提供一种监控NFS客户端状态的装置,包括:
状态定义模块,用于定义客户端对文件***正在进行文件或目录操作为活跃状态、指定时长内客户端未对文件***进行文件或目录操作为非活跃状态,以及客户端对文件***正在进行文件或目录操作时出错为错误状态;
信息获取模块,当服务端接收到客户端请求时,获取客户端和对应文件***的信息;
状态记录模块,在服务端执行客户端的请求过程中,获取是否成功执行请求的状态以及请求的活跃类型,记录当前客户端和对应文件***的状态,更新至对应的状态数据库中,其中如果执行请求错误则对应更新为错误状态,服务端执行请求过程中客户端对文件***正在进行文件或目录操作则对应更新为活跃状态,如果指定时长内客户端未对文件***进行文件或目录操作则对应更新为非活跃状态。
本实施例中,还包括状态更新模块,用于定期根据状态类型以及在指定时长内的更新趋势对状态数据库中记录的各状态进行降级更新,使得在指定时长内如果存在目标状态未发生改变则将目标状态降低为指定等级的状态。
本实施例中,状态更新模块具体根据租约时间,检查所有客户端状态信息是否满足降级条件,若满足就将对应的客户端状态降级。
本实施例中,还包括关闭控制模块,用于当需要关闭NFS共享文件***时,根据状态数据库中记录的状态判断当前是否能够关闭当前NFS共享文件***。
如图5所示,本实施例信息获取模块具体包括:
状态获取单元,用于根据客户端的请求得到不同的客户端状态、客户端IP和文件***名称;
状态缓存单元,用于过滤重复的状态更新请求,缓存客户端状态;
状态存储单元,用于连接数据库,提供状态信息查询、更新、***、删除等的接口。
本实施例还提供一种NFS***,包括服务端、客户端以及文件***,还包括处理器以及存储器,存储器用于存储计算机程序,处理器用于在服务端执行客户端请求的过程中,执行计算机程序以执行上述方法。
可以理解的是,本实施例上述方法可以由单个设备执行,例如一台计算机或服务器等,也可以应用于分布式场景下由多台设备相互配合来完成,在分布式场景的情况下,多台设备中的一台设备可以只执行本实施例上述方法中的某一个或多个步骤,多台设备之间进行交互以完成上述方法。处理器可以采用通用的CPU、微处理器、应用专用集成电路、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本实施例上述方法。存储器可以采用只读存储器ROM、随机存取存储器RAM、静态存储设备以及动态存储设备等形式实现。存储器可以存储操作***和其他应用程序,在通过软件或者固件来实现本实施例上述方法时,相关的程序代码保存在存储器中,并由处理器来调用执行。
本领域内的技术人员应明白,本申请的上述实施例可提供为方法、***、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可读存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本申请是参照根据本申请实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。上述只是本发明的较佳实施例,并非对本发明作任何形式上的限制。虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明。因此,凡是未脱离本发明技术方案的内容,依据本发明技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均应落在本发明技术方案保护的范围内。
上述只是本发明的较佳实施例,并非对本发明作任何形式上的限制。虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明。因此,凡是未脱离本发明技术方案的内容,依据本发明技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均应落在本发明技术方案保护的范围内。
Claims (10)
1.一种监控NFS客户端状态的方法,其特征在于,包括:
定义客户端对文件***正在进行文件或目录操作为活跃状态、指定时长内客户端未对文件***进行文件或目录操作为非活跃状态,客户端对文件***正在进行文件或目录操作时出错为错误状态以及在预设租约时间内未收到请求客户端的状态为断开状态;
当服务端接收到客户端请求时,获取客户端和对应文件***的信息;
在服务端执行客户端的请求过程中,获取是否成功执行请求的状态以及请求的活跃类型,记录当前客户端和对应文件***的状态,更新至对应的状态数据库中,其中如果执行请求错误则对应更新为错误状态,服务端执行请求过程中客户端对文件***正在进行文件或目录操作则对应更新为活跃状态,如果指定时长内客户端未对文件***进行文件或目录操作则对应更新为非活跃状态,如果判断到服务端在预设租约时间内未收到请求客户端的状态,则更新客户端对应的状态为断开状态。
2.根据权利要求1所述的监控NFS客户端状态的方法,其特征在于,当服务端接收到客户端请求时,如果所述客户端请求为除挂载、卸载以外的请求,判断请求是否执行成功,若执行成功则根据客户端请求的活跃类型更新对应的客户端状态,否则将客户端IP和文件***名称对应的客户端状态更新为错误状态;
如果所述客户端请求为挂载请求,则***新的客户端活跃状态记录到数据库;
如果所述客户端请求为卸载请求,则删除客户端的IP和文件***名称对应的状态记录。
3.根据权利要求2所述的监控NFS客户端状态的方法,其特征在于,所述根据客户端请求的活跃类型更新对应的客户端状态包括:
所述客户端请求包括活跃请求和非活跃请求,所述活跃请求包括除卸载请求和单一的SEQUENCE请求以外的任何请求;所述非活跃请求包括单一的SEQUENCE请求;
当所述客户端请求为非活跃请求时,维持当前客户端IP对应的非活跃状态记录;
当所述客户端请求是活跃请求时,检查客户端活跃状态缓存中是否存在当前客户端IP和文件***名称对应的记录,若存在则跳过当前请求,否则更新客户端活跃状态记录。
4.根据权利要求1所述的监控NFS客户端状态的方法,其特征在于,还包括预先对各状态进行等级划分,定期根据状态类型以及在指定时长内的更新趋势对状态数据库中记录的各状态进行降级更新,使得在指定时长内如果存在目标状态未发生改变则将目标状态降低为指定等级的状态。
5.根据权利要求4所述的监控NFS客户端状态的方法,其特征在于,各状态按照等级高低依次配置为活跃状态、非活跃状态、断开和错误状态,所述定期根据状态类型以及在指定时长内的更新趋势对状态数据库中记录的各状态进行降级更新的步骤包括:
如果状态数据库中目标状态为活跃状态,且所述目标状态最后更新时间与当前时间的时间间隔超过预设租约时间,则将所述数据库中目标状态更新为非活跃状态;
如果状态数据库中目标状态为非活跃状态,且所述目标状态最后更新时间与当前时间的时间间隔超过预设租约时间,则将所述数据库中目标状态更新为断开状态。
6.根据权利要求1~5中任意一项所述的监控NFS客户端状态的方法,其特征在于,还包括识别客户端挂载的请求以及需要挂载的文件***,步骤包括:
服务端关联保存文件***的导出目录的文件句柄和对应的文件***名称;
服务端收到会话请求时获取并保存对应客户端的IP以及session_id,使用session_id作为唯一标识设置一个对应的状态值,以用于表示对应客户端正在挂载中并记录当前的时间戳;
当服务端接收到查找请求时,判断session_id对应的状态值是否为客户端正在挂载中,如果不是则结束当前流程;否则判断获取的目录文件句柄是否与文件***的导出目录的文件句柄一致,若不一致则结束此流程,若一致则判定客户端已挂载完成,通过目录的文件句柄获取对应的文件***名称,***活跃状态的客户端状态记录,将客户端IP和文件***名称关联保存,并将session_id对应的状态值设置为客户端已挂载。
7.根据权利要求1~5中任意一项所述的监控NFS客户端状态的方法,其特征在于,还包括当需要关闭NFS共享文件***时,根据状态数据库中记录的NFS客户端状态判断当前是否关闭当前NFS共享文件***,步骤包括:
判断当前接收到的请求是否是强制关闭类请求,如果是则直接关闭NFS共享文件***;
如果当前接收到的请求不是强制关闭类请求,获取服务端所有的文件***名称和对应的客户端状态记录,并判断所需操作的类型,若是属于关闭NFS共享文件***的操作,根据是否存在活跃状态或非活跃状态的客户端控制关闭NFS共享文件***,其中若存在活跃状态或非活跃状态的客户端,阻止关闭NFS共享文件***,否则直接关闭NFS共享文件***;若是属于重启服务的操作,根据是否存在活跃状态的客户端控制重启NFS共享文件***,其中若存在活跃状态的客户端,阻止重启NFS共享文件***,否则直接重启NFS共享文件***。
8.根据权利要求7所述的监控NFS客户端状态的方法,其特征在于,所述根据状态数据库中记录的NFS客户端状态判断当前是否关闭当前NFS共享文件***中,还包括如果是否允许后台关闭或重启NFS共享文件***,创建后台检查任务并将其加入后台任务队列中,对后台任务队列中后台任务的处理步骤包括:
判断后台任务队列是否为空,若为空进入睡眠等待状态:
若后台任务队列不为空,获取后台任务并判断任务的类型;
如果判断到后台任务是属于关闭NFS共享文件***的操作,判断是否存在活跃状态或非活跃状态的客户端,若存在活跃状态或非活跃状态的客户端,重新创建后台关闭NFS共享文件***任务,并加入到后台任务队列中,否则直接关闭NFS共享文件***;
若判断到后台任务是属于重启NFS共享文件***的操作,判断是否存在活跃状态的客户端,若存在活跃状态的客户端,重新创建后台重启NFS共享文件***任务,并加入到后台任务队列中,否则直接重启NFS共享文件***。
9.一种监控NFS客户端状态的装置,其特征在于,包括:
状态定义模块,用于定义客户端对文件***正在进行文件或目录操作为活跃状态、指定时长内客户端未对文件***进行文件或目录操作为非活跃状态,以及客户端对文件***正在进行文件或目录操作时出错为错误状态;
信息获取模块,当服务端接收到客户端请求时,获取客户端和对应文件***的信息;
状态记录模块,在服务端执行客户端的请求过程中,获取是否成功执行请求的状态以及请求的活跃类型,记录当前客户端和对应文件***的状态,更新至对应的状态数据库中,其中如果执行请求错误则对应更新为错误状态,服务端执行请求过程中客户端对文件***正在进行文件或目录操作则对应更新为活跃状态,如果指定时长内客户端未对文件***进行文件或目录操作则对应更新为非活跃状态。
10.一种NFS***,包括服务端、客户端以及文件***,还包括处理器以及存储器,所述存储器用于存储计算机程序,其特征在于,所述处理器用于在服务端执行客户端请求的过程中,执行所述计算机程序以执行如权利要求1~8中任意一项所述方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410394230.4A CN117997939B (zh) | 2024-04-02 | 2024-04-02 | 一种监控nfs客户端状态的方法、装置及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410394230.4A CN117997939B (zh) | 2024-04-02 | 2024-04-02 | 一种监控nfs客户端状态的方法、装置及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117997939A true CN117997939A (zh) | 2024-05-07 |
CN117997939B CN117997939B (zh) | 2024-07-02 |
Family
ID=90899720
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410394230.4A Active CN117997939B (zh) | 2024-04-02 | 2024-04-02 | 一种监控nfs客户端状态的方法、装置及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117997939B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5513314A (en) * | 1995-01-27 | 1996-04-30 | Auspex Systems, Inc. | Fault tolerant NFS server system and mirroring protocol |
US20030033410A1 (en) * | 2001-08-01 | 2003-02-13 | Norihiro Kobayashi | Machine resource management system, method and program |
US20070239725A1 (en) * | 2006-03-28 | 2007-10-11 | Microsoft Corporation | Active cache offline access and management of project files |
US20090089335A1 (en) * | 2007-09-28 | 2009-04-02 | Hitachi, Ltd. | Method and apparatus for nas/cas unified storage system |
CN101567805A (zh) * | 2009-05-22 | 2009-10-28 | 清华大学 | 并行文件***发生故障后的恢复方法 |
CN106559282A (zh) * | 2015-09-29 | 2017-04-05 | 中兴通讯股份有限公司 | 一种锁定文件管理方法和装置 |
US20190034295A1 (en) * | 2017-07-25 | 2019-01-31 | Hubstor Inc. | Methods and systems relating to network based storage |
US20190250839A1 (en) * | 2018-02-14 | 2019-08-15 | Commvault Systems, Inc. | Machine learning-based data object storage |
CN113905005A (zh) * | 2021-09-30 | 2022-01-07 | 完美世界(北京)软件科技发展有限公司 | 即时通讯的客户端状态更新方法和装置 |
-
2024
- 2024-04-02 CN CN202410394230.4A patent/CN117997939B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5513314A (en) * | 1995-01-27 | 1996-04-30 | Auspex Systems, Inc. | Fault tolerant NFS server system and mirroring protocol |
US20030033410A1 (en) * | 2001-08-01 | 2003-02-13 | Norihiro Kobayashi | Machine resource management system, method and program |
US20070239725A1 (en) * | 2006-03-28 | 2007-10-11 | Microsoft Corporation | Active cache offline access and management of project files |
US20090089335A1 (en) * | 2007-09-28 | 2009-04-02 | Hitachi, Ltd. | Method and apparatus for nas/cas unified storage system |
CN101567805A (zh) * | 2009-05-22 | 2009-10-28 | 清华大学 | 并行文件***发生故障后的恢复方法 |
CN106559282A (zh) * | 2015-09-29 | 2017-04-05 | 中兴通讯股份有限公司 | 一种锁定文件管理方法和装置 |
US20190034295A1 (en) * | 2017-07-25 | 2019-01-31 | Hubstor Inc. | Methods and systems relating to network based storage |
US20190250839A1 (en) * | 2018-02-14 | 2019-08-15 | Commvault Systems, Inc. | Machine learning-based data object storage |
CN113905005A (zh) * | 2021-09-30 | 2022-01-07 | 完美世界(北京)软件科技发展有限公司 | 即时通讯的客户端状态更新方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN117997939B (zh) | 2024-07-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10511480B2 (en) | Message flow management for virtual networks | |
CN107844343B (zh) | 一种复杂服务端应用***的升级***及方法 | |
US8392907B2 (en) | Communication terminal | |
US20080126831A1 (en) | System and Method for Caching Client Requests to an Application Server Based on the Application Server's Reliability | |
US20090248870A1 (en) | Server system and control method for same | |
CN112003917B (zh) | 一种文件存储的管理方法、***、设备以及介质 | |
CN107005426B (zh) | 一种虚拟网络功能的生命周期管理方法及装置 | |
CN106603319B (zh) | 一种故障处理的方法、管理服务器以及逻辑服务器 | |
US8380951B1 (en) | Dynamically updating backup configuration information for a storage cluster | |
CN112948128A (zh) | Target端的选择方法、***及计算机可读介质 | |
US20070265976A1 (en) | License distribution in a packet data network | |
CN112667527A (zh) | 一种确保客户端数据采集准确性的方法及客户端 | |
CN110138808B (zh) | 基于cdn的反劫持下载方法和*** | |
CN112416594A (zh) | 一种微服务分配方法、电子设备和计算机存储介质 | |
CN111342986B (zh) | 分布式节点管理方法及装置、分布式***、存储介质 | |
CN114884840A (zh) | 应用健康状态检查方法及电子设备 | |
CN117997939B (zh) | 一种监控nfs客户端状态的方法、装置及*** | |
CN108200151B (zh) | 一种分布式存储***中ISCSI Target负载均衡方法和装置 | |
CN111064700B (zh) | 云游戏的下载方法、装置及*** | |
CN113064732B (zh) | 一种分布式***及其管理方法 | |
US20110185134A1 (en) | Temporary state service protocol | |
US11216352B2 (en) | Method for automatically analyzing bottleneck in real time and an apparatus for performing the method | |
US20040039816A1 (en) | Monitoring method of the remotely accessible resources to provide the persistent and consistent resource states | |
US11115269B1 (en) | System and method for updating an application for a population of computers | |
US20060136522A1 (en) | Computer system, storage management program call-up method, and storage system |
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 | ||
GR01 | Patent grant |