System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 防高可用切换时读写异常的nfs服务端控制方法及装置制造方法及图纸_技高网

防高可用切换时读写异常的nfs服务端控制方法及装置制造方法及图纸

技术编号:41353263 阅读:3 留言:0更新日期:2024-05-20 10:05
本发明专利技术公开一种防高可用切换时读写异常的nfs服务端控制方法及装置,该方法步骤包括:将原始nfs文件系统作为主文件系统,配置一个独立的nfs文件系统作为备文件系统;当需要完成客户端的文件或目录操作时,判断主文件系统的运行状态以及高可用切换状态,根据状态判断结果控制启动主备文件系统执行操作,其中当主文件系统服务端正常运行不需要进行高可用切换时,控制仅由主文件系统执行读取类型操作,同时由主文件系统、备文件系统执行修改类型操作;当主文件系统出现异常时进行高可用切换,断开主文件系统,并启动备文件系统执行所需操作。本发明专利技术能够防止nfs服务端高可用切换时客户端读写异常以及业务中断,提升文件系统的可靠性。

【技术实现步骤摘要】

本专利技术涉及nfs(network file system,网络文件系统)网络存储,尤其涉及一种防高可用切换时读写异常的nfs服务端控制方法及系统。


技术介绍

1、nfs包括客户端、服务端和存储端,通常分别分布在不同的服务器上,彼此通过网络连接。读写过程中,若服务端出现故障,都会导致应用数据无法读写文件。为了保证文件系统中服务端的可靠性,通常会使用多台服务器加上keepalived、haproxy等技术配置高可用的服务端。利用高可用的服务端,若正在提供服务的服务端节点出现故障,通过自动将服务切换到其他节点,保证文件系统的可用。但是对于配置高可用的服务端,在服务端进行高可用切换、启动服务之前,需要连接存储端、检查存储端是否可正常读写和挂载存储端文件系统,然后再启动服务,之后服务端会进入一段宽限期,宽限期结束后才能正常读写文件,使得在服务端高可用切换时会存在服务端不可用的一段时间,这段时间内若客户端读写文件就会出现i/o中断或客户端卡死,导致客户端应用无法读写文件或者丢失数据。

2、针对于上述技术问题,现有技术中通常是当服务端出现故障后,客户端阻塞一段时间等待服务端恢复,该类方法可以阻止i/o中断,但超过阻塞时间后若服务端仍然未恢复,那么仍然会出现i/o中断的情况,若一直阻塞,则仍然会导致客户端文件系统卡死或应用程序业务数据丢失。即便考虑在一个nfs文件系统中的服务端配置主备服务,通常都是将一个客户端连接一个服务端,即先将客户端连接至主服务端,当主服务端发生故障后,再将客户端重连到备服务端,将客户端从主服务端重连到备服务端的过程中仍然会造成客户端阻塞一段时间进而可能会出现i/o中断、客户端文件系统卡死或应用程序业务数据丢失等情况。


技术实现思路

1、本专利技术要解决的技术问题就在于:针对现有技术存在的技术问题,本专利技术提供一种实现操作简单、可靠性高的防高可用切换时读写异常的nfs服务端控制方法及系统,能够防止nfs服务端高可用切换时客户端读写异常以及业务中断,提升文件系统的可靠性。

2、为解决上述技术问题,本专利技术提出的技术方案为:

3、一种防高可用切换时读写异常的nfs服务端控制方法,步骤包括:

4、将原始nfs文件系统作为主文件系统,配置一个独立的nfs文件系统作为备文件系统并指定所述备文件系统的服务端地址和导出目录;

5、当需要完成客户端的文件或目录操作时,判断主文件系统的运行状态以及高可用切换状态,根据状态判断结果控制启动所述主文件系统和/或备文件系统执行操作,其中当所述主文件系统服务端正常运行不需要进行高可用切换时,控制仅由所述主文件系统执行读取类型操作,以及同时由所述主文件系统、备文件系统执行修改类型操作;当判断到主文件系统出现异常时进行高可用切换,断开所述主文件系统,并启动所述备文件系统执行所需操作。

