一种分布式文件系统中文件锁的处理方法、装置及设备与流程

文档序号:13072836阅读:263来源:国知局
一种分布式文件系统中文件锁的处理方法、装置及设备与流程

本发明实施例涉及分布式文件系统技术领域,特别是涉及一种分布式文件系统中文件锁的处理方法、装置、设备及计算机可读存储介质。



背景技术:

对于分布式文件系统来说,为了便于客户端访问,会通过nas(networkattachedstorage,网络附属存储)协议共享出导出目录,然后客户端通过nas协议挂载到文件系统上,进而对文件系统进行访问和操作,对于多客户端访问时,就会涉及并发访问的逻辑处理。文件锁是一种常用的、用来保证多客户端并发访问的方式,文件锁分为阻塞锁和非阻塞锁,对于非阻塞锁,当nas客户端发起非阻塞锁的请求,如果nas服务端判断已经授权的锁中与该锁互斥,则会返回失败给客户端,否则返回成功给nas客户端。而对于阻塞锁,如果nas服务端发现已经授权的锁与该锁互斥,则会阻塞处理该锁请求的线程,并且该线程会一直被阻塞,直至互斥的锁被释放掉。如果nas客户端发起的多个阻塞锁请求都有互斥,则会导致很多线程被卡住,由于现有技术中nas服务端用来处理锁请求的线程是固定的,所以多线程的阻塞会影响对其他请求的处理效率,从而影响系统的稳定性。

因此,如何提供一种解决上述技术问题的分布式文件系统中文件锁的处理方法、装置、设备及计算机可读存储介质成为本领域的技术人员目前需要解决的问题。



技术实现要素:

本发明实施例的目的是提供一种分布式文件系统中文件锁的处理方法、装置、设备及计算机可读存储介质,在使用过程中避免了多个阻塞锁请求都存在互斥时占用nsa服务端中原有线程的问题,从而提高了锁请求及其他请求的处理速度,提高了系统的稳定性。

为解决上述技术问题,本发明实施例提供了一种分布式文件系统中文件锁的处理方法,包括:

接受nas客户端发送的锁请求;

判断所述锁请求的类型是否为阻塞锁请求,如果是,则将所述阻塞锁请求添加至锁请求队列中;

通过预先建立的锁处理线程组判断所述锁请求队列是否为空,如果否,则利用所述锁处理线程组、按照预设顺序从所述锁队列中获取相应的阻塞锁请求,并将获取的阻塞锁请求发送至文件系统。

可选的,还包括:

接收所述文件系统返回的响应信息,并将所述响应信息返回至所述nas客户端。

可选的,还包括:

依据所述响应信息对文件锁列表中相应锁的状态信息进行更新。

可选的,所述将所述阻塞锁请求添加至锁请求队列中之后还包括:

将与所述阻塞锁请求对应的阻塞状态码返回至所述nas客户端。

本发明实施例相应的提供了一种分布式文件系统中文件锁的处理装置,包括:

接收模块,用于接受nas客户端发送的锁请求;

第一判断模块,用于判断所述锁请求的类型是否为阻塞锁请求,如果是,则触发添加模块;

所述添加模块,用于将所述阻塞锁请求添加至锁请求队列中;

第二判断模块,用于通过预先建立的锁处理线程组判断所述锁请求队列是否为空,如果否,则触发发送模块;

所述发送模块,用于利用所述锁处理线程组、按照预设顺序从所述锁队列中获取相应的阻塞锁请求,并将获取的阻塞锁请求发送至文件系统。

可选的,还包括返回模块,用于接收所述文件系统返回的响应信息,并将所述响应信息返回至所述nas客户端。

可选的,还包括更新模块,用于依据所述响应信息对文件锁列表中的相应锁的状态信息进行更新。

本发明实施例提供了一种分布式文件系统中文件锁的处理设备,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现如上述所述分布式文件系统中文件锁的处理方法的步骤。

本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述所述分布式文件系统中文件锁的处理方法的步骤。

