一种分布式锁管理器及其实现方法与流程

文档序号:16672842发布日期:2019-01-18 23:42阅读:304来源:国知局
一种分布式锁管理器及其实现方法与流程

本发明涉及集群文件系统技术,尤指一种分布式锁管理器(dlm)及其实现方法。



背景技术:

由于集群文件系统可以同时被多个服务器同时共享并进行挂载,在服务器虚拟化领域,集群文件系统会被用作多个计算节点与集中式存储之间的桥梁。集群文件系统能够提供文件并发访问控制、完整性保证、以及冗余性等功能,被虚拟化系统用于存储虚拟机镜像、共享存储池等。而dlm是构成集群文件系统的关键组件,用于对共享资源的并发访问进行管理,解决了集群节点之间磁盘缓存一致性问题,提高了共享文件访问的效率。常见的集群文件系统如gfs,vmfs,openvmsfiles,ocfs2等都实现了自己的dlm。

在dlm工作过程中,需要依赖于网络进行节点间通信以同步锁信息,包括锁信息查询、获取远程锁、锁降级等操作,因此网络的可靠性直接影响了dlm的效率与稳定性。常见的dlm实现方法中,在集群的节点之间基于指定端口建立长连接,对锁消息进行封装后通过tcp/ip来进行锁信息交互。但网络的稳定性较差,网络的波动、延迟都会影响到dlm消息的传输,直接影响到了集群文件系统的工作,乃至引发文件系统的保护机制fence,造成集群的部分节点瘫痪。问题的根源在于整个系统的稳定性依赖于tcp/ip的可靠性,而在服务器虚拟化场景中,tcp/ip网络的可靠性是较低的,因此该设计会大大影响系统的整体可靠性。



技术实现要素:

为了解决上述技术问题,本发明提供了一种dlm及其实现方法。在集群的共享磁盘中划分通信地址空间,通过该通信地址空间完成节点之间的锁信息交互,实现了高可靠性的dlm,解决了现在的dlm机制高度依赖网络造成的容易出现故障误差的问题。

为了达到本发明目的,本发明提供了一种分布式锁管理器实现方法,包括:

在集群的共享磁盘中划分通信地址空间,所述通信地址空间包含多个消息槽,每个消息槽对应一个所述集群中的节点;

将待向节点发送的锁信息写入所述节点对应的消息槽。

优选的,将待向节点发送的锁信息写入所述节点对应的消息槽的步骤包括:

争夺向所述节点发送锁信息的发送权;

在获取所述发送权后,向所述节点对应的消息槽写入所述锁信息。

优选的,该方法还包括:

节点轮询通信地址空间中所述节点对应的消息槽,读取所述消息槽中的锁信息。

优选的,节点轮询通信地址空间中所述节点对应的消息槽,读取所述消息槽中的锁信息的步骤之后,还包括:

所述节点在读取该节点对应的消息槽中的锁信息后,执行所述锁信息指示的操作;

在操作完成后,向发送所述锁信息的节点对应的消息槽写入处理完成标志。

优选的,在操作完成后,向发送所述锁信息的节点对应的消息槽写入处理完成标示的步骤之后,还包括:

所述节点在读取到其他节点发送的处理完成标志后,清理本节点对应的消息槽。

本发明还提供了一种分布式锁管理器,包括:

通信空间管理模块,用于在集群的共享磁盘中划分通信地址空间,所述通信地址空间包含多个消息槽,每个消息槽对应一个所述集群中的节点;

消息写入模块,用于将待向节点发送的锁信息写入所述节点对应的消息槽。

优选的,所述消息写入模块包括:

发送权获取单元,用于争夺向所述节点发送锁信息的发送权;

写入单元,用于在获取所述发送权后,向所述节点对应的消息槽写入所述锁信息。

优选的,所述分布式锁管理器还包括:

信息轮询读取模块,用于轮询通信地址空间中所述节点对应的消息槽,读取所述消息槽中的锁信息。

优选的,所述分布式锁管理器还包括:

操作执行模块,用于在读取该节点对应的消息槽中的锁信息后,执行所述锁信息指示的操作;

所述消息写入模块,还用于在操作完成后,向发送所述锁信息的节点对应的消息槽写入处理完成标志。

优选的,所述消息写入模块,还用于在读取到其他节点发送的处理完成标志后,清理本节点对应的消息槽。

