在集群维护期间,集群可以在降级状态下操作和服务客户端。但是,添加或移除osd会影响集群性能。回填操作会在osd之间产生大量数据传输,导致集群性能下降。
1 2 3 4 5 6 7 8 9 10
| 在执行集群维护之前评估潜在的性能影响:
1.Client load客户端负载 2.Node capacity节点规模 3.Spare cluter capacity备用集群容量 4.CRUSH rules映射规则,每个使用特定CRUSH层次结构的池都会受到性能影响 5.Pool types池类型 复制池使用更多的网络带宽来复制数据副本 擦除编码池使用更多的CPU来计算数据和编码块 6.Node hardware硬件
|
替换一个失败的OSD
Ceph存储的设计是自我修复:
当某个存储设备出现故障时,其他ssd盘上的数据会自动回填,使集群恢复到健康状态
检查物理设备是否故障
当存储设备故障时,OSD状态变为down
其他集群问题比如网络错误,也会将某个OSD标记为down
更换物理设备
故障OSD既需要更换物理存储设备,也需要更换软件定义OSD。当某个OSD故障时,可以更换物理存储设备
重新使用该OSD ID或创建新的OSD ID,重用相同的OSD ID可以避免重新配置CRUSH
检查OSD是否失败流程
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| 1.查看集群状态 ceph health detail
2.识别失败OSD ceph osd tree | grep -i down
3.找到OSD所在节点 ceph osd find osd.OSD_ID
4.尝试启动失败的OSD ceph orch daemon start osd.OSD_ID
如果OSD未启动,则可能是物理存储设备故障 通过journalctl命令查看OSD日志 systemctl list-units 'ceph*' journalctl -f -u ceph-8b27889e-52af-11f0-bedb-bc2411f9a113@osd.4.service
|
更换物理设备
如果确认物理设备需要更换
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| 1.暂时禁用擦洗 ceph osd set noscrub ceph osd set nodeep-scrub
2.移除OSD ceph osd out OSD_ID
3.观察集群事件并验证回填操作已经开始 ceph -w
4.确认回填过程已经将所有pg移出OSD,现在可以安全移除 while ! ceph osd safe-to-destroy osd.OSD_ID; do sleep; done
5.更换物理设备并销毁OSD ceph orch device zap HOST_NAME _OSD_ID --force
6.查找OSD 将其删除(手动) ceph orch osd rm OSD_ID --replace
7.更换物理设备后重新创建OSD 查找设备路径 ceph orch device ls 添加OSD ceph orch daemon add osd HOST_NAME:_DEVICE_PATH_
8.启动osd ceph orch daemon start
9.重新启用擦洗 ceph osd unset noscrub ceph osd unset nodeep-scrub
ceph -w 2025-07-14T07:23:08.557399-0400 mon.cephadm-3 [WRN] Health check update: Degraded data redundancy: 105/1824 objects degraded (5.757%), 37 pgs degraded, 9 pgs undersized (PG_DEGRADED) 2025-07-14T07:23:21.013854-0400 mon.cephadm-3 [WRN] Health check update: Degraded data redundancy: 105/1824 objects degraded (5.757%), 36 pgs degraded, 9 pgs undersized (PG_DEGRADED)
可以看到已经开始数据回填了
|