uVersion
简体中文
下载 →

Wiki

存储与 GC

按仓库的存储仪表盘(大小、去重、增长)以及垃圾回收:清理旧版本、孤立 chunks、phantom files。

简介

存储标签页展示仓库的磁盘占用,并提供一个垃圾回收(GC)工具, 通过清理旧版本和已无用的数据来回收空间。

访问权限与角色

超级管理员以及在其所管理仓库上的 project_admin 可以访问,包括运行 GC。 而服务器全局统计与许可证则仅限超级管理员使用(位于面板的其他位置)。

指标

存储仪表盘:去重率、30 天增长直方图,以及最大文件前 20 名。
  • 总大小压缩后大小
  • 去重率(%):通过 chunks 共享和压缩节省的空间占比。
  • 文件 / 版本 / chunks
  • 增长(最近 30 天):按天统计版本数的直方图。
  • 最大文件:按大小排列的前 20 个及其版本数。

这些数字有助于发现体积不断膨胀的仓库:一个被反复重新提交的大型二进制文件,或最近 30 天的异常增长。

垃圾回收

GC 面板:保留期与最小版本字段、Preview 和 Run GC 按钮,以及结果横幅。

GC 依据两个参数清理旧历史:

参数默认值作用
Retention (days)90低于该天数的版本始终保留。
Min revisions to keep5无论年龄如何,每个文件保留的最近版本数。

两个按钮:

  • Preview:仅模拟,不删除任何内容。横幅:“将在 Y 个文件中删除 X 个版本, 移除 Z 个 phantom(幽灵)条目”。请务必先预览。
  • Run GC:实际执行。横幅:“已删除 X 个版本,清理 Y 个孤立 chunks, 移除 Z 个 phantom 条目”。执行会记录在审计日志中。
GC 具有破坏性且不可逆 被清理的版本(超出保留窗口的部分)无法恢复。在每次 Run GC 之前先运行 Preview,并核对数字是否符合预期。

GC 删除的内容

  1. 旧版本:早于 Retention (days) 并且 超出每个文件 Min revisions to keep 最近版本范围的那些。随后是它们的 chunks, 前提是不再被任何其他版本引用。
  2. 孤立 chunks:清理后不再被任何版本使用的数据块。
  3. Phantom files:从未真正提交的文件记录(无效路径或悬而未决的条目), 超出固定的 7 天窗口(不可配置)的部分。

已删除或已 obliterate 文件的删除标记(tombstones)会被保留:它们用于在 sync 时 向客户端传播删除操作,因此不应消失。

常见陷阱

Preview 报告的内容很少

如果仓库较新或历史都在保留窗口之内,这是正常的。GC 只会触及既足够旧 超出每个文件最近 N 个的版本。

Preview 与 Run 显示的计数不同

Preview 无法预测将删除的 chunks 以及版本与 chunk 链接的确切数量:它只报告 版本、扫描的文件和 phantom 条目。孤立 chunks 只有在 Run 时才会出现。

降低保留期以回收空间

可行,但你会丢失历史。对于需要能够回溯很久的项目,请保留较为宽裕的保留期, 转而在大文件上做文章(参见最大文件列表,以及用于避免跟踪可重新生成产物的 .uversionignore)。