0

default.rgw.buckets.data存储了501 GiB,但 USED 显示3.5 TiB

root@ceph-01:~# ceph df
--- RAW STORAGE ---
CLASS  SIZE     AVAIL    USED     RAW USED  %RAW USED
hdd    196 TiB  193 TiB  3.5 TiB   3.6 TiB       1.85
TOTAL  196 TiB  193 TiB  3.5 TiB   3.6 TiB       1.85

--- POOLS ---
POOL                       ID  PGS  STORED   OBJECTS  USED     %USED  MAX AVAIL
device_health_metrics       1    1   19 KiB       12   56 KiB      0     61 TiB
.rgw.root                   2   32  2.6 KiB        6  1.1 MiB      0     61 TiB
default.rgw.log             3   32  168 KiB      210   13 MiB      0     61 TiB
default.rgw.control         4   32      0 B        8      0 B      0     61 TiB
default.rgw.meta            5    8  4.8 KiB       11  1.9 MiB      0     61 TiB
default.rgw.buckets.index   6    8  1.6 GiB      211  4.7 GiB      0     61 TiB

default.rgw.buckets.data   10  128  501 GiB    5.36M  3.5 TiB   1.90    110 TiB

default.rgw.buckets.data池使用纠删码:

root@ceph-01:~# ceph osd erasure-code-profile get EC_RGW_HOST
crush-device-class=hdd
crush-failure-domain=host
crush-root=default
jerasure-per-chunk-alignment=false
k=6
m=4
plugin=jerasure
technique=reed_sol_van
w=8

如果有人可以帮助解释为什么它占用了 7 倍以上的空间,那将有很大帮助。版本控制被禁用。ceph 版本 15.2.13(章鱼稳定版)。

4

1 回答 1

0

这与 bluestore_min_alloc_size_hdd=64K(Octopus 上的默认值)有关。

如果使用纠删码,数据会被分解成更小的块,每个块占用 64K 磁盘空间。

一种选择是将 bluestore_min_alloc_size_hdd 降低到 4K,如果您的解决方案需要存储数百万个微小 (16K) 对象,这是很好的选择。在我的例子中,我存储了数亿张 3-4M 的照片,所以我决定跳过 Erasure Coding,继续使用 bluestore_min_alloc_size_hdd=64K 并切换到复制 3(最少 2)。从长远来看,这更安全、更快。

以下是 Josh Baergen 在邮件列表中的回复:

Hey Arkadiy,

If the OSDs are on HDDs and were created with the default
bluestore_min_alloc_size_hdd, which is still 64KiB in Octopus, then in
effect data will be allocated from the pool in 640KiB chunks (64KiB *
(k+m)). 5.36M objects taking up 501GiB is an average object size of 98KiB
which results in a ratio of 6.53:1 allocated:stored, which is pretty close
to the 7:1 observed.

If my assumption about your configuration is correct, then the only way to
fix this is to adjust bluestore_min_alloc_size_hdd and recreate all your
OSDs, which will take a while...

Josh
于 2021-06-29T22:43:32.653 回答