保留策略与 GC
智能保留有用快照,自动清理冗余数据
GFS 保留策略(祖父-父-子)
Ginkgo 用 GFS 轮转策略,把快照按时间桶分类保留——从小时到年。近期快照密集,远期快照稀疏,既不丢历史又省空间。
| 时间桶 | 默认保留 | 含义 |
|---|---|---|
all | 1h | 最近 1 小时内的所有快照全部保留 |
hourly | 24 | 最近 24 小时,每小时保留 1 个快照 |
daily | 7 | 最近 7 天,每天保留 1 个快照 |
weekly | 4 | 最近 4 周,每周保留 1 个快照 |
monthly | 6 | 最近 6 个月,每月保留 1 个快照 |
yearly | 3 | 最近 3 年,每年保留 1 个快照 |
快照置顶
重要快照可以「置顶」,置顶后即使超出保留策略也不会被删除。比如项目发布前的状态、重要里程碑。
GC 安全预设
三种预设控制垃圾回收的保守程度。生产环境建议用「正常」或「偏执」。
| 预设 | 最小块龄 | 两阶段验证 | 回收站保留 |
|---|---|---|---|
| 激进 | 5min | 是 | 4h |
| 正常(默认) | 5min | 是 | 24h |
| 偏执 | 5min | 是 | 72h |
垃圾回收(GC)
GC 清理不再被任何快照引用的数据块,释放空间。Ginkgo 的 GC 只删除、从不重写——删除是幂等的,删错了重跑一次就能发现。建议先用 --dry-run 预览。
💡 GC 默认最小间隔 4 小时,避免频繁运行。可用 force=true 强制执行。
备份验证
验证备份数据完整性,确保关键时刻能恢复:
快速验证
检查 blob 是否存在(索引层)
深度验证
读取并校验所有数据块的内容哈希
自动修复
检测到损坏时,尝试从云存储恢复
GBF 存储格式
备份数据以 GBF(Ginkgo Backup Format)格式存储,内容寻址:
- 数据块:gb/{hash前2位}/{hash}.gb,每个块独立存储,不打包聚合
- 清单:.ginkgo-backup/manifests/{源ID}/,zstd 压缩的 JSON,每次备份一份完整独立清单
- 加密块以 GB1\x00 魔数前缀标识,加密清单以 GKM1 标识