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交互程序
lsiutil交互程序
sudo lsiutil,交互式下依次输入1、16,找到11对应的Handle(4位字符串)
以下是交互案例
这里输入 1 则显示下级菜单
这里再输入 16 显示连接的设备
可以看到其中有一行对应PhyNum数值11的设备的Handle数值串是0015
这个0015的Handle就是后续我们要offline的设备
再输入命令对应的数值80表示要offline设备
输入坏盘的Handle数值,也就是输入0015 。
看到Setting SAS phy offline 表示完成
连续输入0、0 退出lsiutil
此时再输入一次检查磁盘
这时看到输出中avgqu-sz的输出就是空白了,表示这个磁盘已经被 lsiutil 成功 offline
踢盘成功后,日志kern显示 device sdl1 错误消失
处理完成
Last updated
Was this helpful?