这个集群真的问题多多,很拉跨
写在前面
松鼠哥的ceph专业课程上线啦!
面向新手同学,从0实战,全面入门ceph安装部署与运维,有需要的同学赶紧扫码订购吧:
目前我们生产环境大大小小的集群接近150个,而人手又不多,运维起来真的是一言难尽。这不,今天就记录(吐槽)其中一个集群,该集群非常突出,坏盘率/坏机率稳居所有集群之首,我想,这大概就是有毒吧。。。
背景
该集群硬件性能之差令人发指,平均一周坏几十个盘,要么隔三岔五机器挂掉,原因多种多样,什么内存坏了啊,什么网卡down了啊,cpu报错啊,奇葩不已,今天居然还发生一个数据损坏的事。。
集群使用了EC 12+4,故障域是host,理论上,只要不超过4台机器的盘在没有恢复完成数据之前都挂掉,是不会有数据损坏风险的,但是,它恰恰就是发生了这种事情
当一个osd的磁盘损坏后,我们将该osd处理成destroyed,然后记录坏盘情况,此时这个osd上的数据就要恢复到其他osd上,在恢复过程中,该osd所在的pool又以极快的速度再坏掉3块磁盘,也就是这个pool产生了m个坏盘,默认情况下就会出现pg卡住,此时要将pool的min_size修改为k(默认情况下的k被设置为k+1),此时数据依然可以正常恢复,但是。。。如果第一块坏掉的osd的数据还没恢复完,又坏掉一块。。。这种情况就是坏掉>m份数据的情况,接下来就要处理这种故障-.-
处理
看下pg状态,感受一下
1 | [twj@cluster-mon1 ~]$ sudo ceph -s |
光是inactive的pg就有440个,贼刺激,此时已经有两个pg进入remapped+incomplete状态,也就是有数据丢失风险的2个pg
注意到这个集群一共2178个osd,目前2128个in和up,那么另外那50个去哪了?能猜到吗?
对头对头!坏掉了,最近一两周坏掉的哦
这磁盘纸糊的一样有木有!
query一下其中的remapped+incomplete的pg,发现是这样的
1 | [twj@cluster-mon1 ~]$ sudo ceph pg 13.1fb7 query |
查了一圈,有说丢失数据没关系就直接强制重建pg的
1 | sudo ceph osd force-create-pg 13.1fb7 --yes-i-really-mean-it |
但是并没有什么用,依旧卡住,猜测是该pg存在的副本还有11个,就一直卡在了无法请求足够副本的地方
思路上,我们还可以用硬核一点的方法,此前的文章也有提到过,就是到该pg所在的所有up的osd上,将其删掉,osd起来后发现没有了该副本,也就可以重新创建pg了
首先,查询一下该pg涉及的所有 osd
1 | [twj@cluster-mon1 ~]$ sudo ceph pg map 13.1fb7 |
然后,依次到对应的机器,将osd进程down掉,然后使用ceph-objectstore-tool
将其从bluestore 删掉,这里遇到一个现象,就是删掉后立刻启动osd,删掉的pg还会回来,不知道为什么。。所以删掉后不要着急起osd,等一会一起启动即可
1 | [twj@osd-node-62 ~]$ sudo systemctl stop ceph-osd@1833.service |
如果删除pg的时候提示PG '13.1fb7s0' not found
也不要慌,说明它就是没有,不用管它
1 | [twj@cluster-mon1 ~]$ sudo ceph pg map 13.1fb7 |
所有osd都起来后,pg信息重新刷新,过了一会这个pg就active+clean
了
1 | [twj@osd-node-62 ~]$ sudo ceph pg dump|grep 13.1fb7 |
完美!
另外一个pg也如法炮制,问题解决
总结
累,心累,这个集群的坏盘记录还在增加,集群上线后没有一天的状态是HEALTH_OK
的,硬件跟纸糊的一样,关键是,一期集群上线这样,二期还是这样,三期,还是这样,严重怀疑机房经常性震动、漏水、电源不稳定。没办法,已经要求机房、集成协助调查此环境,如果有类似情况的读者朋友,也希望可以分享原因和解决方案
- 本文作者: 奋斗的松鼠
- 本文链接: http://www.strugglesquirrel.com/2022/07/06/修复一个纸糊的集群/
- 版权声明: 本博客所有文章除特别声明外,创作版权均为作者个人所有,未经允许禁止转载!