机群文件系统分布式元数据一致性保证方法及系统技术方案

技术编号:8655996 阅读:174 留言:0更新日期:2013-05-01 23:41
本发明专利技术提供一种结合本地日志的机群文件系统分布式元数据操作一致性保证方法。其中,协调者和参与者将为分布式元数据子操作生成的分布式元数据子操作更新记录作为一个本地事务记录在本地日志中,所述分布式元数据子操作更新记录包括分布式事务和/或分布式元数据更新,在本地事务提交之后,所述分布式事务被写入到分布式日志中,所述分布式元数据更新被写入到元数据磁盘。该方法还包括在开始分布式元数据子操作之前对本地日志事务进行强制提交的步骤。该方法有效地复用了本地日志,降低了分布式日志的实现复杂度,此外,还能够避免出现级联撤销。

【技术实现步骤摘要】

本专利技术涉及机群文件系统分布式元数据操作技术,尤其涉及机群文件系统中保证分布式元数据一致性的方法
技术介绍
在大规模机群文件系统中,元数据与数据服务分离已经成为了一种趋势。一方面,数据访问不必通过元数据服务器,而是采用带外方式直接访问存储设备,从而获取较高的数据访问性能;另一方面,元数据服务器专门提供元数据服务,卸载了数据访问负载,从而单台元数据服务器可以支持更高的客户端访问性能,管理更多的存储设备,支持更大的系统规模扩展。然而,随着系统规模的不断扩大,单台元数据服务器逐渐成为制约系统扩展的瓶颈。为了进一步提升机群文件系统的扩展能力,通常采用多台元数据服务器构成元数据服务器机群,以分散元数据负载,支持通过增加元数据服务器数量达到机群文件系统的横向扩展。在元数据服务器机群系统中,机群文件系统的元数据被分散分布在不同的元数据服务器上,不可避免会出现涉及不同元数据服务器的分布式元数据操作,需要在不同的元数据服务器上进行元数据更新子操作。如果分布式元数据操作过程中一些元数据服务器异常宕机,则会造成分布式元数据操作在正常元数据服务器上元数据更新子操作执行成功,而在异常宕机的元数据服务器上元数据更新子操作失败的不一致状态。因此,为了保证机群文件系统中元数据的一致性,需要保证在元数据服务器异常宕机的情况下,分布式元数据操作能够原子提交,即分布式元数据操作能够恢复到如下两种状态之一。要么(I)分布式元数据操作在所有涉及到的元数据服务器上的子操作都为执行完毕状态;要么(2)分布式元数据操作在所有涉及到的元数据服务器上的子操作都为未执行状态。元数据服务器异常宕机后,内存中的信息丢失,只能根据磁盘中持久记录的信息进行一致性恢复。目前采用较多的保证分布式元数据操作一致性的方法主要有两阶段提交方法(2PC,Two Phase Commit)以及基于两阶段提交方法的一些优化方法,比如简化的分布式元数据操作两阶段提交方法(S2PC_MP, Simple 2PC Metadata Processing)以及双向冗余分布式日志优化方法(即异步两阶段提交方法)等。在这些方法中,将所涉及的元数据服务器区分为协调者(Coordinator)和参与者(Participant)两种角色。接收客户端请求的元数据服务器作为协调者,参与操作的其他元数据服务器作为参与者。为方便介绍,协调者进行的元数据状态更新操作称为第一子操作,参与者进行的元数据状态更新称为第二子操作。以上所述的两个子操作要么都执行成功,要么都执行不成功,这样机群文件系统元数据才能处于一致的状态。双向冗余分布式日志方法的过程主要包括(I)协调者首先对第一个子操作的可执行性进行预先检查(Sub-oplPrecheck)。如果检查通过,投赞成票(Vote Yes),协调者为所述分布式元数据操作预先分配编号C-LSN(Log Sequence Number);如果检查不通过,直接结束。(2)协调者向参与者发送请求消息,请求参与者执行第二个子操作(Sub-op2),请求消息中包含协调者的分布式元数据操作编号C_LSN。(3)参与者执行第二个子操作(Sub-op2)。如果执行不成功,则返回撤销“Abort”消息,直接结束;如果执行成功,参与者为所述分布式元数据操作分配编号P_LSN,并将上述编号P_LSN、执行结果记录以及提交“Commit”标志返回给协调者,不必等待将操作结果记录写入日志文件。之后,参与者异步将C_LSN、操作结果记录、“Commit”标志写入日志文件。(4)协调者收到参与者返回消息后,如果是撤销“Abort”消息,直接结束,不必再执行第一个子操作Sub-opl ;如果是提交“Commit”消息,则执行第一个子操作Sub-opl,并返回给应用程序执行的结果,不必等待将第一个子操作的结果记录写入日志文件。之后,协调者异步将P_LSN、操作结果记录、“Commit”标志写入日志文件。(5)协调者异步写入日志文件(磁盘同步)完成后,向参与者发送确认消息ACK(C)。参与者收到确认消息ACK(C)后,表示协调者已经将P_LSN、第一个子操作结果记录、“Commit”持久写入到日志文件中了,参与者可以清除日志文件中所述分布式元数据操作记录。(6)参与者异步写入日志文件(磁盘同步)完成后,向协调者发送确认消息ACK(P)。协调者收到确认消息ACK(P)消息后,表示参与者已经将C_LSN、第二个子操作结果记录、“Commit”持久写入到日志文件中了,协调者可以清除日志文件中所述分布式元数据操作记录。这种双向冗余分布式日志方法在协调者和参与者两端都进行了分布的冗余日志记录,任何一端服务器宕机后,都可以根据另外一端服务器中记录的冗余日志进行重做恢复,与2PC、S2PC_MP相比可有效降低分布式元数据操作一致性保证中磁盘同步等待开销带来的性能影响。但是该方法主要针对单个分布式元数据操作且仅涉及分布式日志。而实际上在元数据服务器机群中,大量的元数据操作仍然是本地元数据操作,也就是仅涉及到一个元数据服务器,不需要跨越多个元数据服务器。每个元数据服务器通常采用本地日志方式来保证本地元数据操作的一致性。当同时存在本地元数据操作以及多个分布式元数据操作时,对于同一元数据服务器而言,必须在保证分布式元数据子操作对该服务器元数据的更新(即对元数据磁盘内容的修改)与本地元数据操作的一致性,以及必须保证分布式元数据操作与本地元数据操作的高效结合,以使得分布式日志能够重做恢复成功,即当分布式日志重做恢复时,其依赖的本地元数据操作已经提交。然而在双向冗余分布式日志方法中没有考虑到上述问题。此夕卜,在双向冗余分布式日志方法中,有可能因为两端节点同时宕机,导致分布式元数据操作状态撤销恢复到完全没有执行的一致状态,然而,如果其他的元数据服务器存在后续分布式操作依赖于该撤销的分布式元数据操作,则导致级联撤销,需要把后续的依赖操作都进行撤销,级联撤销开销较大,并且有可能存在不能完成撤销的情况,因此需要保证多个分布式元数据操作之间不会出现级联撤销,以保证系统能够恢复到一致状态。
技术实现思路
因此,本专利技术的目的在于克服上述现有技术的缺陷,提出了一种结合本地日志的机群文件系统分布式元数据一致性保证的方法。本专利技术的目的是通过以下技术方案实现的一方面,本专利技术提供了一种机群文件系统分布式元数据一致性保证的方法,包括步骤1,协调者和参与者将为分布式元数据子操作生成的分布式元数据子操作更新记录作为一个本地事务记录在本地日志中,所述分布式元数据子操作更新记录包括分布式事务和/或分布式元数据更新,在本地事务提交之后,所述分布式事务被写入到分布式日志中,所述分布式元数据更新被写入到元数据磁盘;其中,所述分布式元数据更新包括分布式元数据子操作对文件系统元数据的更新,所述分布式事务包括关于分布式元数据子操作的状态信息;步骤2,协调者和参与者根据所述分布式日志来对机群文件系统元数据操作的一致性进行恢复。上述方法中,所述步骤I还可包括在开始分布式元数据子操作之前对本地日志事务进行强制提交的步骤。上述方法中,所述步骤I可以包括步骤11)协调者预先检查第一子操作能否在协调者端执行,所述第一子操作为协调者端要完成的分布式元数据子操作;步骤12)如果协调本文档来自技高网
...

【技术保护点】
一种结合本地日志的机群文件系统分布式元数据操作一致性保证方法,所述方法包括:?步骤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...

【专利技术属性】
技术研发人员:郑彩平邵冰清张军伟刘振军王利虎张浩
申请(专利权)人:中国科学院计算技术研究所天津中科蓝鲸信息技术有限公司
类型:发明
国别省市:

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

1