《Proxmox Ceph 集群故障排查手册》
- 面向:PVE 超融合、虚拟化平台管理员
- 场景:VM 磁盘异常、OSD 故障、MON 仲裁失败、PG 异常、IO 卡顿、节点宕机
- 重点:宿主机、Ceph 服务、磁盘、网络、恢复操作
Proxmox Ceph 集群故障排查手册
版本:v1.0
适用:
- Proxmox VE 7/8/9
- Ceph Pacific / Quincy / Reef / Squid
- 超融合虚拟化环境
目录
1. Ceph 故障排查总流程
2. 基础健康检查
3. MON 故障排查
4. MGR 故障排查
5. OSD 故障排查
6. PG异常处理
7. Ceph IO慢排查
8. 磁盘故障处理
9. 网络故障处理
10. 节点宕机恢复
11. Ceph容量满处理
12. 数据恢复与重建
13. 常见错误码
14. 日常巡检脚本
1. Ceph 故障排查总流程
Ceph 故障建议按照:
用户业务异常
|
v
Proxmox VM异常
|
v
Ceph状态检查
|
v
MON/MGR状态
|
v
OSD状态
|
v
PG状态
|
v
磁盘/网络
|
v
恢复
不要直接重启 Ceph 服务
2. 基础健康检查
2.1 查看整体状态
ceph -s
正常:
health: HEALTH_OK
mon: 3 daemons, quorum pve1,pve2,pve3
osd: 9 osds: 9 up,9 in
pgs: active+clean
异常:
HEALTH_WARN
HEALTH_ERR
Proxmox 官方建议通过 ceph --status、ceph --watch 持续观察集群状态
2.2 查看详细健康信息
ceph health detail
例如:
HEALTH_ERR
1 osd down
3 pgs degraded
2.3 实时监控
watch ceph -s
或者:
ceph -w
3. MON 故障排查
MON负责:
- 集群状态
- CRUSH信息
- 仲裁
查看:
ceph mon stat
示例:
e3: 3 mons at quorum pve1,pve2,pve3
3.1 MON quorum丢失
症状:
mon quorum missing
检查:
ceph quorum_status
查看服务:
systemctl status ceph-mon.target
日志:
journalctl -u ceph-mon@$(hostname)
3.2 单MON恢复
启动:
systemctl restart ceph-mon.target
检查:
ceph mon stat
4. MGR故障
查看:
ceph mgr stat
正常:
active mgr:pve1
异常:
no active mgr
恢复:
systemctl restart ceph-mgr.target
5. OSD故障排查
OSD 是最常见故障
Proxmox 官方文档也将 OSD down/crashed、磁盘、网络问题列为 Ceph 常见故障来源
5.1 查看OSD状态
ceph osd status
或者:
ceph osd tree
示例:
ID CLASS WEIGHT STATUS
0 ssd 1.8 up
1 ssd 1.8 down
5.2 查看OSD服务
假设:
osd.3
查看:
systemctl status ceph-osd@3
日志:
journalctl -u ceph-osd@3
5.3 OSD启动失败
检查磁盘:
lsblk
查看LVM:
ceph-volume lvm list
重新激活:
ceph-volume lvm activate --all
该方式也是 Proxmox 官方建议的 OSD 激活方法之一
6. PG异常处理
PG状态:
ceph pg stat
正常:
active+clean
常见PG状态
degraded
例如:
100 pgs degraded
原因:
- OSD down
- 数据恢复中
检查:
ceph osd tree
stuck inactive
查看:
ceph pg dump_stuck inactive
常见原因:
- MON异常
- OSD缺失
Ceph 官方说明:
- inactive 通常和 PG peering 问题有关
- stale 通常表示关键 OSD 不运行
- unclean 表示恢复无法完成
7. Ceph IO慢排查
症状:
VM卡顿:
IO delay > 50%
查看slow request
ceph health detail
例如:
slow ops
检查OSD延迟
ceph osd perf
示例:
osd commit_latency apply_latency
0 20ms
1 3000ms
异常OSD:
systemctl restart ceph-osd@X
8. 磁盘故障处理
查看SMART
smartctl -a /dev/sdX
重点:
Reallocated_Sector
Current_Pending_Sector
SMART overall-health
替换OSD磁盘流程
1. 标记out
ceph osd out osd.X
2. 停止
systemctl stop ceph-osd@X
3. 删除
ceph osd purge X --yes-i-really-mean-it
4. 更换磁盘
5. 创建OSD
PVE:
pveceph osd create /dev/sdX
9. Ceph网络故障
Ceph依赖:
Public Network
Client
|
MON
|
OSD
Cluster Network
OSD <----> OSD
检查:
ping osd-node
检查丢包:
ip -s link
检查端口:
ss -ntlp
常见:
CRC error
packet drop
MTU不一致
10. Ceph容量满
状态:
HEALTH_ERR
OSD full
检查:
ceph df
例如:
osd.3 95%
处理:
方法1 增加OSD
推荐。
方法2 删除无用数据
检查:
rados df
11. 节点宕机恢复
例如:
pve2突然断电
流程:
1 检查节点
pvecm status
2 检查Ceph
ceph -s
3 检查OSD
ceph osd tree
4 恢复OSD
systemctl restart ceph.target
12. Ceph日志位置
Proxmox
/var/log/ceph/
查看:
ls /var/log/ceph/
系统日志:
journalctl --since "2 days ago"
Proxmox 文档建议重点检查:
- Ceph日志
- 系统日志
- 磁盘健康
- IPMI/RAID日志
13. 常见故障速查表
| 现象 | 原因 | 处理 |
|---|---|---|
| HEALTH_ERR | 严重异常 | health detail |
| OSD down | 磁盘/服务 | restart OSD |
| PG degraded | 副本不足 | 恢复OSD |
| slow ops | IO慢 | 检查磁盘网络 |
| MON down | 仲裁失败 | 恢复MON |
| full osd | 容量不足 | 扩容 |
| VM IO freeze | PG异常 | 检查ceph pg |
14. 日常巡检脚本
创建:
/usr/local/bin/ceph-check.sh
内容:
#!/bin/bash
echo "===== Ceph Status ====="
ceph -s
echo
echo "===== OSD ====="
ceph osd tree
echo
echo "===== PG ====="
ceph pg stat
echo
echo "===== Disk ====="
df -h
执行:
chmod +x /usr/local/bin/ceph-check.sh
15. 生产环境最佳实践
推荐配置
MON
至少:
3节点
不要:
2 MON
OSD
推荐:
SSD/NVMe
独立磁盘
JBOD
避免:
RAID控制器缓存
网络
推荐:
10GbE+
独立Ceph网络
监控
建议接入:
- Prometheus
- Grafana
- Alertmanager