System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及分布式文件系统领域,尤其涉及一种文件系统加锁方法、装置、设备及存储介质。
技术介绍
1、随着互联网和大数据的快速发展,数据量呈指数级增长。传统的单机文件系统无法满足巨大数据量的储存需求,因而需要采用分布式的文件系统来存储和管理数据。分布式的文件系统能够向用户提供分布式对象、文件、块存储服务,用于大数据和云计算领域。分布式文件系统可以向用户提供并发访问功能,通过多线程的方式来处理用户的请求,并且内部通过全局锁的方式来控制多线程访问,进而允许用户像操作本地文件系统一样使用分布式文件系统。
2、通过全局锁来控制多线程访问虽然保证了数据的一致性,但是也由于全局锁的存在导致单个线程持有锁的时间较长,进而导致多线程的并发处理能力不能充分得到利用,尤其是在多用户大压力访问的情况下,分布式文件系统不能充分并发处理请求。
3、因此,当前亟需要一种方法能够提高文件系统的并发处理能力。
技术实现思路
1、本申请提供一种文件系统加锁方法、装置、设备及存储介质,用以解决文件系统并发处理能力较低的技术问题。
2、第一方面,本申请提供一种文件系统加锁方法,包括:
3、获取客户端发送的多线程的访问请求,每个访问请求中携带待访问文件的标识;
4、根据所述待访问文件的标识,获取访问同一目标文件的至少两个目标线程;
5、根据所述至少两个目标线程各自的访问类型,在不同的时间对所述目标文件进行加锁,以使得至少两个目标线程的请求阶段并发执行,数
6、在一种可能的设计中,所述根据所述至少两个目标线程各自的访问类型,在不同的时间对所述目标文件进行加锁,包括:
7、若所述至少两个目标线程的访问类型包括写请求类型和getattr访问类型,则在所述写请求类型对应的第一目标线程对目标文件进行请求处理时对所述目标文件加全局锁,并控制所述getattr访问类型对应的第二目标线程执行请求阶段,其中,所述第二目标线程的请求阶段与所述请求处理并行执行,所述请求处理包括请求阶段和数据访问阶段。
8、在一种可能的设计中,所述控制所述getattr访问类型对应的第二目标线程执行请求阶段,包括:
9、对所述客户端进行身份验证,以执行所述请求阶段;
10、所述控制所述getattr访问类型对应的第二目标线程执行请求阶段之后,所述方法还包括:
11、在身份验证通过后,在所述目标文件解锁后,对缓存的元数据加读锁,获取对所述元数据进行缓存的历史时间戳以及当前时间戳;
12、根据所述当前时间戳与所述历史时间戳获取所述元数据的生命时长;
13、若根据所述生命时长确定所述元数据未过期,则从所述元数据中读取所述访问请求对应的目标数据并返回;
14、若根据所述生命时长确定所述元数据已过期,则向mds元数据服务器发送请求,并对所述元数据加写锁,通过写锁将请求得到的元数据更新至缓存中。
15、在一种可能的设计中,所述根据所述至少两个目标线程各自的访问类型,在不同的时间对所述目标文件进行加锁,包括:
16、若所述至少两个目标线程的访问类型均为写请求类型,则所述至少两个目标线程的请求阶段并发执行;
17、根据所述至少两个目标线程各自对应的写请求的目标文件的数据域,对所述至少两个目标线程写请求的数据域加作用域锁以进行写操作,以使得不同目标线程对同一数据域的写请求互斥。
18、在一种可能的设计中,所述根据所述至少两个目标线程各自对应的写请求的目标文件的数据域,对所述至少两个目标线程写请求的数据域加作用域锁,以使得不同目标线程对同一数据域的写请求互斥,包括:
19、根据所述至少两个目标线程各自对应的写请求的目标文件的数据域,在同一时间段,对至少两个目标线程的不同数据域分别并发加作用域锁以进行写操作,在不同数据域写操作完毕后,对各数据域进行解锁;
20、在下一时间段,对至少两个目标线程的其它不同数据域分别并发加作用锁以进行写操作,并在其它不同数据域写操作完毕后,对各数据域进行解锁,重复执行上述加锁和解锁操作,直至每个目标线程完成写操作。
21、在一种可能的设计中,所述根据所述至少两个目标线程各自的访问类型,在不同的时间对所述目标文件进行加锁,包括:
22、若所述至少两个目标线程的访问类型均为getattr访问类型,则所述至少两个目标线程对应的请求阶段并发执行;
23、在至少两个目标线程缓存的元数据均已过期时,并发对所述元数据加读锁,向mds元数据服务器发送请求,并对所述元数据加写锁,通过写锁将请求得到的元数据更新至缓存中,所述至少两个目标线程的写请求互斥。
24、在一种可能的设计中,所述写请求类型的访问请求为创建目录mkdir的请求。
25、第二方面,本申请提供一种文件系统加锁装置,包括:
26、接收模块,用于获取客户端发送的多线程的访问请求,每个访问请求中携带待访问文件的标识;
27、获取模块,用于根据所述待访问文件的标识,获取访问同一目标文件的至少两个目标线程;
28、锁模块,用于根据所述至少两个目标线程各自的访问类型,在不同的时间对所述目标文件进行加锁,以使得至少两个目标线程的请求阶段并发执行,数据访问阶段针对所述目标文件的同一数据域读写互斥。
29、第三方面,本申请提供一种文件系统加锁设备,包括:处理器,以及与所述处理器通信连接的存储器;
30、所述存储器存储计算机执行指令;
31、所述处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如上第一方面以及第一方面各种可能的设计所述的文件系统加锁方法。
32、第四方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上第一方面以及第一方面各种可能的设计所述的文件系统加锁方法。
33、本申请提供的一种文件系统加锁方法、装置、设备及存储介质,通过获取客户端发送的多线程访问请求,根据每个访问请求中携带待访问文件的标识获取访问同一目标文件的至少两个目标线程。通过将每个目标线程分为请求阶段和数据访问阶段,从而使得至少两个目标线程的请求阶段能够并发执行,进而能够在至少两个目标线程在不同的时间段对目标文件进行加锁时,先并行处理至少两个目标线程的请求阶段,再对目标文件的同一数据域读写互斥,提高了文件系统的并发处理能力,避免多个目标线程对同一目标文件进行处理时,每个请求对目标文件的锁定时间过长导致的文件系统并发处理能力低的问题。
本文档来自技高网...【技术保护点】
1.一种文件系统加锁方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述根据所述至少两个目标线程各自的访问类型,在不同的时间对所述目标文件进行加锁,包括:
3.根据权利要求2所述的方法,其特征在于,所述控制所述getattr访问类型对应的第二目标线程执行请求阶段,包括:
4.根据权利要求1所述的方法,其特征在于,所述根据所述至少两个目标线程各自的访问类型,在不同的时间对所述目标文件进行加锁,包括:
5.根据权利要求4所述的方法,其特征在于,所述根据所述至少两个目标线程各自对应的写请求的目标文件的数据域,对所述至少两个目标线程写请求的数据域加作用域锁,以使得不同目标线程对同一数据域的写请求互斥,包括:
6.根据权利要求1所述的方法,其特征在于,所述根据所述至少两个目标线程各自的访问类型,在不同的时间对所述目标文件进行加锁,包括:
7.根据权利要求2所述的方法,其特征在于,所述写请求类型的访问请求为创建目录mkdir的请求。
8.一种文件系统加锁装置,其特征在于,包括:
...【技术特征摘要】
1.一种文件系统加锁方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述根据所述至少两个目标线程各自的访问类型,在不同的时间对所述目标文件进行加锁,包括:
3.根据权利要求2所述的方法,其特征在于,所述控制所述getattr访问类型对应的第二目标线程执行请求阶段,包括:
4.根据权利要求1所述的方法,其特征在于,所述根据所述至少两个目标线程各自的访问类型,在不同的时间对所述目标文件进行加锁,包括:
5.根据权利要求4所述的方法,其特征在于,所述根据所述至少两个目标线程各自对应的写请求的目标文件的数据域,对所述至少两个目标线程写请求的数据域加作用域锁...
【专利技术属性】
技术研发人员:唐蜜,过晓春,
申请(专利权)人:中国联合网络通信集团有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。