发明名称 一种分布式存储系统中元数据容错恢复方法
摘要 本发明提供一种分布式存储系统中元数据容错恢复方法,当元数据服务器掉电时,内存中元数据与元数据文件中的元数据可能并不是一致,因为之前进行了一些文件操作,每个文件操作成功后都有日志记录,这些文件操作导致了元数据的更新,但没有及时写入到元数据文件中,在使用恢复操作恢复元数据时,会先将最近的元数据文件加载到内存中,然后根据version值决定从哪条log开始恢复,每执行一条log其实就是将先前的文件操作再执行一次,当所有log执行完毕,将内存中元数据写入到元数据文件中,产生的新的元数据文件与掉电时刻内存中的元数据是保持一致的。
申请公布号 CN102662795A 申请公布日期 2012.09.12
申请号 CN201210072863.0 申请日期 2012.03.20
申请人 浪潮电子信息产业股份有限公司 发明人 崔赢;颜秉珩;张明富;张俊;张现忠
分类号 G06F11/14(2006.01)I;H04L29/08(2006.01)I 主分类号 G06F11/14(2006.01)I
代理机构 代理人
主权项 一种分布式存储系统中元数据容错恢复方法, 其特征在于恢复步骤如下:元数据服务器会每隔一段时间将内存中的元数据写入到元数据文件中,如果发生掉电,那么从最后一次执行将内存中的元数据写入到文件操作到掉电时刻之间进行的元数据操作,会因为没有从内存写入到文件而丢失,所以采用changelog的机制,为元数据生成命名为changelog.*.dfs的文件,其中,*表示数字N,这些文件以log的方式将每次的元数据操作记录下来,这些文件可称为元数据改变日志文件,以下简称为日志文件,它们存储了过去的N 小时的文件改变,N最大值的数值是由元数据服务器配置文件中的BACK_LOGS参数设置的,默认为50,即如果元数据服务进程已经运行了50个小时,那么在数据路径下会有changelog.1.dfs~changelog.50.dfs 50个文件,数字越小,表示最近最新的日志文件;当元数据服务器掉电重启后,在执行元数据服务器启动之前需要进行错误恢复,具体措施为需要将最近的一个日志文件changelog.*.dfs 并入主元数据文件metadata.dfs中;changelog主要功能是如何将元数据操作以log的形式记录到日志文件中,在dfs元数据服务器进程中主要有三个函数:changelog_init、changelog_rotate和changelog;changelog_init函数完成changelog机制的初始化工作,从配置文件中获取BACK_LOGS值来设置全局变量BackLogsNumber,该变量表示changelog.*.dfs的最多个数,另一个全局变量fd=NULL,该变量是要操作的changelog.*.dfs的文件描述符;changelog_rotate函数主要完成重命名changelog.*.dfs文件,关闭fd描述符对应的文件;若BackLogsNumber>0,则将所有的日志文件重命名,命名方法就是将changelog.*.dfs中*代表的数字N加1,新名中的N值最大为BackLogsNumber;若BackLogsNumber<=0,则删除掉changelog.0.dfs,表示不需要进行changelog;向所有的备份服务器发送消息MATOML_METACHANGES_LOG通知它们需要重命名changelog_ml.*.dfs,即备份服务器上的日志文件也需要重命名;changelog函数完成的功能是向changelog.0.dfs中添加log,从传入参数中取出version和log,并将log存放到printbuff数组中;以追加的方式打开changelog.0.dfs文件,fd记录其文件描述符,将version和log写入到该文件中;向所有备份服务器发送MATOML_METACHANGES_LOG消息,将version和log作为数据包发送出去,通知它们需要各自修改changelog_ml.0.dfs;log信息可以有两部组成:changid和log。
地址 250014 山东省济南市高新区舜雅路1036号