我有一个包含数百万个对象的 ceph/radosgw 存储桶,我需要将存储桶的所有权更改给另一个用户。
通常,这是通过link
将存储桶 ing 到新用户,然后chown
ing 中的所有文件来完成的,如下所示:
radosgw-admin bucket unlink --uid=user1 --bucket=bigbucket
radosgw-admin bucket link --uid=user2 --bucket=bigbucket
radosgw-admin bucket chown --uid=user2 --bucket=bigbucket
不幸的是,该chown
操作必须遍历存储桶中的每个对象才能更新元数据。这会导致停机时间延长(有时显然是每百万个对象 1 小时),旧用户和新用户都无法访问存储桶的全部内容。
有什么方法可以在不需要停机的情况下更改存储桶所有权?一些想法:
- 两个用户是否可以同时拥有一个存储桶或特定对象?
- 我们可以创建新用户,然后只更改他们
uid
或其他一些元数据,授予他们访问旧用户存储桶的权限吗? - 问题可以在客户端解决,还是可以通过代理解决?