前言
在处理一个其他双活MDS无法启动环境的时候,查看mds的日志看到了这个错误mds/journal.cc: 2929: FAILED assert(mds->sessionmap.get_version() == cmapv),在查询资料以后,暂时得到了解决,在生产环境下还是不建议使用双活MDS
处理步骤
这个是双MDS多活情况下出现的一个问题,在什么情况下出现还无法判断,目前只看到是有这个问题,并且有其他人也出现了 issue17113 按照disaster-recovery建议的步骤做了如下处理:
备份下journal
代码语言:javascript复制cephfs-journal-tool journal export backup.bin
代码语言:javascript复制cephfs-journal-tool journal reset
cephfs-table-tool all reset session
做了上两步后环境并没有恢复,还有个下面的操作没有做,这个操作会引起数据的丢失, MDS ranks other than 0 will be ignored: as a result it is possible for this to result in data loss,所以暂缓操作
代码语言:javascript复制ceph fs reset <fs name> --yes-i-really-mean-it
再次启动后还是,看到日志提示的是sessionmap的问题,正常情况下这个地方重置了session应该是可以好的
Yan, Zheng 2014年的时候在邮件列表里面提过一个配置
代码语言:javascript复制mds wipe_sessions = 1
当时解决一个replay的问题,尝试加入这个参数,然后启动mds
环境恢复了变成了双active,提示还有damage,但是数据属于可访问了
后续操作
建议是导出数据,重新配置为主备MDS集群,然后倒入数据