ceph radosgw 原有zone placement信息丢失数据恢复

发布于:2024-06-13 ⋅ 阅读:(121) ⋅ 点赞:(0)

概述

近期遇到一个故障环境,因为某些原因,导致集群原有zone、zonegroup等信息丢失(osd,pool等状态均健康)。原有桶和数据无法访问,经过一些列fix后修复, 记录过程

恢复realm和pool相关信息

重新初始化realm

radosgw-admin realm create --rgw-realm=zzrealm --default

创建zonegroup

radosgw-admin zonegroup create --rgw-realm=zzrealm --rgw-zonegroup=zzzonegroup --master --default

创建zone

radosgw-admin zone create --rgw-realm=zzrealm --rgw-zonegroup=zzzonegroup --rgw-zone=zzzone --master --default

如果realm,zonegroup以及zone和之前创建过程一样,则使用的indexpool和datapool和之前一致。如果发生了变化,则需要重新指定对应的池。

radosgw-admin zone placement modify --placement-id=default-placement --data-pool data-pool --index-pool index-pool

重启rgw实例

systemctl restart ceph-radosgw@.target

至此,索引和桶信息等数据恢复完成,通过s3cmd和s3browser都可以看到桶列表。
但访问桶内数据时候会报错。

ERROR: S3 error: 301 (Moved Permanently)

恢复旧桶的zonegroup id

虽然旧的桶无法访问,但仍可以创建新桶和访问新桶内数据,我们新建一个桶testnew。底层查看桶信息

radosgw-admin bucket stats --bucket=""

发现新桶和旧桶的zonegroup id不一致。
在这里插入图片描述

获取旧桶的桶id

radosgw-admin metadata get bucket:test

其中bucket_id的行就是桶id

导出旧桶配置

其中同名后面的一大长串为上一步查询的桶id

radosgw-admin metadata get bucket.instance:testnew:6a3071ed-d182-4bdd-9398-ab21f6bf4f9d.24280.7>> testnew.json

修改桶配置json文件

找到zonegroup这一行,编辑修改为与新桶一直,即新的zonegroup id。

桶配置json导回到桶

radosgw-admin metadata put bucket.instance:testnew:6a3071ed-d182-4bdd-9398-ab21f6bf4f9d.24280.7<testnew.json

然后重启rgw实例

至此完成数据访问恢复。


网站公告

今日签到

点亮在社区的每一天
去签到