mpt2sas故障磁盘剔除

mpt2sas SAS卡连接的磁盘设备出现故障,会在 /var/log/kern 中看到类似如下报错

Feb 15 20:05:28 host1.example.com kernel: : mpt2sas0: log_info(0x31111000): originator(PL), code(0x11), sub_code(0x1000)
Feb 15 20:05:28 host1.example.com kernel: : sd 0:0:11:0: timing out command, waited 360s
Feb 15 20:05:28 host1.example.com kernel: : sd 0:0:11:0: [sdl] Unhandled error code
Feb 15 20:05:28 host1.example.com kernel: : sd 0:0:11:0: [sdl] Result: hostbyte=DID_BUS_BUSY driverbyte=DRIVER_OK
Feb 15 20:05:28 host1.example.com kernel: : sd 0:0:11:0: [sdl] CDB: Write(10): 2a 00 93 9d de ff 00 00 08 00
Feb 15 20:05:28 host1.example.com kernel: : end_request: I/O error, dev sdl, sector 2476596991
Feb 15 20:05:28 host1.example.com kernel: : mpt2sas0: log_info(0x31111000): originator(PL), code(0x11), sub_code(0x1000)
Feb 15 20:05:28 host1.example.com kernel: : sd 0:0:11:0: timing out command, waited 360s
Feb 15 20:05:28 host1.example.com kernel: : sd 0:0:11:0: [sdl] Unhandled error code
Feb 15 20:05:28 host1.example.com kernel: : sd 0:0:11:0: [sdl] Result: hostbyte=DID_BUS_BUSY driverbyte=DRIVER_OK
Feb 15 20:05:28 host1.example.com kernel: : sd 0:0:11:0: [sdl] CDB: Write(10): 2a 00 b2 c8 c5 e7 00 00 08 00
Feb 15 20:05:28 host1.example.com kernel: : end_request: I/O error, dev sdl, sector 2999502311

此时需要检查和处理磁盘 /dev/sdl ,将该磁盘对应的文件系统挂载卸除(如果仍然有io,还需要通过 lsiutil 将磁盘offline

首先检查磁盘io,确定故障磁盘是否存在磁盘读写,具体数值见 avgqu-sz

输入iostat命令

$iostat -xm 1 /dev/sdl

输出显示

Linux 2.6.32.36xen (host1.example.com)     02/15/2016     _x86_64_    (8 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           6.11    0.11   11.13    4.02    0.57   78.06

Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sdl               0.19    54.14    3.40    6.05     0.26     0.24   107.94     0.01    3.78    5.50    2.82   3.83   3.62

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           2.48    0.92    5.59   17.06    0.21   73.74

Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sdl               0.00     0.00    0.00    0.00     0.00     0.00     0.00    42.00    0.00    0.00    0.00   0.00 100.00

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           4.18    0.81    7.91   21.98    0.22   64.91

上述输出显示avgqu-sz

使用umonut命令卸载磁盘

此时用df -h检查磁盘 /dev/sdl 已经卸载

不过,还要使用 iostat -xm 1 sdl 检查一下,确保/dev/sdl设备符消失(不再显示输出)。否则需要借助SAS工具来设置磁盘offline

例如这里再次使用 iostat -xm 1 sdl 发现输出中依然有 sdl 行:

使用 lsiutil 工具来 offline 磁盘

首先使用lsscsi来显示sdl磁盘对应的设备通道

显示输出

这里看不到/dev/sdl(已经在操作系统中卸载了),但是可以看出按照顺序, /dev/sdl 对应的是 [0:0:11:0]

lsiutil交互程序

sudo lsiutil ,交互式下依次输入116,找到11对应的Handle (4位字符串)

以下是交互案例

这里输入 1 则显示下级菜单

这里再输入 16 显示连接的设备

可以看到其中有一行对应PhyNum数值11的设备的Handle数值串是0015

这个0015Handle就是后续我们要offline的设备

再输入命令对应的数值80表示要offline设备

输入坏盘的Handle数值,也就是输入0015

看到Setting SAS phy offline 表示完成

连续输入00 退出lsiutil

此时再输入一次检查磁盘

这时看到输出中avgqu-sz的输出就是空白了,表示这个磁盘已经被 lsiutil 成功 offline

踢盘成功后,日志kern显示 device sdl1 错误消失

处理完成

Last updated

Was this helpful?