6、进一步的,配置主文件系统、备文件系统前还包括挂载主文件系统、备文件系统的步骤,包括:

7、客户端挂载所述主文件系统时,输入配置参数以指定备文件系统的服务端地址和导出目录;

8、客户端内核模块解析输入的所述配置参数,获取备文件系统的服务端地址和导出目录,以及挂载备文件系统所需的参数;

9、客户端内核模块通过调用指定版本的nfs模块的try_mount函数指针挂载主文件系统;

10、若主文件系统挂载成功,继续调用try_mount函数指针挂载备文件系统,如果挂载失败则结束挂载过程;

11、若备文件系统挂载成功,将主文件系统、备文件系统的目录项dentry提交给主备文件系统管理模块以进行管理。

12、进一步的,所述根据状态判断结果控制启动所述主文件系统和/或备文件系统执行操作包括:

13、在主文件系统中完成客户端的文件或目录操作;

14、判断在主文件系统中操作完成状态以及操作类型;

15、若在主文件系统中操作成功且属于读取类型操作则返回操作的结果;

16、若在主文件系统中操作失败或操作类型属于修改类型操作,获取操作文件或目录的绝对路径以及在备文件系统中的目录项,根据获取的信息在备文件系统中完成对应的操作;

17、所述读取类型操作包括读文件、查找文件、获取文件权限、获取文件属性、获取目录权限、获取目录属性、读取目录中任意一种;修改类型操作包含打开文件、写文件、删除文件、重命名文件、设置文件权限、设置文件属性、删除目录、创建目录、关闭目录、重命名目录、设置目录权限、设置目录属性中任意一种。

18、进一步的,当完成客户端的文件或目录操作时,如果在客户端打开文件则同时在主文件系统、备文件系统中打开相同的文件,步骤包括:

19、在主文件系统中打开文件,根据主文件系统中文件的文件索引节点inode获取备文件系统中文件的文件索引节点inode和目录项dentry;

20、在备文件系统打开文件,保存备文件系统打开文件的上下文指针;

21、判断主文件系统中的文件是否打开成功,若打开成功返回主文件系统的打开文件的上下文指针;

22、若主文件系统的文件打开失败,判断备文件系统中的文件是否打开成功,若打开成功返回备文件系统的打开文件的上下文指针,若备文件系统的文件也打开失败返回错误。

23、进一步的,所述根据主文件系统中文件的文件索引节点inode获取备文件系统中文件的文件索引节点inode和目录项dentry包括:

24、根据所述文件的文件索引节点inode获取文件的绝对路径;

25、根据所述文件的绝对路径,调用备文件系统的lookup函数获取到文件所在目录的文件句柄file handle;

26、使用备文件系统的目录项dentry和文件句柄file handle作为参数,调用nfs_fhget函数获取文件所在目录的文件索引节点inode;

27、使用文件所在目录的所述文件索引节点inode和目录名称作为参数,调用d_obtain_alias函数获取文件所在目录的目录项dentry;

28、使用所述文件所在目录的目录项dentry作为参数,调用d_alloc_parallel函数获取文件的目录项dentry。

29、进一步的,当完成客户端的文件或目录操作时,如果在客户端写文件则同时在主文件系统和备文件系统中写相同的文件,步骤包括:

30、客户端获取打开文件时保存的主备文件的上下文指针和文件索引节点inode;

31、创建主文件系统、备份文件系统的写缓存页请求;

32、将主文件系统、备份文件系统的写缓存页请求添加到所述写缓存页请求队列;

33、客户端从所述写缓存页请求队列中获取写缓存页请求,向主文件系统、备文件系统发送;

34、客户端接收到写请求响应时,判断写请求是否执行成功,若成功返回写成功,若失败则判断请求响应是来自主文件系统还是备本文档来自技高网...

