知识卡片
Stray状态体现PG副本身份的不确定性
内容
PG 状态机创建后的第一个分叉只看一件事:本 OSD 是不是该 PG 的主副本(is_primary())。是则进入 Primary/Peering 路径主导整个 Peering 流程;不是则进入 Stray 状态——这个状态的含义是”目前还不确定自己在这个 PG 里的最终角色”,虽然能响应主 OSD 的查询,但接下来只有两种命运:要么被正式确认为副本、转入 ReplicaActive 活跃状态;要么发现自己实际上是数据迁移过程中遗留的旧副本,等迁移完成后连同 PG 一起被删除。Stray 这个命名很贴切——它描述的正是”角色未定、去留未知”这种中间状态,而不是强行把它归类成某种确定的稳定状态。
参考来源
《Ceph源码分析》第10章《Ceph Peering机制》