配置、保留策略与验证
配置标签页集中管理确保 datastore 持久性、清洁度和完整性的所有设置。
命名空间
命名空间允许在单个 datastore 内对备份进行逻辑分段,以嵌套目录结构实现,无需额外配置。
使用场景
- 分隔多个共享同一 datastore 的 Proxmox VE 集群(VMID 重叠)
- 隔离环境:
prod、preprod、dev - 按客户或项目划分(托管场景)
嵌套结构
/
├── prod/
│ ├── vm-infra/
│ └── vm-clients/
├── preprod/
└── client-a/
多集群
不同集群有相同 VMID 时,为每个集群使用独立命名空间以避免命名冲突。
Prune 任务(保留策略)
Prune 根据保留策略删除旧快照,仅删除元数据(清单、索引)。实际数据块仅由垃圾回收释放。
可用保留选项
| 选项 | 行为 |
|---|---|
keep-last N | 保留最近 N 个快照 |
keep-hourly N | 保留最近 N 小时内每小时最新快照 |
keep-daily N | 保留最近 N 天内每天最新快照 |
keep-weekly N | 保留最近 N 周内每周最新快照 |
keep-monthly N | 保留最近 N 个月内每月最新快照 |
keep-yearly N | 保留最近 N 年内每年最新快照 |
示例:每日备份,保留 10 年
| 选项 | 值 | 原因 |
|---|---|---|
keep-last | 3 | 保留最近手动备份 |
keep-daily | 13 | 至少 2 周 |
keep-weekly | 8 | 至少 2 个完整月 |
keep-monthly | 11 | 一年的月度快照 |
keep-yearly | 9 | 长期归档 |
最小示例:常规使用
keep-last: 3
keep-daily: 5
keep-weekly: 3
keep-monthly: 1
垃圾回收(Garbage Collection)
垃圾回收通过删除孤立数据块来释放实际磁盘空间——这些块不再被任何快照引用。
Prune 与 GC 的区别
| 操作 | 删除什么 | 是否释放空间 |
|---|---|---|
| Prune | 快照元数据 | 否 |
| GC | 孤立的物理数据块 | 是 |
仅运行 prune 不会释放任何磁盘空间,GC 必不可少。
GC 内部工作机制
- 标记阶段:PBS 读取所有索引,更新每个被引用数据块的访问时间(
atime) - 清扫阶段:PBS 删除
atime早于宽限期阈值的数据块
宽限期:24小时05分
PBS 在删除孤立数据块前等待 24 小时 5 分钟,这与 Linux 文件系统的 relatime 挂载选项有关,可防止删除正在进行中的备份任务所使用的数据块。
操作顺序
始终先运行 prune,再运行 GC,间隔至少 1 小时。
验证任务
验证任务通过检查每个数据块的校验和来确认备份的完整性。
推荐双任务策略
- 每周任务:仅验证尚未验证的新快照
- 每月任务:重新验证所有快照(检测旧备份的位腐烂)
推荐全局计划
| 任务 | 频率 | 时间 |
|---|---|---|
| 备份任务 | 每天 | 02:00 |
| Prune | 每天 | 03:00 |
| 垃圾回收 | 每天 | 04:00 |
| 验证(近期) | 每周 | 周六 05:00 |
| 验证(完整) | 每月 | 每月 1 日 05:00 |