3.4. 配置 Bucket 分片
Ceph 对象网关将 bucket 索引数据存储在索引池(index_pool
)中,默认为 .rgw.buckets.index
。当客户端将许多对象 -hunds 放入数以百万计的对象时,在单个 bucket 中没有为每个存储桶设置最大对象数量的配额,索引池可能会遭遇显著的性能下降。
当每个存储 桶允许大量对象时,bucket 索引分片 有助于防止性能瓶颈。从 Red Hat Ceph Storage 4.1 开始,默认的存储桶索引分片( bucket_index_max_shards
)已从 1 改为 11。这个更改会增加小存储桶的写入吞吐量量,并延迟设置动态重新划分。此更改仅影响新存储桶和部署。
红帽建议将分片计数设为计算的分片计数最为接近的主数。作为主要数字的存储桶索引分片在跨分片均匀分配 bucket 索引条目方面表现更好。例如,7001 存储桶索引分片优于 7000,因为前者是主的。
配置存储桶索引分片:
-
对于简单配置中的新 bucket,请使用
rgw_override_bucket_index_max_shards
选项。请查看 第 3.4.3 节 “在简单配置中配置 Bucket Index Sharding” -
对于多站点配置中的新 bucket,请使用
bucket_index_max_shards
选项。请查看 第 3.4.4 节 “在多站点配置中配置 Bucket Index 分片”
重新定义存储桶:
3.4.1. bucket 分片限制
请谨慎使用以下限制:您的硬件选择会有影响,因此您应该始终与您的红帽客户团队讨论这些要求。
一个存储桶中的最大对象数量,然后再需要分片
红帽建议每个存储桶索引分片最多有 102,400 个对象。为充分利用分片,请在 Ceph 对象网关 bucket 索引池中提供足够数量的 OSD 来获取最大并行性。
目前,当索引存储中的任何密钥范围超过 200,000 时,Ceph OSD 都会发出警告。因此,如果您接近每个分片需要 200,000 个对象的数量,则会出现此类警告。在一些设置中,值可能较大,并可调整。
使用分片时的最大对象数
动态存储桶重新划分的存储桶索引分片的默认数量为 1999。您可以将此值更改为 65521 分片。1999 bucket 索引分片值为存储桶中的 204697600 个总对象,值 65521 分片提供 6709350400 对象。
根据以前的测试,当前支持的存储桶索引分片的最大数量为 65521。红帽质量保证未对存储桶分片执行完整的可扩展性测试。
如果存储桶索引分片的数量超过 1999,则常规 S3 客户端可能无法列出存储桶内容。自定义客户端可以要求非排序列表,它可扩展到任意数量的分片。