由于ceph 17 ceph-adm的池和集群自动平衡有问题,导致pg_num 和 pgp_num未自动调整。所以需要手动调整,
未调整之前pg_num 和 pgp_num 都为1,一个pool 只有一个pg,导致该pool只映射(hash)到两个osd,导致所有磁盘的读写都集中到了两个osd上,随着并发虚拟机的读写请求变多,性能触发瓶颈。 原本一个30s能建好的虚拟机,10分钟才较好。
这种方式只能先手动调大pg_num和pgp_num 比如pgp_num 增大到64. 但是由于先执行另一个osd reweight的操作,触发了数据迁移,导致pgp_num 未能立刻更新。
解决方式:
image.png参考: https://www.mail-archive.com/ceph-users@ceph.io/msg06755.html
临时解决方式:
image.png
但是新旧版本的ceph 配置方式有变化,这个是比较老的配置方式
pgp_num的扩充方式:
image.png这个指标一旦小于5%就会扩充4个pgp_num出来,实际上这个是整个集群的pgp_num上限也在增加,当有多个池不一致的时候,
多个池都会平均分配可以扩充的pgp_num。 所以这个扩容pgp_num的操作,最好一个池一个池的进行,这样可以优先恢复一个池的性能。其他池不操作,性能会保持不变。而且pgp_num扩充的时候,设计osd再平衡,会有数据迁移,性能肯定会更差一些。
网友评论