System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种基于分布式文件系统的分布式锁实现方法和系统技术方案_技高网

一种基于分布式文件系统的分布式锁实现方法和系统技术方案

技术编号:40146471 阅读:5 留言:0更新日期:2024-01-24 00:25
本发明专利技术公开了一种基于分布式文件系统的分布式锁实现方法和系统,涉及分布式存储技术领域,包括步骤:接收客户端发送的加锁请求,根据iNode号搜索iNode索引表,获得Extent索引表地址,利用Extent索引表中的Extent编号查询锁结构体信息;对查询结果进行判断,未查询到锁结构体时,获取等待位为no的锁结构体,将该锁结构体插入Extent索引表中获取列表锁;在查询到锁结构体时直接获取列表锁,将等待位置设置为yes,释放列表锁,向客户端返回锁信息。本发明专利技术协调分布式文件系统客户端之间对共享文件的访问,保证了读‑写一致性顺序,实现了锁请求过程中多个客户端同时请求的效果,作为锁管理器的方式部署。

【技术实现步骤摘要】

本专利技术涉及分布式存储,特别涉及一种基于分布式文件系统的分布式锁实现方法和系统


技术介绍

1、文件系统是计算机操作系统负责管理持久化数据的子系统。文件系统在逻辑上呈现为一颗目录树,目录类似于一个容器,可以包含子目录,也可以包含文件。而分布式文件系统是指文件系统所管理的文件内容,不是直接存储在计算机本机的物理存储设备(如磁盘)上,而是分布在通过计算机网络与本节点相连的若干台分布式文件系统服务器上。

2、分布式文件系统将存储在系统服务端的文件资源形成一个逻辑上的文件目录树,通过客户端软件,作为子目录,挂载到客户端操作系统的文件系统上,从而使得用户访问分布在网络上的共享文件更加简便。

3、在高性能计算(hpc)、金融等领域,往往需要文件系统有多挂载的能力,即将同一个逻辑上的文件目录树,同时挂载到多个计算机上客户端的文件系统上。不同计算机上的应用程序,可以通过操作系统提供的文件系统访问接口(如linux上的posix接口),同时对同一批文件进行读、写等操作。并且要保证不同客户端之间的读、写操作按顺序进行,即保证同一个文件上读-写一致性,和写-写一致性。

4、这种多挂载机制仅在传统的集中式网络文件系统(nas)产品中提供,而现有的分布式文件系统基本上没有这种能力。现有的分布式文件系统,要么无法在多挂载的场景下保证读-写一致性顺序;要么对文件整体上锁,即一个客户端锁定某个文件之后,其他客户端便不能访问这个文件,这种粗粒度的文件锁机制无法满足某些特定的应用领域。


技术实现思路

1、本专利技术的目的在于针对上述现有技术的不足,提供一种基于分布式文件系统的分布式锁实现方法和系统,以解决现有技术中粗粒度的文件锁机制无法满足某些特定的应用领域的问题。

2、本专利技术具体提供如下技术方案:一种基于分布式文件系统的分布式锁实现方法,包括以下步骤:

3、接收客户端发送的加锁请求,所述加锁请求包括锁对应的文件地址信息inode号和extent编号,以及锁模式;

4、根据inode号搜索inode索引表,获得extent索引表的地址,并利用所述extent索引表中的extent编号查询锁结构体的信息;

5、若未查询到所述锁结构体,则获取一个等待位为no的锁结构体,并将所述等待位为no的锁结构体插入extent索引表中获取列表锁,独占访问锁结构体的请求项列表;新建锁请求项并将其加入锁请求项列表后释放列表锁,向客户端返回锁信息;

6、若查询到所述锁结构体,则直接获取列表锁,根据锁结构体的等待位和锁模式确定新建请求项的等待位,将所述等待位加入锁请求项列表中,令所述结构体的等待位为yes,且设置锁模式并释放列表锁,向客户端返回锁信息。

7、优选的,所述将所述锁结构体插入extent索引表中获取列表锁,包括如下步骤:

8、使用extent索引表构造无锁的供扩展哈希表结构;

9、使用cas操作把新建的锁结构体插入到extent索引表中,若插入成功则获取列表锁,否则重新查找哈希表。

10、优选的,所述接收客户端发送的加锁请求之前,客户端先接收来自本地文件系统的读、写或加锁事件,包括如下步骤:

11、确定读、写访问的文件逻辑地址,用{inode号,extent编号}的组合表示;其中,inode号是指待访问的文件在分布式文件系统中的逻辑编号,extent编号是指文件系统内部的逻辑块编号;

12、请求分布式锁服务端,获取inode中特定extent{inode号=1, extent编号=23}的读锁;

13、在接收到等待响应读锁id=233后,等待唤醒;

14、释放锁后通过分布式锁服务端分配读锁,在接收到读锁id=233后,唤醒阻塞的操作,对extent的读操作进行处理;

15、在所述对extent的读操作处理完成后释放锁,请求服务端释放读锁id=233,服务端在处理之后,成功释放返回响应。

16、优选的,所述对extent的读操作进行处理,包括如下步骤:

17、通过所述特定extent{inode号=1, extent编号=23}的读锁确定读操作中的读-写一致性;

18、若存在其他客户端对此extent进行更新操作时,将所述更新操作的写锁在分布式锁服务端处等待。

19、优选的,所述根据inode号搜索inode索引表,获得extent索引表的地址,并利用所述extent索引表中的extent编号查询锁结构体的信息,包括如下步骤:

20、基于inode号构建inode索引表,利用inode号为索引,找到相应extent索引表的指针;

21、利用extent索引表中以特定inode获取的extent编号为索引,获取extent的锁结构体指针。

22、优选的,所述新建锁请求项并将其加入锁请求项列表后释放列表锁,包括如下步骤:

23、利用锁请求项作为节点构建列表,并通过节点维护来自客户端的锁请求;

24、在列表锁被客户端释放时,相应的锁请求项也从列表中移除。

25、优选的,所述利用锁请求项作为节点构建列表时,通过请求上下文指针、锁模式、等待位、时间戳和指向列表中下一个节点的指针构建锁请求项,包括如下步骤:

26、通过请求上下文指针维护包括客户端标识、客户端连接信息、锁id在内的上下文信息,并维护分布式锁服务端和客户端之间的通信渠道;

27、通过锁模式表示共享锁或排他锁;

28、通过等待位表示本次锁请求是在等待中,还是已经获取;

29、通过时间戳记录锁请求的时间。

30、优选的,本专利技术还包括步骤:

31、接收客户端发送的释放锁请求,所述释放锁请求包括锁对应的文件地址信息inode号和extent编号,以及锁id;

32、根据inode号搜索inode索引表,获得extent索引表的地址,并利用所述extent索引表中的extent编号查询锁结构体信息;

33、若未查询到锁结构体,则向客户端返回错误消息;

34、若查询到锁结构体,获取列表锁,并利用锁id从列表中搜索加锁时对应的请求项,并对该请求项进行删除;

35、并判断待释放锁的类型,根据释放锁的类型释放列表锁或进一步处理,并向客户端返回成功响应。

36、优选的,所述根据释放锁的类型释放列表锁或进一步处理,包括如下步骤:

37、若待释放的锁是共享锁,且还有其他共享者在使用此锁,释放列表锁;

38、若待释放的锁是共享锁或排它锁,且没有其他共享者在使用此锁时,从列表表头开始,扫描是否还有等待中的锁;

39、若不存在等待中的锁,则去掉锁结构体的锁模式,并令等待位=no,释放锁列表;

40、若存在等待中的锁,则设置锁结构体中的锁模式,令等待本文档来自技高网...

【技术保护点】

1.一种基于分布式文件系统的分布式锁实现方法,其特征在于,包括以下步骤:

2.如权利要求1所述的一种基于分布式文件系统的分布式锁实现方法,其特征在于,所述将所述等待位为no的锁结构体插入Extent索引表中获取列表锁,包括如下步骤:

3.如权利要求1所述的一种基于分布式文件系统的分布式锁实现方法,其特征在于,所述接收客户端发送的加锁请求之前,客户端先接收来自本地文件系统的读、写或加锁事件,包括如下步骤:

4.如权利要求3所述的一种基于分布式文件系统的分布式锁实现方法,其特征在于,所述对Extent的读操作进行处理,包括如下步骤:

5.如权利要求1所述的一种基于分布式文件系统的分布式锁实现方法,其特征在于,所述根据iNode号搜索iNode索引表,获得Extent索引表的地址,并利用所述Extent索引表中的Extent编号查询锁结构体的信息,包括如下步骤:

6.如权利要求1所述的一种基于分布式文件系统的分布式锁实现方法,其特征在于,所述新建锁请求项并将其加入锁请求项列表后释放列表锁,包括如下步骤:

7.如权利要求6所述的一种基于分布式文件系统的分布式锁实现方法,其特征在于,所述利用锁请求项作为节点构建列表时,通过请求上下文指针、锁模式、等待位、时间戳和指向列表中下一个节点的指针构建锁请求项,包括如下步骤:

8.如权利要求1-7任一项所述的一种基于分布式文件系统的分布式锁实现方法,其特征在于,还包括步骤:

9.如权利要求8所述的一种基于分布式文件系统的分布式锁实现方法,其特征在于,所述根据释放锁的类型释放列表锁或进一步处理,包括如下步骤:

10.一种基于分布式文件系统的分布式锁实现系统,其特征在于,包括:

...

【技术特征摘要】

1.一种基于分布式文件系统的分布式锁实现方法,其特征在于,包括以下步骤:

2.如权利要求1所述的一种基于分布式文件系统的分布式锁实现方法,其特征在于,所述将所述等待位为no的锁结构体插入extent索引表中获取列表锁,包括如下步骤:

3.如权利要求1所述的一种基于分布式文件系统的分布式锁实现方法,其特征在于,所述接收客户端发送的加锁请求之前,客户端先接收来自本地文件系统的读、写或加锁事件,包括如下步骤:

4.如权利要求3所述的一种基于分布式文件系统的分布式锁实现方法,其特征在于,所述对extent的读操作进行处理,包括如下步骤:

5.如权利要求1所述的一种基于分布式文件系统的分布式锁实现方法,其特征在于,所述根据inode号搜索inode索引表,获得extent索引表的地址,并利用所述extent索引表中的ex...

【专利技术属性】
技术研发人员:张颖李铁
申请(专利权)人:创云融达信息技术天津股份有限公司
类型:发明
国别省市:

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

1