在 Ceph 中,有两种方法可以在集群内的 OSD 之间同步数据,recovery和backfill。虽然这两种方法都实现了相同的最终目标,但在这两个过程中存在细微差别,如下所述。
什么时候使用 Recovery 而不是 Backfill?
- Ceph OSD 进程为每个归置组 (PG) 维护一个名为 的日志pglog,其中包含该 PG 中最近 3,000 到 10,000 次更改的详细信息。
- 与 Ceph 中的大多数东西一样,日志条目的数量可以使用osd_min_pg_log_entries和osd_max_pg_log_entries参数进行调整。
- entry 是 PG不存在时要保留的max条目数。 active+clean
- entry 是 PG时要保留的min条目数。 active+clean
- 如果:
OSD 已关闭但现在已启动
pglog并且该 OSD 上的给定 PG 发生的可用更新少于 - 然后:
recovery用于那个PG。 - 除非:
backfill用于那个PG。
有什么区别?
为什么访问在期间被阻止recovery,而不是在期间backfill?
- 这只是 Ceph 数据同步进程设计早期选择的一个历史怪癖。
- 正在努力改变这一点,这样recovery就不会阻塞对象 IO(异步恢复)。
- 有关异步恢复更改的详细信息&#