ceph集群中osd的处理方式最佳实践
写在前面
松鼠哥的ceph专业课程上线啦!
面向新手同学,从0实战,全面入门ceph安装部署与运维,有需要的同学赶紧扫码订购吧:
本篇是第二篇付费文章,之前那篇《集群osd进入full状态的处理方法上》不知道是定价问题还是内容问题,效果不怎么样,因此从本篇开始,在保证质量的前提下,本公众号的付费文章一律7个豆( 1 块),希望大家多多支持。
ceph集群在日常运维工作中,最常见的内容就是坏盘的处理,尤其对于上千个osd的集群,运行时间长了,差不多天天都坏盘,很多同学在集群坏盘处理时,比较喜欢将osd从集群完全删除,使用ceph osd rm osd.x
及ceph osd crush rm osd.x
的方式,松鼠哥早期学习ceph的时候(大概2016年前后)也是这么处理的,坏盘嘛,删掉,换盘重建,这没有什么错的,但是这并不是最佳处理方式。
关于坏盘闭环的详细介绍,松鼠哥在课程中已经讲了很多,本篇较为深入地介绍,坏盘处理过程中的不同细节对于集群的相关影响,从而得出最佳实践:
- 1、坏盘后,osd如果不被删除,那么重建后,对应存储池将保持坏盘前的pg映射。
- 2、坏盘后,如果能在短时间内更换坏盘,将有效降低集群所需要恢复的数据量,从而降低对业务的影响。
- 3、坏盘后,osd被从集群删除,那么重建后,对应存储池将改变坏盘钱的pg映射,导致更多的数据迁移。
- 4、所以,rm osd是为缩容而设计的,不是为换盘设计的
开始实战
开始前,确认集群是正常的:
1 | data: |
现在,设置一下集群标记,主要是为了方便观察:
1 | ceph osd set noout |
然后随机选取一个osd,例如osd.59,记录它的pg信息:
1 | [root@testnode1 twj]# ceph pg ls-by-osd 59 |grep '47'|awk '{print $1}' > osd.59.pg |
接下来验证它发生坏盘并被destroy,更换磁盘后,重新创建,pg仍然保持原来的映射:
1 | [root@testnode1 twj]# systemctl stop ceph-osd@59.service |
如果可以在短时间内完成换盘,那么osd可以不out出集群,不out出集群显然不会引发数据迁移,也不会影响业务的读写,但是在这段时间内,数据处于降级,可靠性有所降低,这个需要大家根据实际情况进行权衡,显然,这个osd所影响的数据量占到存储池的1.660%
本篇后续内容,请移步公众号继续阅读
Thanks
- 本文作者: 奋斗的松鼠
- 本文链接: http://www.strugglesquirrel.com/2024/09/06/坏盘处理时osd为什么不要rm/
- 版权声明: 本博客所有文章除特别声明外,创作版权均为作者个人所有,未经允许禁止转载!