CN102750322A - 一种机群文件系统分布式元数据一致性保证方法和系统 - Google Patents
一种机群文件系统分布式元数据一致性保证方法和系统 Download PDFInfo
- Publication number
- CN102750322A CN102750322A CN2012101598738A CN201210159873A CN102750322A CN 102750322 A CN102750322 A CN 102750322A CN 2012101598738 A CN2012101598738 A CN 2012101598738A CN 201210159873 A CN201210159873 A CN 201210159873A CN 102750322 A CN102750322 A CN 102750322A
- Authority
- CN
- China
- Prior art keywords
- coordinator
- participant
- record
- commit
- journal file
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开一种机群文件系统分布式元数据一致性保证方法和系统,所述方法包括:步骤1,协调者对第一个子操作的可执行性进行预先检查,协调者向参与者发送请求信息,由参与者执行第二个子操作,参与者执行完毕之后,返回执行之后的信息给协调者,协调者和参与者写入日志文件;步骤2,根据协调者和参与者日志文件的Commit日志记录组合,对于机群文件系统一致性进行恢复。
Description
技术领域
本发明涉及机群文件系统分布式元数据操作技术,特别涉及一种机群文件系统分布式元数据一致性保证方法和系统。
背景技术
在大规模机群文件系统中,元数据与数据服务分离结构已经成为了一种趋势。一方面,数据访问不必通过元数据服务器,而是采用带外方式直接访问存储设备,从而获取较高的数据访问性能;另一方面,元数据服务器专门提供元数据服务,卸载了数据访问负载,从而单台元数据服务器可以支持更高的客户端访问性能,管理更多的存储设备,支持更大的系统规模扩展。然而,随着系统规模的不断扩大,单台元数据服务器逐渐成为制约系统扩展的瓶颈。为了进一步提升机群文件系统的扩展能力,目前通常采用多个元数据服务器构成元数据服务器机群,以分散元数据负载,支持通过增加元数据服务器数量达到机群文件系统的横向扩展。
在元数据服务器机群系统中,机群文件系统的目录元数据和文件元数据被分布在不同的元数据服务器上,不可避免会出现元数据操作涉及的多个目录或文件分布在不同元数据服务器,导致产生了跨元数据服务器的分布式元数据操作。由于分布式元数据操作涉及多个元数据服务器,如果在分布式元数据操作过程中元数据服务器异常宕机,则会造成分布式元数据操作在正常元数据服务器上的子操作执行完毕,而在异常宕机元数据服务器上的子操作没有执行的不一致状态。因此,为了保证分布式元数据操作的一致性,需要保证在元数据服务器异常宕机的情况下,分布式元数据操作能够恢复到如下两种状态之一。要么(1)分布式元数据操作在所有涉及到的元数据服务器上的子操作都为执行完毕状态;要么(2)分布式元数据操作在所有涉及到的元数据服务器上的子操作都为未执行状态。
由于元数据服务器异常宕机后,内存中的信息丢失,只能根据磁盘中持久记录的信息进行一致性恢复。一致性保证方法通常都需要多次的网络交互开销和磁盘同步等待开销,对于系统性能影响较大。目前采用较多的分布式元数据操作一致性保证方法主要有两阶段提交方法(2PC Two Phase Commit),以及基于两阶段提交方法的一些优化方法,比如简化的分布式元数据操作两阶段提交方法(S2PC_MPSimple 2PC Metadata Processing)。
在仅涉及到两个元数据服务器的情况下,据分析两阶段提交方法总共需要5次的网络交互开销和4次的磁盘同步等待开销。S2PC_MP对2PC方法进行了优化,如图1所示,为简化的分布式元数据操作两阶段提交步骤。
涉及的元数据服务器被区分为协调者(Coordinator)和参与者(Participant)两种角色。接收客户端请求的元数据服务器作为协调者,参与操作的另外一个元数据服务器作为参与者。为方便介绍,协调者进行的元数据状态更新操作称为第一个子操作,参与者进行的元数据状态更新操作称为第二个子操作。以上所述的两个子操作要么都执行成功,要么都执行不成功,机群文件系统才能处于一致的状态。简化的两阶段提交协议的具体步骤如下:
(1)协调者首先完成自己的子操作(第一个子操作)。如果执行成功,则投赞成票,并将操作结果记录写入日志文件(需要等待磁盘同步);如果执行不成功,直接结束。
(2)协调者向参与者发送请求消息,请求参与者执行第二个子操作,暗含协调者投赞成票。
(3)参与者执行第二个子操作。如果执行成功,则投赞成票,并将操作结果记录以及提交标志“Commit”写入日志文件(需要等待磁盘同步),然后向协调者发送提交“Commit”响应消息;如果执行不成功,则投撤销票,并将撤销标志“Abort”写入日志文件(需要等待磁盘同步),向协调者发送撤销“Abort”响应消息。
(4)协调者收到参与者的响应消息后,返回给应用程序执行结果,并将提交“Commit”或撤销“Abort”标志记录到日志文件中(需要等待磁盘同步)。
(5)协调者向参与者发送确认“ACK”消息之后,可以清除协调者日志文件中所述分布式元数据操作记录。
(6)参与者收到协调者发送的确认“ACK”消息后,记录结束“END”标志到日志文件中,表示分布式元数据操作一致性保证完毕。之后,可以清除参与者日志文件中所述分布式元数据操作记录。
协调者和参与者都有各自的日志文件,用来记录分布式元数据操作的执行状态。当出现元数据服务器异常宕机后,只能根据协调者和参与者日志文件中记录的执行状态,采用一致性保证协议进行状态的恢复。或者恢复到协调者和参与者都执行完毕分布式元数据操作子操作的一致状态;或者恢复到协调者和参与者都没有执行分布式元数据操作子操作的一致状态。
在分布式元数据操作执行成功的情况下,S2PC_MP方法需要3次网络交互开销和2次磁盘同步等待开销,才能返回给客户端。随着网络技术的进步,网络性能增长较快,网络交互的开销也逐渐降低。而磁盘性能的发展明显滞后,磁盘同步开销对分布式元数据操作性能影响较大。
针对现有技术的不足,本发明提出了一种机群文件系统分布式元数据操作一致性保证方法,能够降低磁盘同步开销带来的性能影响。
发明内容
本发明要解决的技术问题是现有技术中跨元数据服务器的分布式元数据操作一致性保证需要多次磁盘同步开销的问题,提供一种能够有效减少分布式元数据操作一致性保证的磁盘同步开销的方法,以降低分布式元数据操作延时。并且提供一种元数据服务器异常宕机的一致性恢复方法。
为了达到以上目的,本发明采用一种异步两阶段提交技术方案。
本发明公开一种机群文件系统分布式元数据一致性保证方法,包括:
步骤1,协调者对第一个子操作的可执行性进行预先检查,协调者向参与者发送请求信息,由参与者执行第二个子操作,参与者执行完毕之后,返回执行之后的信息给协调者,协调者和参与者写入日志文件;
步骤2,根据协调者和参与者日志文件的Commit日志记录组合,对于机群文件系统一致性进行恢复。
机群文件系统分布式元数据一致性保证方法,所述步骤1包括:
步骤21,协调者所进行的预先检查;如果检查通过,投赞成票,协调者为分布式元数据操作预先分配编号;如果检查不通过,直接结束;
步骤22,协调者向参与者所发送请求消息,请求参与者执行第二个子操作,请求消息中包含协调者的分布式元数据操作编号;
步骤23,参与者执行第二个子操作;如果执行不成功,则返回撤销Abort消息,直接结束;如果执行成功,参与者为所述分布式元数据操作分配编号P_LSN,并将上述编号P_LSN、执行结果记录以及提交Commit标志返回给协调者,不必等待将操作结果记录写入日志文件;之后,参与者异步将C_LSN、操作结果记录、Commit标志写入日志文件;
步骤24,协调者收到参与者返回消息后,如果是撤销Abort消息,直接结束,不必再执行第一个子操作;如果是提交Commit消息,则执行第一个子操作,并返回给应用程序执行的结果,不必等待将第一个子操作的结果记录写入日志文件;之后,协调者异步将P_LSN、操作结果记录、Commit标志写入日志文件。
机群文件系统分布式元数据一致性保证方法,所述步骤1还包括:
步骤31,协调者异步写入日志文件完成后,向参与者发送确认消息ACK(C);参与者收到确认消息ACK(C)后,表示协调者已经将P_LSN、第一个子操作结果记录、Commit持久写入到日志文件中了,参与者可以清除日志文件中所述分布式元数据操作记录;
步骤32,参与者异步写入日志文件完成后,向协调者发送确认消息ACK(P);协调者收到确认消息ACK(P)消息后,表示参与者已经将C_LSN、第二个子操作结果记录、Commit持久写入到日志文件中了,协调者可以清除日志文件中所述分布式元数据操作记录;
步骤33,协调者分布式元数据操作编号C_LSN与参与者分布式元数据操作编号P_LSN都采用顺序递增方式更新,分布式元数据操作编号为前一个分布式元数据操作编号增加1。
机群文件系统分布式元数据一致性保证方法,所述步骤2中日志记录组合包括:
协调者和参与者两端日志文件中都存在Commit记录;
协调者日志文件中存在Commit记录,参与者日志文件中不存在Commit记录;
参与者日志文件中存在Commit记录,协调者日志文件中不存在Commit记录;
协调者和参与者两端日志文件中都不存在Commit记录。
机群文件系统分布式元数据一致性保证方法,所述步骤2协调者和参与者两端日志文件中都存在Commit记录包括:
步骤51,表明协调者与参与者都执行成功各自操作,系统处于一致的状态;协调者与参与者之间相互发送确认消息ACK消息,进行日志文件中所述日志记录清除。
机群文件系统分布式元数据一致性保证方法,所述步骤2协调者日志文件中存在Commit记录,参与者日志文件中不存在Commit记录包括:
步骤61,协调者向参与者发送检测消息,包括参与者的P_LSN;
步骤62,参与者根据P_LSN判断所述分布式操作处于执行完毕状态,或者处于没有执行状态;由于参与者的分布式元数据操作编号以递增方式更新,如果P_LSN小于或等于当前最大的分布式元数据操作编号,则表示已经执行完毕;如果P_LSN大于当前最大的分布式元数据编号,则表示没有执行;
步骤63,如果参与者执行完毕,表示系统已经处于一致状态,协调者清除日志文件中的Commit记录;
步骤64,如果参与者处于没有执行状态,采用回滚和重做对一致性进行恢复。
机群文件系统分布式元数据一致性保证方法,所述步骤64还包括:
步骤71,采用回滚方式,协调者撤销已经Commit的记录,协调者和参与者都恢复到没有执行的一致状态;
步骤72,采用重做方式,参与者根据协调者日志文件中的Commit记录进行第二个子操作的重做,协调者和参与者都恢复到执行完毕的一致状态;重做方法需要参与者在提交消息Commit-REQ消息中返回参与者重做所需的信息,协调者将参与者重做所需的信息和Commit记录同时写入日志文件,所述Commit-REQ为参与者返回给协调者的第二个子操作执行完毕的确认的提交消息。
机群文件系统分布式元数据一致性保证方法,所述步骤2参与者日志文件中存在Commit记录,协调者日志文件中不存在Commit记录包括:
步骤81,参与者向协调者发送检测消息,包括协调者的C_LSN;
步骤82,协调者根据C_LSN判断所述分布式操作处于执行完毕状态,或者没有执行状态;由于协调者的分布式元数据操作编号以递增方式更新;如果C_LSN小于或等于当前最大的分布式元数据操作编号,则表示已经执行完毕;如果C_LSN大于当前最大的分布式元数据编号,则表示没有执行;
步骤83,如果协调者执行完毕,表示系统已经处于一致状态,参与者清除自身的Commit记录。
步骤84,如果协调者处于没有执行状态,回滚和重做对一致性进行恢复。
机群文件系统分布式元数据一致性保证方法,所述步骤84还包括:
步骤91,采用回滚方式,参与者撤销已经Commit的记录,协调者和参与者都恢复到没有执行的一致状态;
步骤92,采用重做方式,协调者根据参与者日志文件中的Commit记录进行第一个子操作的重做,协调者和参与者都恢复到执行完毕的一致状态;重做方法需要协调者在操作请求消息OP-REQ消息中传递重做所需的信息,参与者将协调者重做所需信息和Commit记录一块写入日志文件,所述OP-REQ为协调者请求参与者执行第二个子操作的请求消息。
机群文件系统分布式元数据一致性保证方法,所述步骤2协调者和参与者两端日志文件中都不存在Commit记录包括:
步骤101,如果协调者和参与者都没有执行各自操作,则处于一致状态,不必进行恢复;
步骤102,如果协调者和参与者都执行完毕各自操作,则处于一致状态,不必进行恢复。
本发明还公开一种机群文件系统分布式元数据一致性保证系统,包括:
执行性模块,用于协调者对第一个子操作的可执行性进行预先检查,协调者向参与者发送请求信息,由参与者执行第二个子操作,参与者执行完毕之后,返回执行之后的信息给协调者,协调者和参与者写入日志文件;
机群文件系统一致性恢复模块,用于根据协调者和参与者日志文件的Commit日志记录组合,对于机群文件系统一致性进行恢复。
机群文件系统分布式元数据一致性保证系统,所述执行性模块包括:
预先检查模块,用于协调者所进行的预先检查;如果检查通过,投赞成票,协调者为分布式元数据操作预先分配编号;如果检查不通过,直接结束;
请求信息模块,用于协调者向参与者所发送请求消息,请求参与者执行第二个子操作,请求消息中包含协调者的分布式元数据操作编号;
参与者执行模块,用于参与者执行第二个子操作;如果执行不成功,则返回撤销Abort消息,直接结束;如果执行成功,参与者为所述分布式元数据操作分配编号P_LSN,并将上述编号P_LSN、执行结果记录以及提交Commit标志返回给协调者,不必等待将操作结果记录写入日志文件;之后,参与者异步将C_LSN、操作结果记录、Commit标志写入日志文件;
协调者执行模块,用于协调者收到参与者返回消息后,如果是撤销Abort消息,直接结束,不必再执行第一个子操作;如果是提交Commit消息,则执行第一个子操作,并返回给应用程序执行的结果,不必等待将第一个子操作的结果记录写入日志文件;之后,协调者异步将P_LSN、操作结果记录、Commit标志写入日志文件。
机群文件系统分布式元数据一致性保证系统,所述执行性模块还包括:
协调者日志写入模块,用于协调者异步写入日志文件完成后,向参与者发送确认消息ACK(C);参与者收到确认消息ACK(C)后,表示协调者已经将P_LSN、第一个子操作结果记录、Commit持久写入到日志文件中了,参与者可以清除日志文件中所述分布式元数据操作记录;
参与者日志写入模块,用于参与者异步写入日志文件完成后,向协调者发送确认消息ACK(P);协调者收到确认消息ACK(P)消息后,表示参与者已经将C_LSN、第二个子操作结果记录、Commit持久写入到日志文件中了,协调者可以清除日志文件中所述分布式元数据操作记录;
递增更新模块,用于协调者分布式元数据操作编号C_LSN与参与者分布式元数据操作编号P_LSN都采用顺序递增方式更新,分布式元数据操作编号为前一个分布式元数据操作编号增加1。
机群文件系统分布式元数据一致性保证系统,所述机群文件系统一致性恢复模块包括:
协调者和参与者两端日志文件中都存在Commit记录;
协调者日志文件中存在Commit记录,参与者日志文件中不存在Commit记录;
参与者日志文件中存在Commit记录,协调者日志文件中不存在Commit记录;
协调者和参与者两端日志文件中都不存在Commit记录。
机群文件系统分布式元数据一致性保证系统,所述机群文件系统一致性恢复模块包括:
协调者参与者一致模块,用于表明协调者与参与者都执行成功各自操作,系统处于一致的状态;协调者与参与者之间相互发送确认消息ACK消息,进行日志文件中所述日志记录清除。
机群文件系统分布式元数据一致性保证系统,所述机群文件系统一致性恢复模块包括:
参与者检测模块,用于协调者向参与者发送检测消息,包括参与者的P_LSN;
参与者判断执行模块,用于参与者根据P_LSN判断所述分布式操作处于执行完毕状态,或者处于没有执行状态;由于参与者的分布式元数据操作编号以递增方式更新,如果P_LSN小于或等于当前最大的分布式元数据操作编号,则表示已经执行完毕;如果P_LSN大于当前最大的分布式元数据编号,则表示没有执行;
参与者执行完毕模块,用于如果参与者执行完毕,表示系统已经处于一致状态,协调者清除日志文件中的Commit记录;
参与者未执行完毕模块,用于如果参与者处于没有执行状态,采用回滚和重做对一致性进行恢复。
机群文件系统分布式元数据一致性保证系统,所述参与者未执行完毕模块还包括:
回滚模块,用于采用回滚方式,协调者撤销已经Commit的记录,协调者和参与者都恢复到没有执行的一致状态;
重做模块,用于采用重做方式,参与者根据协调者日志文件中的Commit记录进行第二个子操作的重做,协调者和参与者都恢复到执行完毕的一致状态;重做方式需要参与者在提交消息Commit-REQ消息中返回参与者重做所需的信息,协调者将参与者重做所需的信息和Commit记录同时写入日志文件,所述Commit-REQ为参与者返回给协调者的第二个子操作执行完毕的确认的提交消息。
机群文件系统分布式元数据一致性保证系统,所述机群文件系统一致性恢复模块包括:
协调者检测模块,用于参与者向协调者发送检测消息,包括协调者的C_LSN;
协调者判断执行模块,用于协调者根据C_LSN判断所述分布式操作处于执行完毕状态,或者没有执行状态;由于协调者的分布式元数据操作编号以递增方式更新;如果C_LSN小于或等于当前最大的分布式元数据操作编号,则表示已经执行完毕;如果C_LSN大于当前最大的分布式元数据编号,则表示没有执行;
协调者执行完毕模块,用于如果协调者执行完毕,表示系统已经处于一致状态,参与者清除自身的Commit记录。
协调者未执行完毕模块,用于如果协调者处于没有执行状态,回滚和重做对一致性进行恢复。
机群文件系统分布式元数据一致性保证系统,所述协调者未执行完毕模块还包括:
回滚模块,用于采用回滚方式,参与者撤销已经Commit的记录,协调者和参与者都恢复到没有执行的一致状态;
重做模块,用于采用重做方式,协调者根据参与者日志文件中的Commit记录进行第一个子操作的重做,协调者和参与者都恢复到执行完毕的一致状态;重做方式需要协调者在操作请求消息OP-REQ消息中传递重做所需的信息,参与者将协调者重做所需信息和Commit记录一块写入日志文件,所述OP-REQ为协调者请求参与者执行第二个子操作的请求消息。
机群文件系统分布式元数据一致性保证系统,所述机群文件系统一致性恢复模块包括:
不执行恢复模块,用于如果协调者和参与者都没有执行各自操作,则处于一致状态,不必进行恢复;如果协调者和参与者都执行完毕各自操作,则处于一致状态,不必进行恢复。
本发明的有益效果为:
通过采用异步方式,本发明有效避免了跨元数据服务器分布式元数据操作的一致性保证的磁盘同步等待开销,有效降低了分布式元数据操作延时,提升了分布式元数据操作性能。
附图说明
图1为传统的简化的分布式元数据操作两阶段提交步骤流程图;
图2为本发明机群文件系统分布式元数据操作一致性保证方法示意图;
图3为本发明具体实施方式示意图;
图4为本发明具体实施方式示意图;
图5为本发明机群文件系统分布式元数据一致性保证方法流程图;
图6为本发明机群文件系统分布式元数据一致性保证系统流程图。
具体实施方式
下面给出本发明的具体实施方式,结合附图对本发明做出了详细描述。
如图2所示,异步两阶段提交方法具体步骤:
(1)协调者首先对第一个子操作的可执行性进行预先检查(Sub-op1Precheck)。如果检查通过,投赞成票(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-op1;如果是提交“Commit”消息,则执行第一个子操作Sub-op1,并返回给应用程序执行的结果,不必等待将第一个子操作的结果记录写入日志文件。之后,协调者异步将P_LSN、操作结果记录、“Commit”标志写入日志文件。
(5)协调者异步写入日志文件(磁盘同步)完成后,向参与者发送确认消息ACK(C)。参与者收到确认消息ACK(C)后,表示协调者已经将P_LSN、第一个子操作结果记录、“Commit”持久写入到日志文件中了,参与者可以清除日志文件中所述分布式元数据操作记录。
(6)参与者异步写入日志文件(磁盘同步)完成后,向协调者发送确认消息ACK(P)。协调者收到确认消息ACK(P)消息后,表示参与者已经将C_LSN、第二个子操作结果记录、“Commit”持久写入到日志文件中了,协调者可以清除日志文件中所述分布式元数据操作记录。
协调者分布式元数据操作编号C_LSN与参与者分布式元数据操作编号P_LSN都采用顺序递增方式更新,分布式元数据操作编号为前一个分布式元数据操作编号增加1。
异步两阶段提交技术方案中,协调者和参与者两端的日志文件中只含有一种类型的日志记录,即(LSN、操作结果、“Commit”)的记录。为叙述方便,将所述记录称为“Commit”记录。以下从协调者和参与者日志文件中不同“Commit”记录组合情况,描述宕机一致性恢复方法。
(1)协调者和参与者两端日志文件中都存在“Commit”记录。
表明协调者与参与者都执行成功各自操作,系统处于一致的状态。协调者与参与者之间相互发送确认消息ACK消息,进行日志文件中所述日志记录清除即可。
(2)协调者日志文件中存在“Commit”记录,参与者日志文件中不存在“Commit”记录。
首先,协调者向参与者发送检测消息,包括参与者的P_LSN。参与者根据P_LSN判断所述分布式操作处于执行完毕状态,或者处于没有执行状态。由于参与者的分布式元数据操作编号以递增方式更新。如果P_LSN小于或等于当前最大的分布式元数据操作编号,则表示已经执行完毕;如果P_LSN大于当前最大的分布式元数据编号,则表示没有执行。
如果参与者执行完毕,表示系统已经处于一致状态,协调者只需要清除日志文件中的“Commit”记录即可。
如果参与者处于没有执行状态,有两种一致性恢复方法。(1)回滚,协调者撤销已经“Commit”的记录,协调者和参与者都恢复到没有执行的一致状态;(2)重做,参与者根据协调者日志文件中的“Commit”记录进行第二个子操作的重做,协调者和参与者都恢复到执行完毕的一致状态。重做方法需要参与者在提交消息“Commit-REQ”消息中返回参与者重做所需的信息,协调者将参与者重做所需的信息和“Commit”记录同时写入日志文件。
(3)参与者日志文件中存在“Commit”记录,协调者日志文件中不存在“Commit”记录。
首先,参与者向协调者发送检测消息,包括协调者的C_LSN。协调者根据C_LSN判断所述分布式操作处于执行完毕状态,或者没有执行状态。由于协调者的分布式元数据操作编号以递增方式更新。如果C_LSN小于或等于当前最大的分布式元数据操作编号,则表示已经执行完毕;如果C_LSN大于当前最大的分布式元数据编号,则表示没有执行。
如果协调者执行完毕,表示系统已经处于了一致状态,参与者只需要清除自身的“Commit”记录即可。
如果协调者处于没有执行状态,则有两种一致性恢复方法。(1)回滚,参与者撤销已经“Commit”的记录,协调者和参与者都恢复到没有执行的一致状态;(2)重做,协调者根据参与者日志文件中的“Commit”记录进行第一个子操作的重做,协调者和参与者都恢复到执行完毕的一致状态。重做方法需要协调者在操作请求消息“OP-REQ”消息中传递重做所需的信息,参与者将协调者重做所需信息和“Commit”记录一块写入日志文件。
(4)协调者和参与者两端日志文件中都不存在“Commit”记录。
如果协调者和参与者都没有执行各自操作,则处于一致状态,不必进行恢复;
如果协调者和参与者都执行完毕各自操作,则处于一致状态,不必进行恢复;
如果协调者已经执行完毕自身操作,参与者没有执行自身操作。由于只有当参与者将“Commit”记录写入日志文件后,才能向协调者发送确认消息ACK(P),然后协调者才能够清除日志文件中的“Commit”记录。因此,不会出现所述情况。
如果参与者已经执行完毕自身操作,协调者没有执行自身操作。由于只有当协调者将“Commit”记录写入日志文件后,才能向参与者发送确认消息ACK(C),然后参与者才能够清除日志文件中的“Commit”记录。因此,不会出现所述情况。
首先描述协调者和参与者的日志文件结构。协调者日志文件用于记录协调者分布式元数据操作的“Commit”记录;参与者日志文件用于记录参与者分布式元数据操作的“Commit”记录。协调者和参与者两端的日志文件结构相同,如图3所示。
日志文件头描述日志文件结构信息,包括当前能被分配的分布式元数据操作编号LSN,以及未接收到确认消息ACK消息的最旧的“Commit”记录编号Last_LSN,以及Last_LSN在日志文件中的位置Last_log_addr。日志文件中的日志记录项空间可以循环使用,日志记录项被清除后,释放的空间可以被新的日志记录项使用。
紧随日志文件头的是多个“Commit”日志记录项,每个“Commit”日志记录项格式如图4所示。
Commit_LSN:所述“Commit”记录项对应的分布式元数据操作编号。
Role_Type:协调者或参与者类型。
Remote_ID:对方的标志,用于在宕机恢复时与对方进行网络交互。
Remote_LSN:所述分布式元数据操作在对方的编号,用于宕机恢复时找到对方日志文件中的“Commit”记录项。
Op_Type:所述分布式元数据具体操作类别,比如文件创建、文件改名、硬链接等。
Count:所述“Commit”记录所占空间的大小。
Record:操作结果记录。
在日志记录项中不必记录“Commit”标志,只要存在日志记录项,暗含日志记录项提交。
文件系统格式化步骤:
在各个元数据服务器上,首先创建日志文件,分配一定数量的空闲存储资源并组织为文件;然后,格式化日志文件。初始化LSN、Last_LSN都为0,初始化Last_log_addr为0,表示日志文件头后的第一个可用“Commit”记录项。
LSN编号更新步骤:
当产生一个分布式元数据操作后,无论元数据服务器是协调者还是参与者,都使用日志文件头LSN作为所述分布式元数据操作编号,然后对LSN增加1。在同一元数据服务器上的所有的分布式元数据操作都使用统一LSN编号,不区分协调者或参与者,也不区分涉及的不同元数据服务器。
Last_LSN与Last_log_addr更新步骤:
(1)当接收到对方的“ACK”消息后,清除日志文件中的“Commit”记录。
(2)如果“Commit”记录中的Commit_LSN与日志文件头Last_LSN不相等,则结束;
(3)对Last_LSN增加1,Last_log_addr指向Last_LSN对应的位置;
(4)如果Last_LSN与LSN相等,则结束。
(5)检查Last_LSN的分布式元数据操作的“Commit”记录是否已经被清除了。如果已经被清除了,跳转到(3);如果没有被清除,结束。
以硬链接(hardlink)分布式元数据操作实施例来描述具体的实施方式。
硬链接操作是机群文件系统一种文件系统目录元数据操作。硬链接操作为同一个文件创建多个不同的文件名,多个文件名指向同一个文件,只有所有文件名都被删除后,所述文件才能够被删除。硬链接操作有三个参数,分别为源文件(source_inode)、目标父目录(parent)、目标文件名(target_name),所做操作是在目标父目录(parent)中创建指向源文件(source_inode)的target_name目标文件名。具体操作如下:
(1)在目标父目录中创建target_name文件,修改目标父目录parent内容,主要包括在目标父目录中添加新的target_name文件名指向source_inode。为叙述方便,所述操作称为硬链接第一个子操作。
(2)修改源文件source_inode属性,主要包括对源文件的硬链接数增加1。从而保证当所有文件名都被删除后,源文件硬链接数才能减少到0。表示没有文件名称指向所述文件,从而可以删除所述源文件。为叙述方便,所述操作称为硬链接第二个子操作。
如果出现硬链接第一个子操作完成,而硬链接第二个子操作没有完成的不一致情况时,源文件硬链接数没有增加。当指向源文件的所述所有其他文件名被删除时,源文件也将会被删除,导致目标父目录中的target_name目标文件名指向一个不存在文件的不一致情况。
如果出现硬链接第一个子操作没有完成,而硬链接第二个子操作完成的不一致情况时,源文件硬链接数异常增加1。当指向源文件的所述所有文件名被删除时,源文件硬链接数仍然不能减少到0,不能被删除,导致系统中出现没有任何文件名指向的孤儿文件的不一致情况。
当源文件与目标父目录在相同元数据服务器时,硬链接操作是元数据服务器本地元数据操作,由元数据服务器采用本地一致性维护机制保证一致性。
当源文件source_inode和目标父目录parent分布在不同元数据服务器时,硬链接操作转变为分布式元数据操作。目标父目录所在的元数据服务器为协调者,源文件所在的元数据服务器为参与者。
以下以回滚或重做两种恢复方法,分别介绍分布式硬链接操作实施步骤和恢复步骤。
采用回滚方法一致性恢复的分布式硬链接操作实施步骤。
(1)协调者首先检查用户是否具有创建硬链接的权限。如果检查不通过,直接向应用返回失败;如果检查通过,则预分配日志文件的分布式元数据操作编号C_LSN,并预分配日志记录项,在日志记录项中预留足够的空间,设置所述日志记录项的Count为足够空间长度(比如512字节),能够容纳操作结果记录。
(2)协调者向参与者发送操作请求,参数主要包括C_LSN、操作类别(硬链接类别)、源文件标志。
(3)参与者收到操作请求后,首先检查是否对源文件有更新权限。如果检查不通过,直接向协调者返回Abort失败消息;如果检查通过,执行硬链接第二个子操作。对源文件的硬链接数增加1,分配分布式元数据操作编号P_LSN,预分配日志记录项,在所述日志记录项中预留足够的空间长度,设置所述日志记录项Count为足够空间长度(比如512字节),能够容纳操作结果记录,向协调者返回Commit成功消息,消息中附加P_LSN。之后,构造日志记录项。Commit_LSN设置为P_LSN;Role_Type设置为“参与者”;Remote_ID设置为协调者网络地址;Remote_LSN设置为C_LSN;Op_Type设置为“硬链接”;Record设置为“源文件硬链接数增加1”。然后把构造的所述日志记录项异步写入日志文件。
(4)协调者接收到参与者的响应消息。如果为Abort失败消息,直接向应用返回失败,不必执行硬链接第一个子操作;如果消息为Commit成功,执行硬链接第一个子操作。在目标父目录中创建指向源文件的target_name文件名,向应用返回成功。之后,构造日志记录项。Commit_LSN设置为C_LSN;Role_Type设置为“协调者”;Remote_ID设置为参与者网络地址;Remote_LSN设置为P_LSN;Op_Type设置为“硬链接”;Record中设置为“在目标父目录中创建指向源文件的target_name文件名”。然后把构造的所述日志记录项异步写入日志文件。
(5)参与者等待日志记录项写入日志文件后,向协调者发送确认ACK消息。
(6)协调者等待日志记录项写入日志文件后,向参与者发送确认ACK消息。
(7)参与者收到协调者的确认消息。如果还没有向协调者发送确认ACK消息,则等待参与者所述日志记录项写入日志文件后,发送确认ACK消息。然后,参与者可以清除所述日志记录项。如果参与者已经向协调者发送了确认ACK消息,参与者可以直接清除所述日志记录项。
(8)协调者收到参与者的确认消息。如果还没有向参与者发送确认ACK消息,则等待协调者所述日志记录项写入日志文件后,发送确认ACK消息。然后,协调者可以清除所述日志记录项。如果协调者已经向参与者发送了确认ACK消息,协调者可以直接清除所述日志记录项。
分布式硬链接一致性回滚恢复方法具体步骤:
根据元数据服务器日志文件中日志记录项状态,分为如下四种情况:
(1)协调者和参与者两端日志文件中都存在所述硬链接操作日志记录项。
表明协调者执行成功硬链接第一个子操作,参与者执行成功硬链接第二个子操作,系统处于一致的状态。协调者和参与者之间相互发送ACK消息,清除日志记录项。
(2)协调者日志文件中存在所述硬链接操作的日志记录项,参与者日志文件中不存在所述硬链接操作的日志记录项。
首先,协调者根据日志文件中的日志记录项向参与者发送检测消息,包括参与者的P_LSN。参与者根据P_LSN判断执行状态,与日志文件头中的LSN比较,如果小于LSN则表示执行成功,如果大于或等于LSN则表示没有执行。
如果参与者已经执行完毕硬链接第二个子操作,表示系统已经处于一致状态,协调者只需要清除日志文件中所述硬链接日志记录项。
如果参与者没有执行硬链接第二个子操作,协调者根据日志文件中日志记录项的操作结果记录“在目标父目录中创建指向源文件的target_name文件名”,进行反向操作,在目标父目录中删除target_name的文件名,恢复到一致状态。
(3)参与者日志文件中存在所述硬链接操作的日志记录项,协调者日志文件中不存在所述硬链接操作的日志记录项。
首先,参与者根据日志文件中日志记录项向协调者发送检测消息,包括协调者的C_LSN。协调者根据C_LSN判断执行状态,与日志文件头中的LSN比较,如果小于LSN则表示已经执行成功,如果大于或等于LSN则表示没有执行。
如果协调者已经执行完毕硬链接第一个子操作,表示系统已经处于一致状态,参与者只需要清除日志文件中所述硬链接日志记录项。
如果协调者没有执行硬链接第一个子操作,参与者根据日志文件中日志记录项的操作结果记录“源文件硬链接数增加1”,进行反向操作,对源文件硬链接数减去1,从而恢复到一致状态。
(4)协调者和参与者两端日志文件中都不存在所述硬链接日志记录项。
系统处于一致状态,不必进行任何恢复操作。
采用重做方法一致性恢复的分布式硬链接操作实施步骤
以采用回滚方法一致性恢复的分布式硬链接操作实施步骤为基础进行改进描述。
在第(2)步中,协调者向参与者发送操作请求,参数主要包括C_LSN、操作类别(硬链接类别)、源文件标志之外,还需要包括协调者硬链接第一个子操作信息,包括目标父目录标志和目标文件名target_name。
在第(3)步中,参与者日志记录项的record中不仅记录硬链接第二个子操作的操作结果“源文件硬链接数增加1”,还要记录协调者硬链接第一个子操作的操作记录“在目标父目录中创建指向源文件的target_name文件名”。在向协调者返回Commit成功消息中,除附加P_LSN外,还附加参与者硬链接第二个子操作信息,包括源文件标志。
在第(4)步中,协调者日志记录项的record中不仅记录硬链接第一个子操作的操作结果“在目标父目录中创建指向源文件的target_name文件名”,还要记录参与者硬链接第二个子操作的操作结果“源文件硬链接数增加1”。
其他具体步骤与回滚方法一致性恢复的分布式硬链接操作实施步骤相同。
分布式硬链接一致性重做恢复方法具体步骤:
以分布式硬链接一致性回滚恢复方法具体步骤为基础进行改进描述。
在第(2)种情况时,如果参与者没有执行硬链接第二个子操作,协调者日志文件中存在参与者硬链接第二个子操作的操作记录“源文件硬链接数增加1”,发送给参与者进行重做,恢复到一致状态。
在第(3)种情况时,如果协调者没有执行硬链接第一个子操作,参与者日志文件中存在协调者硬链接第一个子操作的操作记录“在目标父目录中创建指向源文件的target_name文件名”,发送给协调者进行重做,恢复到一致状态。
其他具体步骤与分布式硬链接一致性回滚恢复方法具体步骤相同。
如图5所示,本发明公开一种机群文件系统分布式元数据一致性保证方法,包括:
步骤1,协调者对第一个子操作的可执行性进行预先检查,协调者向参与者发送请求信息,由参与者执行第二个子操作,参与者执行完毕之后,返回执行之后的信息给协调者,协调者和参与者写入日志文件;
步骤2,根据协调者和参与者日志文件的Commit日志记录组合,对于机群文件系统一致性进行恢复。
机群文件系统分布式元数据一致性保证方法,所述步骤1包括:
步骤21,协调者所进行的预先检查;如果检查通过,投赞成票,协调者为分布式元数据操作预先分配编号;如果检查不通过,直接结束;
步骤22,协调者向参与者所发送请求消息,请求参与者执行第二个子操作,请求消息中包含协调者的分布式元数据操作编号;
步骤23,参与者执行第二个子操作;如果执行不成功,则返回撤销Abort消息,直接结束;如果执行成功,参与者为所述分布式元数据操作分配编号P_LSN,并将上述编号P_LSN、执行结果记录以及提交Commit标志返回给协调者,不必等待将操作结果记录写入日志文件;之后,参与者异步将C_LSN、操作结果记录、Commit标志写入日志文件;
步骤24,协调者收到参与者返回消息后,如果是撤销Abort消息,直接结束,不必再执行第一个子操作;如果是提交Commit消息,则执行第一个子操作,并返回给应用程序执行的结果,不必等待将第一个子操作的结果记录写入日志文件;之后,协调者异步将P_LSN、操作结果记录、Commit标志写入日志文件。
机群文件系统分布式元数据一致性保证方法,所述步骤1还包括:
步骤31,协调者异步写入日志文件完成后,向参与者发送确认消息ACK(C);参与者收到确认消息ACK(C)后,表示协调者已经将P_LSN、第一个子操作结果记录、Commit持久写入到日志文件中了,参与者可以清除日志文件中所述分布式元数据操作记录;
步骤32,参与者异步写入日志文件完成后,向协调者发送确认消息ACK(P);协调者收到确认消息ACK(P)消息后,表示参与者已经将C_LSN、第二个子操作结果记录、Commit持久写入到日志文件中了,协调者可以清除日志文件中所述分布式元数据操作记录;
步骤33,协调者分布式元数据操作编号C_LSN与参与者分布式元数据操作编号P_LSN都采用顺序递增方式更新,分布式元数据操作编号为前一个分布式元数据操作编号增加1。
机群文件系统分布式元数据一致性保证方法,所述步骤2中日志记录组合包括:
协调者和参与者两端日志文件中都存在Commit记录;
协调者日志文件中存在Commit记录,参与者日志文件中不存在Commit记录;
参与者日志文件中存在Commit记录,协调者日志文件中不存在Commit记录;
协调者和参与者两端日志文件中都不存在Commit记录。
机群文件系统分布式元数据一致性保证方法,所述步骤2协调者和参与者两端日志文件中都存在Commit记录包括:
步骤51,表明协调者与参与者都执行成功各自操作,系统处于一致的状态;协调者与参与者之间相互发送确认消息ACK消息,进行日志文件中所述日志记录清除。
机群文件系统分布式元数据一致性保证方法,所述步骤2协调者日志文件中存在Commit记录,参与者日志文件中不存在Commit记录包括:
步骤61,协调者向参与者发送检测消息,包括参与者的P_LSN;
步骤62,参与者根据P_LSN判断所述分布式操作处于执行完毕状态,或者处于没有执行状态;由于参与者的分布式元数据操作编号以递增方式更新,如果P_LSN小于或等于当前最大的分布式元数据操作编号,则表示已经执行完毕;如果P_LSN大于当前最大的分布式元数据编号,则表示没有执行;
步骤63,如果参与者执行完毕,表示系统已经处于一致状态,协调者清除日志文件中的Commit记录;
步骤64,如果参与者处于没有执行状态,采用回滚和重做对一致性进行恢复。
机群文件系统分布式元数据一致性保证方法,所述步骤64还包括:
步骤71,采用回滚方式,协调者撤销已经Commit的记录,协调者和参与者都恢复到没有执行的一致状态;
步骤72,采用重做方式,参与者根据协调者日志文件中的Commit记录进行第二个子操作的重做,协调者和参与者都恢复到执行完毕的一致状态;重做方法需要参与者在提交消息Commit-REQ消息中返回参与者重做所需的信息,协调者将参与者重做所需的信息和Commit记录同时写入日志文件,所述Commit-REQ为参与者返回给协调者的第二个子操作执行完毕的确认的提交消息。
机群文件系统分布式元数据一致性保证方法,所述步骤2参与者日志文件中存在Commit记录,协调者日志文件中不存在Commit记录包括:
步骤81,参与者向协调者发送检测消息,包括协调者的C_LSN;
步骤82,协调者根据C_LSN判断所述分布式操作处于执行完毕状态,或者没有执行状态;由于协调者的分布式元数据操作编号以递增方式更新;如果C_LSN小于或等于当前最大的分布式元数据操作编号,则表示已经执行完毕;如果C_LSN大于当前最大的分布式元数据编号,则表示没有执行;
步骤83,如果协调者执行完毕,表示系统已经处于一致状态,参与者清除自身的Commit记录。
步骤84,如果协调者处于没有执行状态,回滚和重做对一致性进行恢复。
机群文件系统分布式元数据一致性保证方法,所述步骤84还包括:
步骤91,采用回滚方式,参与者撤销已经Commit的记录,协调者和参与者都恢复到没有执行的一致状态;
步骤92,采用重做方式,协调者根据参与者日志文件中的Commit记录进行第一个子操作的重做,协调者和参与者都恢复到执行完毕的一致状态;重做方法需要协调者在操作请求消息OP-REQ消息中传递重做所需的信息,参与者将协调者重做所需信息和Commit记录一块写入日志文件,所述OP-REQ为协调者请求参与者执行第二个子操作的请求消息。
机群文件系统分布式元数据一致性保证方法,所述步骤2协调者和参与者两端日志文件中都不存在Commit记录包括:
步骤101,如果协调者和参与者都没有执行各自操作,则处于一致状态,不必进行恢复;
步骤102,如果协调者和参与者都执行完毕各自操作,则处于一致状态,不必进行恢复。
如图6所示,本发明还公开一种机群文件系统分布式元数据一致性保证系统,包括:
执行性模块10,用于协调者对第一个子操作的可执行性进行预先检查,协调者向参与者发送请求信息,由参与者执行第二个子操作,参与者执行完毕之后,返回执行之后的信息给协调者,协调者和参与者写入日志文件;
机群文件系统一致性恢复模块20,用于根据协调者和参与者日志文件的Commit日志记录组合,对于机群文件系统一致性进行恢复。
机群文件系统分布式元数据一致性保证系统,所述执行性模块包括:
预先检查模块,用于协调者所进行的预先检查;如果检查通过,投赞成票,协调者为分布式元数据操作预先分配编号;如果检查不通过,直接结束;
请求信息模块,用于协调者向参与者所发送请求消息,请求参与者执行第二个子操作,请求消息中包含协调者的分布式元数据操作编号;
参与者执行模块,用于参与者执行第二个子操作;如果执行不成功,则返回撤销Abort消息,直接结束;如果执行成功,参与者为所述分布式元数据操作分配编号P_LSN,并将上述编号P_LSN、执行结果记录以及提交Commit标志返回给协调者,不必等待将操作结果记录写入日志文件;之后,参与者异步将C_LSN、操作结果记录、Commit标志写入日志文件;
协调者执行模块,用于协调者收到参与者返回消息后,如果是撤销Abort消息,直接结束,不必再执行第一个子操作;如果是提交Commit消息,则执行第一个子操作,并返回给应用程序执行的结果,不必等待将第一个子操作的结果记录写入日志文件;之后,协调者异步将P_LSN、操作结果记录、Commit标志写入日志文件。
机群文件系统分布式元数据一致性保证系统,所述执行性模块还包括:
协调者日志写入模块,用于协调者异步写入日志文件完成后,向参与者发送确认消息ACK(C);参与者收到确认消息ACK(C)后,表示协调者已经将P_LSN、第一个子操作结果记录、Commit持久写入到日志文件中了,参与者可以清除日志文件中所述分布式元数据操作记录;
参与者日志写入模块,用于参与者异步写入日志文件完成后,向协调者发送确认消息ACK(P);协调者收到确认消息ACK(P)消息后,表示参与者已经将C_LSN、第二个子操作结果记录、Commit持久写入到日志文件中了,协调者可以清除日志文件中所述分布式元数据操作记录;
递增更新模块,用于协调者分布式元数据操作编号C_LSN与参与者分布式元数据操作编号P_LSN都采用顺序递增方式更新,分布式元数据操作编号为前一个分布式元数据操作编号增加1。
机群文件系统分布式元数据一致性保证系统,所述机群文件系统一致性恢复模块包括:
协调者和参与者两端日志文件中都存在Commit记录;
协调者日志文件中存在Commit记录,参与者日志文件中不存在Commit记录;
参与者日志文件中存在Commit记录,协调者日志文件中不存在Commit记录;
协调者和参与者两端日志文件中都不存在Commit记录。
机群文件系统分布式元数据一致性保证系统,所述机群文件系统一致性恢复模块包括:
协调者参与者一致模块,用于表明协调者与参与者都执行成功各自操作,系统处于一致的状态;协调者与参与者之间相互发送确认消息ACK消息,进行日志文件中所述日志记录清除。
机群文件系统分布式元数据一致性保证系统,所述机群文件系统一致性恢复模块包括:
参与者检测模块,用于协调者向参与者发送检测消息,包括参与者的P_LSN;
参与者判断执行模块,用于参与者根据P_LSN判断所述分布式操作处于执行完毕状态,或者处于没有执行状态;由于参与者的分布式元数据操作编号以递增方式更新,如果P_LSN小于或等于当前最大的分布式元数据操作编号,则表示已经执行完毕;如果P_LSN大于当前最大的分布式元数据编号,则表示没有执行;
参与者执行完毕模块,用于如果参与者执行完毕,表示系统已经处于一致状态,协调者清除日志文件中的Commit记录;
参与者未执行完毕模块,用于如果参与者处于没有执行状态,采用回滚和重做对一致性进行恢复。
机群文件系统分布式元数据一致性保证系统,所述参与者未执行完毕模块还包括:
回滚模块,用于采用回滚方式,协调者撤销已经Commit的记录,协调者和参与者都恢复到没有执行的一致状态;
重做模块,用于采用重做方式,参与者根据协调者日志文件中的Commit记录进行第二个子操作的重做,协调者和参与者都恢复到执行完毕的一致状态;重做方式需要参与者在提交消息Commit-REQ消息中返回参与者重做所需的信息,协调者将参与者重做所需的信息和Commit记录同时写入日志文件,所述Commit-REQ为参与者返回给协调者的第二个子操作执行完毕的确认的提交消息。
机群文件系统分布式元数据一致性保证系统,所述机群文件系统一致性恢复模块包括:
协调者检测模块,用于参与者向协调者发送检测消息,包括协调者的C_LSN;
协调者判断执行模块,用于协调者根据C_LSN判断所述分布式操作处于执行完毕状态,或者没有执行状态;由于协调者的分布式元数据操作编号以递增方式更新;如果C_LSN小于或等于当前最大的分布式元数据操作编号,则表示已经执行完毕;如果C_LSN大于当前最大的分布式元数据编号,则表示没有执行;
协调者执行完毕模块,用于如果协调者执行完毕,表示系统已经处于一致状态,参与者清除自身的Commit记录。
协调者未执行完毕模块,用于如果协调者处于没有执行状态,回滚和重做对一致性进行恢复。
机群文件系统分布式元数据一致性保证系统,所述协调者未执行完毕模块还包括:
回滚模块,用于采用回滚方式,参与者撤销已经Commit的记录,协调者和参与者都恢复到没有执行的一致状态;
重做模块,用于采用重做方式,协调者根据参与者日志文件中的Commit记录进行第一个子操作的重做,协调者和参与者都恢复到执行完毕的一致状态;重做方式需要协调者在操作请求消息OP-REQ消息中传递重做所需的信息,参与者将协调者重做所需信息和Commit记录一块写入日志文件,所述OP-REQ为协调者请求参与者执行第二个子操作的请求消息。
机群文件系统分布式元数据一致性保证系统,所述机群文件系统一致性恢复模块包括:
不执行恢复模块,用于如果协调者和参与者都没有执行各自操作,则处于一致状态,不必进行恢复;如果协调者和参与者都执行完毕各自操作,则处于一致状态,不必进行恢复。
本领域的技术人员在不脱离权利要求书确定的本发明的精神和范围的条件下,还可以对以上内容进行各种各样的修改。因此本发明的范围并不仅限于以上的说明,而是由权利要求书的范围来确定的。
Claims (20)
1.一种机群文件系统分布式元数据一致性保证方法,其特征在于,包括:
步骤1,协调者对第一个子操作的可执行性进行预先检查,协调者向参与者发送请求信息,由参与者执行第二个子操作,参与者执行完毕之后,返回执行之后的信息给协调者,协调者和参与者写入日志文件;
步骤2,根据协调者和参与者日志文件的Commit日志记录组合,对于机群文件系统一致性进行恢复。
2.如权利要求1的机群文件系统分布式元数据一致性保证方法,其特征在于,所述步骤1包括:
步骤21,协调者所进行的预先检查;如果检查通过,投赞成票,协调者为分布式元数据操作预先分配编号;如果检查不通过,直接结束;
步骤22,协调者向参与者所发送请求消息,请求参与者执行第二个子操作,请求消息中包含协调者的分布式元数据操作编号;
步骤23,参与者执行第二个子操作;如果执行不成功,则返回撤销Abort消息,直接结束;如果执行成功,参与者为所述分布式元数据操作分配编号P_LSN,并将上述编号P_LSN、执行结果记录以及提交Commit标志返回给协调者,不必等待将操作结果记录写入日志文件;之后,参与者异步将C_LSN、操作结果记录、Commit标志写入日志文件;
步骤24,协调者收到参与者返回消息后,如果是撤销Abort消息,直接结束,不必再执行第一个子操作;如果是提交Commit消息,则执行第一个子操作,并返回给应用程序执行的结果,不必等待将第一个子操作的结果记录写入日志文件;之后,协调者异步将P_LSN、操作结果记录、Commit标志写入日志文件。
3.如权利要求1的机群文件系统分布式元数据一致性保证方法,其特征在于,所述步骤1还包括:
步骤31,协调者异步写入日志文件完成后,向参与者发送确认消息ACK(C);参与者收到确认消息ACK(C)后,表示协调者已经将P_LSN、第一个子操作结果记录、Commit持久写入到日志文件中了,参与者可以清除日志文件中所述分布式元数据操作记录;
步骤32,参与者异步写入日志文件完成后,向协调者发送确认消息ACK(P);协调者收到确认消息ACK(P)消息后,表示参与者已经将C_LSN、第二个子操作结果记录、Commit持久写入到日志文件中了,协调者可以清除日志文件中所述分布式元数据操作记录;
步骤33,协调者分布式元数据操作编号C_LSN与参与者分布式元数据操作编号P_LSN都采用顺序递增方式更新,分布式元数据操作编号为前一个分布式元数据操作编号增加1。
4.如权利要求1的机群文件系统分布式元数据一致性保证方法,其特征在于,所述步骤2中日志记录组合包括:
协调者和参与者两端日志文件中都存在Commit记录;
协调者日志文件中存在Commit记录,参与者日志文件中不存在Commit记录;
参与者日志文件中存在Commit记录,协调者日志文件中不存在Commit记录;
协调者和参与者两端日志文件中都不存在Commit记录。
5.如权利要求4的机群文件系统分布式元数据一致性保证方法,其特征在于,所述步骤2协调者和参与者两端日志文件中都存在Commit记录包括:
步骤51,表明协调者与参与者都执行成功各自操作,系统处于一致的状态;协调者与参与者之间相互发送确认消息ACK消息,进行日志文件中所述日志记录清除。
6.如权利要求4的机群文件系统分布式元数据一致性保证方法,其特征在于,所述步骤2协调者日志文件中存在Commit记录,参与者日志文件中不存在Commit记录包括:
步骤61,协调者向参与者发送检测消息,包括参与者的P_LSN;
步骤62,参与者根据P_LSN判断所述分布式操作处于执行完毕状态,或者处于没有执行状态;由于参与者的分布式元数据操作编号以递增方式更新,如果P_LSN小于或等于当前最大的分布式元数据操作编号,则表示已经执行完毕;如果P_LSN大于当前最大的分布式元数据编号,则表示没有执行;
步骤63,如果参与者执行完毕,表示系统已经处于一致状态,协调者清除日志文件中的Commit记录;
步骤64,如果参与者处于没有执行状态,采用回滚和重做对一致性进行恢复。
7.如权利要求6的机群文件系统分布式元数据一致性保证方法,其特征在于,所述步骤64还包括:
步骤71,采用回滚方式,协调者撤销已经Commit的记录,协调者和参与者都恢复到没有执行的一致状态;
步骤72,采用重做方式,参与者根据协调者日志文件中的Commit记录进行第二个子操作的重做,协调者和参与者都恢复到执行完毕的一致状态;重做方法需要参与者在提交消息Commit-REQ消息中返回参与者重做所需的信息,协调者将参与者重做所需的信息和Commit记录同时写入日志文件,所述Commit-REQ为参与者返回给协调者的第二个子操作执行完毕的确认的提交消息。
8.如权利要求4的机群文件系统分布式元数据一致性保证方法,其特征在于,所述步骤2参与者日志文件中存在Commit记录,协调者日志文件中不存在Commit记录包括:
步骤81,参与者向协调者发送检测消息,包括协调者的C_LSN;
步骤82,协调者根据C_LSN判断所述分布式操作处于执行完毕状态,或者没有执行状态;由于协调者的分布式元数据操作编号以递增方式更新;如果C_LSN小于或等于当前最大的分布式元数据操作编号,则表示已经执行完毕;如果C_LSN大于当前最大的分布式元数据编号,则表示没有执行;
步骤83,如果协调者执行完毕,表示系统已经处于一致状态,参与者清除自身的Commit记录。
步骤84,如果协调者处于没有执行状态,回滚和重做对一致性进行恢复。
9.如权利要求8的机群文件系统分布式元数据一致性保证方法,其特征在于,所述步骤84还包括:
步骤91,采用回滚方式,参与者撤销已经Commit的记录,协调者和参与者都恢复到没有执行的一致状态;
步骤92,采用重做方式,协调者根据参与者日志文件中的Commit记录进行第一个子操作的重做,协调者和参与者都恢复到执行完毕的一致状态;重做方法需要协调者在操作请求消息OP-REQ消息中传递重做所需的信息,参与者将协调者重做所需信息和Commit记录一块写入日志文件,所述OP-REQ为协调者请求参与者执行第二个子操作的请求消息。
10.如权利要求4的机群文件系统分布式元数据一致性保证方法,其特征在于,所述步骤2协调者和参与者两端日志文件中都不存在Commit记录包括:
步骤101,如果协调者和参与者都没有执行各自操作,则处于一致状态,不必进行恢复;
步骤102,如果协调者和参与者都执行完毕各自操作,则处于一致状态,不必进行恢复。
11.一种机群文件系统分布式元数据一致性保证系统,其特征在于,包括:
执行性模块,用于协调者对第一个子操作的可执行性进行预先检查,协调者向参与者发送请求信息,由参与者执行第二个子操作,参与者执行完毕之后,返回执行之后的信息给协调者,协调者和参与者写入日志文件;
机群文件系统一致性恢复模块,用于根据协调者和参与者日志文件的Commit日志记录组合,对于机群文件系统一致性进行恢复。
12.如权利要求11的机群文件系统分布式元数据一致性保证系统,其特征在于,所述执行性模块包括:
预先检查模块,用于协调者所进行的预先检查;如果检查通过,投赞成票,协调者为分布式元数据操作预先分配编号;如果检查不通过,直接结束;
请求信息模块,用于协调者向参与者所发送请求消息,请求参与者执行第二个子操作,请求消息中包含协调者的分布式元数据操作编号;
参与者执行模块,用于参与者执行第二个子操作;如果执行不成功,则返回撤销Abort消息,直接结束;如果执行成功,参与者为所述分布式元数据操作分配编号P_LSN,并将上述编号P_LSN、执行结果记录以及提交Commit标志返回给协调者,不必等待将操作结果记录写入日志文件;之后,参与者异步将C_LSN、操作结果记录、Commit标志写入日志文件;
协调者执行模块,用于协调者收到参与者返回消息后,如果是撤销Abort消息,直接结束,不必再执行第一个子操作;如果是提交Commit消息,则执行第一个子操作,并返回给应用程序执行的结果,不必等待将第一个子操作的结果记录写入日志文件;之后,协调者异步将P_LSN、操作结果记录、Commit标志写入日志文件。
13.如权利要求11的机群文件系统分布式元数据一致性保证系统,其特征在于,所述执行性模块还包括:
协调者日志写入模块,用于协调者异步写入日志文件完成后,向参与者发送确认消息ACK(C);参与者收到确认消息ACK(C)后,表示协调者已经将P_LSN、第一个子操作结果记录、Commit持久写入到日志文件中了,参与者可以清除日志文件中所述分布式元数据操作记录;
参与者日志写入模块,用于参与者异步写入日志文件完成后,向协调者发送确认消息ACK(P);协调者收到确认消息ACK(P)消息后,表示参与者已经将C_LSN、第二个子操作结果记录、Commit持久写入到日志文件中了,协调者可以清除日志文件中所述分布式元数据操作记录;
递增更新模块,用于协调者分布式元数据操作编号C_LSN与参与者分布式元数据操作编号P_LSN都采用顺序递增方式更新,分布式元数据操作编号为前一个分布式元数据操作编号增加1。
14.如权利要求11的机群文件系统分布式元数据一致性保证系统,其特征在于,所述机群文件系统一致性恢复模块包括:
协调者和参与者两端日志文件中都存在Commit记录;
协调者日志文件中存在Commit记录,参与者日志文件中不存在Commit记录;
参与者日志文件中存在Commit记录,协调者日志文件中不存在Commit记录;
协调者和参与者两端日志文件中都不存在Commit记录。
15.如权利要求14的机群文件系统分布式元数据一致性保证系统,其特征在于,所述机群文件系统一致性恢复模块包括:
协调者参与者一致模块,用于表明协调者与参与者都执行成功各自操作,系统处于一致的状态;协调者与参与者之间相互发送确认消息ACK消息,进行日志文件中所述日志记录清除。
16.如权利要求14的机群文件系统分布式元数据一致性保证系统,其特征在于,所述机群文件系统一致性恢复模块包括:
参与者检测模块,用于协调者向参与者发送检测消息,包括参与者的P_LSN;
参与者判断执行模块,用于参与者根据P_LSN判断所述分布式操作处于执行完毕状态,或者处于没有执行状态;由于参与者的分布式元数据操作编号以递增方式更新,如果P_LSN小于或等于当前最大的分布式元数据操作编号,则表示已经执行完毕;如果P_LSN大于当前最大的分布式元数据编号,则表示没有执行;
参与者执行完毕模块,用于如果参与者执行完毕,表示系统已经处于一致状态,协调者清除日志文件中的Commit记录;
参与者未执行完毕模块,用于如果参与者处于没有执行状态,采用回滚和重做对一致性进行恢复。
17.如权利要求16的机群文件系统分布式元数据一致性保证系统,其特征在于,所述参与者未执行完毕模块还包括:
回滚模块,用于采用回滚方式,协调者撤销已经Commit的记录,协调者和参与者都恢复到没有执行的一致状态;
重做模块,用于采用重做方式,参与者根据协调者日志文件中的Commit记录进行第二个子操作的重做,协调者和参与者都恢复到执行完毕的一致状态;重做方式需要参与者在提交消息Commit-REQ消息中返回参与者重做所需的信息,协调者将参与者重做所需的信息和Commit记录同时写入日志文件,所述Commit-REQ为参与者返回给协调者的第二个子操作执行完毕的确认的提交消息。
18.如权利要求14的机群文件系统分布式元数据一致性保证系统,其特征在于,所述机群文件系统一致性恢复模块包括:
协调者检测模块,用于参与者向协调者发送检测消息,包括协调者的C_LSN;
协调者判断执行模块,用于协调者根据C_LSN判断所述分布式操作处于执行完毕状态,或者没有执行状态;由于协调者的分布式元数据操作编号以递增方式更新;如果C_LSN小于或等于当前最大的分布式元数据操作编号,则表示已经执行完毕;如果C_LSN大于当前最大的分布式元数据编号,则表示没有执行;
协调者执行完毕模块,用于如果协调者执行完毕,表示系统已经处于一致状态,参与者清除自身的Commit记录。
协调者未执行完毕模块,用于如果协调者处于没有执行状态,回滚和重做对一致性进行恢复。
19.如权利要求18的机群文件系统分布式元数据一致性保证系统,其特征在于,所述协调者未执行完毕模块还包括:
回滚模块,用于采用回滚方式,参与者撤销已经Commit的记录,协调者和参与者都恢复到没有执行的一致状态;
重做模块,用于采用重做方式,协调者根据参与者日志文件中的Commit记录进行第一个子操作的重做,协调者和参与者都恢复到执行完毕的一致状态;重做方式需要协调者在操作请求消息OP-REQ消息中传递重做所需的信息,参与者将协调者重做所需信息和Commit记录一块写入日志文件,所述OP-REQ为协调者请求参与者执行第二个子操作的请求消息。
20.如权利要求14的机群文件系统分布式元数据一致性保证系统,其特征在于,所述机群文件系统一致性恢复模块包括:
不执行恢复模块,用于如果协调者和参与者都没有执行各自操作,则处于一致状态,不必进行恢复;如果协调者和参与者都执行完毕各自操作,则处于一致状态,不必进行恢复。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210159873.8A CN102750322B (zh) | 2012-05-22 | 2012-05-22 | 一种机群文件系统分布式元数据一致性保证方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210159873.8A CN102750322B (zh) | 2012-05-22 | 2012-05-22 | 一种机群文件系统分布式元数据一致性保证方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102750322A true CN102750322A (zh) | 2012-10-24 |
CN102750322B CN102750322B (zh) | 2014-11-05 |
Family
ID=47030508
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210159873.8A Expired - Fee Related CN102750322B (zh) | 2012-05-22 | 2012-05-22 | 一种机群文件系统分布式元数据一致性保证方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102750322B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103077222A (zh) * | 2012-12-31 | 2013-05-01 | 中国科学院计算技术研究所 | 机群文件系统分布式元数据一致性保证方法及系统 |
CN104036034A (zh) * | 2014-06-30 | 2014-09-10 | 百度在线网络技术(北京)有限公司 | 用于数据仓库的日志分析方法和装置 |
CN104220982A (zh) * | 2013-10-29 | 2014-12-17 | 华为技术有限公司 | 一种事务处理方法与装置 |
WO2015062113A1 (zh) * | 2013-10-29 | 2015-05-07 | 华为技术有限公司 | 一种事务处理方法与装置 |
CN107438092A (zh) * | 2016-03-10 | 2017-12-05 | 阿里巴巴集团控股有限公司 | 用于分布式场景中数据处理的方法和设备 |
CN107862095A (zh) * | 2017-12-07 | 2018-03-30 | 中国银行股份有限公司 | 一种数据处理方法及装置 |
CN109117093A (zh) * | 2018-08-20 | 2019-01-01 | 赛凡信息科技(厦门)有限公司 | 保证分布式对象存储中的数据、流量、容量一致性的方案 |
US10242027B2 (en) | 2014-08-15 | 2019-03-26 | Hewlett-Packard Development Company, L.P. | Three phase commit for a distributed file system |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030046286A1 (en) * | 2001-08-30 | 2003-03-06 | Jacobs Dean Bernard | Cluster caching with concurrency checking |
CN1834956A (zh) * | 2005-03-18 | 2006-09-20 | 联想(北京)有限公司 | 多线程元数据的处理方法 |
CN101334797A (zh) * | 2008-08-04 | 2008-12-31 | 中兴通讯股份有限公司 | 一种分布式文件系统及其数据块一致性管理的方法 |
CN102158546A (zh) * | 2011-02-28 | 2011-08-17 | 中国科学院计算技术研究所 | 一种集群文件系统及其文件服务方法 |
-
2012
- 2012-05-22 CN CN201210159873.8A patent/CN102750322B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030046286A1 (en) * | 2001-08-30 | 2003-03-06 | Jacobs Dean Bernard | Cluster caching with concurrency checking |
CN1834956A (zh) * | 2005-03-18 | 2006-09-20 | 联想(北京)有限公司 | 多线程元数据的处理方法 |
CN101334797A (zh) * | 2008-08-04 | 2008-12-31 | 中兴通讯股份有限公司 | 一种分布式文件系统及其数据块一致性管理的方法 |
CN102158546A (zh) * | 2011-02-28 | 2011-08-17 | 中国科学院计算技术研究所 | 一种集群文件系统及其文件服务方法 |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103077222B (zh) * | 2012-12-31 | 2016-01-27 | 中国科学院计算技术研究所 | 机群文件系统分布式元数据一致性保证方法及系统 |
CN103077222A (zh) * | 2012-12-31 | 2013-05-01 | 中国科学院计算技术研究所 | 机群文件系统分布式元数据一致性保证方法及系统 |
US10055445B2 (en) | 2013-10-29 | 2018-08-21 | Huawei Technologies Co., Ltd. | Transaction processing method and apparatus |
CN104220982A (zh) * | 2013-10-29 | 2014-12-17 | 华为技术有限公司 | 一种事务处理方法与装置 |
WO2015062113A1 (zh) * | 2013-10-29 | 2015-05-07 | 华为技术有限公司 | 一种事务处理方法与装置 |
US9348841B2 (en) | 2013-10-29 | 2016-05-24 | Huawei Technologies Co., Ltd. | Transaction processing method and system |
CN104036034A (zh) * | 2014-06-30 | 2014-09-10 | 百度在线网络技术(北京)有限公司 | 用于数据仓库的日志分析方法和装置 |
US10242027B2 (en) | 2014-08-15 | 2019-03-26 | Hewlett-Packard Development Company, L.P. | Three phase commit for a distributed file system |
CN107438092A (zh) * | 2016-03-10 | 2017-12-05 | 阿里巴巴集团控股有限公司 | 用于分布式场景中数据处理的方法和设备 |
CN107438092B (zh) * | 2016-03-10 | 2020-04-07 | 阿里巴巴集团控股有限公司 | 用于分布式场景中数据处理的方法和设备 |
CN107862095A (zh) * | 2017-12-07 | 2018-03-30 | 中国银行股份有限公司 | 一种数据处理方法及装置 |
CN107862095B (zh) * | 2017-12-07 | 2021-06-01 | 中国银行股份有限公司 | 一种数据处理方法及装置 |
CN109117093A (zh) * | 2018-08-20 | 2019-01-01 | 赛凡信息科技(厦门)有限公司 | 保证分布式对象存储中的数据、流量、容量一致性的方案 |
CN109117093B (zh) * | 2018-08-20 | 2021-10-01 | 赛凡信息科技(厦门)有限公司 | 保证分布式对象存储中的数据、流量、容量一致性的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102750322B (zh) | 2014-11-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102750322B (zh) | 一种机群文件系统分布式元数据一致性保证方法和系统 | |
JP6777673B2 (ja) | インプレーススナップショット | |
US12038906B2 (en) | Database system with database engine and separate distributed storage service | |
JP6619406B2 (ja) | ログレコード管理 | |
US11755415B2 (en) | Variable data replication for storage implementing data backup | |
US10534768B2 (en) | Optimized log storage for asynchronous log updates | |
CN103077222B (zh) | 机群文件系统分布式元数据一致性保证方法及系统 | |
EP2494456B1 (en) | Backup using metadata virtual hard drive and differential virtual hard drive | |
CN101888405B (zh) | 一种云计算的文件系统和数据处理方法 | |
JP2016515271A (ja) | 分散型データベースシステム用高速クラッシュ回復 | |
WO2012126232A1 (zh) | 一种数据备份恢复的方法、系统和服务节点 | |
KR20150129839A (ko) | 분산 데이터 시스템들을 위한 전 시스템에 미치는 체크포인트 회피 | |
CN104378423A (zh) | 元数据集群分布式存储系统及读取、写入存储数据的方法 | |
CN104991739A (zh) | 元数据服务器失效接替中精确一次执行语义的方法及系统 | |
CN112740186A (zh) | 对存储段应用日志 | |
CN113934575A (zh) | 一种基于分布式拷贝的大数据备份系统及方法 | |
JPH11272628A (ja) | 共用データの転送方法および結合装置 | |
US11132267B1 (en) | Ability to maintain RPO in clustered environment with failed nodes/disks | |
US20240103984A1 (en) | Leveraging backup process metadata for data recovery optimization | |
CN118779148A (zh) | 元数据的备份方法、装置、计算机可读介质及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20141105 |