特性
快照删除生命周期
登录后可跨设备保存划线和私人笔记登录
本文档介绍 Apache Ozone 中快照删除的内部生命周期,从最初的用户请求到数据与元数据的最终物理清除。
快照删除过程分为四个主要阶段:
1. 请求阶段:OMSnapshotDeleteRequest
触发条件: 用户执行命令
ozone sh snapshot delete <bucket> <snapshot>。操作:
- Ozone Manager(OM)接收该请求并进行校验。
- 快照在
SnapshotInfoTable中的状态被更新为SNAPSHOT_DELETED。 deletionTime被设置为当前时间戳。
结果: 该阶段仅为快照打上"待删除"标记,尚未调整快照链,也未回收任何数据。快照仍保留在系统中,但已成为后台回收服务的处理候选。
2. 回收阶段:SnapshotDeletingService
触发条件: 一个周期性运行的后台服务。
操作:
服务识别出状态为
SNAPSHOT_DELETED的快照。它处理被删除快照的内部跟踪表:
deletedTable、deletedDirTable和renamedTable。数据迁移: 它将这些表中的条目移动到以下位置之一:
- 快照链中的下一个活动快照(如果存在)。
- 活动对象存储(AOS)(即主桶),如果没有后续快照的话。
归集: 一旦该快照的所有键和目录都已成功迁移(即快照的已删除表为空),服务会将该快照的 DB 键收集到一个"清理列表"中。
3. 终结阶段:OMSnapshotPurgeRequest
- 触发条件: 当某个快照完全"清空"(所有键均已回收)时,由
SnapshotDeletingService触发。 - 链调整(外科医生): 这是实际进行快照链"手术"的地方。服务会将链中下一个快照的
previousSnapshotId更新为指向被删除快照的前驱,从而将链"缝合"回原状。 - 深度清理标志: 它会在后续快照上设置
setDeepClean(false)。这会向KeyDeletingService发出信号,表明现在可以执行"更深入"的清理,因为快照链中间的一个快照已被移除,可能暴露出更多不再被任何快照引用的键。 - 移除(清洁工): 快照记录从
SnapshotInfoTable缓存中移除,磁盘上相应的检查点目录也被删除。
4. 持久化:OMSnapshotPurgeResponse
- 操作: Ozone Manager 通过双缓冲区将该事务刷写到磁盘。
- 结果: 快照记录从 RocksDB 的
snapshotInfoTable中被物理且永久地删除。
角色总结
| 组件 | 角色 | 描述 |
|---|---|---|
OMSnapshotDeleteRequest | 标记者 | 通过更新快照状态,将其标记为待删除。 |
SnapshotDeletingService | 回收者 | 将数据引用转移到下一个快照或 AOS。 |
OMSnapshotPurgeRequest | 整合者与清扫者 | 重新链接快照链,并删除物理记录。 |
评论
登录后参与评论
正在加载评论…
KnowForge