centos raid0掉盘后盘符变化导致bcache故障
下午收到故障警报,有个ceph节点osd故障。故障osd建立在节点bcache2分区上,但是这分区不见了,bcache2是一个RAID0的前端缓存分区。
通过MegaRAID检查RAID硬盘状态,发现有个RAID0下的硬盘变成外来设备了:
/opt/MegaRAID/MegaCli/MegaCli64 -PDList -aALL -NoLog|grep "Firmware state"
Firmware state: Unconfigured(good), Spun Up
也就是没有RAID信息列阵不识别这个盘了,也许是高负荷下掉盘又恢复后无法识别了?但起码盘还能识到,也就是说可能盘还没坏,可以尝试RAID导入一下外来配置:
/opt/MegaRAID/MegaCli/MegaCli64 -CfgForeign -import -a0
状态成功更新为 Online, Spun Up,硬盘起来了。但是还是无法启动osd,检查发现bcache2分区还是没出来。fdisk -l查看系统硬盘信息发现发生盘符漂移,原 /dev/sdd 偏移为了 /dev/sdf,bcache2前端缓存无法找到原盘,所以还是没有启动。
这种情况如果先前没有做槽口、盘符绑定就没有办法了,但可以尝试重启一下系统看看盘符会不会恢复回来。ceph宿主服务器重启时候要临时禁用数据平衡:
for i in noout nobackfill norecover noscrub nodeep-scrub;do ceph osd set $i;done
之后运行reboot重启,启动后启动数据平衡:
for i in noout nobackfill norecover noscrub nodeep-scrub;do ceph osd unset $i;done
重启后该盘盘符由 /dev/sdf 恢复为了 /dev/sdd,故障osd正常启动。
10月10日ps: 遇到这种情况还是直接换个盘吧!我修好后过了两天这osd出了个坏的pg,然后今天盘又挂了,估计撑不住多久,得换。