【技术实现步骤摘要】
本专利技术涉及机群文件系统分布式元数据操作技术,尤其涉及机群文件系统中保证分布式元数据一致性的方法
技术介绍
在大规模机群文件系统中,元数据与数据服务分离已经成为了一种趋势。一方面,数据访问不必通过元数据服务器,而是采用带外方式直接访问存储设备,从而获取较高的数据访问性能;另一方面,元数据服务器专门提供元数据服务,卸载了数据访问负载,从而单台元数据服务器可以支持更高的客户端访问性能,管理更多的存储设备,支持更大的系统规模扩展。然而,随着系统规模的不断扩大,单台元数据服务器逐渐成为制约系统扩展的瓶颈。为了进一步提升机群文件系统的扩展能力,通常采用多台元数据服务器构成元数据服务器机群,以分散元数据负载,支持通过增加元数据服务器数量达到机群文件系统的横向扩展。在元数据服务器机群系统中,机群文件系统的元数据被分散分布在不同的元数据服务器上,不可避免会出现涉及不同元数据服务器的分布式元数据操作,需要在不同的元数据服务器上进行元数据更新子操作。如果分布式元数据操作过程中一些元数据服务器异常宕机,则会造成分布式元数据操作在正常元数据服务器上元数据更新子操作执行成功,而在异常宕机的元数据服务器上元数据更新子操作失败的不一致状态。因此,为了保证机群文件系统中元数据的一致性,需要保证在元数据服务器异常宕机的情况下,分布式元数据操作能够原子提交,即分布式元数据操作能够恢复到如下两种状态之一。要么(I)分布式元数据操作在所有涉及到的元数据服务器上的子操作都为执行完毕状态;要么(2)分布式元数据操作在所有涉及到的元数据服务器上的子操作都为未执行状态。元数据服务器异常宕机后,内存中 ...
【技术保护点】
一种结合本地日志的机群文件系统分布式元数据操作一致性保证方法,所述方法包括:?步骤1,协调者和参与者将为分布式元数据子操作生成的分布式元数据子操作更新记录作为一个本地事务记录在本地日志中,所述分布式元数据子操作更新记录包括分布式事务和/或分布式元数据更新,在本地事务提交之后,所述分布式事务被写入到分布式日志中,所述分布式元数据更新被写入到元数据磁盘;?其中,所述分布式元数据更新包括分布式元数据子操作对文件系统元数据的更新,所述分布式事务包括关于分布式元数据子操作的状态信息;?步骤2,协调者和参与者根据所述分布式日志来对机群文件系统元数据操作的一致性进行恢复。
【技术特征摘要】
1.一种结合本地日志的机群文件系统分布式元数据操作一致性保证方法,所述方法包括: 步骤1,协调者和参与者将为分布式元数据子操作生成的分布式元数据子操作更新记录作为一个本地事务记录在本地日志中,所述分布式元数据子操作更新记录包括分布式事务和/或分布式元数据更新,在本地事务提交之后,所述分布式事务被写入到分布式日志中,所述分布式元数据更新被写入到元数据磁盘; 其中,所述分布式元数据更新包括分布式元数据子操作对文件系统元数据的更新,所述分布式事务包括关于分布式元数据子操作的状态信息; 步骤2,协调者和参与者根据所述分布式日志来对机群文件系统元数据操作的一致性进行恢复。2.根据权利要求1所述的方法,其中,所述步骤I还包括在开始分布式元数据子操作之前对本地日志事务进行强制提交的步骤。3.根据权利要求1所述的方法,其中,所述步骤I包括: 步骤11)协调者预先检查第一子操作能否在协调者端执行,所述第一子操作为协调者端要完成的分布式元数据子操作; 步骤12)如果协调者能够执行第一子操作,则为该第一子操作生成分布式事务,为该分布式事务分配分布式日志空间并将该分布式事务作为一个本地事务记录在本地日志中,该分布式事务包括分布式事务号,分布式事务状态、参与者地址、参与者操作类型、操作参数;其中,将分布式事务状态设为PREPARE ; 步骤13)协调者向参与者发送请求消息,请求参与者执行第二子操作,该请求消息中包含该协调者端的分布式事务号、分布式事务状态以及参与者地址、参与者操作类型、操作参数;所述第二子操作为参与者要完成的分布式元数据子操作; 步骤14)参与者收到来自协调者的请求消息后,检查能否执行第二子操作;如果不能执行第二子操作,则直接向协调者返回失败原因; 步骤15)如果检查到参与者端能够执行第二子操作,则为该第二子操作生成分布式元数据更新和分布式事务,并将该分布式元数据更新和分布式事务作为一个本地事务记录在本地日志中,该分布式事务包括分布式事务号,分布式事务状态、协调者地址、协调者分布式事务号、协调者操作类型、操作参数;并且参与者向协调者返回执行成功响应,并将参与者端的分布式事务号捎带返回给协调者; 步骤16)当协调者收到来自参与者的执行成功响应后,执行第一子操作,为第一子操作生成分布式元数据更新,以及将所述响应中包含的参与者端的分布式事务信息作为第一子操作的分布式事务的一部分,并将其与该分布式元数据更新作为一个本地事务记录在本地日志中。4.根据权利要求3所述的方法,在所述步骤11)中还包括如果协调者预先检查第一子操作能在协调者端执行,则首先对协调者端本地日志中未提交的本地事务进行强制提交;以及在所述步骤14)中还包括如果参与者检查能执行第二子操作,则首先参与者端对本地日志中未提交的本地事务进行强制提交。5.根据权利要求3所述的方法,所述步骤15)和步骤16)中分别还包括下列步骤: 注册本地事务的提交回调函数,以备本地事务在持久提交到本地日志后,触发分布式事务提交步骤;所述分布式事务提交步骤包括: 当分布式事务在本地日志中提交后,设置分布式事务状态为COMMIT ; 向另外一端发送分布式事务已经持久提交的确认消息; 另外一端收到该确认消息后,设置本地对应的分布式事务的状态为RECEIVE。6.根据权利要求3或5所述的方法,在所述步骤16)中,如果协调者端收到自参与者返回的执行失败的响应,协调者将分布式事务状态设置为FINISH,表示该分布式事务已结束。7.根据权利要求6所述的方法,还包括分布式事务清除的步骤,其包括:修改分布式日志信息,以释放要清除的分布式事务在分布式日志中所占的空间,其中将对分布式日志信息的修改作为一个本地事务记录到本地日志中,待本地事务持久提交后,对分布式日志信息的修改被同步到分布式日志中; 所述要清除的分布式事务为状态为COMMIT和RECEIVE的分布式事务和状态为FINISH的分布式事务。8.根据权利要求7所述的方法,所述步骤2包括: 步骤21)当服务器异常宕机后,使用本地日志中记录恢复本地的元数据磁盘和分布式曰志; 步骤22)从分布式日志文件中读取需要恢复的分布式事务,并根据分布式事务所处的不同状态针对每个分布式事务逐个进行恢复; 步骤23)向其他元数据服务器发送协助恢复请求,以通知其他元数据服务器进行与该宕机服务器相关的分布 式事务恢复。9.根据权利要求8所述的方法,所述步骤22)中对每个分布式事务进行逐个恢复包括: 步骤221)针对每个需要恢复的分布式事务,向分布式事务的另一端发送恢复重做请求,请求中包含该分布式事务编号、事务状态,如果分布式事务处于COMMIT状态,还包含另外一端的分布式事务编号、状态、操作、参数、对象属性; 步骤222)另外一端接收到重做请求后,根据该恢复请求发起端的分布式事务状态、以及在本端的本地分布式日志中查找到的对应的分布式事务状态,进行分布式事务恢复操作。10.根据权利要求9所述的方法,所述步骤222)包括: 如果恢复请求的发起端分布式事务状态为PREPARE,恢复请求的接收端分布式事务状态为COMMIT...
【专利技术属性】
技术研发人员:郑彩平,邵冰清,张军伟,刘振军,王利虎,张浩,
申请(专利权)人:中国科学院计算技术研究所,天津中科蓝鲸信息技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。