现象:
分析:
- 哪个pool的问题?
- 原因: 某个pool中单个pg的对象数量超过了集群每pg对象数量平均值的10倍; 并不意味着肯定是有问题的
- 重现方法:只要你的集群中至少有一个pg是较多使用的,那么你再多创建几个pool,pg设置的大一些,这个报警就可以出现
解决办法:
- 删掉没用的pool,或者:
- 调整参数:
- 如下: (需要重启)
1234# ceph daemon osd.2 config set mon_pg_warn_max_object_skew 20{"success": "mon_pg_warn_max_object_skew = '20.000000' (not observed, change may require restart) rocksdb_separate_wal_dir = 'false' (not observed, change may require restart) "}
- 如下: (需要重启)
- 调整报警的pool的pg数量
思考:
- 既然pg中对象太多就会报警,那么,创建pool时就指定一个较大的pg值(如: 1024)不就可以了? 这样也不行,pg数量太大,理论上会影响性能,而且,单个osd上pg数量太多(超过mon_pg_warn_max_per_osd) 也会报警: http://blog.csdn.net/styshoo/article/details/62722679 查看每个osd上pg数量的方法:
1# ceph osd df
然而,我的osd上的pg数量也超过了300的设置值了,没有报警呢 - 具体需要调整的选项需要参考对应版本的文档或代码,如,12.2.1 的release notes 中就有这样的说明:
The maximum number of PGs per OSD before the monitor issues a warning has been reduced from 300 to 200 PGs. 200 is still twice the generally recommended target of 100 PGs per OSD. This limit can be adjusted via themon_max_pg_per_osd
option on the monitors. The oldermon_pg_warn_max_per_osd
option has been removed.
参考: