Ceph故障排查与性能诊断完整指南
Ceph故障排查与性能诊断完整指南
前言
Ceph集群在生产环境中运行时会遇到各种问题,从OSD故障到性能下降,从网络问题到数据不一致。本教程提供系统性的故障排查方法论,涵盖常见问题诊断、性能分析、故障恢复等实战技巧,帮助运维人员快速定位和解决问题。
1. 故障排查方法论
1.1 排查流程
问题发现 → 信息收集 → 分析定位 → 解决方案 → 验证恢复
1.2 快速诊断命令
# 集群概览
ceph -s
# 健康详情
ceph health detail
# OSD状态
ceph osd status
ceph osd tree
# PG状态
ceph pg stat
ceph pg dump
# MDS状态
ceph mds stat
2. OSD故障处理
2.1 OSDDown排查
# 1. 检查OSD状态
ceph osd stat
ceph osd tree
# 2. 查看OSD日志
journalctl -u ceph-osd@X
# 3. 检查磁盘状态
smartctl -a /dev/sdX
hdparm -tT /dev/sdX
# 4. 网络连通性测试
ceph osd ping osd.X
# 5. 处理建议
# - 磁盘故障:更换磁盘
# - 进程崩溃:重启OSD
# - 网络问题:检查网络配置
2.2 OSD启动失败
# 查看启动错误
systemctl status ceph-osd@X
journalctl -u ceph-osd@X -n 100
# 常见原因
# 1. 磁盘空间不足
df -h /var/lib/ceph/osd/ceph-X
# 2. 权限问题
ls -la /var/lib/ceph/osd/ceph-X/
# 3. 损坏的BlueStore
ceph-volume lvm zap /dev/sdX --destroy
ceph orch daemon add osd host:/dev/sdX
2.3 OSD替换流程
# 1. 标记OSD为out
ceph osd out osd.X
# 2. 停止OSD服务
systemctl stop ceph-osd@X
# 3. 确认数据恢复完成
ceph -w
# 4. 移除OSD
ceph osd rm osd.X
# 5. 销毁CRUSH条目
ceph osd crush rm osd.X
# 6. 更换磁盘后重新部署
ceph orch daemon add osd host:/dev/sdX
3. PG故障处理
3.1 PG状态说明
| 状态 | 含义 | 处理 | |-----|------|------| | active | 可访问 | 正常 | | clean | 无问题 | 正常 | | down | PG离线 | 检查OSD | | inactive | 无法主处理 | 检查PG分布 | | undersized | 副本不足 | 检查OSD | | remapped | 正在迁移 | 等待恢复 | | inconsistent | 数据不一致 | 执行scrub |
3.2 PG恢复
# 查看PG恢复状态
ceph pg stat
ceph pg 1.3f query
# 手动触发恢复
ceph pg force_backfill 1.3f
# 调整恢复优先级
ceph config set osd osd_recovery_max_active 8
ceph config set osd osd_recovery_op_priority 3
# 查看恢复进度
ceph -w | grep recovery
3.3 数据不一致修复
# 执行对象级修复
ceph pg 1.3f repair
# 执行深度scrub
ceph pg deep-scrub 1.3f
# 查看scrub结果
ceph pg 1.3f query | grep scrub
4. MON故障处理
4.1 MON问题诊断
# 检查MON状态
ceph quorum_status --format json-pretty
# 查看MON日志
journalctl -u ceph-mon@X
# 检查磁盘空间
df -h /var/lib/ceph/mon/
# 检查网络
ceph ping mon.X
4.2 MON仲裁问题
# 查看仲裁状态
ceph quorum_status
# 添加新MON
ceph orch host add new-mon 10.0.10.20
# 移除故障MON
ceph orch host rm old-mon
4.3 MON数据库恢复
# 备份当前数据库
cp -ra /var/lib/ceph/mon/ceph-X/store.db /backup/
# 从其他MON同步
ceph-mon -i X --inject-monmap /tmp/monmap
# 重建MON(最后手段)
ceph orch rm mon.X
ceph orch host add mon-X 10.0.10.X
5. 性能问题诊断
5.1 IO延迟排查
# 查看整体延迟
ceph osd perf
# 查看单个OSD延迟
ceph daemon osd.X perf dump | grep -E "op_latency|op"
# 检查磁盘IO
iostat -x 1
iotop -o
# 检查网络延迟
iperf3 -c ceph-node01
5.2 性能瓶颈分析
# CPU瓶颈
top
htop
# 内存瓶颈
free -m
ceph daemon osd.X perf dump | grep cache
# 网络瓶颈
ifstat
nload
# 磁盘瓶颈
fio --name=test --filename=/dev/sdX --ioengine=libaio --direct=1 --rw=randwrite --bs=4k --iodepth=32
6. 数据恢复
6.1 从备份恢复
# 恢复MON配置
ceph config get mon mon_config > /backup/ceph-mon-config.json
ceph auth import -i /backup/ceph-mon.keyring
# 恢复CRUSH Map
ceph osd setcrushmap -i /backup/crushmap.bin
# 恢复OSD
ceph osd create
ceph auth get-or-create osd.X > /etc/ceph/ceph.osd.X.keyring
6.2 紧急恢复操作
# 强制集群启动(谨慎使用)
ceph osd set noout
ceph osd set norebalance
# 标记所有OSD in
ceph osd in *
# 恢复后清理
ceph osd unset noout
ceph osd unset norebalance
7. 网络问题排查
7.1 网络诊断
# 连通性测试
ping ceph-node01
# 端口连通性
nc -zv ceph-node01 6789
nc -zv ceph-node01 6800
# MTU检查
ip link show | grep mtu
# 网卡绑定状态
cat /proc/net/bonding/bond0
7.2 网络配置问题
# 检查防火墙
iptables -L
ufw status
# 检查路由
ip route
ip neigh
# DNS解析
nslookup ceph-node01
dig ceph-node01
8. 日志分析
8.1 日志位置
# 系统日志
/var/log/ceph/ceph.log
# OSD日志
/var/log/ceph/ceph-osd.X.log
# MON日志
/var/log/ceph/ceph-mon.X.log
# 实时日志
ceph -w
8.2 日志过滤
# 搜索错误
grep -i error /var/log/ceph/ceph.log
# 搜索特定时间
grep "2024-01-15 10:" /var/log/ceph/ceph.log
# 搜索特定OSD
grep "osd.5" /var/log/ceph/ceph.log | tail -100
9. 故障恢复脚本
#!/bin/bash
# ceph-recovery.sh - 自动故障诊断脚本
echo "=== Ceph故障诊断报告 ==="
echo "生成时间: $(date)"
echo ""
echo "1. 集群健康状态"
ceph -s | grep health
echo ""
echo "2. OSD状态"
ceph osd stat | grep -E "up|down|out|in"
echo ""
echo "3. PG状态"
ceph pg stat | grep -E "active|clean|undersized"
echo ""
echo "4. MON仲裁"
ceph quorum_status --format json | jq '.quorum_names'
echo ""
echo "5. 磁盘使用率"
ceph df | grep -E "TOTAL|used"
echo ""
echo "建议操作:"
if ceph -s | grep -q "HEALTH_OK"; then
echo "✓ 集群状态正常"
else
echo "⚠ 请检查上述异常项"
fi
总结
故障排查需要系统性的方法,从症状到根因逐层分析。掌握常见故障的处理流程,建立完善的监控告警体系,能够快速响应和解决问题,保障Ceph集群稳定运行。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。







