ceph-df-max可用误判



Ceph集群在ceph df输出时显示以下奇怪行为:

--- RAW STORAGE ---
CLASS  SIZE     AVAIL    USED     RAW USED  %RAW USED
hdd    817 TiB  399 TiB  418 TiB   418 TiB      51.21
ssd    1.4 TiB  1.2 TiB   22 GiB   174 GiB      12.17
TOTAL  818 TiB  400 TiB  418 TiB   419 TiB      51.15
--- POOLS ---
POOL                     ID  PGS   STORED   OBJECTS  USED     %USED  MAX AVAIL
pool1                    45   300   21 TiB    6.95M   65 TiB  20.23     85 TiB
pool2                    50    50   72 GiB  289.15k  357 GiB   0.14     85 TiB
pool3                    53    64  2.9 TiB  754.06k  8.6 TiB   3.24     85 TiB
erasurepool_data         57  1024  138 TiB   50.81M  241 TiB  48.49    154 TiB
erasurepool_metadata     58     8  9.1 GiB    1.68M   27 GiB   2.46    362 GiB
device_health_metrics    59     1   22 MiB      163   66 MiB      0     85 TiB
.rgw.root                60     8  5.6 KiB       17  3.5 MiB      0     85 TiB
.rgw.log                 61     8   70 MiB    2.56k  254 MiB      0     85 TiB
.rgw.control             62     8      0 B        8      0 B      0     85 TiB
.rgw.meta                63     8  7.6 MiB       52   32 MiB      0     85 TiB
.rgw.buckets.index       64     8   11 GiB    1.69k   34 GiB   3.01    362 GiB
.rgw.buckets.data        65   512   23 TiB   33.87M   72 TiB  21.94     85 TiB

如上所述,可用存储399TiB,池列表中的最大可用性显示为85TiB。我为每个池使用3个复制副本,为erasurepool_data使用3+2擦除代码。

据我所知,Max Avail段显示了根据副本大小的最大原始可用容量。所以它达到了85*3=255TiB。同时,集群显示有近400个可用。

信任哪一个?这只是一个bug吗?

发现最大可用空间是根据集群中最满的osd计算的,与集群中的总可用空间无关。根据我的发现,这种波动主要发生在小集群上。

MAX AVAIL列表示在第一个OSD变满之前可以使用的数据量。它考虑了CRUSH映射中磁盘间数据的预计分布,并使用"第一个要填充的OSD"作为目标。它似乎不是一个bug。如果MAX AVAIL不是您所期望的,请使用ceph-osd树查看数据分布,并确保您有一个统一的分布。

你也可以在这里查看一些有用的帖子,解释一些误判:

  • 使用Ceph池中的可用空间
  • ceph显示大小计算
  • ceph-df命令中的最大可用性不正确

由于您涉及擦除编码,请检查此SO帖子:

  • ceph-df-octopus-hows-used-is-7倍-比-存储在擦除中的-编码-波尔

当您添加擦除编码池,即154处的erasurepool_data时,您得到255+154=399。

相关内容

  • 没有找到相关文章

最新更新