记一次ceph-osd磁盘写满1 full osd(s)实操

 思考过程:

看到1 full osd(s),考虑到ceph的某个osd满了,查看osd的存储情况ceph osd df

发现osd.1已经写满了,查看ceph副本数ceph osd pool get default.rgw.buckets.data  size,此处为3,调整了ceph的副本ceph osd pool set default.rgw.buckets.data  size 2,生产环境慎重调整;

调整osd.1的权重,ceph osd reweight 1 0.85

但是osd满了之后做调整,这个osd是不恢复的,查看ceph参数

 ceph --admin-daemon  /run/ceph/ceph-mon.nodes-41.asok config show | grep full_ratio

调整osd backfillfull-ratio的值,让osd进行恢复,ceph osd set-backfillfull-ratio 0.97

ceph osd set-full-ratio 0.98

调整完这个值,ceph会出现下面的错误,测试环境不要紧,等osd恢复了,再把这个值调回来

ceph osd set-backfillfull-ratio 0.9

ceph osd set-full-ratio 0.95

由于我们这是测试环境,为了加速恢复,我调整了ceph的参数,让其恢复优先,如果是生产环境请慎重操作

ceph tell osd.* injectargs '--osd-max-backfills 5 --osd-recovery-max-active 5 --osd-recovery-max-single-start 5'

ceph tell osd.* injectargs '--osd-recovery-sleep 0'(通过查看ceph --admin-daemon  /run/ceph/ceph-osd.0.asok config show | grep recovery,发现我们环境本身是0未做修改)

 恢复了一宿,发现即使调整了权重,osd.1依然是满的,数据不向osd.2上平衡

后猜想这个和osd的备份和osd所在物理机的台数有关系,也就是,此时虽然有三台机器,但是只有两台机器上有osd,这两个副本,会每台机器上存一份,所以,想到有三种方案

1.调整ceph的副本变为1,虽然是测试环境,但是数据依然很重要,这个不建议

2.将nodes-42的两块挂载盘卸掉,安装在nodes-43,使得数据平衡

3.扩容磁盘,经商量在nodes-41到43上各扩一块磁盘作为osd

将三个osd纳入到集群,由于新纳入的磁盘是1T,之前是1.1T,调整weight

ceph osd crush reweight osd.7 0.91

由于三台osd的个数不一样,也相应的调整了reweight

ceph osd reweight 6 0.85

之后经过一系列的数据恢复,集群逐渐恢复

 调整ceph的参数

ceph tell osd.* injectargs '--osd-max-backfills 1 --osd-recovery-max-active 3 --osd-recovery-max-single-start 1'

后续继续观察集群

涉及到的其他命令,见下一篇
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值