保留策略与 GC

智能保留有用快照,自动清理冗余数据

GFS 保留策略(祖父-父-子)

Ginkgo 用 GFS 轮转策略,把快照按时间桶分类保留——从小时到年。近期快照密集,远期快照稀疏,既不丢历史又省空间。

时间桶默认保留含义
all1h最近 1 小时内的所有快照全部保留
hourly24最近 24 小时,每小时保留 1 个快照
daily7最近 7 天,每天保留 1 个快照
weekly4最近 4 周,每周保留 1 个快照
monthly6最近 6 个月,每月保留 1 个快照
yearly3最近 3 年,每年保留 1 个快照

快照置顶

重要快照可以「置顶」,置顶后即使超出保留策略也不会被删除。比如项目发布前的状态、重要里程碑。

GC 安全预设

三种预设控制垃圾回收的保守程度。生产环境建议用「正常」或「偏执」。

预设最小块龄两阶段验证回收站保留
激进5min4h
正常(默认)5min24h
偏执5min72h

垃圾回收(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 标识