4.4.7. 调整 Garbage Collection 设置

Ceph 对象网关为新的和覆盖的对象立即分配存储。此外,多部分上传的部分也消耗了一些存储。

从 bucket 索引中删除对象后,Ceph 对象网关会清除用于已删除对象的存储空间。类似地,Ceph 对象网关将在多部分上传完成后删除与多部分上传相关的数据,或者上传未激活或未能完成时可配置的时间。从 Red Hat Ceph Storage 集群清除已删除对象数据的过程称为垃圾回收(GC)。

可使用以下命令查看等待垃圾回收的对象:

radosgw-admin gc list

垃圾回收是一种后台活动,它会持续或低负载期间执行,具体取决于存储管理员如何配置 Ceph 对象网关。默认情况下,Ceph 对象网关持续执行垃圾收集操作。由于垃圾回收操作是 Ceph 对象网关的常规功能,特别是对象删除操作,因此大多数时间都存在符合垃圾回收条件的对象。

某些工作负载可临时或永久超过垃圾收集活动的速度。对于删除密集型工作负载而言,这尤其适用,其中很多对象都会在短时间内存储,然后将其删除。对于这些类型的工作负载,存储管理员可以使用以下配置参数,相对于其他操作增加垃圾回收操作的优先级:

  • rgw_gc_obj_min_wait 配置选项在清除已删除对象数据前等待最短时间(以秒为单位)。默认值为 2 小时或 7200 秒。对象不会立即清除,因为客户端可能会读取对象。在删除大量工作负载时,此设置可能会消耗过多的存储,或者有大量已删除的对象可以清除。红帽建议不要在 30 分钟内设置这个值,或设置 1800 秒。
  • rgw_gc_processor_period 配置选项是垃圾回收周期的运行时间。也就是说,连续运行垃圾回收线程之间的时间长度。如果垃圾回收的时间超过这一时间段,Ceph 对象网关不会在再次运行垃圾回收循环前等待。
  • rgw_gc_max_concurrent_io 配置选项指定网关垃圾回收线程在清除已删除数据时使用的最大并发 IO 操作数。在删除重度工作负载时,请考虑将此设置增加到更多并发 IO 操作。
  • rgw_gc_max_trim_chunk 配置选项指定要在单个操作中从垃圾收集器日志中移除的最大密钥数。在删除重量操作时,请考虑增加密钥的最大数量,以便在每次垃圾收集操作期间清除更多对象。

从 Red Hat Ceph Storage 4.1 开始,从垃圾回收日志中卸载索引对象的 OMAP 有助于降低垃圾回收活动对存储集群的性能影响。在 Ceph 对象网关中添加了一些新配置参数来调优垃圾回收队列,如下所示:

  • rgw_gc_max_deferred_entries_size 配置选项设置垃圾回收队列中延迟条目的最大大小。
  • rgw_gc_max_queue_size 配置选项设置用于垃圾回收的最大队列大小。这个值不应大于 osd_max_object_size minus rgw_gc_max_deferred_entries_size minus 1 KB。
  • rgw_gc_max_deferred 配置选项设置垃圾回收队列中存储的最大延迟条目数。
注意

这些垃圾回收配置参数适用于红帽 Ceph 存储 4 及更高版本。

注意

在测试中,存储群集使用均匀均衡的删除写入工作负载(如 50% 删除和 50% 的写入操作),该存储群集占用了 11 小时。这是因为 Ceph 对象网关垃圾回收无法与删除操作同步。如果发生这种情况,集群状态将切换到 HEALTH_ERR 状态。对并行垃圾回收可调项的主动设置会显著延迟存储群集的测试,可能对很多工作负载有用。典型的实际存储集群工作负载可能无法导致存储集群主要因为垃圾回收而填满。

管理员也可以在部署后在运行时修改 Ceph 配置设置。详情请参阅 在运行时设置特定配置集