本文主要对openebs/localpv, nfs-client, ceph-rbd几种存储类型的监控数据进行分析
对以上几种存储类型,分别做以下准备
(1)创建20G大小的PVC
(2)PVC对应的目录中存放5G文件(dd if=/dev/zero of=/mnt/5G.file bs=1G count=5)
openebs.localpv
(1)ks页面显示

(2)Pod中查看

(3)对应本地路径

结论:local类型的pvc的容量和使用量与其对应本地路径一致
nfs-client
建了两个pvc,并分别写入5G大小文件
(1)KS页面显示

(2)Pod中查看

nfs-client类型的pvc的容量和使用量与nas本身一致
rbd-intree
(1)ks页面显示

(2)Pod中显示

ceph-rbd类型pvc容量和使用量与创建的卷一致
小结
无论intree provisoner还是csi,都是调用NewMetricsStatFS(还有一种方法NewMetricDu,使用较少,对应于du命令)计算得出容量和inode的metrics。底层实现是unix.Statfs,其计算出的是device级别的容量和inode,结果和df命令输出的大体一致。
如果单个PVC独享一个device,计算出的容量和inode和PVC本身的数据是基本一致的。
如果多个PVC共享一个device,由于计算出的是device级别的数据,有可能和PVC的数据存在不一致的情况,应该是多个PVC叠加起来的结果。