ceph19.2 squid版本容器化OSD 使用独立 db 盘,data盘损坏后的更换硬盘重建流程

​假设:

  • 数据盘:/dev/sdX
  • 独立 db 盘:/dev/ceph-db/db-1
  • 出问题的 OSD id:2
  • 出问题的节点:ceph228

1️⃣ 确认集群状态

ceph -s ceph health detail 

确认问题 OSD(例如 osd.2)处于 down/in 或 down/out 状态。

2️⃣ 下线并清理旧 OSD

(1) 从 CRUSH map 移除

ceph osd out osd.2 

(2) 停止并删除 daemon

ceph orch daemon stop osd.2 ceph orch daemon rm osd.2 --force 

(3) 从 OSD map 移除

ceph osd purge 2 --yes-i-really-mean-it 

此时,集群会触发数据重平衡,只要副本数 ≥2,数据不会丢失

3️⃣ 清理旧磁盘数据

清理数据盘:

ceph-volume lvm zap --destroy /dev/sdX 

清理 db 盘对应的 LV:

ceph-volume lvm zap --destroy /dev/ceph-db/db-1 

如果 db 盘上还有其他 OSD 的 RocksDB,请只清理对应分区/LV,不要全盘销毁。

4️⃣ 重新部署 OSD

使用 orchestrator:

ceph orch daemon add osd ceph228:data_devices=/dev/sdX,db_devices=/dev/ceph-db/db-1 

5️⃣ 验证 OSD 状态

ceph -s ceph osd tree ceph orch ps | grep osd 

确认新 OSD 已经创建并 up/in。

6️⃣ 等待数据恢复

Ceph 会自动进行 PG 的迁移与恢复。
查看恢复进度:

ceph -w 

📌 注意事项

  • 数据不会因 db 盘清空而直接丢失,只要 pool 副本数 ≥ 2。
  • 如果 pool 副本数 = 1,那么清空 data+db 就意味着这个 OSD 上的数据丢失。
  • 如果 db 盘共享给多个 OSD,要小心不要误清理其他 OSD 的 RocksDB。