ceph的df容量显示计算

显示数据

1
2
3
4
5
6
7
8
9
[root@lab201 ~]# ceph df
GLOBAL:
SIZE AVAIL RAW USED %RAW USED
1092T 404T 688T 63.01%
POOLS:
NAME ID USED %USED MAX AVAIL OBJECTS
rbd 0 17483G 15.88 92633G 4616231
data 1 212T 70.09 92633G 246574395
metadata 2 88677K 0 1400G 407249

总used的63% ,data的总used为70%

先说下容量的计算规则

  • 1、根据每个osd计算可用容量:osd可用的容量/osd的crush权重占存储池所有osd的总crush的权重的百分比
  • 2、然后用上面计算得到的最小的可用容量/pool_size(存储池副本数),还要乘以mon_osd_full_ratio(默认0.95),得到的就是存储池的max avail

举个例子

2个osd 每个为4T,crush weight 为4,osd.1可用容量为1.5T,osd.2可用容量为1T

那么我们来根据上面的公式来计算
osd.1计算1.5T/0.5=3T
osd.2计算1T/0.5=2T
取最小值2T
副本为2的话,那么可用容量就是2T/2为1T

为什么要这么计算,实际上这个地方计算的时候,分母是占用的百分比,分子是当前剩余的空间,因为总容量是由最短板的osd决定的,这个跟水桶灌水一样

分母相当于自己需要承担的容量,所以,分子越小的然后,分母越大,算的就会越小,最终最小的那个决定了最终容量

上面的如果没动过crush weight,那么简单的计算方式就是

剩余最小的那个osd的可用容量X总的osd个数就是存储池的可用容量

上面的例子的模拟计算

总容量,总的剩余容量,总的使用的容量
8T 2.5T 5.5T 已使用百分比 68.75%
按存储池计算
rbd 已用2.75T 可用1T 已使用百分比 73%