CEPH 的原始空间使用情况

CEPH 的原始空间使用情况

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

我在 7 台服务器上有 14 个 HDD(14 个 OSD),每个 HDD 3TB,总共 42 TB 原始空间。

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

我创建了 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。如果我有 2 个副本,那应该是 ~ 22 TB,但现在我已经使用了 33.7 TB - 少了 11 TB。

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

答案1

一个可能造成混淆的因素是 GB 与 GiB/TB 与 TiB(以 10 为基数/以 2 为基数),但这并不能解释这里的所有差异。

Ceph/RBD 将尝试“懒惰地”为您的卷分配空间。这就是为什么尽管您创建了四个 5TB 卷,但它报告使用了 16TB,而不是 20TB。但 16TB 大于 RBD 支持的文件系统的“活动”内容的总和,正如您所说,只有大约 11TB。需要注意以下几点:

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

除了 所示的净数据使用量之外,还有一些文件系统开销df。除了“超级块”和其他文件系统内部数据结构之外,RBD 分配数据的粒度也会产生一些开销。我认为 RBD 总是会分配 4MB 的块,即使只使用了其中的一部分。

答案2

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

如果没有选项,则无法挂载块设备discard。因此,您写入和删除的任何数据都不会显示在文件系统上 ( /mnt/part1),但由于它曾经被写入且未被修剪,因此它会保留在底层文件系统上。

如果您查看USED池并将其相加,您会得到 16777GB,这与ceph -s显示的值相等。如果将其乘以二(两个副本),您会得到 33554GB,这几乎就是已使用的空间。

相关内容