基于对象存储系统的分布式锁的制作方法

文档序号:6573021阅读:291来源:国知局
专利名称:基于对象存储系统的分布式锁的制作方法
技术领域
本发明属于分布式存储系统,具体涉及基于对象存储系统访问模式属性的分布式锁,用于实现多客户对存储资源的共享访问。
背景技术
随着信息技术、网络技术的飞速发展,各种共享与交换的数据信息以高速急剧增加,越来越多的用户对存储产品的容量和带宽需求呈现持续性地、爆炸性的增长,面向海量数据的网络存储系统纷纷涌现如NAS,SAN,OBS。
在分布式网络存储系统中,多个客户端可以通过计算机网络访问各个节点上的共享资源。为了使分布式存储系统能够正确而有效的运行,必须要控制多个客户端对同一共享资源的并发访问,以便防止某些不确定性的行为不受控制、并发或者同时访问共享资源,导致数据和元数据的一致性遭到破坏,锁是实现并发访问控制的常用手段。目前,已经开发的用于实现并发控制的锁大多是建立在文件或者块存储的基础之上的,如pNFS,GPFS,蓝鲸分布式文件系统等等。然而,文件和块接口都存在一个不足,就是都缺乏对自身的足够描述,共享资源都是被动的接受管理,共享资源不能充分表达自身的与访问模式相关的特点,使得并发控制的效率特别是在读操作的情况下不是很高。基于对象存储是一种比较新的存储技术,对象是一个富有表现力的接口,对象丰富的可扩展属性可以使基于对象存储系统的并发控制更加高效。Lustre、panFS是目前业界著名的基于对象文件系统,然而,Lustre对文件采用扩展锁(extent lock),对元数据使用带意图的锁(intent lock),而扩展锁其实是一个基于块级别的锁;panFS的锁实现同样是基于块、文件。因此,它们在锁的实现机制上没有利用对象的可扩展性,也就没能发挥出对象存储给并发控制带来的优势。

发明内容
本发明提供一种基于对象存储系统的分布式锁,目的在于利用对象存储技术带来的优势,采用扩展的访问模式属性值,提高读锁的访问效率。
本发明的基于对象存储系统的分布式锁,用来保证数据对象和元数据对象在共享访问过程中的一致性,包括数据锁管理器和元数据锁管理器,运行于基于对象存储系统上,所述基于对象存储系统包括元数据服务器、对象存储设备、客户端和连接网络;其中(1)数据锁管理器运行于各对象存储设备之上,包括数据对象资源名字空间模块、访问模式属性值设置模块、局部队列处理模块和功能处理模块;每个数据锁管理器负责数据锁的管理,包括数据锁的授权和回收;(1.1)对象资源名字空间模块管理所在对象存储设备上的所有数据对象,根据数据对象ID值找出该数据对象的相关信息;(1.2)访问模式属性值设置模块用于设置数据对象的访问模式属性;(1.3)局部队列处理模块负责已授权锁请求队列和等待锁请求队列的处理等待锁请求队列中的所有锁请求都是与已授权锁请求队列中的一个或者多个锁请求互斥地访问某个共享数据对象资源,仅当已授权锁请求队列中某个锁请求服务完毕,释放其占有的数据对象资源时,如果该数据对象资源与等待锁请求队列的锁请求要求的数据对象资源相同,按照FIFO方式,将该锁请求放入已授权锁请求队列,同时等待锁请求队列删除该锁请求;
(1.4)功能处理模块负责处理应用进程发出的锁请求,包括数据锁的授权和回收;首先根据锁请求对应的数据对象ID从数据对象名字空间模块获取数据对象的相关信息,包括数据对象的访问模式属性,经过访问模式属性值设置模块处理后,由局部队列处理模块判断锁请求的对应的数据对象资源是否可以得到,若可以,该锁请求被插入已授权锁请求队列,取得授权,否则该锁请求被拒绝;在应用进程结束对数据对象的访问后,释放数据对象资源,数据锁被回收;(2)元数据锁管理器运行于各元数据服务器之上,包括元数据对象资源名字空间模块、局部队列处理模块和功能处理模块,每个元数据锁管理器负责元数据锁的管理,包括元数据锁的授权和回收;(2.1)元数据对象资源名字空间模块管理所在元数据服务器上的所有元数据对象,根据元数据对象ID值找出该元数据对象的相关信息;(2.2)局部队列处理模块的功能和(1.3)数据锁管理器的局部队列处理模块相同;(2.3)功能处理模块的功能除了访问模式属性值设置模块的功能之外,和(1.4)数据锁管理器的功能处理模块相同,元数据锁的授权、回收过程和数据锁的授权、回收过程相同。
所述的基于对象存储系统的分布式锁,其特征在于,所述数据锁管理器的访问模式属性值设置模块设置数据对象的访问模式属性过程如下(1)每个数据对象的访问模式属性值初始化设置为RDWT后,启动定时器;(2)在定时器预先设定好的时间内,如果该数据对象的访问全部是读操作,则该数据对象的访问模式属性值设置为READ;(3)在后续的访问过程中,遇到写操作,则该数据对象的访问模式属性值设置为RDWT后,重新启动定时器。
本发明利用扩展的对象访问模式属性,数据锁管理器接收到一个新的请求,若是读操作,则在通过数据对象资源名字空间模块快速找到该请求锁对应的对象资源信息后,检查该对象的访问模式属性值,当其模式属性的值为READ时,该数据锁管理器直接返回一个获取读锁成功,而不再真正申请一个读锁所需要的资源,从而极大提高读锁的效率。


