应先改path_checker为tur避免误报,再用sas2ircu查错误码定位物理故障;若为045014/045018/045102则换认证线缆并启用被屏蔽端口;最后通过删除路径、检查TCQ同步和T10 DIF验证切换与数据一致性。

确认双端口是否真正失效而非路径配置问题
先排除软件层误判:Linux系统中执行 multipath -ll 查看路径状态,若显示某端口为 failed 或 shaky,不代表物理端口损坏,可能是 【multipathd 配置中 path_checker 被设为 readsector0】 ——该检测方式在企业级SAS盘启用写缓存时极易误报超时,应立即改为 tur(Test Unit Ready)。
检查当前配置:运行 grep -A5 "defaults" /etc/multipath.conf,确认 path_checker 值非 readsector0;若为该值,需修改后重启 multipathd 服务。
硬件链路级故障定位
使用 sas2ircu 0 display(适用于LSI/Broadcom HBA)查看每个phy的link rate与error count。重点关注以下SAS错误码:
045014(phy缺失)、045018(帧丢失)、045102(部分物理链路失效)——这三类错误直接指向线缆、背板或端口物理损伤,【此时更换线缆前必须先执行 chenclosurecanister-excludesasport no-portX 启用被屏蔽端口】,否则新线缆插入后仍被系统自动排除。
若错误集中出现在同一控制器端口(如Port 1),且对端硬盘端口在另一台主机上表现正常,则问题锁定在本机HBA卡或其固件;若两端均报错,则优先更换SAS线缆(必须使用SFF-8643全屏蔽双端口认证线缆,普通SATA线缆会导致045017降速错误)。
验证双端口切换能力与数据一致性保障
第一步:触发主动路径切换
执行 echo 1 > /sys/block/mpathX/device/delete 模拟主路径断开,观察 multipath -ll 是否在3秒内完成路径重映射,且I/O无中断(用 iostat -x 1 监控 await 未跳变)。
第二步:检查TCQ队列同步状态
在切换前后分别运行 sg_logs -p 0xb5 /dev/sdX | grep -A5 "Tagged command",确认输出中 Queue Full Count 与 Overrun Count 无增长——若后者上升,说明备用端口未正确恢复TCQ序列号,存在命令重排风险。
第三步:验证T10 DIF端到端校验是否启用
运行 sg_inq -p 0xb1 /dev/sdX,检查返回中 Protection Information Capable 字段是否为1;若为0,即使硬盘支持DIF,也因HBA驱动未加载PI模块而失效,需在grub中添加 scsi_mod.use_blk_mq=1 rd.md=0 rd.lvm=0 并重装initramfs。











