Wiki
存储与 GC
Files 标签页的 Storage 视图:按仓库的存储仪表盘(大小、去重、增长)以及垃圾回收,清理旧版本、孤立 chunks、phantom files。
简介
Storage 视图展示一个仓库(服务器上受版本控制的项目)的磁盘占用, 并提供一个垃圾回收(GC)工具,通过清理旧版本和已无用的数据来回收空间。
访问权限与角色
Files 标签页及其 Storage 视图可供超级管理员以及在其所管理仓库上的 project_admin 使用,包括运行 GC。而服务器全局统计与许可证则仅限超级管理员使用(位于面板的其他 位置)。
指标
Storage 视图以三张卡片开始:Total Size、Files / Revisions 和 Dedup Ratio。接着是 Growth (Last 30 Days) 直方图,然后是 Largest Files 表格。左上角的刷新按钮会重新计算全部内容。
每个数字的含义:
- Total Size:文件的总大小,紧接其下是磁盘上实际占用的压缩后大小。
- Files / Revisions:文件数量,其下是版本数和 chunks 数。
- Dedup Ratio(%):通过 chunks 共享和压缩节省的空间占比。
- Growth (Last 30 Days):按天累计的大小。将鼠标悬停在某个柱形上可读取其日期、大小和版本数。
- Largest Files:最大的 20 个文件及其大小和版本数。
这些数字有助于发现体积不断膨胀的仓库:一个被反复重新提交的大型二进制文件,或最近 30 天的异常增长。
垃圾回收
Garbage Collection 区块位于 Storage 视图底部。它依据两个参数清理旧历史:
| 参数 | 默认值 | 作用 |
|---|---|---|
| Retention (days) | 90 | 低于该天数的版本始终保留。 |
| Min revisions to keep | 5 | 无论年龄如何,每个文件保留的最近版本数。 |
1. 设置两个参数
在按钮左侧的两个字段中填入 Retention (days) 和 Min revisions to keep。它们会以 上表的默认值 90 和 5 显示。提醒:只有当两个条件同时满足时,版本才会被清理。
2. 用 Preview 运行预览
Preview 只模拟清理,不删除任何内容。按钮下方会出现一条黄色横幅: “Preview: X revisions would be deleted across Y files, Z phantom file entries would be removed”。此时正好核对 数量级;如果数字令你意外,请调高保留期而不是直接执行。
3. 用 Run GC 执行
红色的 Run GC 按钮执行清理。完成时的绿色横幅显示 “GC complete: X revisions deleted, Y orphan chunks cleaned, Z phantom file entries removed”,顶部的指标会重新 加载,执行会记录在审计日志中。
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)。