共计 1536 个字符,预计需要花费 4 分钟才能阅读完成。
这篇文章主要为大家展示了“PG 如何设置与规划”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让丸趣 TV 小编带领大家一起研究并学习一下“PG 如何设置与规划”这篇文章吧。
计算单个 pool 的 PG Count 公式
PoolPGCount=((TargetPGsPerOSD)∗(OSDNumber)∗(DataPercent) )/PoolSize
参数介绍名称说明备注 Pool PG Count 单个 Pool 的 PG 数量 Target PGs Per OSD 每个 OSD 的 PGs 数量 a) 如果未来集群的 OSD 数量基本不再增长,Target PGs per OSD =100
b) 如果未来集群的 OSD 数量可能增长到目前规模的 2 倍以内,Target PGs per OSD =200
c) 如果未来集群的 OSD 数量增长规模大于当前 2 倍且小于 3 倍,Target PGs per OSD =300OSD Number 集群 OSD 的总数,默认来讲是全部 OSD 的数量如果通过 CRUSH rules 进行了 SSD 和 SATA 设备的规则拆分(比如 SSD 和 SATA 划分成两个 zone),需要单独填写对应 rule 的 OSD 数量 Data PercentPool 占用所在 OSD 总容量的百分比(预估值) Pool Size 每个 pool 的 replicas size,默认是 3 如果使用 Erasure Coded Pools 简称 EC pool,Pool Size = K+ m 关于计算结果取整说明
计算的最终结果应该是一个 2 的幂次方。采用 2 的幂次方是因为了提高 CRUSH 算法的效率。
如果计算出来的结果,找到与这个结果相邻的两个 2 次幂数值,如果结果超过较小二次幂数值的 25% 则选择较大的二次幂作为最终结果,反之则选择较小的那个 2 次幂数值。
其他说明
设计计算公式的目的是为了确保整个集群拥有足够多的 PG 从而实现数据均匀分布在各个 OSD 上,同时能够有效避免在 Recovery 和 Backfill 的时候因为 PG/OSD 比值过高所造成的问题。
如果集群中存在空 pool 或者其他非活跃状态下的 pool,这些 pool 并不影响现有集群的数据分布,但是这些 pool 仍然会消耗集群的内存和 CPU 资源。
举例环境介绍:
某集群由 100 个 OSD 组成,其中 40 个 OSD 为 SSD(通过 CRUSH rules 划分为 SSD zone),60 个 OSD 为 SATA(通过 CRUSH rules 划分为 SATA zone),集群规模预计未来会增长到当前规模的 2 倍
需求:
整个集群新建 4 个 pool,具体如下:
名称说明备注 SSD_poolAPool Size=3,预计容量占用比 60%SSD zoneSSD_poolBPool Size=3,预计容量占用比 40%SSD zoneSATA_poolAEC Pools,Pool Size = k+m= 3+2=5,预计容量占用比 80%SATA zoneSATA_poolbPool Size=3,预计容量占用比 20%SATA zone 名称说明备注 SSD_poolA
PoolPGCount=((200)∗(40)∗(0.6))/3=1600≈2048
1600 与相邻的 2 次幂数值分布为 1024 1600 2048SSD_poolB
PoolPGCount=((200)∗(40)∗(0.4))/3=1066≈1024
SSD zoneSATA_poolA
PoolPGCount=((200)∗(60)∗(0.8))/5=1920≈2048
SSD zoneSATA_poolB
PoolPGCount=((200)∗(60)∗(0.2))/3=800≈1024
SSD zone
以上是“PG 如何设置与规划”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注丸趣 TV 行业资讯频道!