ceph osd full故障

资料(传送门)[http://bbs.ceph.org.cn/question/363]

#故障之后的现象

[root@ceph-osd-1 ~]# ceph -s  
    cluster 8ade9410-0ad8-4dbb-bd56-e1bf2f947009  
     health HEALTH_ERR 
            1 full osd(s) 
            2 near full osd(s)  
     monmap e1: 1 mons at {ceph-osd-1=10.10.200.163:6789/0}, election epoch 1, quorum 0 ceph-osd-1  
     osdmap e1514: 11 osds: 11 up, 11 in  
            flags full  
      pgmap v177918: 1628 pgs, 6 pools, 2548 GB data, 632 kobjects  
            7708 GB used, 4196 GB / 11905 GB avail  
                1625 active+clean  
                   3 active+clean+scrubbing+deep  
[root@ceph-osd-1 ~]# ceph health  
HEALTH_ERR 1 full osd(s); 2 near full osd(s)  

可以看到其中一个osd磁盘已经写满,另外还有两个osd已经接近爆满。 查看详细的健康情况

[root@ceph-osd-1 ~]# ceph health detail
...
recovery 7482/129081 objects degraded (5.796%)
osd.0 is full at 95%
osd.2 is near full at 93%
osd.1 is near full at 93%

这里能看到具体是哪个磁盘接近饱和。

#扩容解决 安装好ceph,配置好验证之后,进行新的osd的安装

[root@ceph-osd-1 ~]# ceph-deploy osd prepare 192.168.1.1:/osd3  
[root@ceph-osd-1 ~]# ceph-deploy osd activate 192.168.1.1:/osd3  

详细的增加osd的步骤可以参考这里:[传送门] 增加之后需要确认你的新osd是否在故障的数据区域 #更改数据区域 查看数据区域

[root@ceph-osd-1 ~]# ceph osd tree
-21 6.00000 root ssd                                              
-11 3.00000     datacenter guangdong                                   
 -2 2.85999         host f207                                     
  1 0.25999             osd.1        up  1.00000          1.00000 
  2 0.25999             osd.2        up  1.00000          1.00000 
  3 0.25999             osd.3        up  1.00000          1.00000 
  4 0.25999             osd.4        up  1.00000          1.00000 
  5 0.25999             osd.5        up  1.00000          1.00000 
  6 0.25999             osd.6        up  1.00000          1.00000 
  7 0.25999             osd.7        up  1.00000          1.00000 
  8 0.25999             osd.8        up  1.00000          1.00000 
  9 0.25999             osd.9        up  1.00000          1.00000 
 -3 2.85999         host f208                                     
 11 0.25999             osd.11       up  1.00000          1.00000 
 12 0.25999             osd.12       up  1.00000          1.00000 
 13 0.25999             osd.13       up  1.00000          1.00000 
 14 0.25999             osd.14       up  1.00000          1.00000 
 15 0.25999             osd.15       up  1.00000          1.00000 
 16 0.25999             osd.16       up  1.00000          1.00000 
 17 0.25999             osd.17       up  1.00000          1.00000 
 18 0.25999             osd.18       up  1.00000          1.00000 
 19 0.25999             osd.19       up  1.00000          1.00000 
 -4 2.85999         host f209                                     
 22 0.25999             osd.22       up  1.00000          1.00000 
 23 0.25999             osd.23       up  1.00000          1.00000 
 24 0.25999             osd.24       up  1.00000          1.00000 
 25 0.25999             osd.25       up  1.00000          1.00000 
 26 0.25999             osd.26       up  1.00000          1.00000 
 27 0.25999             osd.27       up  1.00000          1.00000 
 28 0.25999             osd.28       up  1.00000          1.00000 
 29 0.25999             osd.29       up  1.00000          1.00000 
 30 0.25999             osd.30       up  1.00000          1.00000 
 -5 2.85999         host f214                                     
 74 1.81000             osd.74       up  1.00000          1.00000 
 75 1.81000             osd.75       up  1.00000          1.00000 
 76 1.81000             osd.76       up  1.00000          1.00000 
 77 1.81000             osd.77       up  1.00000          1.00000 
 78 1.81000             osd.78       up  1.00000          1.00000 
 79 1.81000             osd.79       up  1.00000          1.00000 
 80 1.81000             osd.80       up  1.00000          1.00000 
 81 1.81000             osd.81       up  1.00000          1.00000 
 82 1.81000             osd.82       up  1.00000          1.00000 
 83 1.81000             osd.83       up  1.00000          1.00000 

这里能看到datacenter guangdong,可以在广东部署的数据区域情况 ####导出osd数据区域划分文件:

[root@ceph-osd-1 ~]# ceph osd getcrushmap -o crush.dump

####转意文件,变成人工可读的

[root@ceph-osd-1 ~]# crushtool -d crush.dump -o crush.map

####修改crush.map

...
#调整host所属的数据中心
#item这里修改,加上新加的host,注意host的磁盘权重和磁盘数量,移动item的话新的加完一定把老的删除了,尽量不要让一个机器同属于不同的数据中心
datacenter guangdong{
        id -11          # do not change unnecessarily
        # weight 11.440
        alg straw
        hash 0  # rjenkins1
        item f207 weight 2.860
        item f208 weight 2.860
        item f209 weight 2.860
        item f214 weight 2.860
}
...
#跳转pool的副本集数量和数据区域划分
rule svnrbd {
        ruleset 1
        type replicated
        min_size 2
        max_size 8
        step take guangdong
        step chooseleaf firstn 2 type host
        step emit
        step take beijing
        step chooseleaf firstn -2 type host
        step emit
}
...

####map文件压缩并导入

[root@ceph-osd-1 ~]# crushtool -c crush.map -o crush.tmp
[root@ceph-osd-1 ~]# ceph osd setcrushmap -i crush.tmp

完成之后ceph就开始自行进行数据同步了。 过一段时间就恢复了。

#故障影响 故障会导致rbd写入直接报错,严重的可以影响同一数据区域下的所有的pool 对rdb操作之后报错如下

[root@p215 /var/log]# rbd lock rm data/f2 p215 client.114319 
2016-06-05 16:28:58.275592 7f896b784880  0 client.132880.objecter  FULL, paused modify 0x2c3e230 tid 2

受影响的文件操作会导致程序处于无限等待的状态,并且进程不可中断,不可响应中断信号。

###将磁盘使用率调高的办法

ceph tell mon.* injectargs --mon_osd_nearfull_ratio 0.9
ceph tell mon.* injectargs --mon_osd_full_ratio 0.95
ceph pg set_full_ratio 0.98
ceph daemon  mon.0 config show|grep ratio
#osd的同理

追加一个自动平衡调节磁盘权重参数的命令

ceph osd reweight-by-utilization

后续需要分析:导致这个问题的原因是什么?怎么合理划分数据区域?怎么计算可用容量?

转载于:https://my.oschina.net/xueyi28/blog/687416

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值