垃圾回收

当您从 Harbor 中删除镜像时,空间不会自动释放。您必须运行垃圾回收,通过删除文件系统中不再被 manifest 引用的 blobs 来释放空间。

运行垃圾回收

  1. 使用具有 Harbor 系统管理员权限的帐户登录到 Harbor 界面。

  2. 展开 管理,然后选择 清理

  3. 选择 ‘垃圾回收’ 选项卡。

    Garbage collection

  4. 对于 工作进程 项,您可以选择可以并行执行 GC 任务的工作进程数量。

  5. 允许对未标记的 artifacts 执行垃圾回收,请选择此选项。如果您启用此选项,则下次在您的 Harbor 实例上运行垃圾回收时,Harbor 将删除未标记的 artifacts,然后对它们执行垃圾回收。

  6. 要试运行垃圾回收,请单击 试运行

  7. 要立即运行垃圾回收,请单击 立即执行 GC

试运行 会打印符合删除条件的 blobs 以及释放空间的粗略估计,而不会删除任何数据。

为了避免损坏正在上传的 artifact,垃圾回收引入了一个时间窗口(2 小时)来保留最近上传的层。垃圾回收不会扫描时间窗口内具有时间戳的 manifest 和 blob 文件。Harbor 运行垃圾回收时不会中断您继续使用 Harbor 的能力,例如,您可以在垃圾回收运行时推送、拉取或删除 artifacts。

为了避免过于频繁地触发垃圾回收过程,立即执行 GC 按钮的可用性受到限制。垃圾回收每分钟只能运行一次。

计划垃圾回收

您可以从 Harbor 界面的 管理 > 清理 页面上的 ‘垃圾回收’ 选项卡中计划垃圾回收。

  1. 使用下拉菜单选择运行垃圾回收的频率。

    Schedule garbage collection

    • :不计划垃圾回收。
    • 每小时:每小时开始时运行垃圾回收。
    • 每天:每天午夜运行垃圾回收。
    • 每周:每周六午夜运行垃圾回收。
    • 自定义:根据 cron 任务运行垃圾回收。
  2. 对于 工作进程 项,您可以选择可以并行执行 GC 任务的工作进程数量。

  3. 允许对未标记的 artifacts 执行垃圾回收,请选择此选项。如果您启用此选项,则下次在您的 Harbor 实例上运行垃圾回收时,Harbor 将删除未标记的 artifacts,然后对它们执行垃圾回收。

  4. 单击 保存

查看垃圾回收历史记录

在 Harbor 界面的 管理 > 清理 页面上的 ‘垃圾回收’ 选项卡上的 垃圾回收历史记录 表中查看垃圾回收运行记录。

每次在您的 Harbor 实例上运行垃圾回收时,Harbor 都会跟踪有关运行的一些信息,包括

  • 任务 ID: Harbor 在启动运行时分配的唯一数值。
  • 触发类型: 运行的启动方式,手动或计划。
  • 试运行: 运行是否为试运行。
  • 状态: 运行的当前状态。
  • 详情: 垃圾回收详情。
  • 创建时间: 运行开始的时间。
  • 更新时间: 运行上次更新的时间。
  • 日志: 指向运行生成的日志的链接。如果您正在执行试运行,这将包括对将要进行垃圾回收的 artifacts 的估计。

Garbage collection history

停止正在进行的垃圾回收

您可以从垃圾回收历史记录表中停止任何正在运行的垃圾回收任务。

  1. 导航到 管理 > 清理 页面,然后选择 ‘垃圾回收’ 选项卡。

  2. 垃圾回收历史记录 表中,单击正在运行的垃圾回收的任务 ID 旁边的复选框。您可以一次停止一个或多个正在运行的垃圾回收任务。

  3. 单击 停止,然后在模态框中单击 确认,确认您要停止垃圾回收。

    Select Garbage collection task from table

这将仅停止垃圾回收任务处理更多 artifacts。Harbor 不会恢复任何已被垃圾回收的 artifact。