搜索

第 20 章 Red Hat Quay 垃圾回收

download PDF

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

20.1. 实践中的 Red Hat Quay 垃圾回收

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

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

注意

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

标签可以与已在 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

20.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.