ceph集群的osd full状态导致存储池不可用处理方案
前言
松鼠哥试水将进阶课程以文章的形式进行上线(主要是视频方式观看有点不方便,而且很多老铁难以坚持),内容质量一如既往有保障,所有操作都是松鼠哥经过验证实践,童叟无欺,希望大家多多支持。
本篇是关于osd的full状态处理,生产上,ceph集群的存储池容量在设计规划的时候就应该确定,在实际运行中,一方面是有集群的监控,另一方面,使用存储的客户端能够进行读写规划,集群持续写入直到osd被写满进入full状态的情况并不是很常见,然而业内使用ceph的老铁遇到集群存储池full的情况时有发生,本篇关注默认情况下,osd full ratio为0.95出现的full情况的处理,下篇将进一步介绍更特殊的情况,osd full ratio为0.99出现的full且osd无法正常拉起的情况处理,敬请期待。
开始
osd full ratio为0.95且存储池为full的情况,首先看集群的基本状态:
1 | [twj@test-mon1 ~]$ sudo ceph -s |
集群显示有一个osd率先达到了full,由于ceph无法确定新写入的数据会不会落到已经full的osd上,因此当pool有osd达到full状态时,pool也会进入full状态,此时默认的osd配置为0.95达到full状态:
1 | [twj@test-mon1 ~]$ sudo ceph osd dump|more |
看一下存储池和osd的基本情况
1 | POOLS: |
在本例中,这些osd上面只分布了songshuge1.rgw.buckets.data,即为独占的形式,其他的元数据存储池分布到另外的一些osd上了,这里我们只关心full状态的pool,而属于这个pool的pg分布,可以看到并不均衡,其中osd.187率先达到了95%的使用率,最低的使用率在osd.189,为84.19%,相差超过10%,差别算很大了,这里也可以看出,存储池在使用之前,应该要先做均衡,再写入数据,否则会有不小的空间浪费:
1 | 顺带一提,如果一批osd上面分布了多个Pool,该如何做均衡呢? |
出现这种full的状态后,存储池就不能写入了,这种情况下,首先要停止写入,接下来,在思路比较可行的操作是:
本篇后续内容,请移步公众号继续阅读
Thanks
- 本文作者: 奋斗的松鼠
- 本文链接: http://www.strugglesquirrel.com/2024/07/12/集群osd进入full状态的处理方法上/
- 版权声明: 本博客所有文章除特别声明外,创作版权均为作者个人所有,未经允许禁止转载!