3.2.3.16. 放置错误
有一些临时的回填方案是 PG 临时映射到 OSD。当 temporary
情况应该不再如此时,PG 可能仍然驻留在临时位置,而不是位于正确的位置。在这种情况下,它们被称为 misplaced
。这是因为实际存在正确数量的额外副本,但一个或多个副本位于错误的位置。
我们假设有 3 个 OSD:0、1、2 和所有 PG map 到这三个 OSD 的一些变异。如果添加另一个 OSD(OSD 3),一些 PG 现在将 map 到 OSD 3,而不是另一个 PG。但是,在 OSD 3 回填之前,PG 将具有一个临时映射,使得 PG 能够继续从旧 map 为 I/O 服务。在该时间里,PG 是 misplaced
,因为它有一个临时映射,而非 degraded
,因为存在 3 个副本。
示例
pg 1.5: up=acting: [0,1,2] <add osd 3> pg 1.5: up: [0,3,1] acting: [0,1,2]
这里的 [0,1,2] 是一个临时映射,因此 up
集不等于 acting
集,而且 PG 为 misplaced
,但并非 degraded
,因为 [0,1,2] 仍然是三个副本。
示例
pg 1.5: up=acting: [0,3,1]
OSD 3 现已回填,临时映射已被删除,没有降级且不会被错误地放置。