一、背景和問題
默認情況下只有當單個bucket承載的object數量過多,導致omap過大會導致性能問題。在L 版之前需要線下reshard,從L 版開始支持線上自動reshard,默認rgw dynamic resharding 是開啟的。但是在開啟了Multisite的情況下,一旦對bucket進行了reshard操作,則會破壞原有的元數據對應規則,導致對應的bucket無法進行數據同步。所以L 版在后面的一個pr 禁用了multisite 下自動的reshard1。multisite 對於omap 過大的問題,需要手動reshard,生產環境上有很大風險。所以事先規划好bucket 對象數上限和num_shard 是必要的。
二、bucket reshard 過程
主集群信息匯總
查看當前集群狀態:
## ceph -s
查看當前主集群的存儲桶列表:
## radosgw-admin bucket list
在存儲桶數量不多的情況下,依次查看各個存儲桶的狀態信息,重點關注num shards, num_objects
## radosgw-admin bucket stats --bucket=test1
## rados -p default.rgw.buckets.index ls|grep <bucket-id>
獲取IO 路徑
## ceph osd map default.rgw.buckets.index .dir.a5ef9049-a15b-48b5-9a28-1692590e8752.24166.24.0 // 指定索引對象
Multisite 下手動reshard
1.查看主集群狀態,確認同步完成,並沒有新的寫入:
[master]# radosgw-admin sync status
2.從集群檢查
[slave]# radosgw-admin sync status
3.主集群上關閉對應bucket的sync
[master]# radosgw-admin sync disable --bucket=test1
[master]# radosgw-admin sync status --bucket=test1
4.主、備集群停掉所有RGW 服務
[master]# systemctl stop ceph-radosgw@rgw.`hostname -s`
[slave]# systemctl stop ceph-radosgw@rgw.`hostname -s`
5.主集群上的任意節點執行下面操作,手工對指定bucket 做reshard,記錄對應的old bucket instance id:
[master]# radosgw-admin bucket reshard --bucket=test1 --num-shards=<N>
*** NOTICE: operation will not remove old bucket index objects ***
*** these will need to be removed manually ***
tenant:
bucket name: test1
old bucket instance id: e8921092-c7e8-42d8-80d1-5e83c25d5661.72254.1
new bucket instance id: e8921092-c7e8-42d8-80d1-5e83c25d5661.72437.1
total entries: 6
6.從集群刪除bucket所有數據,同時清除bucket
[slave]# radosgw-admin bucket rm --purge-objects --bucket=test1
[slave]# radosgw-admin bucket list
7.主集群,刪除舊bucket的bi信息
[master# radosgw-admin bi purge --bucket-id="" --bucket=test1
8.啟動所有主、從節點上的rgw服務
[master]# systemctl start ceph-radosgw@rgw.`hostname -s`
[slave]# systemctl start ceph-radosgw@rgw.`hostname -s`
9.主集群重新開啟對應bucket的sync,等待主集群里面的數據慢慢同步回從集群
[master]# radosgw-admin sync enable --bucket=test1
[master]# radosgw-admin sync status --bucket=test1
References
1.https://github.com/ceph/ceph/pull/18184
2.https://mp.weixin.qq.com/s/ckrYnvlOjQlta_JdryCauA
3.https://cloud.tencent.com/developer/article/1400660
4.https://cloud.tencent.com/developer/article/1378031