注意
本文档适用于 Ceph 开发版本。
PGPool
PGPool 是一个用于管理和更新已删除快照状态的结构。它通过维护两个字段来实现这一点,cached_removed_snaps - 当前已删除快照集和 newly_removed_snaps - 最后一个时代删除的新快照。在 OSD::load_pgs 中,osd 映射是从 pg 的文件存储中恢复并通过传递到 OSD::_get_pool,其中使用映射初始化 PGPool 对象。
对于我们接收的每个新映射,我们调用 PGPool::update 并传入新映射。在该函数中,我们构建一个新删除快照的列表(pg_pool_t::build_removed_snaps),并将其与我们的 cached_removed_snaps 合并。此函数包含检查,以确保仅在事物发生变化或存在映射间隙时才执行此更新。
当我们激活 pg 时,我们从 cached_removed_snaps 初始化快照修剪队列,并减去我们已经清除的 purged_snaps,从而留下需要修剪的快照列表。修剪稍后由 snap_trim_wq 异步执行。
由 Ceph 基金会带给您
Ceph 文档是一个社区资源,由非盈利的 Ceph 基金会资助和托管Ceph Foundation. 如果您想支持这一点和我们的其他工作,请考虑加入现在加入.