目录
计算公式
参数说明:
max_avail:最大可用空间
min():取括号范围内的最小值
osd_avail:表示某个编号osd对应的可用空间
weight:表示对应某个编号osd对应的权重值
:表示一个ruleset中对应osd的权重累加和
pool_size:表示pool对应的副本数
举例
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处
计算osd除于权重占比值
osd的权重占总权重的占比计算函数
源码打印测试
其中kb_avail为当前osd剩余的可用空间kb数,osd id为osd对应的编号,osd_weight为当前osd占总权重的占比,proj为计算出来的值。
当三个osd的权重都为1的时候
当其中一个osd权重为2的时候