本发明提供了一种dlm及其实现方法,在集群的共享磁盘中划分通信地址空间,所述通信地址空间包含多个消息槽,每个消息槽对应一个所述集群中的节点,然后将待向节点发送的锁信息写入所述节点对应的消息槽。通过共享磁盘中转节点间交互的锁信息,脱离了实时消息发送对网络的依赖,解决了现在的dlm机制高度依赖网络造成的容易出现故障误差的问题,实现了高可靠性的dlm。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。

附图说明

附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。

图1为本发明的一实施例提供的一种dlm实现方法的流程示意图;

图2为本发明的一实施例提供的一种dlm的结构示意图;

图3为图2中消息写入模块202的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。

在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

在dlm工作过程中,需要依赖于网络进行节点间通信以同步锁信息,包括锁信息查询、获取远程锁、锁降级等操作,因此网络的可靠性直接影响了dlm的效率与稳定性。常见的dlm实现方法中,在集群的节点之间基于指定端口建立长连接,对锁消息进行封装后通过tcp/ip来进行锁信息交互。但网络的稳定性较差,网络的波动、延迟都会影响到dlm消息的传输,直接影响到了集群文件系统的工作,乃至引发文件系统的保护机制fence,造成集群的部分节点瘫痪。问题的根源在于整个系统的稳定性依赖于tcp/ip的可靠性,而在服务器虚拟化场景中,tcp/ip网络的可靠性是较低的,因此该设计会大大影响系统的整体可靠性。

为了解决上述问题,本发明的实施例提供了一种dlm及其实现方法。下面结合附图,对本发明的实施例进行说明。

本发明的一实施例提供了一种dlm实现方法,使用该方法通过dlm完成集群内节点间锁信息交互的流程如图1所示,包括:

步骤101、在集群的共享磁盘中划分通信地址空间,所述通信地址空间包含多个消息槽,每个消息槽对应一个所述集群中的节点。

本发明实施例中,在共享磁盘上指定位置预留一段通信地址空间,将通信地址空间分成n个消息槽(slot),预留给集群中的每个节点。

步骤102、将待向节点发送的锁信息写入所述节点对应的消息槽。

本发明实施例中,每个节点都从自己的消息槽中接收其他节点发过来的消息,通过向其他节点的消息槽写入来发送消息。

本发明实施例中所涉及的锁信息包括锁信息查询、获取远程锁、锁降级等信息。

本步骤具体包括:

1、争夺向所述节点发送锁信息的发送权。例如,在发消息时首先通过diskpaxos的算法来获取向指定节点发消息的发送权,一旦获得该权力后就可向对应的消息槽写入消息。

2、在获取所述发送权后,向所述节点对应的消息槽写入所述锁信息。

步骤103、节点轮询通信地址空间中所述节点对应的消息槽,读取所述消息槽中的锁信息。

本步骤中,节点通过轮询机制来查看是否有节点向其发送消息,一旦收到消息就对消息进行解析,并调用相应的消息处理函数进行处理。

步骤104、所述节点在读取该节点对应的消息槽中的锁信息后,执行所述锁信息指示的操作。

步骤105、在操作完成后,向发送所述锁信息的节点对应的消息槽写入处理完成标志。

本步骤中,优选的,依然如步骤102所述,夺取发送权后写入。

步骤106、所述节点在读取到其他节点发送的处理完成标志后,清理本节点对应的消息槽。

本发明实施例提供的dlm实现方法,使得集群文件系统的工作不依赖于tcp/ip网络,在损失部分性能前提下,大大提高了系统的可靠性与高可用性。首先在磁盘上指定位置预留一段地址空间,分成n个消息槽(slot),预留给集群中的每个节点。每个节点都从自己的消息槽中接收其他节点发过来的锁信息等消息,向其他节点的消息槽进行写入来发送消息。dlm在发消息时首先通过diskpaxos的算法来获取向指定节点发消息的发送权,一旦获得该权力后就可向该位置写入消息。接收节点通过轮询机制来查看是否有节点向其发送消息,一旦收到消息就对消息进行解析并调用相应的消息处理函数进行处理来完成消息的接收。基于共享磁盘通信的dlm锁管理器实现摆脱了对tcp/ip的依赖,使得集群文件系统的工作仅仅依赖于存储本身,减少了故障点,从而提高了集群文件系统的可靠性,间接提高了虚拟化系统的高可用性。该方案尤其适用于可靠性较高的fibrechannel存储。

