Wiki
存储与 GC
按仓库的存储仪表盘(大小、去重、增长)以及垃圾回收:清理旧版本、孤立 chunks、phantom files。
简介
存储标签页展示仓库的磁盘占用,并提供一个垃圾回收(GC)工具, 通过清理旧版本和已无用的数据来回收空间。
访问权限与角色
超级管理员以及在其所管理仓库上的 project_admin 可以访问,包括运行 GC。 而服务器全局统计与许可证则仅限超级管理员使用(位于面板的其他位置)。
指标
- 总大小与压缩后大小。
- 去重率(%):通过 chunks 共享和压缩节省的空间占比。
- 文件 / 版本 / chunks。
- 增长(最近 30 天):按天统计版本数的直方图。
- 最大文件:按大小排列的前 20 个及其版本数。
这些数字有助于发现体积不断膨胀的仓库:一个被反复重新提交的大型二进制文件,或最近 30 天的异常增长。
垃圾回收
GC 依据两个参数清理旧历史:
| 参数 | 默认值 | 作用 |
|---|---|---|
| Retention (days) | 90 | 低于该天数的版本始终保留。 |
| Min revisions to keep | 5 | 无论年龄如何,每个文件保留的最近版本数。 |
两个按钮:
- Preview:仅模拟,不删除任何内容。横幅:“将在 Y 个文件中删除 X 个版本, 移除 Z 个 phantom(幽灵)条目”。请务必先预览。
- Run GC:实际执行。横幅:“已删除 X 个版本,清理 Y 个孤立 chunks, 移除 Z 个 phantom 条目”。执行会记录在审计日志中。
GC 具有破坏性且不可逆
被清理的版本(超出保留窗口的部分)无法恢复。在每次 Run GC 之前先运行
Preview,并核对数字是否符合预期。
GC 删除的内容
- 旧版本:早于 Retention (days) 并且 超出每个文件 Min revisions to keep 最近版本范围的那些。随后是它们的 chunks, 前提是不再被任何其他版本引用。
- 孤立 chunks:清理后不再被任何版本使用的数据块。
- Phantom files:从未真正提交的文件记录(无效路径或悬而未决的条目), 超出固定的 7 天窗口(不可配置)的部分。
已删除或已 obliterate 文件的删除标记(tombstones)会被保留:它们用于在 sync 时 向客户端传播删除操作,因此不应消失。
常见陷阱
Preview 报告的内容很少
如果仓库较新或历史都在保留窗口之内,这是正常的。GC 只会触及既足够旧 又超出每个文件最近 N 个的版本。
Preview 与 Run 显示的计数不同
Preview 无法预测将删除的 chunks 以及版本与 chunk 链接的确切数量:它只报告 版本、扫描的文件和 phantom 条目。孤立 chunks 只有在 Run 时才会出现。
降低保留期以回收空间
可行,但你会丢失历史。对于需要能够回溯很久的项目,请保留较为宽裕的保留期, 转而在大文件上做文章(参见最大文件列表,以及用于避免跟踪可重新生成产物的 .uversionignore)。