第 18 章 Red Hat Quay 垃圾回收


Red Hat Quay 包括自动和持续镜像垃圾回收。垃圾回收通过删除可占用量磁盘空间(如悬停或未标记的镜像、存储库和 Blob)的对象(包括层和清单)来有效地将资源用于活跃对象。Red Hat Quay 执行垃圾回收可减少您组织的环境中的停机时间。

18.1. 在实践中 Red Hat Quay 垃圾回收

目前,所有垃圾回收都会意外地发生,没有命令来手动运行垃圾回收。Red Hat Quay 提供跟踪不同垃圾回收 worker 状态的指标。

对于命名空间和存储库垃圾回收,会根据对应队列的大小跟踪进度。命名空间和存储库垃圾回收工作需要全局锁定。因此,出于性能原因,一次只能运行一个 worker。

注意

Red Hat Quay 在命名空间和存储库间共享 Blob,以便节省磁盘空间。例如,如果推送了相同的镜像,则仅存储该镜像的一个副本。

标签可以与已在 Red Hat Quay 中的某个位置存储的不同镜像共享其层。在这种情况下,blob 将保留在存储中,因为删除共享 Blob 会导致其他镜像不可用。

blob 过期时间独立于时间机器。如果您将标签推送到 Red Hat Quay,且时间机器被设置为 0 秒,然后您立即删除标签,垃圾回收会删除与该标签相关的标签,但不会在达到 blob 过期时间前删除 blob 存储。

垃圾回收镜像的工作方式与命名空间或仓库上的垃圾回收不同。垃圾回收工作者不会处理项目队列,而是主动搜索带有不活跃或过期标签的存储库来清理。垃圾回收 worker 的每个实例都会获得一个存储库锁定,这样可为每个存储库生成一个 worker。

注意
  • 在 Red Hat Quay 中,不活跃或过期的标签是没有标签的清单,因为最后一个标签已被删除或过期。清单存储有关如何为每个标签组成镜像并存储在数据库中的信息。当标签被删除并从 Time Machine 分配的时间时,Red Hat Quay 垃圾收集未连接到 registry 中任何其他清单的 Blob。如果特定的 Blob 连接到清单,则会将其保存在存储中,且仅与要删除的清单的连接才会被删除。
  • 过期的镜像将在分配的时间后消失,但仍然存储在 Red Hat Quay 中。镜像被完全删除或收集的时间取决于您的机构的 Time Machine 设置。除非另有指定,垃圾回收的默认时间为 14 天。在这段时间之前,标签可以指向已过期或删除的镜像。

对于每种垃圾回收,Red Hat Quay 会为每个垃圾回收 worker 删除的每个表删除的行数提供指标。下图显示了 Red Hat Quay 如何使用相同的指标监控垃圾回收的示例:

Garbage collection metrics

18.1.1. 测量存储重新声明

Red Hat Quay 无法跟踪垃圾回收所释放的空间。目前,这一点的最佳指示是检查提供的指标中已删除多少 Blob。

注意

Red Hat Quay 指标中的 UploadedBlob 表跟踪与存储库关联的各种 Blob。上传 Blob 时,在 PUSH_TEMP_TAG_EXPIRATION_SEC 参数指定的时间之前不会收集它。这是为了避免永久删除属于持续推送的 Blob。例如,如果将垃圾回收设置为频繁运行,且在一小时的 span 并删除标签,则相关的 Blob 可能会立即清理。相反,假设由 PUSH_TEMP_TAG_EXPIRATION_SEC 参数指定的时间已通过,相关的 Blob 将被删除在同一存储库上运行的垃圾回收。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.