下线顺序不能颠倒
移除一台存储设备不是拔盘,而是三件事按序完成:先把设备标记为不再承载数据,等它上面的数据在其余设备上重建完成,再删除集群里关于这台设备的记录与认证信息。跳过中间任何一步都会造成副本不足;如果剩余容量装不下要迁出的数据,重建会卡住,甚至把集群推到无法写入的水位。
基本信息
| 适用平台 | 分布式存储集群的存储设备 |
|---|---|
| 下线对象 | 单块设备或整台主机上的全部设备 |
| 关键顺序 | 先迁出数据,再删除记录与认证 |
| 容量前提 | 剩余可用空间能容纳迁出的数据 |
| 平滑手段 | 先按权重逐步降为零,再正式摘除 |
| 安全检查 | 集群提供安全销毁判断命令可供核对 |
典型使用场景
- 服务器下架或磁盘返修:按标准流程迁出数据后摘除
- 更换故障盘:确认数据已在别处重建,再删除残留记录
- 缩容腾出机器:逐台逐块处理,避免同时失去过多设备
- 容量不等:用权重微调替代直接摘除,保持分布均衡
- 计划维护:先挂起后台迁移再停机,减少无谓的数据搬动
标准下线流程
标准下线流程
ceph osd df # 评估剩余容量能否承载迁出数据
ceph osd out osd.5 # 标记不再承载数据,触发迁移
ceph -s # 观察回填进度与未迁移对象数量
ceph osd safe-to-destroy osd.5 # 判断此刻是否可以安全销毁
ceph osd crush rm osd.5 # 从分布层级中移除
ceph osd rm osd.5 # 删除设备记录
ceph auth del osd.5 # 删除认证条目,完成收尾各步校验点
| 步骤 | 目的 | 通过标准 |
|---|---|---|
| 标记迁出 | 让数据在别处重建 | 归置组回到健康状态 |
| 等待重建 | 恢复冗余水平 | 未迁移对象数回落且无降级 |
| 安全检查 | 确认数据不再依赖该设备 | 判断命令返回可安全销毁 |
| 删除记录 | 清理集群元数据 | 设备不再出现在层级树中 |
| 清理认证 | 移除凭据残留 | 认证列表无对应条目 |
| 物理移除 | 拆机或换盘 | 以上全部通过后再动手 |
先按权重逐步降到零再摘除,迁移会更平滑:数据分批迁出,前端压力可控,中途发现问题也容易暂停。直接标记迁出在大容量设备上会产生较为集中的迁移流量。
一次下线过多设备是常见事故来源:当剩余设备不足以容纳全部副本时,归置组会长期停在降级甚至不完整状态,重建根本无法完成。判断标准是剩余设备提供的副本份数与容量同时满足要求。
维护期挂起的陷阱
为了避免设备短暂掉线引发大规模迁移,维护窗口内常先挂起相关行为。挂起状态若被遗忘,集群会带着不均衡的分布长期运行:新写入的数据与旧数据落在不同位置,等真正恢复迁移时搬动的数据反而更多。挂起要与维护动作成对使用,结束后确认状态已回到正常。