转载自华为服务支持的IO异常问题定位思路
常见问题现象
常见的现象一般有文件系统异常导致的IO问题、磁盘IO问题。
磁盘IO问题一般分为两种情况:
一种是IO超时,上层下发的IO请求,从block层进入scsi的时候会启动一个定时器,默认超时时间是30s,如果30s内该IO没有返回,会进入错误处理流程。在日志中可以看到Abort Command之类的打印,如果经过多次重试和SCSI中层reset恢复依然失败,则可能会触发offline对应的device。
另外一种是IO错误,scsi中层对下层驱动返回的错误进行解析,根据错误返回结果来判断是否触发中层错误处理流程。
常见可能的原因
遇到IO异常的问题需要首先进行定界,确认是文件系统故障还是磁盘IO问题。
1) 如果是文件系统问题,通常可以在日志中看到文件系统相关的报错。
2) 如果是磁盘IO问题,出现IO超时,如果SCSI中层多次重试和SCSI中层reset失败,则可能存在硬件/链路故障;出现IO错误时,需要同步检查对应的下层驱动打印查看是否有异常。
常用的解决措施
1) 针对文件系统故障,请参考文件系统异常问题定位思路。
2) 当发现日志中有SCSI层多次重试或SCSI中层reset失败记录,触发offline对应的device时,可能此时硬件/链路存在故障,检查对应的设备是本次磁盘还是远端磁盘。
2.1) 针对本地磁盘故障,首先通过message日志中报错的设备找到出错位置,联系对应维护人员通过BMC日志、raid卡日志、对应硬盘日志、OS下raid卡驱动日志等排查,确认故障点并采取相应的措施,比如坏盘更换、故障raid卡更换、版本升级至配套版本等。
2.2) 针对远端存储故障,可能需要联合不同厂家间联合定位,可采取如下措施:
2.2.1) 通过硬件日志、OS下FC卡驱动日志初步确认FC卡本身是否存在明显问题。
2.2.1.1) 查看FC驱动日志,在系统message日志中查看问题出现前后驱动日志是否有异常;另外,一些问题需要开启debug日志开关后,再复现问题收集日志,debug开关开启的方法参考如下:
Qlogic:echo 1 >/sys/module/qla2xxx/parameters/ql2xextended_error_logging(重启失效)
Emulex:安装完成使用rmmod lpfc,重新加载驱动使用 modprobe lpfc lpfc_log_verbose=0x300cf命令调高驱动级别(重启失效)
2.2.1.2) 查看多路径软件报错,如果使用的是multipath,观察OS日志下是否有出现异常的打印,比如有multipath报failling path的错误等;如果是华为的多路径或者是其他厂家的多路径软件,联系存储侧查看是否有异常
2.2.1.3) 查看FC卡的计数信息,通过维护OS一键收集日志下的hba目录下有FC相关的信息,其中error_frame_crc.txt文件中包含各个端口的invalid_crc_count信息,该计数指示多少个FC帧没有通过CRC校验,如果这个计数很大,可能是FC硬件链路质量存在问题
2.2.2) 通过协调交换机侧确认链路、配置等是否存在异常,比如光纤、两端光模块、对应端口配置、错误计数器计数、流量状况等。
2.2.3) 通过协调存储侧确认存储是否有异常信息。
通过联合定位找到故障点,再采取相应的解决措施,如果主机侧FC卡驱动或固件问题参考iDriver版本升级配套版本是否解决,如未解决联系对应的供应商。如果是其他方面问题协调交换机和存储给出解决方案。
2.3) 当出现IO错误且SCSI未触发重试和reset,可能是下层驱动出现报错,查看该报错信息来判断是否是硬件问题,如果是硬件问题尝试措施(2)解决,如果是驱动或固件问题可参考iDriver版本升级配套版本是否解决,如未解决联系对应的供应商。
网友评论