CEPH的原始空间使用量


8

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

我在7台服务器上有14个HDD(14个OSD),每个HDD 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

我创建了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

Answers:


6

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

Ceph / RBD将尝试“懒惰”地为您的卷分配空间。这就是为什么尽管您创建了四个5TB的卷,但是报告了16TB的已用磁盘,而不是20 TB。但是16TB超出了RBD支持的文件系统的“活动”内容的总和,正如您所说的那样,仅11TB左右。需要注意的几件事:

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

除了表示的净数据使用量之外,还有一些文件系统开销df。除了“超级块”和其他文件系统内部数据结构外,RBD分配数据的粒度还会带来一些开销。我认为RBD将始终分配4MB的块,即使仅使用其中的一部分。


我同意西蒙的看法。猜猜我们的两个答案一起完成。顺便说一句 该死的你。20个小时大的问题,您打败我35秒钟回答?:D
Fox

感谢你们两个的答案。现在,我了解了我的问题在哪里以及如何解决。
virgism

可能的选项:1.升级到Linux内核> 3.18,并使用丢弃选项安装;(我使用内核3.19.0-1.el6.elrepo.x86_64进行了测试,但每天都有死锁);2.重新创建大小小于5 TB的块设备(无法缩小XFS)3.添加HDD并创建其他OSD。
virgism

1
可以确认这项工作正常。上周末,在Ubuntu LTS 14.04.3(sudo apt-get install --install-recommends linux-generic-lts-vivid)中将我的Ceph客户端计算机的内核升级到3.19 ,重新启动,重新映射并安装了rbd卷,fstrim在每个卷上运行一个卷,并在一个25TB的小型群集上共同恢复了450GB。升级后,请确保使用该discard选项开始挂载rbd卷。
布赖恩·克莱恩

5

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

没有discard选项就无法安装块设备。因此,您写入和删除的任何数据都不会显示在文件系统(/mnt/part1)上,但是由于它曾经被写入且未被修剪,因此仍保留在基础文件系统上。

如果您寻找USED自己的池并将它们加在一起,则将获得16777GB,等于ceph -s显示的容量。如果将其乘以两个(两个副本),将获得33554GB,这几乎是所使用的空间。


1
我同意福克斯的回应(与我的下面同时写:-)。discard“ trim”和“ trim”是同一机制的基本不同词,可用于将未使用的块返回到块设备。使用discard选件进行安装应具有预期的效果。有些人喜欢定期运行fstrim以避免文件系统连续丢弃的开销。请注意,要使以上任何一项正常工作,您的RBD驱动程序需要支持TRIM / discard。就像我说的那样,RBD内核驱动程序从Linux 3.18开始执行此操作-请参阅tracker.ceph.com/issues/190
sleinen
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.