本发明实施例提供了一种分布式文件系统中文件锁的处理方法、装置、设备及计算机可读存储介质,包括接受nas客户端发送的锁请求;判断锁请求的类型是否为阻塞锁请求,如果是,则将阻塞锁请求添加至锁请求队列中;通过预先建立的锁处理线程组判断锁请求队列是否为空,如果否,则利用锁处理线程组、按照预设顺序从锁队列中获取相应的阻塞锁请求,并将获取的阻塞锁请求发送至文件系统。

本发明实施例中的nsa服务端通过预先设置的锁处理线程组和锁请求队列来专门处理阻塞锁请求,当nas客户端发送的锁请求为阻塞锁请求时,将该阻塞锁请求添加至锁请求队列中,并且当锁请求队列不为空时,锁处理线程组从锁请求队列中按照预设顺序获取相应的阻塞锁请求,并将其发送至文件系统中。本发明实施例在使用过程中,避免了多个阻塞锁请求都存在互斥时占用nsa服务端中原有线程的问题,从而提高了锁请求及其他请求的处理速度,提高了系统的稳定性。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对现有技术和实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种分布式文件系统中文件锁的处理方法的流程示意图;

图2为本发明实施例提供的一种分布式文件系统中文件锁的处理装置的结构示意图。

具体实施方式

本发明实施例提供了一种分布式文件系统中文件锁的处理方法、装置、设备及计算机可读存储介质,在使用过程中避免了多个阻塞锁请求都存在互斥时占用nsa服务端中原有线程的问题,从而提高了锁请求及其他请求的处理速度,提高了系统的稳定性。

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

请参照图1,图1为本发明实施例提供的一种分布式文件系统中文件锁的处理方法的流程示意图。

该方法包括:

s11:接受nas客户端发送的锁请求;

s12:判断锁请求的类型是否为阻塞锁请求,如果是,则进入s13;

s13:将阻塞锁请求添加至锁请求队列中;

s14:通过预先建立的锁处理线程组判断锁请求队列是否为空,如果否,则进入s15;

s15:利用锁处理线程组、按照预设顺序从锁队列中获取相应的阻塞锁请求,并将获取的阻塞锁请求发送至文件系统。

需要说明的是,在nas服务端的固有线程之外再预先建立一个锁处理线程组及锁请求队列,该锁处理线程组中可以有预设数量个锁处理线程。在nas服务端接受到nas客户端发送的锁请求后,判断该锁请求的类型是否为阻塞锁请求,当该锁请求是阻塞锁请求时,将该锁请求添加到预先建立的锁请求队列中,当该锁请求的类型为非阻塞锁请求时,则按照正常流程进行处理。

预先建立的锁处理线程组可以每个预设时间间隔对锁请求队列进行一次检测,判断锁请求队列是否为空,当锁请求队列不为空时,说明该锁请求队列中添加了待处理的阻塞锁请求,此时,锁处理线程组即可从锁请求队列中按照先后顺序对各个阻塞锁请求进行处理,具体的,锁处理线程组可以按照先后顺序从锁请求队列中获取最先添加至锁请求队列中的阻塞锁请求,并将该阻塞锁请求通过空闲的锁处理线程发送至文件系统等待响应,然后再获取下一个阻塞锁请求,并依旧通过空闲的锁处理线程发送至文件系统等待响应,如此逐个对锁请求队列中的阻塞锁请求进行处理,直至锁请求队列中的阻塞锁请求处理完毕为止。

还需要说明的是,本发明实施例中的s12和s14在执行过程中没有先后顺序,s14中锁处理线程组可以实时对锁请求队列进行检测,也可以周期性的对锁请求队列进行检测,具体不限。

进一步的,该方法还包括:

接收文件系统返回的响应信息,并将响应信息返回至nas客户端。

需要说明的是,对于多个nas客户端,响应消息返回至相应的nas客户端。

具体的,在锁处理线程组将所获取的阻塞锁请求发送至文件系统请求调用相应的加锁接口,文件系统依据该阻塞锁请求的请求信息,例如文件名称、文件长度及锁类型确定相应的加锁接口,当该加锁接口空闲时,即可通过该加锁接口进行加锁,文件系统将加锁的响应信息返回至发送该阻塞锁请求的锁处理线程组,该锁处理线程组在接收到响应信息后,将该响应信息返回至nas客户端。

