美文网首页Ceph分布式存储-CEPH
【问题修复】mds0: Metadata damage dete

【问题修复】mds0: Metadata damage dete

作者: lihanglucien | 来源:发表于2018-09-30 15:21 被阅读3次

    1. 故障现场

    • 通过监控发现集群状态是HEALTH_ERR状态, 并且发现mds0: Metadata damage detected。 顾名思义,猜测应该是元信息损坏导致的。


      image.png

    2. 分析damage是啥原因导致

    image.png

    大概意思是:

    • 从元数据存储池读取时,遇到了元数据损坏或丢失的情况。这条消息表明损坏之处已经被妥善隔离了,以使 MDS 继续运作,如此一来,若有客户端访问损坏的子树就返回 IO 错误。关于损坏的细节信息可用 damage ls 管理套接字命令获取。只要一遇到受损元数据,此消息就会立即出现。

    3. 查看damage ls

    • 通过指令查询到damage ls 显示的信息,可以发现里面有个ino编号。


      image.png

    4. 通过转换拿到十六进制ino

    • 通过ino:1099519182934 -> ino: 10000734856


      image.png

    5. 检查是否属于目录(10000734856)

    • 通过指令查找发现该ino确定是目录


      image.png

    6. 确定目录名

    image.png

    7. 该目录下面的所有文件

    image.png

    8. 查看fs挂载的目录是否匹配

    ceph fs ls -f json-pretty
    

    9. 修复这个目录元信息

    ceph --admin-daemon /var/run/ceph/ceph-mds.00.asok  scrub_path /dir repair
    
    image.png

    10. 跟踪代码

    参考文件:

    image.png
    image.png

    11. 总结

    11.1 问题过程回顾

    • 集群ERR
    • 发现mds0: Metadata damage detected
    • 查看damage ino
    • 根据ino定位跟踪目录
    • 根据目录名知道业务存储的数据
    • 修复问题

    12. 修复方案

    12.1方案一:删除ino对应的目录(生产环境实战演练过)

    1.业务方备份迁移数据
    2.查看damage ls


    image.png

    3.检查该ino确实没有对应的目录


    image.png
    4.删除damage rm信息
    image.png

    5.检查集群状态(集群状态从ERR恢复到WARN)


    image.png

    12.2 方案二:修复该目录元信息

    1.通过指令修复目录

    ceph --admin-daemon /var/run/ceph/ceph-mds.ceph-newpublic-osd02.py.asok scrub_path /dir/xxx repair
    

    相关文章

      网友评论

        本文标题:【问题修复】mds0: Metadata damage dete

        本文链接:https://www.haomeiwen.com/subject/prewoftx.html