1

我有一个 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 AVAILPOOLS指出只剩下 500TiB,而AVAIL列中的列RAW STORAGE hdd CLASS有 3.7PiB 可用。

这意味着什么?我可以为该池分配更多空间吗?为什么 Ceph 本身不为其分配所有可用空间?

4

1 回答 1

0

我们找出了这个问题的原因。

  1. 由于配置错误,我们的 CephFS 使用 ssd 驱动器不仅用于存储元数据,还用于存储实际数据。每当其中一个 OSD 空间不足并且无法在其上放置更多数据时,CephFS 就会出现空间不足。所以 SSD 是MAX_AVAIL.

  2. 甚至 hdd Ceph OSD 也没有均匀加载。所以我们不得不运行reweight。之后数据分布均匀,MAX_AVAIL大小接近AVAIL

于 2020-07-28T19:53:34.397 回答