ceph df中pool对应的max avail计算方式

目录

 

计算公式

举例

结论

源码跟踪

取值打印max avail处

计算osd除于权重占比值

osd的权重占总权重的占比计算函数

源码打印测试


计算公式

 

参数说明:

max_avail:最大可用空间

min():取括号范围内的最小值

osd_avail:表示某个编号osd对应的可用空间

weight:表示对应某个编号osd对应的权重值

:表示一个ruleset中对应osd的权重累加和

pool_size:表示pool对应的副本数

 

举例

ceph df中pool对应的max avail计算方式_第1张图片

 

ceph df中pool对应的max avail计算方式_第2张图片

ceph df中pool对应的max avail计算方式_第3张图片

 

ssd pool对应的ruleset规则为root=ssd树下的。ssd树下的权重和为29.52968。

取编号为50,56,33,36套入公式分别计算对应的值

编号50:4022/(0.90999/29.52968)=130516

编号56:156/(0.90999/29.52968)=5062

编号33:558/(0.5/29.52968)=32955

编号36:136/(0.90999/29.52968)=4413

所以经过min()操作, 得到结果为4413GB,而ssd的副本数为2,因此得到max_avail=4413GB/2=2206GB。由于中间的计算过程中存在误差,所以没有完全等价于ceph df中的2220GB。

结论

       ceph df中pool的可用空间max avail取决于使用ruleset中osd使用最多的那一块osd对应的剩余可用空间以及对应的权重值。因此需要合理规划好每个osd的权重值,以及每个OSD上对应的PG(PG越多,数据量相对越多)

 

源码跟踪

取值打印max avail处

 

ceph df中pool对应的max avail计算方式_第4张图片

 

ceph df中pool对应的max avail计算方式_第5张图片

ceph df中pool对应的max avail计算方式_第6张图片

计算osd除于权重占比值

ceph df中pool对应的max avail计算方式_第7张图片

 

osd的权重占总权重的占比计算函数

ceph df中pool对应的max avail计算方式_第8张图片

 

源码打印测试

其中kb_avail为当前osd剩余的可用空间kb数,osd id为osd对应的编号,osd_weight为当前osd占总权重的占比,proj为计算出来的值。

当三个osd的权重都为1的时候

ceph df中pool对应的max avail计算方式_第9张图片

ceph df中pool对应的max avail计算方式_第10张图片

 

当其中一个osd权重为2的时候

ceph df中pool对应的max avail计算方式_第11张图片

ceph df中pool对应的max avail计算方式_第12张图片

 

 

你可能感兴趣的:(C++,CEPH)