注意

本文档适用于 Ceph 开发版本。

孤儿列表和相关工具

Orphans是关联的RGW对象被删除后留下的RADOS对象。通常这些RADOS对象会自动删除,要么立即删除,要么通过一个称为“垃圾回收”的过程删除。然而,在RGW的历史中,可能存在阻止这些RADOS对象被删除的错误,并且这些RADOS对象可能会在Ceph集群上占用空间而没有任何用处。从RGW的角度来看,我们将此类RADOS对象称为“孤儿”。

Orphans Find -- 已弃用

The radosgw-admin工具有三个子命令来帮助管理孤儿,但是这些子命令将被(或很快将被)弃用。这些子命令是:

radosgw-admin orphans find ...
radosgw-admin orphans finish ...
radosgw-admin orphans list-jobs ...

然而,这些子命令存在两个主要问题。首先,这些子命令没有积极维护,因此没有跟踪RGW在功能和更新方面的演变。因此,这些子命令能够准确识别真正孤儿的信心目前很低。

其次,这些子命令在集群本身上存储中间结果。当集群管理员面临存储空间不足的问题并希望删除孤儿作为解决问题的一种手段时,这可能会成为一个问题。中间结果可能会进一步加剧现有集群存储容量的压力。

由于这些原因,“orphans find”已被弃用。

Orphan列表

由于“orphans find”已被弃用,RGW现在包含一个附加工具——‘rgw-orphan-list’。运行它将列出可用池并提示用户输入数据池的名称。此时,该工具可能会经过一段时间,生成一个包含指定池中似乎为孤儿RADOS对象的本地文件。管理员可以自由地检查此文件并决定采取何种行动,也许从指定池中删除这些RADOS对象。

所有中间结果都存储在本地文件系统上,而不是Ceph集群上。因此,运行‘rgw-orphan-list’工具应该不会对集群存储容量有显著影响。

警告:实验状态

‘rgw-orphan-list’工具是新的,因此目前被认为是实验性的。在将产生的孤儿列表用于大规模删除操作之前,应该对其进行“合理性检查”。

警告:指定数据池

如果指定了除RGW数据池以外的池,工具的结果将是错误的。在这样一个池上找到的所有RADOS对象将被错误地指定为孤儿。

警告:未索引的桶

RGW允许未索引的桶,即不维护其内容的索引的桶。这不是一种典型配置,但它受到支持。因为‘rgw-orphan-list’工具使用桶索引来确定应该存在的RADOS对象,未索引桶中的对象将被错误地列为孤儿。

RADOS列表

计算孤儿列表的一个子步骤是将每个RGW对象映射到其对应的RADOS对象集。这是使用‘radosgw-admin’的子命令完成的。

radosgw-admin bucket radoslist [--bucket={bucket-name}]

该子命令将生成一个支持所有RGW对象的RADOS对象列表。如果指定了桶,则该子命令将仅生成与指定桶中的RGW对象相对应的RADOS对象列表。

注意:共享桶标记

一些管理员可能了解用于命名与RGW对象对应的RADOS对象的编码方案,其中包括特定于给定桶的“标记”。

然而,与一个RGW桶的内容对应的RADOS对象可能包含一个指定不同桶的标记。这种行为是RGW使用的“浅拷贝”优化结果。当较大的对象从桶复制到桶时,实际上只复制“头”对象,而尾对象是共享的。这些共享对象将包含原始桶的标记。

由 Ceph 基金会带给您

Ceph 文档是一个社区资源,由非盈利的 Ceph 基金会资助和托管Ceph Foundation. 如果您想支持这一点和我们的其他工作,请考虑加入现在加入.