我有一个 Ceph 集群,旨在作为 CephFS 在硬盘驱动器机箱上运行,该硬盘驱动器机箱在多个服务器上提供总计 9PiB 的原始空间。
我创建了一个 3+3 纠删码池,该池应该跨越硬盘驱动器的整个原始空间。
令人惊讶的是,它似乎只占用了 9PiB 可用空间中的 6PiB,因此当我向其中写入 ~2.5PiB 数据(以及 ~2.5PiB 更多校验和)时,它说我只有 500TiB 可用空间(对应于 1PiB 原始空间)空间)。
这是
ceph df
的输出:
$ sudo ceph df
RAW STORAGE:
CLASS SIZE AVAIL USED RAW USED %RAW USED
hdd 8.9 PiB 3.7 PiB 5.2 PiB 5.2 PiB 58.62
ssd 35 TiB 15 TiB 20 TiB 20 TiB 57.96
TOTAL 9.0 PiB 3.7 PiB 5.2 PiB 5.3 PiB 58.62
POOLS:
POOL ID STORED OBJECTS USED %USED MAX AVAIL
cephfs_metadata 7 5.1 GiB 1.55M 5.7 GiB 0.15 780 GiB
cephfs_erdata 8 2.5 PiB 687.98M 5.2 PiB 84.29 500 TiB
请注意,cephfs_erdata 池的
MAX AVAIL
部分中的 POOLS
列表明仅剩下 500TiB,而 AVAIL
RAW STORAGE
hdd
中的 CLASS
列有 3.7PiB 可用。
这是什么意思?我可以为该池分配更多空间吗?为什么 Ceph 本身不为其分配所有可用空间?
我们找到了这个问题的原因。
由于配置错误,我们的 CephFS 使用 SSD 驱动器不仅用于存储元数据,还用于存储实际数据。每当其中一个 OSD 空间不足并且无法在其上放置更多数据时,CephFS 就会耗尽空间。所以 SSD 是
MAX_AVAIL
的瓶颈。
即使是 hdd Ceph OSD 也没有均匀加载。所以我们必须运行reweight。之后数据分布均匀,
MAX_AVAIL
大小接近AVAIL
。
我们遇到了和您类似的问题。您能否让我更详细地了解您的第 1 点?添加 SSD 驱动器作为 OSD 来存储元数据和实际数据是有效的配置,不应导致任何固有问题。谢谢。