CN115951844A - 分布式文件系统的文件锁管理方法、设备及介质 - Google Patents
分布式文件系统的文件锁管理方法、设备及介质 Download PDFInfo
- Publication number
- CN115951844A CN115951844A CN202310232841.4A CN202310232841A CN115951844A CN 115951844 A CN115951844 A CN 115951844A CN 202310232841 A CN202310232841 A CN 202310232841A CN 115951844 A CN115951844 A CN 115951844A
- Authority
- CN
- China
- Prior art keywords
- file
- lock
- file lock
- write operation
- current
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/176—Support for shared access to files; File sharing support
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种分布式文件系统的文件锁管理方法、设备及介质,该方法包括:获取与多个用户各自对应的当前读写操作请求;针对每个所述当前读写操作请求,基于读写操作请求获取对应的字节级粒度的文件锁;文件锁包括目标文件范围;将文件锁发送至与当前读写操作请求对应的当前客户端,以便多个用户基于各自的文件锁对相应的文件进行读写操作,可以实现不同用户对同一个文件不同位置同时写数据,从而提高IO性能。
Description
技术领域
本发明实施例涉及分布式存储技术领域,特别是涉及一种分布式文件系统的文件锁管理方法、电子设备及计算机可读存储介质。
背景技术
分布式存储文件系统需要兼容POSIX(Portable Operating System Interface,可移植操作系统接口通用文件系统接口)协议,而POSIX要求文件系统的读写操作必须满足数据一致性和原子性。满足数据一致性和原子性的通用机制是对文件加锁,当分布式存储客户端某进程在更新文件内数据时,文件锁机制能防止多个进程同时更新文件从而导致数据丢失,或者防止文件内容在未更新完毕时被读取并引发后续问题;对于网络共享文件而言,亦可以防止不同的进程对同一个文件进行同时读写操作将极有可能出现读写错误、数据混乱等情况。
分布式文件系统一般都需要使用缓存技术来加快数据访问的性能,其原理为将最近访问的文件数据存储在缓存中,下次访问相同的文件数据时则不需要再访问低速的磁盘,直接从缓冲中得到,从而获得较高的 I/O(Input/Output,输入和输出)速度。在基于客户端服务器C/S(Client/Server,客户机和服务器)模型的分布式文件系统中,缓存会使并发IO一致性、原子性问题更加突出,需要为分布式存储系统中所有的文件系统客户端提供一个一致性的视图,解决多客户端并发访问控制和缓存一致性、原子性的问题。
当前,分布式文件系统中文件锁用于保证分布式客户端缓存的一致性,文件锁也是一种互斥机制,可确保多个进程以安全的方式读取/写入同一个文件。之所以要对这些多进程业务进行控制,是因为这些进程的调度是不可预期的,这种时序上的不可预期会对同一个文件资源产生竞争性访问,从而带来预期外的结果。因此,在高并发工作负载下进行并行写入时,文件锁会导致性能严重下降。
比较典型的分布式文件系统客户端CIFS(Common Internet File System,用于网络设备间文件共享)实现了一种oplock的文件锁机制,也称为机会锁机制来保证客户端缓存一致性,锁的粒度以文件为单位,它支持对文件单写者多读者的并发访问。很多分布式文件系统使用的锁协议都与CIFS类似,它们只提供对文件的粗粒度的并发访问,任何时候只能允许一个客户端向文件写数据,即使其他客户端写入同一个文件的不同数据部分,导致IO性能受到影响。
鉴于此,如何提供一种解决上述技术问题的分布式文件系统的文件锁管理方法、电子设备及计算机可读存储介质成为本领域技术人员需要解决的问题。
发明内容
本发明实施例的目的是提供一种分布式文件系统的文件锁管理方法、电子设备及计算机可读存储介质,在使用过程中能够实现不同用户对同一个文件不同位置同时写数据,提高IO性能。
为解决上述技术问题,本发明实施例提供了一种分布式文件系统的文件锁管理方法,应用于服务端,包括:
获取与多个用户各自对应的当前读写操作请求;
针对每个所述当前读写操作请求,基于所述读写操作请求获取对应的字节级粒度的文件锁;所述文件锁包括目标文件范围;
将所述文件锁发送至与所述当前读写操作请求对应的当前客户端。
可选的,在所述将所述文件锁发送至与所述当前读写操作请求对应的当前客户端之前,还包括:
在所述当前读写操作请求为写操作请求的情况下,判断所述当前读写操作请求是否与已授权客户端的读写操作请求发生冲突,若是,则撤销所述已授权客户端对应的已授权文件锁,并在撤销完成后执行将所述文件锁发送至与所述当前读写操作请求对应的当前客户端的步骤,若否,则直接执行将所述文件锁发送至与所述当前读写操作请求对应的当前客户端的步骤。
可选的,所述撤销所述已授权客户端对应的已授权文件锁,包括:
向所述已授权客户端发送锁冲突撤销通知;
接收所述已授权客户端在数据下刷之前返回的锁冲突撤销响应消息;
将所述已授权客户端的已授权文件锁撤销。
可选的,所述将所述已授权客户端的已授权文件锁撤销,包括:
将所述已授权客户端的已授权文件锁的状态标识更改为撤销状态。
可选的,所述将所述文件锁发送至与所述当前读写操作请求对应的当前客户端,包括:
对所述文件锁添加状态标识;
将携带有状态标识的文件锁发送至与所述当前读写操作请求对应的当前客户端。
可选的,所述状态标识为重用标识或撤销标识。
可选的,在所述将所述文件锁发送至与所述当前读写操作请求对应的当前客户端之前,还包括:
判断所述当前读写操作请求与请求队列中的其他读写操作请求是否冲突,若冲突,则向所述当前客户端返回撤销锁请求通知。
可选的,所述基于所述当前读写操作请求获取对应的字节级粒度的文件锁,包括:
基于所述当前读写操作请求的请求类型及预设的选择规则,确定文件锁类型;
基于所述文件锁类型获取与所述当前读写操作请求对应的字节级粒度的文件锁。
可选的,所述文件锁类型包括保护写锁、阻塞写锁、非阻塞写锁和保护读锁。
可选的,所述基于所述当前读写操作请求的请求类型及预设的选择规则,确定文件锁类型,包括:
在所述当前读写操作请求的请求类型为读取操作的情况下,所述文件锁类型为保护读锁;
在所述当前读写操作请求的请求类型为涉及隐式读取的写操作的情况下,所述文件锁类型为保护写锁;
在所述当前读写操作请求的请求类型为跨多个资源的原子性写入操作的情况下,所述文件锁类型为阻塞写锁;
在所述当前读写操作请求的请求类型为其他类型的情况下,所述文件锁类型为非阻塞写锁。
可选的,不同文件锁类型的限制级别不同。
可选的,在所述基于所述当前读写操作请求的请求类型及预设的选择规则,确定文件锁类型之后,还包括:
判断所述文件锁类型与所述当前客户端对应用户的已授权文件锁的文件锁类型是否相冲突,若是,则将所述文件锁类型升级为限制级别更高的文件锁类型。
可选的,所述将所述文件锁发送至与所述当前读写操作请求对应的当前客户端,包括:
将与升级后的文件锁类型对应的新文件锁发送至所述当前客户端,以便所述当前客户端将所述已授权文件锁和所述新文件锁合并。
可选的,在所述将所述文件锁发送至与所述当前读写操作请求对应的当前客户端之前,还包括:
在所述文件锁的文件锁类型不是非阻塞写锁、且存在相冲突的已授权客户端的情况下,对所述相冲突的已授权客户端的已授权文件锁进行降级处理。
可选的,在所述将所述文件锁发送至与所述当前读写操作请求对应的当前客户端之前,包括:
对所述文件锁添加序列号。
可选的,所述对所述文件锁添加序列号,包括:
获取与目标文件对应的锁资源的当前序列号;
在所述当前读写操作请求为读请求操作的情况下,将所述当前序列号分配给所述文件锁;
在所述当前读写操作请求为写请求操作的情况下,对所述当前序列号进行加一操作得到新的序列号,并将所述新的序列号分配给所述文件锁。
可选的,在所述将所述文件锁发送至与所述当前读写操作请求对应的当前客户端之后,还包括:
将所述文件锁添加至所述当前客户端的缓存中。
本发明实施例还提供了一种分布式文件系统的文件锁管理方法,应用于客户端,包括:
响应于多个用户的当前读写操作;
生成与每个所述当前读写操作对应的当前读写操作请求;
将与多个所述用户各自对应的当前读写操作请求发送至服务端,以便服务端针对每个所述当前读写操作请求获取对应的以字节级粒度的文件锁;所述文件锁包括目标文件范围;
接收所述服务端发送的与每个所述用户各自对应的文件锁。
本发明实施例还提供了一种分布式文件系统的文件锁管理装置,应用于服务端,包括:
第一获取模块,用于获取与多个用户各自对应的当前读写操作请求;
第二获取模块,用于针对每个所述当前读写操作请求,基于所述读写操作请求获取对应的字节级粒度的文件锁;所述文件锁包括目标文件范围;
第一发送模块,用于将所述文件锁发送至与所述当前读写操作请求对应的当前客户端。
本发明实施例还提供了一种分布式文件系统的文件锁管理装置,应用于客户端,包括:
响应模块,用于响应于多个用户的当前读写操作;
生成模块,用于生成与每个所述当前读写操作对应的当前读写操作请求;
第二发送模块,用于将与多个所述用户各自对应的当前读写操作请求发送至服务端,以便服务端针对每个所述当前读写操作请求获取对应的以字节级粒度的文件锁;所述文件锁包括目标文件范围;
接收模块,用于接收所述服务端发送的与每个所述用户各自对应的文件锁。
本发明实施例还提供了一种电子设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上述所述分布式文件系统的文件锁管理方法的步骤。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述所述分布式文件系统的文件锁管理方法的步骤。
本发明实施例中提供了一种分布式文件系统的文件锁管理方法、电子设备及计算机可读存储介质,该方法包括:获取与多个用户各自对应的当前读写操作请求;针对每个所述当前读写操作请求,基于读写操作请求获取对应的字节级粒度的文件锁;文件锁包括目标文件范围;将文件锁发送至与当前读写操作请求对应的当前客户端。
可见,本发明实施例中在多个用户对同一个文件的不同部分进行读写操作时,服务端获取到与多个用户各自对应的当前读写操起请求后,针对每个当前读写操作请求,可以基于该当前读写操作请求确定出目标文件范围,然后获取到包括目标文件范围的字节级粒度的文件锁,并将该文件锁发送至对应的当前客户端,以便多个用户基于各自的文件锁对相应的文件进行读写操作,可以实现不同用户对同一个文件不同位置同时写数据,从而提高IO性能。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对现有技术和实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种应用分布式文件系统的文件锁管理方法的系统架构示意图;
图2为本发明实施例提供的一种分布式文件系统的文件锁管理方法的流程示意图;
图3为本发明实施例提供的一种分布式文件系统的文件锁管理方法的应用场景示意图;
图4为本发明中撤销文件锁过程与现有技术中撤销文件锁过程对比示意图;
图5为本发明实施例提供的一种文件锁类型选择过程示意图;
图6为本发明实施例提供的一种文件锁类型限制级别及升降级示意图;
图7为本发明实施例提供的一种文件锁降限制级别的流程示意图;
图8为本发明实施例提供的另一种分布式文件系统的文件锁管理方法的流程示意图;
图9为本发明实施例提供的一种分布式文件系统的文件锁管理装置的结构示意图;
图10为本发明实施例提供的另一种分布式文件系统的文件锁管理装置的结构示意图;
图11为本发明实施例提供的一种电子设备的结构示意图;
图12为本发明实施例提供的一种计算机可读存储介质的结构示意图。
具体实施方式
本发明实施例提供了一种分布式文件系统的文件锁管理方法、电子设备及计算机可读存储介质,在使用过程中能够实现不同用户对同一个文件不同位置同时写数据,提高IO性能。
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,目前分布式存储文件系统均通过文件锁确保客户端缓存一致性和原子性,分布式文件锁管理技术中典型的方式是:分布式文件系统客户端CIFS实现了一种oplock的文件锁机制,也称为机会锁机制来保证客户端缓存一致性,锁的粒度以文件为单位,它支持对文件单写者多读者的并发访问。很多分布式文件系统使用的锁协议都与CIFS类似,它们只提供对文件的粗粒度的并发访问,任何时候只能允许一个客户端向文件写数据,即使其他客户端写入同一个文件的不同数据部分。分布式存储服务器一般授予单写者互斥锁来维护客户端缓冲的一致性,此时客户端可以读写并缓冲脏数据。当服务器撤销授权的互斥锁时,客户端会刷新并废除缓存;当有多个客户端同时访问某个文件时,如果都为读访问,则服务器可以授予客户端共享读锁,各个客户可以缓存读取的数据,但不能脏写数据;如果存在写请求,则服务器需要撤销所有被访问文件上的锁,清除客户端缓冲,文件以Direct I/O 的模式进行,所有的数据都要需要下刷到存储服务器底层中,当大面积的缓存失效需要下刷到底层磁盘该过程会造成缓存雪崩,存储性能会骤降。值得注意的是,写锁通常是被非自愿地释放的,锁持有者会尽可能地长时间占有锁,直到其他客户端再发起一个请求与之冲突的锁,然后再进行下一步处理,该过程是影响存储IO性能的关键。
本申请针对上述典型分布式存储文件系统的IO模型,为了解决在高并发IO负载下进行并行写入时文件锁竞争、锁冲突导致的性能下降问题,保证分布式客户端缓存的一致性,本发明提出一种分布式文件系统的文件锁管理方法,在分布式存储文件系统动态接口库API(Application Program Interface,应用程序接口)中,设计以字节级粒度的分布式文件锁管理器LM(Lock Manager),该分布式文件锁管理器LM在获取到当前读写操作请求后,可以基于该当前读写操作请求确定出目标文件范围,然后获取到包括目标文件范围的字节级粒度的文件锁,并将该文件锁发送至对应的当前客户端,由于获取的文件锁是字节级粒度的,因此可以满足不同客户端对同一个文件不同位置同时写数据,从而提高IO性能。
需要说明的是,本申请提供的分布式文件系统的文件锁管理方法的一种应用场景的系统架构如图1所示,其中,最上层使用外部分布式文件系统,如用NFS(Network FileSystem,网络文件系统)来提供分布式客户端访问存储数据服务,将客户端应用IO 转发软件的请求,经过RPC(Remote Procedure Call Protocol,远程过程调用协议)远程过程调用转发到NFS服务端,然后调用请求接口,文件锁处理由本发明Libfs-LM(也即分布式文件锁管理器)模块进行管理,同时维护文件锁和数据缓存,满足数据的一致性和原子性操作流程。Libfs-LM模块提供了类似POSIX的API,可以动态链接到应用程序中以供直接使用,作为IO转发软件为分布式存储底层数据处理模块使用,不同模块的低耦合提高了系统兼容性降低了开发复杂度。其中,图1中的VFS(virtual File System)层为虚拟文件系统层,DATA为数据,cache为缓存。
下面对本申请提供的分布式文件系统的文件锁管理方法进行详细说明与介绍,具体请参照图2,图2为本发明实施例提供的一种分布式文件系统的文件锁管理方法的流程示意图。该方法包括:
S110:获取与多个用户各自对应的当前读写操作请求;
需要说明的是,在客户端需要进行IO操作时发起读写操作请求,具体的,本发明实施例中可以是一个客户端响应多个用户各自的读写操作,也可以是多个客户端分别响应一个或多个用户的读写操作,客户端在响应用户的读写操作后生成与对应的读写操作请求,将该各个读写操作请求发送至服务端,服务端中的文件锁管理器在获取到与多个用户各自对应的当前读写操作请求后执行对应的文件锁管理工作。也就是说,多个用户各自对应的当前读写操作请求可以是由同一个客户端发送至服务端的,也可以是不同的客户端发送至服务端的,具体本发明实施例不做特殊限定。
S120:针对每个当前读写操作请求,基于读写操作请求获取对应的字节级粒度的文件锁;文件锁包括目标文件范围;
可以理解的是,本发明实施例中以一个当前读写操起请求为例进行详细说明:具体的,在获取到读写操作请求后,基于该读写操作请求中携带的目标文件信息、偏移量信息和长度信息,可以确定出该读写操作请求针对的目标文件范围,根据该目标文件范围可以确定目标文件的目标范围,从而可以获取包含该目标文件范围的文件锁,该文件锁是以字节级粒度的文件锁,也即可以对文件中的一部分内容进行锁定以便客户端进行IO操作,而不是对整个文件进行锁定。
S130:将文件锁发送至与当前读写操作请求对应的当前客户端。
具体的,在获取到对应的文件锁后,将该文件锁发送至发起当前读写操作请求的当前客户端,以便当前客户的对应用户通过该文件锁对目标文件的目标文件范围进行加锁后进行后续IO处理。
当然,在实际应用中多个客户端均可以向服务端发送当前读写操作请求,具体应用场景如图3所示,针对每个客户端均执行上述S110至S130的步骤。
可见,本发明实施例中在多个用户对同一个文件的不同部分进行读写操作时,服务端获取到与多个用户各自对应的当前读写操起请求后,针对每个当前读写操作请求,可以基于该当前读写操作请求确定出目标文件范围,然后获取到包括目标文件范围的字节级粒度的文件锁,并将该文件锁发送至对应的当前客户端,以便多个用户基于各自的文件锁对同一个文件进行读写操作,可以实现不同用户对同一个文件不同位置同时写数据,从而提高IO性能。
需要说明的是,在将文件锁发送至与当前读写操作请求对应的当前客户端之后,还可以将文件锁添加至当前客户端的缓存中与相应的用户对应。另外,本发明实施例考虑到多并发数据一致性安全问题,如:一种情况是,一个客户端锁处理过程中数据下刷尚未完成,其他写请求就对该文件进行写操作,导致客户端缓存中的数据被修改。另一种情况是,多个客户端写请求下刷数据过程可能会无序地到达分布式存储底层数据服务器,从而破坏写的序列化。针对这些问题,本发明实施例对技术方案做了进一步说明和优化,具体如下:
进一步的,在上述S130将文件锁发送至与当前读写操作请求对应的当前客户端之前,该方法还可以包括:
对文件锁添加序列号。
需要说明的是,本发明实施例中可以利用排序机制来解决上述问题,具体可以在将文件锁发送至当前客户端之前,对该文件锁添加序列号,通过序列号来确定每个文件锁的顺序。
具体的,在对文件锁添加序列号时,可以获取与目标文件对应的锁资源的当前序列号;在当前读写操作请求为读请求操作的情况下,将当前序列号分配给文件锁;在当前读写操作请求为写请求操作的情况下,对当前序列号进行加一操作得到新的序列号,并将新的序列号分配给文件锁。
可以理解的是,针对每个锁资源可以通过单调递增的序列号进行维护,当需要授权文件锁时,锁服务器将锁资源的当前序列号分配给该文件锁。在要授权的文件锁是写锁的情况,锁服务器将锁资源的序列号在当前序列号的基础上增加一,从而如可以使锁资源的所有已授权写锁都可以按其唯一的序列号排序。另外,还可以采用已授权写锁的序列号对将要写入的数据进行标记,从而在将锁添加到客户端缓存时,可以使用序列号来区分哪些数据是最新的,以便解决上述第一种情况存在的问题,也即,客户端可以根据序列号来确定出最新数据。
还需要说明的是,在将数据下刷到分布式存储数据服务器时,下刷的数据也携带对应文件锁的序列号,分布式存储数据服务器保留一个数据块缓存以跟踪其处理的数据的序列号,从而可以利用序列号,服务器将数据正确写入存储底层设备,从而解决第二种情况,避免破坏写的序列化,以保证数据文件的正确性。
需要说明的是,分布式存储IO处理通常可以分为两个阶段,读阶段和写阶段,混合读写较少。锁冲突主要在并行写入阶段,写锁的大量冲突限制了写入性能。针对该技术问题,本发明实施例对技术方案做了进一步说明和优化,具体如下:
进一步的,在上述S130中将文件锁发送至与当前读写操作请求对应的当前客户端之前,该方法还可以包括:
在当前读写操作请求为写操作请求的情况下,判断当前读写操作请求是否与已授权客户端的读写操作请求发生冲突,若是,则撤销已授权客户端对应的已授权文件锁,并在撤销完成后执行将文件锁发送至与当前读写操作请求对应的当前客户端的步骤,若否,则直接执行将文件锁发送至与当前读写操作请求对应的当前客户端的步骤。
需要说明的是,可以根据当前读写操作请求的类型,确定该当前读写操作请求是否为写操作请求,在确定是写操作请求的情况下,进一步判断当前读写操作请求与已授权客户端的读写操作请求是否发生冲突,也即判断当前客户端的锁请求与已授权客户端的锁请求是否发生了冲突,是否存在已授权客户端正在对目标文件的目标范围进行IO写操作,若存在发生冲突的已授权客户端,则将已授权客户端对应的已授权文件锁撤销,并且在撤销完成后将与当前客户端对应的文件锁发送至该当前客户端,以便使当前客户端能够对目标文件范围进行IO写操作。还需要说明的是,本发明实施例中的已授权客户端可以为当前客户端的其他用户,也可以为其他客户端。也即,在与当前读写操作请求产生冲突的其他读写操作请求也是由该当前客户端的其他已授权用户发起的情况下,则已授权客户端为该当前客户端;在与当前读写操作请求发生冲突的其他读写操作请求是由其他客户端的已授权用户发起的情况下,已授权客户端为该其他客户端。
更进一步的,上述撤销已授权客户端对应的已授权文件锁的过程,具体可以包括:
向已授权客户端发送锁冲突撤销通知;
接收已授权客户端在数据下刷之前返回的锁冲突撤销响应消息;
将已授权客户端的已授权文件锁撤销。
需要说明的是,在分布式存储文件系统中,针对已授权文件锁的已授权客户端,通常将已授权文件锁缓存至客户端中以供将来使用,当其他用户的读写操作请求相同的锁时会发生文件锁冲突,现有技术中解决文件锁冲突方案是回收缓存中的文件锁,具体的分布式存储服务端向持有锁的客户端发送锁撤销消息,客户端将缓存脏数据全部刷新到分布式存储服务端后,才会释放锁,释放后服务端才能够回收锁,只有当冲突的锁被完全回收时,才能授予新锁,具体请参照图3中的现有技术中授权锁的部分,可见整个过程时延较长,对于并行写入,等待锁冲突和完成下刷到存储数据服务器耗时将严重积压,导致存储IO性能下降。
鉴于此,本发明实施例中为了进一步提升IO性能,提出可以主动撤销已授权客户端对应用户的已授权文件锁,也即可以提前撤销锁,具体的当存在发生冲突的已授权客户端时,向该已授权客户端发送锁冲突撤销通知,告知已授权客户端其对应的已授权文件锁与后续用户所请求的文件锁发生冲突,需要撤销该已授权文件锁,客户端接收到锁冲突撤销通知后,及时响应该锁冲突撤销通知,具体可以在数据下刷之前向服务端返回锁冲突撤销响应信息,服务端在接收到客户端返回的锁冲突撤销响应信息后立即将已授权客户端的已授权文件锁撤销,无需等待数据下刷完成后在进行回收,并且在撤销完成后将获取到的与当前客户端对应的文件锁授权给当前客户端,实现提前授权锁,减少冲突过程中的时延,利于提升存储IO性能。
例如图4所示,客户端1在IO处理过程中并对文件已经加锁,客户端2发起对该文件相同位置的锁请求,基于上述操作本发明可以提前授予写锁,具体的,分布式存储系统锁服务器向客户端1发送锁冲突撤销通知,并在收到来自客户端1的锁冲突撤销响应消息后,对客户端1的的写锁LA撤销,分布式存储系统锁服务器直接将新的写锁LB授予客户端2,可见与现有技术中的方案相比大大缩短了锁取消过程所耗时长。
进一步的,上述将已授权客户端的已授权文件锁撤销的过程,具体可以包括:
将已授权客户端的已授权文件锁的状态标识更改为撤销状态。
需要说明的是,本发明实施例中针对已授权文件锁,设置两种状态,具体可以在为客户端分配文件锁时,可以对文件锁添加对应的状态标识,具体的该状态标识可以包括重用标识GRABT或撤销标识CANCELING,其中,GRABT标识表示锁可以缓存和重用,CANCELING标识表示锁不能重用,在默认情况下已授权文件锁处于GRABT状态,也即默认情况下已授权文件锁的状态标识为GRABT,在存在发生冲突的已授权客户端的已授权文件锁的情况下,当分布式文件锁管理器LM在接收到已授权客户端在数据下刷之前返回的锁冲突撤销响应消息后,将已授权客户端相应用户的已授权文件锁的状态标识更改为撤销状态,从而可以使已授权客户端不再复用该已授权文件锁。
具体的,如图4所示,分布式存储系统锁服务器在收到来自客户端1的锁冲突撤销响应消息后,可以同时将授予客户端1的写锁LA状态更改为CANCELING状态,以使客户端1不会重复使用写锁LA,并将新的写锁LB授予Client2。
进一步的,在上述将文件锁发送至与当前读写操作请求对应的当前客户端的过程,可以包括:
对文件锁添加状态标识;
将携带有状态标识的文件锁发送至与当前读写操作请求对应的当前客户端。
需要说明的是,在获取到与当前读写操作请求对应的文件锁后,对该文件锁添加状态标识,并将携带有状态标识的文件锁发送至对应的当前客户端,其中,状态标识为重用标识GRABT或撤销标识CANCELING,具体的,在默认状态下可以为该文件锁添加重用标识GRABT,以告知当前客户端在对应的用户使用该文件锁后如何处理文件锁。其中,在后续确定出该文件锁与其他用户申请的文件锁相冲突时,则可以将该文件锁的状态标识更改为撤销标识CANCELING,从而方便对文件锁的撤销和管理。
可以理解的是,在高并发IO处理过程下,不能忽略锁撤销耗时开销。当来自两个客户端的用户或来自同一个客户端的不同用户的锁冲突请求(LockA、LockB)同时到达分布式存储系统锁服务器时,当前向LockA发送授权回复后,锁服务器发现LockB与LockA冲突,并立即向LockA 发送锁撤销的回调机制,LockB的锁授予必须等待至少一个RTT(Round-TripTime,往返时延),直到LockA的撤销锁回复返回。本发明实施例中可以提前撤销,以消除这种时延,具体的可以授予文件锁锁时,使用状态标识对文件锁进行标记,以告知客户端在使用后如何处理该文件锁,从而进行提取撤销锁。其中,往返时延在计算机网络中它也是一个重要的性能指标,它表示从发送端发送数据开始,到发送端收到来自接收端的确认接收端收到数据后便立即发送确认,总共经历的时延。
进一步的,在上述S130中将文件锁发送至与当前读写操作请求对应的当前客户端之前,该方法还可以包括:
判断当前读写操作请求与请求队列中的其他读写操作请求是否冲突,若冲突,则向所述当前客户端返回撤销锁请求通知。
可以理解的是,在高并发的情况下,读写操作请求对应的锁请求需要进行队列处理,因此,可以从队列中获取当前读写操作请求,并且在将与当前客户端对应的文件锁发送至当前客户端进行授权之前,可以进一步检测要授权的文件锁与队列中的其他读写操作请求对应的锁是否冲突,也即检测当前读写操作请求与请求队列中的其他读写操作请求是否冲突,若冲突,则向当前客户端发送撤销文件锁请求通知,并可以增加授权许可,之后可以安全地授予心锁,无需等待撤销响应返回。
进一步的,上述S120中基于当前读写操作请求获取对应的字节级粒度的文件锁的过程,具体可以包括:
基于当前读写操作请求的请求类型及预设的选择规则,确定文件锁类型;
基于文件锁类型获取与当前读写操作请求对应的字节级粒度的文件锁。
需要说明的是,本发明实施例中可以将文件锁分为多种类型,也即可以分为不同文件所类型的文件锁。具体的,本发明实施例中的文件锁类型包括保护写锁、阻塞写锁、非阻塞写锁和保护读锁。也即,本发明实施例扩展了文件写锁的锁类型,用以保持与POSIX的传统语义,文件写锁的类型包括非阻塞写锁、阻塞写锁和保护写锁。在实际应用中,本申请保留现有技术中读请求的锁模式即共享读锁,共享读锁的持有者可以读取共享文件资源。
具体的,可以根据当前读写操作请求的请求类型及预设的选择规则,可以确定出对应的文件锁类型,然后再基于该文件锁类型获取对应的字节级粒度的文件锁发送至当前客户端进行文件锁授权。
需要说明的是,本发明实施例可以预先对写锁的文件锁类型进行设计,具体如下:
非阻塞写锁:该锁持有者只能写入共享资源,但不允许读取。此外,它不维护写锁的阻塞功能,作用是在高并发IO操作下提供高并行写入性能。
阻塞写锁,保留了写锁冲突时的阻塞功能。
保护写锁,保护写锁与现有技术中的写锁具有相同的语义,保护写锁的持有者可以读写共享资源。
更进一步的,上述基于当前读写操作请求的请求类型及预设的选择规则,确定文件锁类型的过程,具体可以包括:
在当前读写操作请求的请求类型为读取操作的情况下,文件锁类型为保护读锁;
在当前读写操作请求的请求类型为涉及隐式读取的写操作的情况下,文件锁类型为保护写锁;
在当前读写操作请求的请求类型为跨多个资源的原子性写入操作的情况下,文件锁类型为阻塞写锁;
在当前读写操作请求的请求类型为其他类型的情况下,文件锁类型为非阻塞写锁。
需要说明的是,如图5所示的文件锁类型选择规则,基于该选择规则可以为每个读写操作请求选择最佳的文件锁类型。具体的S201:判断当前读写操作请求的请求类型是否为写操作,若不是写操作,则说明是读操作,执行S202,若是写操作,则执行S203;S202:确定出文件所类型为保护读锁;S203:判断当前读写操作请求的请求类型是否为涉及隐式读取的写操作,也即判断是否为分布式存储IO请求中的覆盖写场景,若是涉及隐式读取的写操作,进入S204;若不是涉及隐式读取的写操作,进入S205;S204:确定出文件所类型为保护写锁;S205:判断当前读写操作请求的请求类型是否为跨多个资源的原子性写入操作,若是,则进入S206;若否,在进入S207;S206:确定出文件所类型为阻塞写锁;S207:确定出文件所类型为非阻塞写锁。也即,针对其他情况则选择非阻塞写锁。另外,对于分布式文件系统中常见的数据相关操作,如读、写、覆盖写、追加写等,可以根据该选择规则选择确定性的文件锁类型。
更进一步的,本发明实施例中不同文件锁类型的限制级别不同。具体的,根据文件锁类型的限制级别对文件锁类型进行排序,如图5所示文件锁类型的优先级选择和转换,上层的文件锁类型比下层的文件锁类型限制性高, 保护写锁是本申请写锁中限制级别最大的文件锁类型,可用于支持跨多个文件资源的写入和原子性创建文件的更新操作,而限制最小的写锁非阻塞写锁只能用于单个文件资源中的写入。另一方面,限制级别更高的锁会降低存储底层锁竞争处理效率。例如,保护写锁和阻塞写锁通过串行处理冲突锁的数据下刷操作,而非阻塞写锁可以利用提前授权和提前撤销在高并发IO情况下获得高存储IO性能。因此,选择适当的文件写锁的文件锁类型对分布式存储IO性能至关重要。
进一步的,在基于当前读写操作请求的请求类型及预设的选择规则,确定文件锁类型之后,该方法还可以包括:
判断文件锁类型与当前客户端对应用户的已授权文件锁的文件锁类型是否相冲突,若是,则将文件锁类型升级为限制级别更高的文件锁类型。
需要说明的是,本发明实施例提出可以根据文件锁冲突的情况,进行文件锁类型的升级或降级操作,以便更好地提高IO性能。具体的,在当前客户端的某个用户发起当前读写操作请求之前,当前客户端可能已存在与该用户对应的已授权文件锁正常进行IO处理,因此为了避免冲突,在确定出与当前IO操作类型对应的文件锁类型后,可以进一步判断文件锁类型与当前客户端该用户的已授权文件锁的文件锁类型是否相冲突,若相冲突,则将基于当前读写操作请求及预设的选择规则确定出的文件锁类型进行升级操作,升级为限制级别更高的文件锁类型,从而更好地满足当前客户端对应用户的需求。当然,将与升级后的文件锁类型对应的新文件锁发送至当前客户端后,该当前客户端可以将对应用户的已授权文件锁和新文件锁合并,统一使用新文件锁进行后续IO操作。
具体的,本发明实施例中可以预设确定出锁冲突列表,如表1所示:
表1为锁冲突列表
其中,表1中的第一行为已授权的文件锁类型,第一列为锁请求中的文件锁类型,N/Y 表示锁定请求与处于 GRANT 状态的已授予锁冲突,而与处于CANCELING状态的锁定兼容。
下面本发明实施例对于文件锁类型的限制级别进行升级的情况作进一步说明:
同一客户端的同一用户对同一个条带的共享文件进行写入的锁请求时,根据上述文件锁类型选择规则,写入操作选择非阻塞写锁;当进行读取操作时加保护读锁,此时保护读锁和非阻塞写锁发生冲突,这会导致同一客户端中频繁的锁的撤销操作。本发明实施例采用对文件所类型升优先级(如图6中的实线部分)来解决问题,一旦锁服务器发现锁请求与同一客户端中同一用户的已授权文件锁冲突,它将授予具有限制基板更严格文件所类型的文件锁,锁服务器将文件锁类型从保护读锁升级到保护写锁,并将其授予客户端的该用户,客户端在收到锁授权时,客户端将本地缓存中旧的冲突非阻塞写锁与新授权的保护写锁进行合并,统一使用保护写锁,通过这种方式,避免了由于同一客户端与同一用户对应的读写锁冲突而回收锁造成的耗时,此外,后续的读/写请求也可以重用授予的保护写锁。换句话说,将读锁和写锁用同一个保护写锁来维护操作管理,防止读写锁冲突,提高了存储IO性能。
进一步的,在上述将文件锁发送至与当前读写操作请求对应的当前客户端之前,该方法还可以包括:
在文件锁的文件锁类型不是非阻塞写锁、且存在相冲突的已授权客户端的情况下,对相冲突的已授权客户端的已授权文件锁进行降级处理。
需要说明的是,当文件锁的文件锁类型不是非阻塞写锁、且存在相冲突的已授权客户端的情况下,则需要对相冲突的已授权客户端的已授权文件锁进行降级处理。具体的,根据上述表1所示,文件锁请求无论其是哪种类型都与处于 “ GRANT ”和“CANCELING”状态的已授权阻塞写锁或保护写锁发生冲突。因此如果客户端选择加了阻塞写锁或保护写锁,或者锁已升级阻塞写锁或保护写锁,则会延迟授权,直到释放阻塞写锁或保护写锁。本发明实施例中以两个客户端为例进行说明,具体如图7所示的锁降优先级处理流程图,客户端1和客户端2根据本发明锁的选择规则选择阻塞写锁,由于阻塞写锁的阻塞机制,对于客户端2的阻塞写锁授权应等到客户端1中的数据下刷完成后再进行授权,经过分析,如果客户端1和客户端2不执行读操作请求时,该过程是不必要的。本发明实施例可以使用文件锁类型降级来解决该问题,当客户端开始取消锁时,首先将锁降级到限制最少的锁。如图6所示,客户端1的阻塞写锁解锁后,发现该锁处于 CANCELING 状态,将客户端1的阻塞锁降级为非阻塞写锁,并向锁服务管理器发送降级请求以通知锁降级,之后客户端1继续处理取消锁过程,收到降级的请求后,锁服务管理器将锁更改为非阻塞写锁,然后,提前授权给客户端2的阻塞写锁。因此,锁降级处理能够在并行写操作中降低锁释放带来的高时延。
在上述实施例的基础上,本发明实施例还提供了一种分布式文件系统的文件锁管理方法,应用于客户端,具体请参照图8。该方法包括:
S310:响应于多个用户的当前读写操作;
具体的,对于一个客户端来说,多个用户可以通过该客户端发起读写操作,该客户端可以响应于多个用户的当前读写操作。
S320:生成与每个当前读写操作对应的当前读写操作请求;
具体的,该客户端在响应多个用户的当前读写操作后,生成与各当前读写操作各自对应的当前读写操作请求。
S330:将与多个用户各自对应的当前读写操作请求发送至服务端,以便服务端针对每个当前读写操作请求获取对应的以字节级粒度的文件锁;文件锁包括目标文件范围;
具体的,客户端将与每个用户各自对应的当前读写操作请求发送至服务端,服务端针对每个当前读写操作请求,获取与该当前读写操作请求对应的以字节级粒度的文件锁,并将该文件锁返回至客户端。
S340:接收服务端发送的与每个用户各自对应的文件锁。
具体的,客户端接收服务端返回的与每个当前读写操作请求各自对应的文件锁,以便每个用户使用各自对应的文件锁进行读写操作。
需要说明的是,本发明实施例中通过客户端响应于多个用户的当前读写操作,并生成与每个当前读写操作对应的当前读写操作请求,然后将与多个用户各自对应的当前读写操作请求发送至服务端,服务端针对每个当前读写操作请求获取对应的以字节级粒度的文件锁,并将各文件锁返回至客户端,客户端处的每个用户基于各自对应的文件锁对相应的文件进行读写操作,能够实现不同用户对同一个文件的不同位置同时进行写数据,从而提高IO性能。
在上述实施例的基础上,本发明实施例还提供了一种分布式文件系统的文件锁管理装置,具体请参照图9。包括:
第一获取模块01,用于获取当前读写操作请求;
第二获取模块02,用于基于读写操作请求获取对应的字节级粒度的文件锁;文件锁包括目标文件范围;
发送模块03,用于将文件锁发送至与当前读写操作请求对应的当前客户端。
需要说明的是,本发明实施例中提供的分布式文件系统的文件锁管理装置具有与上述实施例中所提供的分布式文件系统的文件锁管理方法相同的有益效果,并且对于本发明实施例中所涉及到的分布式文件系统的文件锁管理装置的具体介绍请参照上述实施例,本发明在此不再赘述。
本发明实施例还提供了一种分布式文件系统的文件锁管理装置,应用于客户端,具体请参照图10,该装置包括:
响应模块11,用于响应于多个用户的当前读写操作;
生成模块12,用于生成与每个所述当前读写操作对应的当前读写操作请求;
第二发送模块13,用于将与多个所述用户各自对应的当前读写操作请求发送至服务端,以便服务端针对每个所述当前读写操作请求获取对应的以字节级粒度的文件锁;所述文件锁包括目标文件范围;
接收模块14,用于接收所述服务端发送的与每个所述用户各自对应的文件锁。
需要说明的是,本发明实施例提供的分布式文件系统的文件锁管理装置具有与上述实施例中所提供的分布式文件系统的文件锁管理方法相同的有益效果,并且对于本发明实施例中所涉及到的分布式文件系统的文件锁管理装置的具体介绍请参照上述实施例,本发明在此不再赘述。
在上述实施例的基础上,本发明实施例还提供了一种电子设备,具体请参照图11,包括:
存储器20,用于存储计算机程序;
处理器21,用于执行计算机程序时实现如上述分布式文件系统的文件锁管理方法的步骤。
本实施例提供的电子设备可以包括但不限于智能手机、平板电脑、笔记本电脑或台式电脑等。
其中,处理器21可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器21可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器21也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器21可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器21还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器20可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器20还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器20至少用于存储以下计算机程序201,其中,该计算机程序被处理器21加载并执行之后,能够实现前述任一实施例公开的分布式文件系统的文件锁管理方法的相关步骤。另外,存储器20所存储的资源还可以包括操作系统202和数据203等,存储方式可以是短暂存储或者永久存储。其中,操作系统202可以包括Windows、Unix、Linux等。数据203可以包括但不限于设定的偏移量等。
在一些实施例中,电子设备还可包括有显示屏22、输入输出接口23、通信接口24、电源25以及通信总线26。
本领域技术人员可以理解,图11中示出的结构并不构成对电子设备的限定,可以包括比图示更多或更少的组件。
可以理解的是,如果上述实施例中的分布式文件系统的文件锁管理方法以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random AccessMemory,RAM)、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、磁碟或者光盘等各种可以存储程序代码的介质。
基于此,如图12所示,本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质30上存储有计算机程序31,计算机程序31被处理器执行时实现如上述分布式文件系统的文件锁管理方法的步骤。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其他形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其他实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (20)
1.一种分布式文件系统的文件锁管理方法,其特征在于,应用于服务端,包括:
获取与多个用户各自对应的当前读写操作请求;
针对每个所述当前读写操作请求,基于所述当前读写操作请求获取对应的字节级粒度的文件锁;所述文件锁包括目标文件范围;
将所述文件锁发送至与所述当前读写操作请求对应的当前客户端。
2.根据权利要求1所述的分布式文件系统的文件锁管理方法,其特征在于,在所述将所述文件锁发送至与所述当前读写操作请求对应的当前客户端之前,还包括:
在所述当前读写操作请求为写操作请求的情况下,判断所述当前读写操作请求是否与已授权客户端的读写操作请求发生冲突,若是,则撤销所述已授权客户端对应的已授权文件锁,并在撤销完成后执行将所述文件锁发送至与所述当前读写操作请求对应的当前客户端的步骤,若否,则直接执行将所述文件锁发送至与所述当前读写操作请求对应的当前客户端的步骤。
3.根据权利要求2所述的分布式文件系统的文件锁管理方法,其特征在于,所述撤销所述已授权客户端对应的已授权文件锁,包括:
向所述已授权客户端发送锁冲突撤销通知;
接收所述已授权客户端在数据下刷之前返回的锁冲突撤销响应消息;
将所述已授权客户端的已授权文件锁撤销。
4.根据权利要求3所述的分布式文件系统的文件锁管理方法,其特征在于,所述将所述已授权客户端的已授权文件锁撤销,包括:
将所述已授权客户端的已授权文件锁的状态标识更改为撤销状态。
5.根据权利要求1所述的分布式文件系统的文件锁管理方法,其特征在于,所述将所述文件锁发送至与所述当前读写操作请求对应的当前客户端,包括:
对所述文件锁添加状态标识;
将携带有状态标识的文件锁发送至与所述当前读写操作请求对应的当前客户端。
6.根据权利要求5所述的分布式文件系统的文件锁管理方法,其特征在于,所述状态标识为重用标识或撤销标识。
7.根据权利要求1所述的分布式文件系统的文件锁管理方法,其特征在于,在所述将所述文件锁发送至与所述当前读写操作请求对应的当前客户端之前,还包括:
判断所述当前读写操作请求与请求队列中的其他读写操作请求是否冲突,若冲突,则向所述当前客户端返回撤销锁请求通知。
8.根据权利要求1所述的分布式文件系统的文件锁管理方法,其特征在于,所述基于所述当前读写操作请求获取对应的字节级粒度的文件锁,包括:
基于所述当前读写操作请求的请求类型及预设的选择规则,确定文件锁类型;
基于所述文件锁类型获取与所述当前读写操作请求对应的字节级粒度的文件锁。
9.根据权利要求8所述的分布式文件系统的文件锁管理方法,其特征在于,所述文件锁类型包括保护写锁、阻塞写锁、非阻塞写锁和保护读锁。
10.根据权利要求9所述的分布式文件系统的文件锁管理方法,其特征在于,所述基于所述当前读写操作请求的请求类型及预设的选择规则,确定文件锁类型,包括:
在所述当前读写操作请求的请求类型为读取操作的情况下,所述文件锁类型为保护读锁;
在所述当前读写操作请求的请求类型为涉及隐式读取的写操作的情况下,所述文件锁类型为保护写锁;
在所述当前读写操作请求的请求类型为跨多个资源的原子性写入操作的情况下,所述文件锁类型为阻塞写锁;
在所述当前读写操作请求的请求类型为其他类型的情况下,所述文件锁类型为非阻塞写锁。
11.根据权利要求8所述的分布式文件系统的文件锁管理方法,其特征在于,不同文件锁类型的限制级别不同。
12.根据权利要求11所述的分布式文件系统的文件锁管理方法,其特征在于,在所述基于所述当前读写操作请求的请求类型及预设的选择规则,确定文件锁类型之后,还包括:
判断所述文件锁类型与所述当前客户端对应用户的已授权文件锁的文件锁类型是否相冲突,若是,则将所述文件锁类型升级为限制级别更高的文件锁类型。
13.根据权利要求12所述的分布式文件系统的文件锁管理方法,其特征在于,所述将所述文件锁发送至与所述当前读写操作请求对应的当前客户端,包括:
将与升级后的文件锁类型对应的新文件锁发送至所述当前客户端,以便所述当前客户端将所述已授权文件锁和所述新文件锁合并。
14.根据权利要求11所述的分布式文件系统的文件锁管理方法,其特征在于,在所述将所述文件锁发送至与所述当前读写操作请求对应的当前客户端之前,还包括:
在所述文件锁的文件锁类型不是非阻塞写锁、且存在相冲突的已授权客户端的情况下,对所述相冲突的已授权客户端的已授权文件锁进行降级处理。
15.根据权利要求1至14任意一项所述的分布式文件系统的文件锁管理方法,其特征在于,在所述将所述文件锁发送至与所述当前读写操作请求对应的当前客户端之前,包括:
对所述文件锁添加序列号。
16.根据权利要求15所述的分布式文件系统的文件锁管理方法,其特征在于,所述对所述文件锁添加序列号,包括:
获取与目标文件对应的锁资源的当前序列号;
在所述当前读写操作请求为读请求操作的情况下,将所述当前序列号分配给所述文件锁;
在所述当前读写操作请求为写请求操作的情况下,对所述当前序列号进行加一操作得到新的序列号,并将所述新的序列号分配给所述文件锁。
17.根据权利要求16所述的分布式文件系统的文件锁管理方法,其特征在于,在所述将所述文件锁发送至与所述当前读写操作请求对应的当前客户端之后,还包括:
将所述文件锁添加至所述当前客户端的缓存中。
18.一种分布式文件系统的文件锁管理方法,其特征在于,应用于客户端,包括:
响应于多个用户的当前读写操作;
生成与每个所述当前读写操作对应的当前读写操作请求;
将与多个所述用户各自对应的当前读写操作请求发送至服务端,以便服务端针对每个所述当前读写操作请求获取对应的以字节级粒度的文件锁;所述文件锁包括目标文件范围;
接收所述服务端发送的与每个所述用户各自对应的文件锁。
19.一种电子设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至17任一项所述分布式文件系统的文件锁管理方法的步骤;或执行所述计算机程序时实现如权利要求18所述的分布式文件系统的文件锁管理方法的步骤。
20.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至17任一项所述分布式文件系统的文件锁管理方法的步骤;或执行所述计算机程序时实现如权利要求18所述的分布式文件系统的文件锁管理方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310232841.4A CN115951844B (zh) | 2023-03-13 | 2023-03-13 | 分布式文件系统的文件锁管理方法、设备及介质 |
PCT/CN2024/078839 WO2024188050A1 (zh) | 2023-03-13 | 2024-02-27 | 分布式文件系统的文件锁管理方法、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310232841.4A CN115951844B (zh) | 2023-03-13 | 2023-03-13 | 分布式文件系统的文件锁管理方法、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115951844A true CN115951844A (zh) | 2023-04-11 |
CN115951844B CN115951844B (zh) | 2023-06-06 |
Family
ID=85886821
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310232841.4A Active CN115951844B (zh) | 2023-03-13 | 2023-03-13 | 分布式文件系统的文件锁管理方法、设备及介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN115951844B (zh) |
WO (1) | WO2024188050A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024188050A1 (zh) * | 2023-03-13 | 2024-09-19 | 浪潮电子信息产业股份有限公司 | 分布式文件系统的文件锁管理方法、设备及介质 |
WO2024244913A1 (zh) * | 2023-05-30 | 2024-12-05 | 华为技术有限公司 | 范围锁的获取方法、装置、系统及计算机可读存储介质 |
Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020019874A1 (en) * | 1997-12-05 | 2002-02-14 | Andrea Borr | Multi-protocol unified file-locking |
US20030187860A1 (en) * | 2002-03-29 | 2003-10-02 | Panasas, Inc. | Using whole-file and dual-mode locks to reduce locking traffic in data storage systems |
US20060064554A1 (en) * | 2004-09-21 | 2006-03-23 | Fridella Stephen A | Lock management for concurrent access to a single file from multiple data mover computers |
CN104461707A (zh) * | 2014-11-28 | 2015-03-25 | 华为技术有限公司 | 一种锁请求处理方法及装置 |
CN105224255A (zh) * | 2015-10-14 | 2016-01-06 | 浪潮(北京)电子信息产业有限公司 | 一种存储文件管理方法及装置 |
CN107209733A (zh) * | 2015-12-31 | 2017-09-26 | 华为技术有限公司 | 写数据方法和装置以及系统 |
CN107423403A (zh) * | 2017-07-27 | 2017-12-01 | 郑州云海信息技术有限公司 | 一种基于分布式文件系统的融合锁管理方法和系统 |
CN107678859A (zh) * | 2017-10-13 | 2018-02-09 | 郑州云海信息技术有限公司 | 一种基于cap机制的文件访问方法、装置及设备 |
CN109582658A (zh) * | 2018-12-03 | 2019-04-05 | 郑州云海信息技术有限公司 | 一种分布式文件系统实现数据一致性的方法及装置 |
CN109684285A (zh) * | 2018-12-13 | 2019-04-26 | 郑州云海信息技术有限公司 | 一种用户态网络文件系统文件锁方法、装置及设备 |
CN111177073A (zh) * | 2019-12-20 | 2020-05-19 | 苏州浪潮智能科技有限公司 | 一种网络文件系统状态管理方法与装置 |
CN111274214A (zh) * | 2020-02-20 | 2020-06-12 | 苏州浪潮智能科技有限公司 | 一种文件锁处理方法、装置及电子设备和存储介质 |
CN111708744A (zh) * | 2020-05-15 | 2020-09-25 | 苏州浪潮智能科技有限公司 | 基于无状态协议维护文件锁的方法、系统、设备及介质 |
CN113590560A (zh) * | 2021-06-29 | 2021-11-02 | 济南浪潮数据技术有限公司 | 一种分布式系统的缓存优化方法、系统、设备和存储介质 |
CN114385621A (zh) * | 2020-10-21 | 2022-04-22 | 北京达佳互联信息技术有限公司 | 一种加锁方法、装置、设备及介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5956712A (en) * | 1995-06-07 | 1999-09-21 | International Business Machines Corporation | Byte range locking in a distributed environment |
CN103716350B (zh) * | 2012-09-29 | 2018-03-30 | 腾讯科技(北京)有限公司 | 一种对资源进行同步控制的方法、设备和系统 |
US9792294B2 (en) * | 2014-07-02 | 2017-10-17 | Panzura, Inc | Using byte-range locks to manage multiple concurrent accesses to a file in a distributed filesystem |
US9990372B2 (en) * | 2014-09-10 | 2018-06-05 | Panzura, Inc. | Managing the level of consistency for a file in a distributed filesystem |
CN115951844B (zh) * | 2023-03-13 | 2023-06-06 | 浪潮电子信息产业股份有限公司 | 分布式文件系统的文件锁管理方法、设备及介质 |
-
2023
- 2023-03-13 CN CN202310232841.4A patent/CN115951844B/zh active Active
-
2024
- 2024-02-27 WO PCT/CN2024/078839 patent/WO2024188050A1/zh unknown
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020019874A1 (en) * | 1997-12-05 | 2002-02-14 | Andrea Borr | Multi-protocol unified file-locking |
US20030187860A1 (en) * | 2002-03-29 | 2003-10-02 | Panasas, Inc. | Using whole-file and dual-mode locks to reduce locking traffic in data storage systems |
US20060064554A1 (en) * | 2004-09-21 | 2006-03-23 | Fridella Stephen A | Lock management for concurrent access to a single file from multiple data mover computers |
CN104461707A (zh) * | 2014-11-28 | 2015-03-25 | 华为技术有限公司 | 一种锁请求处理方法及装置 |
CN105224255A (zh) * | 2015-10-14 | 2016-01-06 | 浪潮(北京)电子信息产业有限公司 | 一种存储文件管理方法及装置 |
CN107209733A (zh) * | 2015-12-31 | 2017-09-26 | 华为技术有限公司 | 写数据方法和装置以及系统 |
CN107423403A (zh) * | 2017-07-27 | 2017-12-01 | 郑州云海信息技术有限公司 | 一种基于分布式文件系统的融合锁管理方法和系统 |
CN107678859A (zh) * | 2017-10-13 | 2018-02-09 | 郑州云海信息技术有限公司 | 一种基于cap机制的文件访问方法、装置及设备 |
CN109582658A (zh) * | 2018-12-03 | 2019-04-05 | 郑州云海信息技术有限公司 | 一种分布式文件系统实现数据一致性的方法及装置 |
CN109684285A (zh) * | 2018-12-13 | 2019-04-26 | 郑州云海信息技术有限公司 | 一种用户态网络文件系统文件锁方法、装置及设备 |
CN111177073A (zh) * | 2019-12-20 | 2020-05-19 | 苏州浪潮智能科技有限公司 | 一种网络文件系统状态管理方法与装置 |
CN111274214A (zh) * | 2020-02-20 | 2020-06-12 | 苏州浪潮智能科技有限公司 | 一种文件锁处理方法、装置及电子设备和存储介质 |
CN111708744A (zh) * | 2020-05-15 | 2020-09-25 | 苏州浪潮智能科技有限公司 | 基于无状态协议维护文件锁的方法、系统、设备及介质 |
CN114385621A (zh) * | 2020-10-21 | 2022-04-22 | 北京达佳互联信息技术有限公司 | 一种加锁方法、装置、设备及介质 |
CN113590560A (zh) * | 2021-06-29 | 2021-11-02 | 济南浪潮数据技术有限公司 | 一种分布式系统的缓存优化方法、系统、设备和存储介质 |
Non-Patent Citations (3)
Title |
---|
XIN LI: "An Improved Concurrency Control Method for R/W Transaction", 《IEEE XPLORE》 * |
李婧瑶: "面向两段锁并发控制的RDMA优化技术", 《计算机科学与探索》 * |
钱迎进;金士尧;肖侬;: "Lustre文件系统I/O锁的应用与优化", 计算机工程与应用, vol. 47, no. 03, pages 1 - 5 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024188050A1 (zh) * | 2023-03-13 | 2024-09-19 | 浪潮电子信息产业股份有限公司 | 分布式文件系统的文件锁管理方法、设备及介质 |
WO2024244913A1 (zh) * | 2023-05-30 | 2024-12-05 | 华为技术有限公司 | 范围锁的获取方法、装置、系统及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN115951844B (zh) | 2023-06-06 |
WO2024188050A1 (zh) | 2024-09-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2505939B2 (ja) | デ―タのキャストアウトを制御する方法 | |
US7809891B2 (en) | Wait-free parallel data cache | |
US6804729B2 (en) | Migrating a memory page by modifying a page migration state of a state machine associated with a DMA mapper based on a state notification from an operating system kernel | |
US7376744B2 (en) | Using local locks for global synchronization in multi-node systems | |
CN100422940C (zh) | 在数据处理系统中仲裁线程访问共享资源的系统和方法 | |
WO2024188050A1 (zh) | 分布式文件系统的文件锁管理方法、设备及介质 | |
CA2636810C (en) | Anticipatory changes to resources managed by locks | |
TW409215B (en) | Parallel file system and method for multiple node file access | |
US20160092488A1 (en) | Concurrency control in a shared storage architecture supporting on-page implicit locks | |
CN105224255B (zh) | 一种存储文件管理方法及装置 | |
US8819056B2 (en) | Facilitation of search, list, and retrieval operations on persistent data set using distributed shared memory | |
CN1755635A (zh) | 事务型存储器访问的混合硬件软件实现 | |
CN103095686B (zh) | 热点元数据访问控制方法和服务器 | |
CN108572876B (zh) | 一种读写锁的实现方法及装置 | |
WO2018120810A1 (zh) | 一种解决数据冲突的方法和系统 | |
US10649856B2 (en) | Concurrent writing to a file during backup of the file | |
CN110046047A (zh) | 一种进程间通信方法、装置及计算机可读存储介质 | |
JP5338435B2 (ja) | 情報処理プログラム、情報処理装置および情報処理方法 | |
CN106599301A (zh) | 多客户端并发数据读写加速方法及装置 | |
CN115543952A (zh) | 用于分布式系统中的共享存储器访问api的方法和系统 | |
WO2024217352A1 (zh) | 内存回收方法、设备、存储介质和系统 | |
WO1993003436A1 (en) | Method and apparatus for reducing lock period of shared buffer | |
US7013463B2 (en) | Latch mechanism for concurrent computing environments | |
CN118779126A (zh) | 一种进程间通信方法、装置、存储介质及电子设备 |
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 | ||
GR01 | Patent grant |