• 每个pool pg数计算


    ceph PGs per Pool Calculator

    原文档:http://xiaqunfeng.cc/2017/09/18/ceph-PGs-per-Pool-Calculator/

    根据集群相关信息计算每个pool的pg数量。

    在前一篇文章too-many-PGs-per-OSD中,简单讲了pg数目的设定,这里再深入介绍一下计算方法。

    计算PG Count的公式

    1
    PoolPGCount=(TargetPGsPerOSD ∗ OSDNumber ∗ DataPercent) / PoolReplicateSize

    参数

    参数名称参数释义备注
    PoolPGCount 该pool的PG数量  
    TargetPGsPerOSD 每个OSD的PG数量 该值根据如下规则来进行设置:
    1. 如果未来集群的OSD数量基本不再增长,Target PGs per OSD =100 
    2. 如果未来集群的OSD数量可能增长到目前规模的2倍以内,Target PGs per OSD =200
    3. 如果未来集群的OSD数量增长规模大于当前2倍且小于3倍,Target PGs per OSD =300
    OSDNumber OSD数目 默认是所有的OSD, 具体看OSD所属的rule
    一般会通过CRUSH rules划分SSD和SATA两个ruleset,此时单独填写pool所在的对应rule的OSD数量
    DataPercent 该pool占用所在OSD集群容量百分比 需要预估
    PoolReplicateSize 该pool的副本数 replicate size,默认是3
    如果是EC pool,该值为 m+n

    结果取值

    1、如果上述计算结果小于 OSDNumber/PoolReplicateSize ,那就使用值 OSDNumber/PoolReplicateSize 。这是为了确保每个Pool的每个OSD至少分配一个Primary或Secondary PG来确保均匀加载/数据。

    2、计算的最终结果应该是与计算结果相邻的2的幂次方。

    采用2的幂次方是因为了提高CRUSH算法的效率

    3、如果结果超过较小2次幂数值的25%则选择较大的2次幂作为最终结果,反之则选择较小的那个2次幂数值。

    目的

    1、计算公式的目的是为了确保整个集群拥有足够多的PG从而实现数据均匀分布在各个OSD上,同时能够有效避免在Recovery 和Backfill 的时候因为PG/OSD比值过高所造成的问题。

    2、如果集群中存在空pool或者其他non-active的pool,这些pool并不影响现有集群的数据分布,但是这些pool仍然会消耗集群的内存和CPU资源。

    官网参考信息:http://ceph.com/pgcalc/

  • 相关阅读:
    学习心得总结(1)
    Git使用总结
    Git管理分支
    Git 常用命令整理
    C#Windows窗体中添加了AxWindowsMediaPlayer的详细用法影响键盘操作的问题
    连接SQLsever数据库在C#中不能操作的问题
    C#中字符串的操作
    iOS TableView如何刷新指定的cell或section
    iOS所有的子视图
    iOStextFiled判断输入长度
  • 原文地址:https://www.cnblogs.com/flytor/p/11425363.html
Copyright © 2020-2023  润新知