ceph 之 RGW 元数据组织二
2024-02-24 本文已影响0人
wayyyy
bucket index
RGW为每个bucket维护一份索引,里边存放了bucket中全部对象的元数据。这个索引就是bucket index。
定位 bucket index
-
找到bucket的id
radosgw-admin bucket stats --bucket test # test 为bucket
-
检查对应BUCKET在index中是否存在
rados -p .rgw.buckets.index ls - | grep "default.784974.1"
-
查看对应index中omap记录的key
rados -p .rgw.buckets.index listomapkeys .dir.default.784974.1
可以使用如下命令来统计这个bucket的对象个数
rados -p .rgw.buckets.index listomapkeys .dir.default.104766.19 | wc -l
-
查到bucket index 分布在哪个osd
ceph osd map default.rgw.buckets.index .dir.
关于Bucket Index Sharding
默认情况下单个bucket的index全部存储在一个rados对象中(主要以OMAP-keys方式存储在leveldb中),随着单个bucket内的Object数量增加,整个bucket index 对象体积也在不断增长,当单个bucket index 对象体积过大就会引发各种问题。比如:
Hammer版本以后,新增bucket shared功能用以解决单桶存储海量对象的问题,bucket的index数据可以分布到多个RADOS对象上,bucket存储对象数量随着index数据的分片数量增加而增加。
- 配置Bucket Index Sharding
-
rgw_override_bucket_index_max_shards
需要重启rgw之后生效,并且对之前的bucket没有作用。[global] rgw_override_bucket_index_max_shards = 10
-