美文网首页
ceph osd 常见故障处理

ceph osd 常见故障处理

作者: 大鱼民 | 来源:发表于2020-03-03 17:24 被阅读0次

    进行 OSD 排障前,先检查一下 monitors 和网络。如果 ceph health 或 ceph -s 返回的是健康状态,这意味着 monitors 形成了法定人数。如果 monitor 还没达到法定人数、或者 monitor 状态错误,要先解决 monitor 的问题。核实下网络,确保它在正常运行,因为网络对 OSD 的运行和性能有显著影响。

    2.1 收集 OSD 数据

    开始OSD 排障的第一步最好先收集信息,如 ceph osd tree

    ceph 日志

    默认路径 /var/log/ceph,其他路径查看配置文件

    管理套接字

    列出节点上所有ceph 套接字:
    ls /var/run/ceph
    执行以下命令显示可用选项,将 {daemon-name}换成实际的守护进程,如
    ceph daemon osd.1 help

    I/O 统计工具

    iostat -x

    诊断信息

    dmesg | grep scsi
    dmesg | grep error

    2.2 停止数据向外重新平衡

    周期性维护,停机维护osd 让caush自动平衡停止:ceph osd set noout
    维护好osd后,ceph osd unset noout

    2.3 OSD没运行

    OSD起不来

    重启集群后,有osd启动不了,依次检查:

    • 配置文件
    • 检查路径:检查配置文件、osd数据、osd日志分区路径
    • 检查最大线程数:节点osd如果有很多,就回触碰到最大线程数限制,可通过 sysctl -w kernel.pid_max=4194303调大线程数,若解决,可通过修改/etc/sysctl.conf 中的kernel.pid_max永久生效
    • 内核版本
    • 段错误,提高日志级别查看详细
    OSD失败

    通过 ceph health detail查看
    如果因磁盘或其他错误不能正常运行,将会在日志/var/log/ceph里输出一条错误信息
    如果守护进程因心跳失败、或者底层核心文件系统无响应停止,查看dmesg获取硬盘或者内核错误

    硬盘无剩余空间

    ceph 不允许向满的osd 写入数据。mon osd full ratio 默认为0.95,达到0.95阻止写入,mon osd health ratio 默认0.85,0.85健康告警

    • 增加osd
    • 删除不需要的数据
    • 单独调整已满的osd 的near full 和full比例
    ceph tell osd.id injectargs '--mon-osd-full-ratio .98'
    ceph tell osd.id injectargs '--mon-osd-full-ratio 0.98
    
    • 调低 osd crush weight,使数据迁移
      ceph osd crush reweight osd.id {a-little-lower-weight-value}

    2.4 OSD 龟速或无响应

    网络问题

    确保ceph 进程和依赖的进程在监听

    netstat -alp|grep ceph
    

    检查网络统计信息
    netstat -s

    驱动器配置

    一个存储驱动器应该只用于一个osd,检查是否共用

    扇区损坏/碎片化磁盘

    检查磁盘是否有坏道/碎片

    MON、OSD 共存

    mon 频繁调用fsync(),会妨碍工作,特别是共享驱动器时。遭遇的性能问题可能有:

    • 较老的内核(低于3.0)
    • Argonaut 版运行在老的glibc上
    • 运行的内核不支持sysncfs(2)系统调用
    进程共存
    日志记录级别
    osd限流

    因osd速度过快影响性能

    内核版本
    内核与syncfs问题
    文件系统问题
    内存不足

    建议 osd/1G 内存

    2.5 震荡的OSD

    如果 cluster(后端)网络失败、或出现了明显的延时,同时 public(前端)网络却运行良好, OSD 目前不能很好地处理这种情况。这时 OSD 们会向 monitor 报告邻居 down 了、同时报告自己是 up 的,我们把这种情形称为震荡( flapping )
    如果有原因导致 OSD 震荡(反复地被标记为 down ,然后又 up ),你可以强制 monitor 停止这种震荡状态:

    ceph osd set noup
    ceph osd set nodown
    

    这些标记记录在 osdmap 数据结构里:

    ceph osd dump | grep flags
    flags no-up,no-down
    

    可用以下命令清楚标记:

    ceph osd unset noup
    ceph osd unset nodown
    

    相关文章

      网友评论

          本文标题:ceph osd 常见故障处理

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