分布式存储元数据的修复方法、装置及系统的制作方法_3

文档序号:9616169阅读:来源:国知局
7在步骤S203之后执行。步骤S208-S210之间没有必然的执行先后顺序,其中,步骤S208在步骤S205之后执行,步骤S209在步骤S206之后执行,步骤S210在步骤S207之后执行。步骤S211-S213之间没有必然的执行先后顺序,其中,步骤S211在步骤S208之后执行,步骤S212在步骤S209之后执行,步骤S213在步骤S210之后执行。
[0128]现有技术中,在节点3因为节点5的故障问题而生成节点5写失败的日志后,后台工作人员将及时修复节点故障时,在节点故障问题解决后,如何修复曾经故障节点上的元数据,常见的方式是降级写时记录要修复对象的日志,等待后台服务器获取修复日志后进行元数据的修复,进而来保证元数据的可靠性。如图3所示,包括:
[0129]S301、节点3向节点1发送消息3,所述消息3携带元数据2,以及对元数据2进行镜像写操作的操作请求。
[0130]S302、节点3向节点2发送消息3,所述消息3携带元数据2,以及对元数据2进行镜像写操作的操作请求。
[0131]S303、节点3向节点4发送消息3,所述消息3携带元数据2,以及对元数据2进行镜像写操作的操作请求。
[0132]S304、节点3向节点5发送消息3,所述消息3携带元数据2,以及对元数据2进行镜像写操作的操作请求。
[0133]S305、节点1接收节点3发送的所述消息3。
[0134]S306、节点2接收节点3发送的所述消息3。
[0135]S307、节点4接收节点3发送的所述消息3。
[0136]S308、节点5接收节点3发送的所述消息3。
[0137]S309、节点1向节点3发送消息4,所述消息4用于指示元数据2镜像写操作成功。
[0138]S310、节点2向节点3发送消息4,所述消息4用于指示元数据2镜像写操作成功。
[0139]S311、节点4向节点3发送消息4,所述消息4用于指示元数据2镜像写操作成功。
[0140]S312、若节点5上的元数据不完整,节点5向节点3发送消息5,所述消息5用于指示元数据2镜像写操作失败。
[0141]由于节点5在出现节点故障时,对元数据1进行镜像写失败,因此在节点5接收到节点3发送的消息3之后,将判断本节点上的元数据对象不完整,进而无法对元数据2进行镜像写操作,因此节点5向节点3发送消息5,所述消息5用于指示元数据2镜像写操作失败。
[0142]S313、节点3接收节点1发送的所述消息4。
[0143]S314、节点3接收节点2发送的所述消息4。
[0144]S315、节点3接收节点4发送的所述消息4。
[0145]S316、节点3接收节点4发送的所述消息5。
[0146]S317、节点3生成节点5写失败的日志。
[0147]S318、节点3从后台服务器获取节点5上缺失的元数据。
[0148]此时,节点5上缺失的元数据包括元数据1和元数据2。
[0149]S319、节点3向节点5发送节点5上缺失的元数据。
[0150]S320、节点5根据获取到的缺失的元数据,对节点5上的元数据进行修复。
[0151]需要说明的是,上述分布式元数据的修复方法中,步骤S301-S304之间没有必然的执行先后顺序,可以先后执行步骤S301-S304中的任一个步骤,比如,顺次执行步骤S301-S304,也可以顺次执行步骤S302、S303、S301、S304等,还可以同时执行步骤S301-S304,本发明实施例对此不作具体限定。步骤S305-S308之间没有必然的执行先后顺序,其中,步骤S305在步骤S301之后执行,步骤S306在步骤S302之后执行,步骤S307在步骤S303之后执行,步骤S308在步骤S304之后执行。步骤S309-S312之间没有必然的执行先后顺序,其中,步骤S309在步骤S305之后执行,步骤S310在步骤S306之后执行,步骤S311在步骤S307之后执行,步骤S312在步骤S308之后执行。步骤S313-S316之间没有必然的执行先后顺序,其中,步骤S313在步骤S309之后执行,步骤S314在步骤S310之后执行,步骤S315在步骤S311之后执行,步骤S316在步骤S312之后执行。
[0152]然而,通常情况下,从后台服务器并不能及时获取到缺失的元数据,因此,如【背景技术】中所述,在后台服务器把节点5上曾经降级写的元数据1和元数据2修复正确之前,若再次镜像写节点5上的元数据,由于节点5上的元数据和其它节点上的元数据不一致,因此将导致继续降级写,生成新的降级写日志。当元数据的镜像写操作频率比较高时,将生成大量的降级写日志,从而增加了后台服务器要恢复的元数据的任务量。如果降级写的日志丢失或日志还没有执行到,这时候再有其它节点发生故障,将可能导致分布式存储元数据丢失,进而丢失用户文件。
[0153]为解决上述问题,本发明实施例提供一种分布式存储元数据的修复方法,如图4所示,包括:
[0154]S401、节点3向节点1发送消息3,所述消息3携带元数据2,以及对元数据2进行镜像写操作的操作请求。
[0155]S402、节点3向节点2发送消息3,所述消息3携带元数据2,以及对元数据2进行镜像写操作的操作请求。
[0156]S403、节点3向节点4发送消息3,所述消息3携带元数据2,以及对元数据2进行镜像写操作的操作请求。
[0157]S404、节点3向节点5发送消息3,所述消息3携带元数据2,以及对元数据2进行镜像写操作的操作请求。
[0158]S405、节点1接收节点3发送的所述消息3。
[0159]S406、节点2接收节点3发送的所述消息3。
[0160]S407、节点4接收节点3发送的所述消息3。
[0161 ] S408、节点5接收节点3发送的所述消息3。
[0162]S409、节点1向节点3发送消息4,所述消息4用于指示元数据2镜像写操作成功。
[0163]S410、节点2向节点3发送消息4,所述消息4用于指示元数据2镜像写操作成功。
[0164]S411、节点4向节点3发送消息4,所述消息4用于指示元数据2镜像写操作成功。
[0165]S412、若节点5上的元数据不完整,节点5获取节点5上缺失的元数据。
[0166]由于节点5在出现节点故障时,对元数据1进行镜像写失败,因此在节点5接收到节点3发送的消息3之后,将判断本节点上的元数据对象不完整,缺失元数据1,进而无法对元数据2进行镜像写操作,本发明实施例中,此时,节点5获取节点5上缺失的元数据。
[0167]一种可能的实现方式中,步骤S412包括:
[0168]S412al、若节点5上的元数据不完整,节点5向节点3发送消息6,所述消息6用于请求节点5上缺失的元数据。
[0169]S412a2、节点5接收节点3发送的消息7,所述消息7消息携带节点5上缺失的元数据,从所述消息7中获取节点5上缺失的元数据。
[0170]另一种可能的实现方式中,步骤S412包括:
[0171]S412bl、若节点5上的元数据不完整,节点5向MDS发送消息6,所述消息6用于请求节点5上缺失的元数据。
[0172]S412b2、节点5接收MDS发送的消息7,所述消息7消息携带节点5上缺失的元数据,从所述消息7中获取节点5上缺失的元数据。
[0173]当然,节点5还可能通过其它方式获取节点5上缺失的元数据,本发明实施例对此不作具体限定。
[0174]S413、节点5根据获取到的缺失的元数据,对节点5上缺失的元数据进行修复。在节点5上的元数据修复完整后,节点5对元数据2进行镜像写操作。
[0175]S414、节点5向节点3发送消息4,所述消息4用于指示元数据2镜像写操作成功。
[0176]S415、节点3接收节点1发送的所述消息4。
[0177]S416、节点3接收节点2发送的所述消息4。
[0178]S417、节点3接收节点4发送的所述消息4。
[0179]S418、节点3接收节点5发送的所述消息4。
[0180]需要说明的是,上述分布式元数据的修复方法中,步骤S401-S404之间没有必然的执行先后顺序,可以先后执行步骤S401-S404中的任一个步骤,比如,顺次执行步骤S401-S404,也可以顺次执行步骤S402、S403、S401、S404等,还可以同时执行步骤S401-S404,本发明实施例对此不作具体限定。步骤S405-S408之间没有必然的执行先后顺序,其中,步骤S405在步骤S401之后执行,步骤S406在步骤S402之后执行,步骤S407在步骤S403之后执行,步骤S408在步骤S404之后执行。步骤S409-S412之间没有必然的执行先后顺序,其中,步骤S409在步骤S405之后执行,步骤S410在步骤S406之后执行,步骤S411在步骤S407之后执行,步骤S412在步骤S408之后执行。步骤S415-S418之间没有必然的执行先后顺序,其中,步骤S415在步骤S509之后执行,步骤S416在步骤S410之后执行,步骤S417在步骤S411之后执行,步骤S418在步骤S414之后执行。
[0181]基于本发明实施例提供的分布式存储元数据的修复方法,本发明实施例中,节点5接收到节点3发送的携带元数据2和对元数据2进行镜像写操作的操作请求的消息3之后,若节点5上的元数据不完整,节点5获取节点5上缺失的元数据,进而根据获取到的缺失的元数据对节点5上的元数据进行修复,在将节点5上的元数据进行修复完整后,节点5对元数据2进行镜像写操作,并向节点3发送消息4,所述消息4用于指示元数据2镜像写操作成功。也就是说,并不像现有技术中一样,在节点5上的元数据不完整时,需要等待后台服务器获取修复日志后进行元数据的修复,当元数据的镜像写操作频率比较高时,可能生成大量的降级日志。本发明实施例中,可以在节点5上的元数据不完整时,及时对节点5上的元数据进行修复,使得本次镜像写操作成功,不会生成新的降级写日志,进而后续也不会生成更多的降级写日志。进一步的,由于后续不会生成更多的降级写日志,因此也避免了
当前第3页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1