公式:
( Target PGs per OSD ) x ( OSD # ) x ( %Data )
PoolPGCount = -------------------------------------------------------
( Size )
参数说明:
名称 | 说明 | 备注 |
PoolPGCount |
单个Pool的PG数量 | |
Target PGs per OSD |
每个OSD的PGS数量 | 1.如果未来集群的OSD数量基本不再增长,Target PGs per OSD=100 2.如果未来集群的OSD数量可能增长到目前规模的2倍以内,Target PGs per OSD=200 2.如果未来集群的OSD数量可能增长到大于目前规模的2倍且小于3倍,Target PGs per OSD=300。 |
OSD # |
集群OSD的总数,默认是全部OSD数量 | 如果通过CRUSH rules进行了SSD和SATA设备的规则拆分(比如SSD和SATA划分两个zone),需要单独填写对应rule的数量 |
%Data |
Pool占用所在OSD总容量的百分比(预估值) | |
Size | 每个pool的replicas size,默认是3 | 如果使用Erasure Coded Pools简称EC pool,Pool Size=k+m |
结果:
1.如果上述计算的值小于(OSD#)/(Size)的值,则将该值更新为(OSD#)/(Size)的值。 这是为了通过为每个池分配至少一个主或辅助PG到每个OSD来确保均匀加载/数据分发。
2.然后将输出值四舍五入为最接近的2的幂。
提示:最接近的2的幂提供了CRUSH算法的效率的边际改进。
3.如果最接近的2的幂大于原始值的25%以上,则使用下一个更高的2的幂。
版权声明:本文为博主原创文章,未经博主允许不得转载。
pgs