【技术保护点】

1.一种防高可用切换时读写异常的nfs服务端控制方法,其特征在于,步骤包括:

2.根据权利要求1所述的防高可用切换时读写异常的nfs服务端控制方法,其特征在于,配置主文件系统、备文件系统前还包括挂载主文件系统、备文件系统的步骤,包括:

3.根据权利要求1所述的防高可用切换时读写异常的nfs服务端控制方法,其特征在于,所述根据状态判断结果控制启动所述主文件系统和/或备文件系统执行操作包括:

4.根据权利要求1所述的防高可用切换时读写异常的nfs服务端控制方法,其特征在于,当完成客户端的文件或目录操作时,如果在客户端打开文件则同时在主文件系统、备文件系统中打开相同的文件,步骤包括:

5.根据权利要求4所述的防高可用切换时读写异常的nfs服务端控制方法,其特征在于,所述根据主文件系统中文件的文件索引节点inode获取备文件系统中文件的文件索引节点inode和目录项dentry包括:

6.根据权利要求1~5中任意一项所述的防高可用切换时读写异常的nfs服务端控制方法,其特征在于,当完成客户端的文件或目录操作时,如果在客户端写文件则同时在主文件系统和备文件系统中写相同的文件,步骤包括:

7.根据权利要求1~5中任意一项所述的防高可用切换时读写异常的nfs服务端控制方法,其特征在于,当完成客户端的文件或目录操作时,如果客户端读文件则同时读主文件系统、备文件系统中的相同文件,步骤包括:

8.根据权利要求1~5中任意一项所述的防高可用切换时读写异常的nfs服务端控制方法,其特征在于,当完成客户端的文件或目录操作时,如果客户端关闭文件则同时关闭主备文件系统中的相同文件,步骤包括:

9.根据权利要求1~5中任意一项所述的防高可用切换时读写异常的nfs服务端控制方法,其特征在于,还包括当客户端接收到主文件系统或备文件系统不同的错误响应时,根据错误码和错误码响应的次数判断主文件系统、备文件系统是否处于异常状态,若判断到处于异常状态,停止读写请求的发送;和/或在客户端空闲无读写操作时,客户端定时向主文件系统、备文件系统发送读写测试请求,根据所述读写测试请求的响应结果判定主文件系统、备文件系统的状态,根据状态判断结果确定是否向主文件系统、备文件系统发送读写请求。

10.一种用于实施权利要求1~9中任意一项所述的防高可用切换时读写异常的nfs服务端控制方法的装置,其特征在于,包括:

...

【技术特征摘要】

1.一种防高可用切换时读写异常的nfs服务端控制方法,其特征在于,步骤包括:

2.根据权利要求1所述的防高可用切换时读写异常的nfs服务端控制方法,其特征在于,配置主文件系统、备文件系统前还包括挂载主文件系统、备文件系统的步骤,包括:

3.根据权利要求1所述的防高可用切换时读写异常的nfs服务端控制方法,其特征在于,所述根据状态判断结果控制启动所述主文件系统和/或备文件系统执行操作包括:

4.根据权利要求1所述的防高可用切换时读写异常的nfs服务端控制方法,其特征在于,当完成客户端的文件或目录操作时,如果在客户端打开文件则同时在主文件系统、备文件系统中打开相同的文件,步骤包括:

5.根据权利要求4所述的防高可用切换时读写异常的nfs服务端控制方法,其特征在于,所述根据主文件系统中文件的文件索引节点inode获取备文件系统中文件的文件索引节点inode和目录项dentry包括:

6.根据权利要求1~5中任意一项所述的防高可用切换时读写异常的nfs服务端控制方法,其特征在于,当完成客户端的文件或目录操作时,如果在客户端写文件则同时在主文件系统和备文件系统中写相同的文件,步骤包括...

【专利技术属性】
技术研发人员:龚亚信郭家勇李庆节胡磊彭琰
申请(专利权)人:湖南国科亿存信息科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1