我有一个 ceph 集群 quincy 17.2.7
我想知道 ceph 是否有一些工具可以快速获取 ceph 文件系统中目录的已用空间(以字节为单位)。我知道可以使用 来获取du -hs /fs/dir-A
,但如果目录中有很多数据,则需要很长时间。
请注意,我最初计划创建文件系统 A 和文件系统 B(分别在池 A 和池 B 中),而不是目录 A 和目录 B,这样可以方便检索大小。但是,出于快照目的,不建议使用多个文件系统,即使每个池一个https://docs.ceph.com/en/quincy/dev/cephfs-snapshots/#multi-fs
知道如何快速获取 ceph fs 中目录的已用空间吗?
谢谢!
答案1
我进一步研究了如何获取 ceph fs 中每个目录的大小,但我认为没有这样的工具(再次强调,使用 linux 工具不是du
一个选择,因为遍历目录需要很长时间)
在我看来,最好的方法是创建subvolumes
,因此每个目录都是子卷
答案2
没有标准的 *nix 命令可以做到这一点,但 CephFS 支持“递归统计”来公开该信息。这在文档中比我想象的更难找到,但这里有一篇关于在 CephFS 的“虚拟 xattrs”中查看它们的博客文章:https://blog.widodh.nl/2015/04/playing-with-cephfs-recursive-statistics“ceph.dir.rbytes” 是层次结构中目录下所有文件大小的总和;类似地,还有“rsubdirs”和“rfiles”(其总和为“rentries”)。
您还可以设置挂载选项(用户空间 核心) 将目录大小转换为 rbytes(即,当您“ls”它时,通常会报告 512 字节或 4k)。但是,这样做会给某些工具带来麻烦,因为它们不希望目录大小发生这样的变化,或者可能会检查它们以尝试识别本地块大小。
使用 rstats 获取精确信息时需要注意以下几点:
- 文件大小仅表示文件指定的大小,而不是实际分配的空间量。如果您在稀疏文件中偏移量为 1GB 的位置写入 1 个字节,它将报告 1GB。
- 更新统计信息需要锁定 inode 和目录,这在某些情况下可能会干扰客户端 IO。因此,信息会缓慢地沿树向上传播(从文件到目录,再到父目录等),因为这些锁定会因其他原因而发生变化。它不会过时一小时,但肯定会过时十秒。