暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

postgresql OSD个数小于设置的副本数

原创 Oracle 2023-01-08
357

OSD个数小于设置的副本数
一般情况下,存储池设置为3副本,也就是1个PG会存储到3个OSD。正常情况,PG状态显示为“active + clean”

如果说你的集群小于三副本,例如只有2个OSD,那么你可能会所有OSD都处于 up 和 in状态,但是PG始终无法达到 “active + clean”,这可能是因为 osd pool size/min_size设置了大于2的值。

如果2个OSD可用,osd pool size大于2,osd pool min_size小于等于2,那么PG状态显示degrade,但是不影响pool读写。
如果2个OSD可用,osd pool min_size 大于2,那么PG显示peered状态,此时该pool不可以响应读写请求。

# min_size=4,size=5,实际osd副本数=3
[root@node-1 ~]# ceph osd dump | grep pool-1
pool 1 'pool-1' replicated size 5 min_size 4 crush_rule 0 object_hash rjenkins pg_num 128 pgp_num 128 autoscale_mode warn last_change 6359 flags hashpspool stripe_width 0 application rbd
[root@node-1 ~]# ceph pg stat
464 pgs: 70 undersized+degraded+peered, 58 undersized+peered, 336 active+clean; 802 MiB data, 12 GiB used, 24 GiB / 40 GiB avail; 192/162165 objects degraded (0.118%)
[root@node-1 ~]# rados -p pool-1 put file_bench_cephfs.f file_bench_cephfs.f
# 操作阻塞,无法完成写入请求

可以看出,osd pool min_size是必须满足的OSD副本数,osd pool size则是建议满足的OSD副本数。前者是必须满足的条件,否则该pool无法读写;后者可以不满足,只是集群会报出警告。可以通过设置合理的osd pool size 和osd pool min size来解决上述问题。

[root@node-1 ~]# ceph osd pool set pool-1 size 3
set pool 1 size to 3
[root@node-1 ~]# ceph osd pool set pool-1 min_size 2
set pool 1 min_size to 2
[root@node-1 ~]# ceph pg stat
464 pgs: 464 active+clean; 802 MiB data, 12 GiB used, 24 GiB / 40 GiB avail

CRUSH MAP 错误

PG 达不到 clean 状态的另一个可能的原因就是集群的 CRUSH Map 有错误,导致 PG 不能映射到正确的地方。





原文链接:https://blog.csdn.net/DeamonXiao/article/details/120879236

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论