diff --git a/doc/radosgw/dynamicresharding.rst b/doc/radosgw/dynamicresharding.rst new file mode 100644 index 00000000000..1db86e4a523 --- /dev/null +++ b/doc/radosgw/dynamicresharding.rst @@ -0,0 +1,87 @@ +=================================== +RGW Dynamic Bucket Index Resharding +=================================== + +.. versionadded:: Luminous + +A large bucket index can lead to performance problems. In order +to address this problem we introduced bucket index sharding. +Until Luminous, changing the number of bucket shards (resharding) +needed to be done offline, from Luminous we support +online bucket resharding. + +Each bucket index shard can handle its entries efficiently up until +reaching a certain threshold of entries. If this threshold is exceeded the system +could encounter performance issues. +The dynamic resharding feature detects this situation and increases +automatically the number of shards used by the bucket index, +resulting in the reduction of the number of entries in each bucket index shard. +This process is transparent to the user. + +The detection process runs: +1. When new objects are added to the bucket +2. In a background process that periodically scans all the buckets +This is needed in order to deal with existng buckets in the system that are not being updated. +A bucket that requires resharding is added to the ``reshard_log`` queue and will be +scheduled to be resharded later. +The reshard threads run in the background and execute the scheduled resharding, one at a time. + +Multisite +========= +Dynamic resharding is not supported in multisite environment. + + +Configuration +============= + +Enable/Disable Dynamic bucket index resharding: + +-``rgw_dynamic_resharding``: true/false, default: true. + +Parameters to control the resahrding process in Ceph configuration fie: + +-``rgw_reshard_num_logs``: number of shards for the resharding log, default: 16 + +-``rgw_reshard_bucket_lock_duration``: duration of lock on bucket obj during resharding, default: 120 seconds. + +-``rgw_max_objs_per_shard``: maximum number of objects per bucket index shard, default: 100000 objects. + +-``rgw_reshard_thread_interval``: maximum time between rounds of reshard thread processing, default: 600 seconds + + +Admin commands +============== + +Add a bucket to the resharding queue +------------------------------------ +:: + # radosgw-admin reshard add --bucket --num-shards + +List resharding queue +--------------------- +:: + # radosgw-admon reshard list + +Process/Schedule a bucket resharding +------------------------------------ + :: + # radosgw-admin reshard process + +bucket resharding status +------------------------ +:: + # radosgw-admin reshard status --bucket + +Cancel pending bucket resharding +-------------------------------- + +Ongoing bucket resharding operations cannot be cancelled. + +:: + # radosgw-admin reshard cancel --bucket + +Manual bucket resharding +------------------------ +:: + # radosgw-admin bucket reshard --bucket --num-shards + diff --git a/doc/radosgw/index.rst b/doc/radosgw/index.rst index d64e6dd6b30..48a5f6c24f0 100644 --- a/doc/radosgw/index.rst +++ b/doc/radosgw/index.rst @@ -51,7 +51,9 @@ you may write data with one API and retrieve it with the other. Compression Server-Side Encryption Bucket Policy + Dynamic bucket index resharding Data Layout in RADOS troubleshooting Manpage radosgw <../../man/8/radosgw> Manpage radosgw-admin <../../man/8/radosgw-admin> +