3.3. 创建无索引 Bucket
可以在创建的存储桶不使用存储桶索引来存储对象索引时配置放置目标,即无索引存储桶。不使用数据复制或列表的放置目标可能会实现无索引存储桶。
Indexless bucket 提供了一种机制,其中的放置目标不会跟踪特定存储桶中的对象。这消除了每当发生对象写入时发生的资源争用,并减少 Ceph 对象网关对 Ceph 存储集群进行的往返次数。这可能会对并发操作和小对象写入性能产生积极的影响。
要将放置目标指定为无索引,请使用以下步骤:
获取
zone.json的配置:$ radosgw-admin zone get --rgw-zone=<zone> > zone.json通过添加新的放置目标或修改现有目标使其具有
"index_type": 1来修改zone.json,例如:"placement_pools": [ { "key": "default-placement", "val": { "index_pool": "default.rgw.buckets.index", "data_pool": "default.rgw.buckets.data", "data_extra_pool": "default.rgw.buckets.non-ec", "index_type": 1, "compression": "" } }, { "key": "indexless", "val": { "index_pool": "default.rgw.buckets.index", "data_pool": "default.rgw.buckets.data", "data_extra_pool": "default.rgw.buckets.non-ec", "index_type": 1 } } ],设置
zone.json的配置:$ radosgw-admin zone set --rgw-zone=<zone> --infile zone.json如果您创建了新的放置目标,请确保
zonegroup引用新的放置目标:$ radosgw-admin zonegroup get --rgw-zonegroup=<zonegroup> > zonegroup.json设置 zonegroup 的
default_placement:$ radosgw-admin zonegroup placement default --placement-id indexless根据
需要修改 zonegroup.json。例如:"placement_targets": [ { "name": "default-placement", "tags": [] }, { "name": "indexless", "tags": [] } ], "default_placement": "default-placement",$ radosgw-admin zonegroup set --rgw-zonegroup=<zonegroup> < zonegroup.json如果集群处于多站点配置中,请更新并提交周期:
$ radosgw-admin period update --commit
在本例中,在 "indexless" 目标中创建的存储桶将是无索引存储桶。
bucket 索引不会反映存储桶的正确状态,列出这些存储桶将无法正确返回其对象列表。这会影响多个功能。具体来说,这些存储桶不会在多区环境中同步,因为存储桶索引不用于存储更改信息。不建议在无索引存储桶上使用 S3 对象版本控制,因为此功能需要存储桶索引。
使用无索引存储桶可移除单个 bucket 中最大对象数量的限值。
无法从 NFS 列出无索引存储桶中的对象