图1为基于对象分布式存储系统示意图;图2表示基于对象分布式存储系统中的一个简单并发问题;图3表示图2中问题产生的一个过程;图4表示本发明用于基于对象分布式存储系统的情况;图5为本发明数据锁管理器的组成结构示意图;图6为本发明局部队列处理模块的处理流程示意图;图7为数据对象的访问模式属性值设置过程示意图;图8为本发明数据锁管理器的处理流程示意图;具体实施方式
图1为基于对象分布式存储系统示意图。基于对象分布式存储系统包括四个组件三个元数据服务器节点112、114、116,四个对象存储设备102、104、106、108,三个客户端节点122、124、126和TCP/IP网络132。在如图1所示系统中,对象存储设备102-108上的数据对象存储资源可以由客户端122-126共享访问;元数据服务器112-116保存和管理整个系统的数据对象的元数据信息。客户端访问系统的流程是首先,到元数据服务器获取其要访问对象的元数据信息,然后根据返回的元数据信息直接和对象存储设备进行通讯,进行数据传输等相关操作,操作完成以后,客户端把状态信息反馈给元数据服务器,更新相关的元数据信息。因此,元数据服务器上的元数据也是一个共享资源。
图2表示基于对象分布式存储系统中的一个简单并发问题。在图2的第一行是某个共享的数据对象的部分数据资源202,包括逻辑上连续的8个数据存储块41-48;图2的第二行和第三行给出了203、204两个进程对共享的数据资源202的43-45数据块进行操作,出现争用的局面,第一个进程203向共享数据资源202的43-45数据块分别写入“X”,“Y”和“Z”,第二个进程204向共享数据资源202的43-45数据块分别写入“A”,“B”和“C”,当这两个进程同时并发地往其中写入的时候,可能出现的结果是不可预料的既可能出现可接受的正确结果,也可能出现错误结果。图2的第四行和第五行示出了共享资源正确的两种可能结果205、206,对结果205,是进程204先往43-45写入“A”,“B”和“C”,接着是进程203往43-45写入“X”,“Y”和“Z”,经过两个进程的同时的写操作以后,共享数据资源的最终结果是可以接受的;对结果206,进程的写入先后关系刚好相反,但是,其结果仍然是可以接受的。图2最下面的一行示出了一种错误而混乱的结果207,造成这一结果的可能原因在图3示出,步骤301-306示出了共享资源43-45的数据变化过程步骤301进程204往43数据块写入“A”;步骤302进程203往43数据块写入“X”,覆盖原来的“A”;步骤303进程203往44数据块写入“Y”;步骤304进程204往44数据块写入“B”,覆盖原来的“Y”;步骤305进程204往45数据块写入“C”;步骤306进程203往45数据块写入“Z”,覆盖原来的“C”;结果207仅仅是争用过程中可能出现的一种混乱情况,还有多种可能出现的不可接受的结果,并且在大部分情况下,结果都不可预料。
图4表示本发明用于基于对象分布式存储系统的情况。为了防止由于资源的争用造成共享资源的无效和出现不可接受的结果,针对基于对象分布式存储系统的特点,采用了分布式锁的方式来保证数据对象资源和元数据对象的有效性和一致性。为维护数据对象资源的有效性,在对象存储设备102-108之上分别增加了数据锁管理器411-417,每个数据锁管理器负责数据锁的管理,包括数据锁的授权和回收;同样,为维护元数据对象资源的有效性,在对象存储设备112-116之上分别增加了元数据锁管理器401-405,每个元数据锁管理器负责元数据锁的管理,包括元数据锁的授权和回收。各数据锁管理器和元数据锁管理器都分别有一个全局唯一的标识符GUID来标识,并且,数据锁管理器和元数据锁管理器与其所在的节点是一一对应的关系,也就是说,每个对象存储设备有且仅有一个数据锁管理器,每个元数据服务器有且仅有一个元数据锁管理器。
图5表示数据锁管理器501的组成框架,包括数据对象资源名字空间模块504、访问模式属性值设置模块505、局部队列处理模块507和功能处理模块512。数据锁管理器对应的GUID示为502,它代表了一个全局唯一的数据锁管理器;数据对象资源名字空间由504示出,由于在基于对象分布式存储系统中,共享资源(包括数据对象资源和元数据资源)的数量都是海量的,为了便于管理这些数据以及在这么庞大的数据中能够快速检索出某个资源的相关信息,采用资源名字空间来进行管理;局部队列处理模块507包含两个不同的锁请求队列已授权锁请求队列506和等待锁请求队列508,已授权锁请求队列506表示当前已经获得某共享资源授权访问的锁队列,而等待锁请求队列508表示暂时还不能得到该共享资源访问授权的锁队列。这两个队列有内在的联系,两者中的锁请求在一定情况下是要发生转化的,这个转化是由局部队列处理模块507来实现的。
元数据锁管理器除了没有访问模式属性值设置模块外,其模块框架和数据锁管理器501相同。
图6表示局部队列处理模块的处理流程,在最初状态下,506和508这两个队列都是空的,第一个锁请求是肯定可以得到访问授权,但是,后续的锁请求就要进行相应的处理了。处理流程为(1)从已授权锁请求队列中摘取一个锁请求;(2)激活该锁对应的进程,允许该进程对锁请求的资源进行访问;(3)当进程访问资源完毕,释放它所占有的资源,其锁也从已授权锁请求队列中删除;(4)然后检查等待锁请求队列,看是否有请求资源是刚才释放的锁请求;如果有则转步骤(5),没有则转步骤(1);(5)把该锁请求由等待锁请求队列转入已授权锁请求队列,转步骤(1)。
对基于对象存储系统来说,对象这个富有表现力的接口给分布式锁的性能提升带了机遇,利用对象属性的特点,扩展出了对象的访问模式的属性,记录了对象的在一段预先设定好的时间范围里面的访问模式,这个预定时间设置为T,图7为数据对象的访问模式属性值设置过程示意图。数据对象的访问模式属性值由602示出,它只有两种可能的取值READ和RDWT,当属性值602为READ时,表示在T时间段内数据对象的访问操作全部为读,后续的访问操作604-608全都是读(RD),访问模式的值维持READ不变,并且关闭定时器;一旦出现了写访问操作(WT),如图6中的612-614,访问模式的值马上设置为RDWT,只要出现一次读操作616,就启动定时器,如果在定时器在预定时间T内都是读操作,那么就重新设置访问模式的值为READ,并且关闭定时器。
图8表示数据锁管理器的处理流程(1)处理到达的锁请求;(2)根据数据锁对应的数据对象ID从数据对象名字空间中找到该数据对象的信息,包括对象访问模式属性值;
(3)判断数据锁请求的操作类型,进行不同的分支处理;(4)读操作,转(5),否则,设置数据对象的访问模式属性值为RDWT,取消定时器,转(8);(5)检查数据对象的访问模式值,对其进行判断;(6)如果是READ,返回(1)处理后面的锁请求;否则是RDWT,检查定时器的是否已经设置;(7)如果定时器已经设置,检查定时器是否已经到点,已到点,设置数据对象的访问模式属性值为READ,同时关闭定时器,转(8);否则直接转(8);如果定时器未设置,设置数据对象的访问模式属性值为READ,并且设置定时器,转(8);(8)判断该锁请求与等待锁请求队列中的任一锁请求是否相冲突,如果相冲突,把该锁请求插入等待锁请求队列,转步骤(1);否则把该锁请求插入已授权锁请求队列,转步骤(1)。
权利要求
1.基于对象存储系统的分布式锁,用来保证数据对象和元数据对象在共享访问过程中的一致性,包括数据锁管理器和元数据锁管理器,运行于基于对象存储系统上,所述基于对象存储系统包括元数据服务器、对象存储设备、客户端和连接网络;其中(1)数据锁管理器运行于各对象存储设备之上,包括数据对象资源名字空间模块、访问模式属性值设置模块、局部队列处理模块和功能处理模块;每个数据锁管理器负责数据锁的管理,包括数据锁的授权和回收;(1.1)对象资源名字空间模块管理所在对象存储设备上的所有数据对象,根据数据对象ID值找出该数据对象的相关信息;(1.2)访问模式属性值设置模块用于设置数据对象的访问模式属性;(1.3)局部队列处理模块负责已授权锁请求队列和等待锁请求队列的处理等待锁请求队列中的所有锁请求都是与已授权锁请求队列中的一个或者多个锁请求互斥地访问某个共享数据对象资源,仅当已授权锁请求队列中某个锁请求服务完毕,释放其占有的数据对象资源时,如果该数据对象资源与等待锁请求队列的锁请求要求的数据对象资源相同,按照FIFO方式,将该锁请求放入已授权锁请求队列,同时等待锁请求队列删除该锁请求;(1.4)功能处理模块负责处理应用进程发出的锁请求,包括数据锁的授权和回收;首先根据锁请求对应的数据对象ID从数据对象名字空间模块获取数据对象的相关信息,包括数据对象的访问模式属性,经过访问模式属性值设置模块处理后,由局部队列处理模块判断锁请求的对应的数据对象资源是否可以得到,若可以,该锁请求被插入已授权锁请求队列,取得授权,否则该锁请求被拒绝;在应用进程结束对数据对象的访问后,释放数据对象资源,数据锁被回收;(2)元数据锁管理器运行于各元数据服务器之上,包括元数据对象资源名字空间模块、局部队列处理模块和功能处理模块,每个元数据锁管理器负责元数据锁的管理,包括元数据锁的授权和回收;(2.1)元数据对象资源名字空间模块管理所在元数据服务器上的所有元数据对象,根据元数据对象ID值找出该元数据对象的相关信息;(2.2)局部队列处理模块的功能和(1.3)数据锁管理器的局部队列处理模块相同;(2.3)功能处理模块的功能除了访问模式属性值设置模块的功能之外,和(1.4)数据锁管理器的功能处理模块相同,元数据锁的授权、回收过程和数据锁的授权、回收过程相同。
2.如权利要求1所述的基于对象存储系统的分布式锁,其特征在于,所述数据锁管理器的访问模式属性值设置模块设置数据对象的访问模式属性过程如下(1)每个数据对象的访问模式属性值初始化设置为RDWT后,启动定时器;(2)在定时器预先设定好的时间内,如果该数据对象的访问全部是读操作,则该数据对象的访问模式属性值设置为READ;(3)在后续的访问过程中,遇到写操作,则该数据对象的访问模式属性值设置为RDWT后,重新启动定时器。
全文摘要
基于对象存储系统访问模式属性的分布式锁,属于分布式存储系统,用于实现多客户对存储资源的共享访问,目的在于提高读锁访问效率。本发明包括数据锁管理器和元数据锁管理器,运行于基于对象存储系统上,数据锁管理器运行于各对象存储设备之上,包括数据对象资源名字空间模块、访问模式属性值设置模块、局部队列处理模块和功能处理模块;每个数据锁管理器负责数据对象锁的管理,元数据锁管理器运行于各元数据服务器之上,包括元数据对象资源名字空间模块、局部队列处理模块和功能处理模块,每个元数据锁管理器负责元数据锁的管理。本发明利用对象存储技术,采用扩展的访问模式属性值,提高读锁的访问效率。
文档编号G06F17/30GK101013381SQ20071005140
公开日2007年8月8日 申请日期2007年1月26日 优先权日2007年1月26日
发明者王芳, 冯丹, 庞丽萍, 赵水清, 彭万利, 夏鹏 申请人:华中科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1