Ceph OSD 硬盘重连导致设备名变化
Ceph OSD 故障排除
问题概述
故障现象:
- OSD 250 处于
down
状态 - osd服务启动失败,报告 I/O 错误和权限错误
- 疑似由于硬盘重连导致设备名变化
故障分析过程
1. 初始状态检查
# 查看 OSD 状态
ceph osd tree | grep -E "host|down"
# 结果显示:
# 250 hdd 14.60939 osd.250 down 0 1.00000 # 查看服务状态
systemctl status ceph-osd@250
# 结果:服务启动失败
2. 日志分析
journalctl -u ceph-osd@250 --no-pager | tail -20
关键错误信息:
bluestore(/var/lib/ceph/osd/ceph-250/block) _read_bdev_label failed to read from /var/lib/ceph/osd/ceph-250/block: (5) Input/output error
** ERROR: unable to open OSD superblock on /var/lib/ceph/osd/ceph-250: (2) No such file or directory
3. 设备映射检查
# 查看 OSD 250 的设备配置
ls -la /var/lib/ceph/osd/ceph-250/
# 发现 block 设备指向:
# /dev/ceph-4375cd08-9b0e-4621-9710-88ef9d85de9c/osd-block-5aa17639-6575-42ec-a1ab-8a22be220134 -> ../dm-27# 检查物理卷状态
pvs | grep ceph-4375cd08-9b0e-4621-9710-88ef9d85de9c
# 结果:/dev/sdbk ceph-4375cd08-9b0e-4621-9710-88ef9d85de9c lvm2 a-- 14.55t 0
4. 设备测试
# 测试物理设备
dd if=/dev/sdbk of=/dev/null bs=4096 count=1 2>&1
# 结果:成功,物理设备正常# 测试逻辑卷
dd if=/dev/dm-27 of=/dev/null bs=4096 count=1 2>&1
# 结果:Input/output error - 逻辑卷无法读取
问题根因
- 设备名变化:由于硬盘更换,原设备名从
sdn
变为sdbk
- LVM 映射问题:卷组未正确激活,导致逻辑卷无法访问
- 权限问题:设备重新激活后权限不正确
解决方案
步骤 1:检查卷组状态
# 查看卷组状态
vgs ceph-4375cd08-9b0e-4621-9710-88ef9d85de9c
# 结果显示:Attr 为 wz--n-(不活跃状态)
步骤 2:重新激活 LVM 卷组
# 停用卷组
vgchange -an ceph-4375cd08-9b0e-4621-9710-88ef9d85de9c# 重新激活卷组
vgchange -ay ceph-4375cd08-9b0e-4621-9710-88ef9d85de9c
步骤 3:验证设备可读性
# 测试逻辑卷是否可读
dd if=/dev/dm-27 of=/dev/null bs=512 count=1 2>&1
# 结果:成功读取
步骤 4:修复设备权限
# 检查设备权限
ls -la /dev/dm-27
# 结果:brw-rw---- 1 root disk 253, 27# 修复权限
chown ceph:ceph /dev/dm-27
步骤 5:重启 OSD 服务
# 重置服务失败状态
systemctl reset-failed ceph-osd@250.service# 启动服务
systemctl start ceph-osd@250# 检查状态
systemctl status ceph-osd@250
ceph osd tree | grep 250
常用命令参考
# 查看 OSD 状态
ceph osd tree
ceph osd status# LVM 相关命令
vgs # 查看卷组
lvs # 查看逻辑卷
pvs # 查看物理卷
vgchange -ay <vg_name> # 激活卷组
vgchange -an <vg_name> # 停用卷组# 设备映射
dmsetup ls # 查看设备映射
dmsetup info <device> # 查看设备信息# 服务管理
systemctl status ceph-osd@<id>
systemctl start ceph-osd@<id>
systemctl reset-failed ceph-osd@<id># 日志查看
journalctl -u ceph-osd@<id> --no-pager
总结
由硬盘重连导致设备名变化引起,通过重新激活 LVM 卷组和修复设备权限成功解决。关键在于:
- 正确诊断:通过日志分析定位到 I/O 错误
- 逐层排查:从物理设备到逻辑卷逐层测试
- 权限修复:确保 Ceph 进程有正确的设备访问权限
状态: 问题已解决,OSD 250 恢复正常运行。