CEPH的原始空间使用情况

我无法理解ceph的原始空间使用情况。

我在7台服务器上有14个硬盘(14个OSD),每个硬盘3TB〜42TB的原始空间。

ceph -s osdmap e4055: 14 osds: 14 up, 14 in pgmap v8073416: 1920 pgs, 6 pools, 16777 GB data, 4196 kobjects 33702 GB used, 5371 GB / 39074 GB avail 

我创build了4个块设备,每个5 TB:

 df -h /dev/rbd1 5.0T 2.7T 2.4T 54% /mnt/part1 /dev/rbd2 5.0T 2.7T 2.4T 53% /mnt/part2 /dev/rbd3 5.0T 2.6T 2.5T 52% /mnt/part3 /dev/rbd4 5.0T 2.9T 2.2T 57% /mnt/part4 

df显示总共使用了10.9 TB,ceph显示使用了33702 GB。 如果我有两个副本,一定是〜22TB,但是现在我有33.7TB的使用 – 错过了11TB。

 ceph osd pool get archyvas size size: 2 ceph df GLOBAL: SIZE AVAIL RAW USED %RAW USED 39074G 5326G 33747G 86.37 POOLS: NAME ID USED %USED MAX AVAIL OBJECTS data 0 0 0 1840G 0 metadata 1 0 0 1840G 0 archyvas 3 4158G 10.64 1840G 1065104 archyvas2 4 4205G 10.76 1840G 1077119 archyvas3 5 3931G 10.06 1840G 1006920 archyvas4 6 4483G 11.47 1840G 1148291 

块设备和OSD FS – XFS

一个可能的混乱来源是GB与GiB / TB与TiB(基数10 /基数2)的比较,但是这不能解释所有的差异。

Ceph / RBD将试图“懒惰”地为您的卷分配空间。 这就是为什么尽pipe你创build了4个5TB卷,但它报告的是16TB,而不是20个。但是16TB比你的RBD支持的文件系统的“活动”内容的总和还要多,只有11TB左右。 有几件事要注意:

在删除RBD支持的文件系统中的文件时,文件系统将在内部将这些块标记为空闲,但通常不会尝试将它们“返回”到底层块设备(RBD)。 如果您的内核RBD版本足够新(3.18或更新),您应该能够使用fstrim将释放的块返回给RBD。 我怀疑你已经创build和删除这些文件系统上的其他文件,对吧?

除了由df显示的networking数据使用之外,还有一些文件系统开销。 除了“超级块”和其他文件系统内部的数据结构之外,RBD分配数据的粒度还有一些开销。 我认为RBD将总是分配4MB块,即使只有一部分被使用。

我不是ceph专家,但让我猜一点。

块设备没有安装没有discard选项。 所以你写入和删除的任何数据都不会在文件系统( /mnt/part1 )上显示出来,但是因为它曾经被写入并且不被修剪,所以它仍然保留在底层的文件系统上。

如果你看看池中的USED并将它们加在一起,你就得到了16777GB,这相当于ceph ceph -s显示的。 如果你乘以两(两个副本),你会得到33554GB,这几乎是使用的空间。