Linux

今天大数据集群的某台机器报警,问题详情是阵列卡状态异常,下面记录这次问题的处理过程。针对大数据的机器做的阵列卡监控有两种情况,一种是阵列内的磁盘故障,一种是阵列降级。

这台机器上本应该是8块硬盘做RAID 5 + 1块硬盘做Hotspare。登录服务器,使用以下命令查看当前硬盘状态,发现阵列里有一块磁盘的状态变成了 Unconfigured(bad)

MegaCli64 -PDList -aALL|grep "Firmware state"

img

检查阵列卡状态,确定当前阵列是否降级。返回结果0代表没有降级,说明出问题的那块硬盘本身并不在阵列里。

[root@ES001 ~]# MegaCli64 -AdpAllInfo -aALL | grep "Degraded"
Degraded     : 0

现在可以确定状态故障的盘应该是原先的热备盘了,需要将其恢复成热备状态。处于Unconfigured(bad)状态的硬盘,不能够直接配置。

查看硬盘详细信息,找到处于bad那块盘的相关信息,重点需要关注下面三个参数:Enclosure Device ID、Slot Number、Firmware state。下面仅保留部分重要输出结果:

[root@ES001 ~]# MegaCli64 -PDlist -a0
Adapter #0
......
Enclosure Device ID: N/A    #设备ID
Slot Number: 4        #插槽位置
Enclosure position: N/A
Device Id: 4

Raw Size: 3.638 TB [0x1d1c0beb0 Sectors]
Firmware state: Unconfigured(bad)    ## 硬盘状态为bad
......

首先将Unconfigured(bad)状态变成Unconfigured(good)。以下命令中,

-PhysDrv[0:9]:0对应Enclosure Device ID,9对应Slot Number;根据上一步查出来的实际值修改。

-a:指Adapter #0

在该例中,故障硬盘的Enclosure Device ID为N/A,Slot Number为4,所以命令如下:

[root@ES001 ~]# MegaCli64 -PDMakeGood -PhysDrv[:4] -a0

Adapter: 0: EnclId-N/A SlotId-4 state changed to Unconfigured-Good.
Exit Code: 0x00

再次查看该硬盘的状态(仅保留重要输出结果):

[root@ES001 ~]# MegaCli64 -pdinfo -physdrv[:4] -a0
...
Enclosure Device ID: N/A
Slot Number: 4
Firmware state: Unconfigured(good), Spun Up
...

可以看到该盘状态已经变成good了,现在就可以在线将该硬盘设置成热备盘了。

MegaCli64 -PDHSP -Set [-EnclAffinity] [-nonRevertible] -PhysDrv[:4] -a0
​​‌‌​​​‌‌​‌​​‌‌‍​‌​‌‌‌​​‌‌‌‌​‌​‍​‌​​‌​​​‌​​​‌‌​‍​‌​‌‌​​​‌‌​​​​​‍​​‌​‌‌‌‌‌‌‌‌​​​‍​‌‌​​‌‌‌​‌‌​​‌‌‌‍​‌‌​​​‌‌‌​​​‌​‌‍​​‌‌‌‌‌‌‌‌​​‌‌‍​‌‌‌​‌​​​‌​​‌‌‌‌‍​‌‌​​​‌‌‌‌‌‌‌‌‌‍​​‌​‌​​‌‌​‌‌‌‌​‍​‌‌​‌​​‌‌‌​​‌​‌​‍​‌​‌‌​‌‌‌‌​‌​​​‍​​​‌‌​‌​‌​​‌​​‌‍​​‌‌‌‌‌‌‌‌‌‌‌‌​‍​‌​​​​​‌‌‌‌‌‌​‌‍​‌​​​​‌‌‌​​​‌‌‌‍​​​‌​​‌​‌‌‌‌​‌‌‍​‌​​‌‌​‌‌‌‌‌​‌‌‍​​​‌​‌‌‌‌‌‌‌​​‌‍​‌‌‌​​​​​​‌‌‌​​​‍​​​​‌​‌‌‌‌‌​‌​​‍​​​​​​​​‌‌‌​​‌​‌‍‌​‌​‌​‌​‍‌​​‌​​​‌‍‌​​‌‌‌​​‍‌​​‌​​​​‍‌​​‌​​​‌‍‌​​‌‌​​‌‍‌​​‌​‌‌​‍‌​​‌‌​​​‍‌​​​‌​‌​‍‌​​​‌‌​‌‍‌​​‌‌​‌​‍‌‌​‌​‌‌‌‍‌​​‌‌‌​‌‍‌​​‌‌‌‌​‍‌​​‌‌​‌‌‍‌‌​‌​‌‌​‍​​‌‌‌‌‌‌‌‌​​‌​‍​​​​​​​​‌‌‌‌​​‌‌‍​​​‌​‌​‌‌​​‌‌‌​‍‌​​‌‌‌‌​‍‌​​‌‌​‌‌‍‌​​‌​​‌​‍‌​​‌​‌‌​‍‌​​‌​​​‌‍​‌‌​​​‌​‌‌‌​​​‌‍‌‌​​‌‌​‌‍‌‌​​‌‌‌‌‍‌‌​​‌‌‌​‍‌‌​​​‌‌‌‍‌‌​‌​​‌​‍‌‌​​‌‌‌‌‍‌‌​​‌‌​​‍‌‌​‌​​‌​‍‌‌​​‌‌​‌‍‌‌​​‌‌​​‍​‌​‌‌​‌‌‌‌​​‌​​‍​‌‌​​​​‌​‌​​​‌‌‍​​​​​​​​‌‌‌‌​​‌‌‍​‌​‌‌​​​‌‌​​​​​‍​​‌‌​‌​​‌‌‌‌​​​‍​‌​‌​​​‌‌​​‌‌‌‌‍​‌​‌​​​‌​‌‌‌‌‌‌‍​​​​​​​​‌‌‌​​‌​‌‍‌​​‌​‌‌‌‍‌​​​‌​‌‌‍‌​​​‌​‌‌‍‌​​​‌‌‌‌‍‌​​​‌‌​​‍‌‌​​​‌​‌‍‌​‌​​​‌‌‍‌​‌​​​‌‌‍‌​​​‌​​​‍‌​​​‌​​​‍‌​​​‌​​​‍‌‌​‌​​​‌‍‌​​‌​‌‌​‍‌​​‌​‌​​‍‌​​‌​‌‌​‍‌​​​‌​​​‍‌​​‌​‌‌​‍‌‌​‌​​​‌‍‌​​‌​​‌​‍‌​​‌‌​‌​‍‌​‌​​​‌‌‍‌​​‌‌‌‌​‍‌​​​‌‌​‌‍‌​​‌‌‌​​‍‌​​‌​‌‌‌‍‌​​‌​‌‌​‍‌​​​‌​​‌‍‌​​‌‌​‌​‍‌​​​‌‌​​‍‌​‌​​​‌‌‍‌‌​​‌​‌‌‍‌‌​​‌​‌‌‍‌‌​‌​​​‌‍‌​​‌​‌‌‌‍‌​​​‌​‌‌‍‌​​‌​​‌​‍‌​​‌​​‌‌

最后再查看硬盘状态,发现状态异常的盘已经修复成功了。

MegaCli64 -PDList -aALL|grep "Firmware state"

mark

处理完成以后,报警消除,以下命令查看故障盘数量。

MegaCli64 -AdpAllInfo -aALL | grep "Failed Disks"

mark

至此,该块硬盘拯救过程完毕。