問題現象:
ceph告警問題:”too many PGs per OSD”

問題原因:
因為最近做了一些踢OSD盤的變更,導致ceph集群OSD數量變少了,所以每個OSD上的PG數量過多,導致ceph health_warn。
當前PG數量調整為了2048 。
當前5台存儲節點,只有29個OSD,每個存儲節點都有6個OSD,但是其中一台存儲節點上缺少一個OSD。
【解決方案】
方法1.
再加1個OSD盤到集群即可。前提是有多余的可用磁盤。
方法2.
調整每個osd默認PG數,參數為mon_pg_warn_max_per_osd。
# ceph --show-config | grep mon_pg_warn_max_per_osd
mon_pg_warn_max_per_osd = 300
2.1 使用ceph tell的方式臨時調整這個參數為400:
# ceph tell mon.* injectargs --mon_pg_warn_max_per_osd 400
2.2
1)修改配置文件永久調整配置
# cd /etc/ceph
# vim ceph.conf
[global]
.......
mon_pg_warn_max_per_osd = 400
2)將配置文件推到mon所在的其他節點
# ceph-deploy --overwrite-conf config push ceph1 ceph2
3)重啟mon進程
# systemctl restart ceph-mon.target
重啟后再查看:
# ceph --show-config | grep mon_pg_warn_max_per_osd
方法3.
刪除一個不用的pool可以解決此問題。操作前已經和業務以及研發再次確認過這個pool可以刪除。
ceph df查看,可以看到images pool 在環境中沒有用處,所以這次通過刪除這個pool來解決此問題。

ceph osd pool images images --yes-i-really-really-mean-it
再次查看ceph -s ,可以看到health_ok。
