mfs1.6.x故障一例,血的经验教训 推荐

mfs集群故障报告

故障描述:

    从2017年3月8日04:20--2017年3月8日06:20期间,调度系统mfs集群出现故障,导致无法正常使用。造成承载的虚拟机业务出现大批量的ping告警,同时影响到凌晨调度系统正常运行。造成4点-6点间调度任务失败和虚拟机无法正常使用。

 

故障原因分析:

    对故障期间的系统日志记录进行查看和分析,发现以下异常信息:

1、所有的mfschunkserver互连时候出现大量超时的情况。

2、mfs挂载点只能读,不能写。

3、4点左右mfschunkserver出现cpu wio过高的情况

 

4、mfsmaster机器硬件故障----------查看dmesg信息,未发现有异常。

5、mfsmaster日志信息 ----------- 查看/var/log/message,未见异常报错

 

故障排除:

    1、由于出现mfs集群读写异常的情况,初步判断可能是mfsmaster异常造成。故计划重启mfsmaster,由于调度系统mfs集群使用的hearbeat和drbd构建的master双机。在确认备用master服务器正常后,进行了切换操作。

    mfsmaster未能正常启动,通过日志发现是由于metadata文件异常导致无法读写。随后切回主节点时,主节点也无法正常启动,报错原因同上。

    metadata是mfs集群中存储chunk块的元信息,损坏后会导致master无法正常读取到chunk块信息,从而无法正常启动。

   

    2、mfs官方提供了metadata的修复工具mfsmetarestore工具,使用此工具能进行metadata数据异常的修复。在完成相关文件备份后,使用mfsmetarestore –a 进行了metadata的自动修复。修复完成后,master恢复正常启动。与6点28分,开始mfs集群恢复正常使用。

 

    3、通过监控发现,在4点20分左右,10.39.3.87mfschunkserver出现swap跑满的情况,导致该chunkserver无法正常使用,影响了部分chunkserver与其进行块复制和读写。造成到mfs集群正常使用。10.39.3.87无法正常登陆,重启后恢复正常。(由于mfsmaster重启,对mfs集群造成影响的10.39.3.87连接断开,mfs集群暂时恢复正常。)

   

 

    如上所述,影响到mfs集群正常运行的主要原因是由于10.39.3.87导致了大量读写超时的情况,对调度系统、虚拟机业务造成很大影响。3.87上承载部分虚拟机业务,前期出现过由于虚拟机负载过高导致宿主机swap被耗尽,导致无法正常使用的情况。

 

 

 

   

整改措施:

1、升级mfs版本,进行优化

2、升级操作系统版本

3、升级kvm,控制虚拟机的过度使用

4、增加宿主机内存,降低单个虚拟机内存

 

 

 

后续故障:

    经过1天时间后,发现mfs元信息存储目录出现空间不够告警。检查发现changelog文件不轮转。一直都写在changlog.0.mfs中。导致文件都达到60G 。

   

查看元信息目录发现:

***@***.***mfs]# ll -h

-rw-r-----1 mfs mfs 177M Mar 9 15:20 bak.changelog.0.mfs

 -rw-r----- 1 mfs mfs 673M Mar 8 05:27bak.metadata.mfs.back

 -rw-r----- 1 mfs mfs 4.0G Mar 9 20:18changelog.0.mfs

-rw-r--r--1 mfs mfs 845M Mar 9 15:27 metadata.mfs.back

-rw-r-----1 mfs mfs 854M Mar 8 05:24 metadata.mfs.back.tmp

 -rw-r----- 1 mfs mfs 530M Mar 9 15:21metadata.mfs.emergency

 -rw-r----- 1 mfs mfs 22K Mar 9 19:59sessions.mfs

 -rw-r----- 1 mfs mfs 745K Mar 9 20:00stats.mfs

 

      默认changelog是1小时轮转一次,并将log信息合并到metadata中。查看master的日志信息/var/log/message发现:

Mar 9 20:00:00 yz381 mfsmaster[9276]:previous metadata save process hasn't finished yet - do not start another one

    每小时均是如此,所以一直没办法成功轮转。

    此时没有metadata.mfs.back文件(mfs运行时的元信息文件),也没有metadata.mfs 文件(mfs停止时的元信息文件)。文件变成了metadata.mfs.back.tmp,  经过与mfs社区联系,确认此文件为1.6版本bug,由于mfsmaster主备切换过程中产生了异常,导致了metadata.mfs.back.tmp文件产生。changelog轮转时候发现此文件存在,所以觉得有异常,不进行轮转。将此文件改名后,到整点的时候,changelog 正常开始轮转。一切恢复正常。


    经与社区沟通,此bug在新版本2.x之后已经修复。



    教训:  

      mfs集群出现故障,先检查mfsmaster、chunkserver、client日志,定位好故障的主要原因后再去处理,此次故障是由于单台的chunkserver的swap用完,导致chunkserver之间的块复制出现大量超时的情况,影响在mfs上运行的业务。并不是mfsmaster异常导致。最主要的还是看日志,根据日志来排查,不要盲目推测。


      另外主备切换过程需要非常谨慎小心。出问题会很严重。



      欢迎mfs使用者一起交流沟通:

         QQ  249016681


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值