需要说明的是,nas客户端可以为多个,当nas客户端为多个时,锁处理线程组将响应消息返回至相应的nas客户端。

更进一步的,该方法还包括:

依据响应信息对文件锁列表中相应锁的状态信息进行更新。

还需要说明的是,在锁处理线程组接收到文件系统返回的响应信息后,根据响应信息将文件列表中与相应文件锁对应的状态进行更新,例如更新为文件已加锁等信息。

可选的,将阻塞锁请求添加至锁请求队列中之后还包括:

将与阻塞锁请求对应的阻塞状态码返回至nas客户端。

具体的,nas服务端在将接收到的阻塞锁请求添加至锁请求对流中后,还可以向nas客户端返回该锁请求的阻塞状态码,以便nas客户端对相应的阻塞锁请求的状态进行了解。

本发明实施例提供了一种分布式文件系统中文件锁的处理方法,包括接受nas客户端发送的锁请求;判断锁请求的类型是否为阻塞锁请求,如果是,则将阻塞锁请求添加至锁请求队列中;通过预先建立的锁处理线程组判断锁请求队列是否为空,如果否,则利用锁处理线程组、按照预设顺序从锁队列中获取相应的阻塞锁请求,并将获取的阻塞锁请求发送至文件系统。

本发明实施例中的nsa服务端通过预先设置的锁处理线程组和锁请求队列来专门处理阻塞锁请求,当nas客户端发送的锁请求为阻塞锁请求时,将该阻塞锁请求添加至锁请求队列中,并且当锁请求队列不为空时,锁处理线程组从锁请求队列中按照预设顺序获取相应的阻塞锁请求,并将其发送至文件系统中。本发明实施例在使用过程中,避免了多个阻塞锁请求都存在互斥时占用nsa服务端中原有线程的问题,从而提高了锁请求及其他请求的处理速度,提高了系统的稳定性。

相应的本发明实施例还公开了一种分布式文件系统中文件锁的处理装置,具体请参照图2,图2为本发明实施例提供的一种分布式文件系统中文件锁的处理装置的结构示意图。在上述实施例的基础上:

该装置包括:

接收模块1,用于接受nas客户端发送的锁请求;

第一判断模块2,用于判断锁请求的类型是否为阻塞锁请求,如果是,则触发添加模块3;

添加模块3,用于将阻塞锁请求添加至锁请求队列中;

第二判断模块4,用于通过预先建立的锁处理线程组判断锁请求队列是否为空,如果否,则触发发送模块5;

发送模块5,用于利用锁处理线程组、按照预设顺序从锁队列中获取相应的阻塞锁请求,并将获取的阻塞锁请求发送至文件系统。

可选的,还包括返回模块,用于接收文件系统返回的响应信息,并将响应信息返回至nas客户端。

可选的,还包括更新模块,用于依据响应信息对文件锁列表中的相应锁的状态信息进行更新。

本发明实施例中的nsa服务端通过预先设置的锁处理线程组和锁请求队列来专门处理阻塞锁请求,当nas客户端发送的锁请求为阻塞锁请求时,将该阻塞锁请求添加至锁请求队列中,并且当锁请求队列不为空时,锁处理线程组从锁请求队列中按照预设顺序获取相应的阻塞锁请求,并将其发送至文件系统中。本发明实施例在使用过程中,避免了多个阻塞锁请求都存在互斥时占用nsa服务端中原有线程的问题,从而提高了锁请求及其他请求的处理速度,提高了系统的稳定性。

另外,对于本发明实施例中所涉及到的分布式文件系统中文件锁的处理方法的具体介绍请参照上述方法实施例,本申请在此不再赘述。

本发明实施例提供了一种分布式文件系统中文件锁的处理设备,包括:

存储器,用于存储计算机程序;

处理器,用于执行计算机程序时实现如上述分布式文件系统中文件锁的处理方法的步骤。

本发明实施例提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述分布式文件系统中文件锁的处理方法的步骤。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其他形式的存储介质中。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其他实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1