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。