我最近开始学习 Ceph,并设置了自己的 ansible 脚本来设置 Ceph 集群(是的,我知道 cephadm-ansible 存在,但我想熟悉管理 ceph)。
最初,我在这里配置了默认的 rgw 服务,并尝试使用我想要的池创建另一个区域并将其设为默认区域,但效果不太好(服务似乎运行了,但无法访问):https://github.com/Magnitus-/ansible-playbooks/blob/23385216d078251939a6ad03f197d3aad9a79516/roles/ceph/rgw/templates/setup_rgw_service.sh.j2
我删除了新区域,删除了 rgw 服务并清理了所有池,但.rgw.root
文档警告我不要这样做(回想起来,我可能应该删除它)。
然后,我重新配置了 rgw 服务,但在执行此操作之前,我只是预先配置了默认池,并将其改为我想要的: https://github.com/Magnitus-/ansible-playbooks/blob/main/roles/ceph/rgw/templates/setup_rgw_pools.sh.j2 https://github.com/Magnitus-/ansible-playbooks/blob/main/roles/ceph/rgw/templates/setup_rgw_service.sh.j2
这似乎很有效。但是,当我通过运行列出用户时radosgw-admin user list
,我得到了列表,但我首先得到了这个:
2024-02-05T13:20:40.999+0000 7f37fd330a40 0 failed reading obj info from .rgw.root:realms.c08fb4e1-502c-42f2-98b9-63202f161420: (2) No such file or directory
2024-02-05T13:20:40.999+0000 7f37fd330a40 0 failed reading obj info from .rgw.root:realms.c08fb4e1-502c-42f2-98b9-63202f161420: (2) No such file or directory
2024-02-05T13:20:41.003+0000 7f37fd330a40 0 failed reading obj info from .rgw.root:realms.c08fb4e1-502c-42f2-98b9-63202f161420: (2) No such file or directory
2024-02-05T13:20:41.075+0000 7f37fd330a40 0 failed reading obj info from .rgw.root:realms.c08fb4e1-502c-42f2-98b9-63202f161420: (2) No such file or directory
我猜我之前的设置还留下了一些损坏。到目前为止,它还没有影响到我(好吧,创建对某些存储桶具有只读访问权限的用户确实感觉像拔牙一样困难,但我在新的虚拟化测试 ceph 集群上遇到了同样的问题),但我觉得我应该在它成为问题之前清理一下,所以我想重新配置一个新的 rgw 服务(没有以前的元数据,什么都没有)。
首先,我想在同一个 ceph 集群内迁移数据(我的 ceph 集群外没有磁盘容量,我不想支付云出口费用,也不想重新下载所有内容)。理想情况下,我会配置另一个不使用的 rgw 服务并将其.rgw.root
rclone 到它,但我觉得这可能是一个艰巨的任务。相反,我想我会弄清楚如何设置 cephfs、安装卷并将我的存储桶 rclone 到它(我的 ceph 集群中有足够的容量来复制数据)。
然后,为了得到一个干净的 rgw 服务,我想我会像上次一样把它移除,清理它的所有池子,但这次我也会清理,.rgw.root
然后我就好了?不再有过去的幽灵了?
答案1
我在虚拟化的 ceph 集群中对其进行了验证,删除与 rgw 相关的服务和所有池效果很好(假设您有办法将所有您想要保留的数据转移出 rgw 池,就我的情况而言)。
我忘了,但 ceph 集群只从一个.mgr
池开始,仅此而已。.rgw.root
稍后设置 rados 网关服务时会添加它。
此外,从我目前所知的情况来看,rgw 的状态似乎并未泄漏到其池之外,因此只需关闭服务并删除所有池似乎就足以重新开始。