本发明的一实施例还提供了一种dlm实现方法,基于共享磁盘通信的dlm锁管理器实现摆脱了对tcp/ip的依赖,使得集群文件系统的工作仅仅依赖于存储本身,减少了故障点,从而提高了集群文件系统的可靠性,间接提高了虚拟化系统的高可用性。该方案尤其适用于可靠性较高的fibrechannel存储。

以节点a和节点b之间进行锁信息交互为例进行说明,具体实施过程如下:

节点a向节点b发送消息时主要包括以下几个步骤:

(1)通过diskpaxos算法争夺向节点b发消息的权力;

(2)获得发送权后,将消息写入节点b的消息槽;

(3)然后a将b的消息槽放入轮询队列,等待b接收消息后的回复;

(4)a收到b的回复表示消息接收完成,然后对消息槽进行清空,完成一次消息发送过程。

对于消息接收端b,其实现主要包括以下步骤:

(1)在消息接收线程中会轮询自己的消息接收槽;

(2)收到有效消息后首先对消息完成性进行验证,采用crc32进行验证;

(3)如果消息完整接收,则调用消息处理函数尽心消息处理;

(4)处理完成后,向对应的消息槽写入处理完成标志,完成消息接收流程。

本发明的实施例中,消息接收和发送是对称的,每个节点即进行消息接收也进行消息发送,因此每个节点都会实现上述消息发送就收流程。

基于共享磁盘通信的dlm实现摆脱了对tcp/ip的依赖,使得集群文件系统的工作仅仅依赖于存储本身,减少了故障点,从而提高了集群文件系统的可靠性。同时该方案减少了硬件资源的占用,可以节省专门用于dlm通信的网络设备。虽然该方案会占用一部分磁盘的带宽,但相对于带来的稳定性收益和降低的硬件开销可以忽略不计,大大提高了虚拟化系统的高可用性。该方案尤其适用于可靠性较高的fibrechannel存储。

本发明的一实施例还提供了一种分布式锁管理器/dlm,其结构如图2所示,包括:

通信空间管理模块201,用于在集群的共享磁盘中划分通信地址空间,所述通信地址空间包含多个消息槽,每个消息槽对应一个所述集群中的节点;

消息写入模块202,用于将待向节点发送的锁信息写入所述节点对应的消息槽。

优选的,所述消息写入模块202的结构如图3所示,包括:

发送权获取单元2021,用于争夺向所述节点发送锁信息的发送权;

写入单元2022,用于在获取所述发送权后,向所述节点对应的消息槽写入所述锁信息。

优选的,所述分布式锁管理器还包括:

信息轮询读取模块203,用于轮询通信地址空间中所述节点对应的消息槽,读取所述消息槽中的锁信息。

优选的,所述分布式锁管理器还包括:

操作执行模块204,用于在读取该节点对应的消息槽中的锁信息后,执行所述锁信息指示的操作;

所述消息写入模块202,还用于在操作完成后,向发送所述锁信息的节点对应的消息槽写入处理完成标志。

优选的,所述消息写入模块202,还用于在读取到其他节点发送的处理完成标志后,清理本节点对应的消息槽。

本发明的实施例提供的dlm,能够与本发明的实施例提供的一种dlm实现方法相结合,在集群的共享磁盘中划分通信地址空间,所述通信地址空间包含多个消息槽,每个消息槽对应一个所述集群中的节点,然后将待向节点发送的锁信息写入所述节点对应的消息槽。通过共享磁盘中转节点间交互的锁信息,脱离了实时消息发送对网络的依赖,解决了现在的dlm机制高度依赖网络造成的容易出现故障误差的问题,实现了高可靠性的dlm。基于共享磁盘通信的dlm锁管理器实现摆脱了对tcp/ip的依赖,使得集群文件系统的工作仅仅依赖于存储本身,减少了故障点,从而提高了集群文件系统的可靠性,间接提高了虚拟化系统的高可用性。该方案尤其适用于可靠性较高的fibrechannel存储。

本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些组件或所有组件可以被实施为由处理器,如数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于ram、rom、eeprom、闪存或其他存储器技术、cd-rom、数字多功能盘(dvd)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。

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