首页/系统与基础设施/存储速查/多路径链路故障切换验证方法
SAN 与光纤通道60 条

多路径链路故障切换验证方法

多路径切换验证要回答三个问题:路径故障时 I/O 是否被剩余路径无缝接管、切换造成多大延迟影响、恢复后路径能否自动归位。做法是在受控条件下断掉一条端到端链路,用主机路径状态与应用 I/O 双向确认,并记录切换耗时与相关超时参数。

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌‌​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​‌‌‌​​‌​​‌‌​​​​‌​‌‌​​‌‌‌​‌‌​​‌​‌​​‌​‌‌‌‌​‌‌​‌‌​‌​‌‌‌​‌​‌​‌‌​‌‌​​​‌‌‌​‌​​​‌‌​‌​​‌​‌‌‌​​​​​‌‌​​​​‌​‌‌‌​‌​​​‌‌​‌​​​​​‌​‌‌​‌​‌‌​​‌‌​​‌‌​​​​‌​‌‌​‌​​‌​‌‌​‌‌​​​‌‌​‌‌‌‌​‌‌‌​‌‌​​‌‌​​‌​‌​‌‌‌​​‌​​​‌​‌‌​‌​‌‌‌​‌‌​​‌‌​​‌​‌​‌‌‌​​‌​​‌‌​‌​​‌​‌‌​​‌‌​​‌‌​‌​​‌​‌‌​​​‌‌​‌‌​​​​‌​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​

验证要证明的三件事

多路径切换验证不是「把线拔了看还活不活」,而要拿出三个可复现的结论:一条路径故障时 I/O 是否被剩余路径无缝接管、切换过程对上层 I/O 的影响有多大、故障路径恢复后能否自动回到可用状态。验证范围要覆盖主机 HBA 端口、光纤跳线、交换机端口、存储前端端口整条链路,只测其中一环不足以支撑生产结论。

基本信息

适用平台Linux dm-multipath、Windows MPIO、AIX MPIO、ESXi NMP
前置条件同一 LUN 至少两条来自不同 fabric、不同交换机、不同存储控制器的路径
观测点multipath -ll / mpclaim -s -d、iostat 延迟、应用超时日志
断链手段交换机端口禁用、拔纤、HBA 端口禁用、多路径软件屏蔽单路径
权限要求主机 root/管理员 + 交换机管理员,需在变更窗口内执行

典型使用场景

  • 新主机接入存储后的上线前基线验证,确认冗余路径真实可用
  • 交换机固件升级、HBA 驱动更新后的回归验证
  • 双活或容灾演练中,验证单控制器、单 fabric 失效时业务不中断
  • 故障复盘:确认当时确实发生过切换以及切换耗时
  • 扩容新增控制器或前端端口后,确认新路径已被主机识别并参与负载

受控验证流程

受控验证流程
# 1) 记录基线:路径数、每路径对应的 HBA 通道与状态
multipath -ll mpatha | grep -E 'status=|sd[a-z]+'
# 2) 后台持续读 I/O,观察切换期延迟与错误
fio --name=verify --filename=/dev/mapper/mpatha --direct=1 --rw=randread --bs=8k --iodepth=32 --time_based --runtime=600
# 3) 交换机侧禁用一条路径的端口,比拔纤更可控、更易回滚
portdisable 3
# 4) 确认剩余路径仍为 active,应用 I/O 未中断
multipath -ll mpatha
# 5) 恢复端口并确认路径自动回到 active ready
portenable 3 && multipath -ll mpatha

输出逐列读法

字段含义正常/异常
路径状态active ready running 表示路径可用failed faulty 表示链路或登录异常
相邻设备名sdX 及其 hostX 通道两条路径落在同一 HBA 端口即为假冗余
dm-X内核映射设备,应用访问入口multipath 有记录但 dmsetup 无映射说明未生效
prioALUA 优先级,优化路径最高全部路径 prio 相同且阵列支持 ALUA 说明未识别
path group路径组数量对应控制器或端口组双控制器阵列只有 1 个 PG 说明另一控制器路径缺失
切换耗时由多路径参数决定:Linux 侧是 no_path_retry、fast_io_fail_tmo、dev_loss_tmo,Windows MPIO 侧是 PathVerificationPeriod 与 PDORemovePeriod,验证报告要把参数与实测耗时写在一起。
启用 queue_if_no_path 时,若所有路径同时失效且超过 no_path_retry 阈值,I/O 会一直排队,应用表现为无原因的卡死;演练必须包含「全部路径失效」的边界判断,并明确监控与人工干预方式。

易错点

  • 只禁主机侧端口,不覆盖交换机和光纤环节,与 CRC、登录风暴、交换机重启等真实故障模式不一致
  • 只看命令输出不看应用 I/O:切换期间可能出现数十秒挂起,命令显示 active 不代表业务无损
  • 不记录切换时间与延迟尖峰,无法判断是否落在应用超时窗口内,验证了能切却没验证切得起
  • 验证后不确认路径自动归位与路径总数恢复,残留 failed 路径会让下次故障只剩一条路可用
  • 双 fabric 环境只测单侧,忽略了 A/B fabric 同时降级(双口 HBA 故障、一台交换机重启)这一真正风险场景

数据来源与参考

  • Linux multipath.conf(5) 与 dm-multipath 官方文档
  • Microsoft Windows MPIO 与 mpclaim 官方文档
  • Brocade Fabric OS Command Reference(portdisable/portenable)

整理校对:其其网ICT文档中心 · 本页地址:docs.qiqicto.com/storage/multipath-failover-verification.html

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌‌​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​‌‌‌​​‌​​‌‌​​​​‌​‌‌​​‌‌‌​‌‌​​‌​‌​​‌​‌‌‌‌​‌‌​‌‌​‌​‌‌‌​‌​‌​‌‌​‌‌​​​‌‌‌​‌​​​‌‌​‌​​‌​‌‌‌​​​​​‌‌​​​​‌​‌‌‌​‌​​​‌‌​‌​​​​​‌​‌‌​‌​‌‌​​‌‌​​‌‌​​​​‌​‌‌​‌​​‌​‌‌​‌‌​​​‌‌​‌‌‌‌​‌‌‌​‌‌​​‌‌​​‌​‌​‌‌‌​​‌​​​‌​‌‌​‌​‌‌‌​‌‌​​‌‌​​‌​‌​‌‌‌​​‌​​‌‌​‌​​‌​‌‌​​‌‌​​‌‌​‌​​‌​‌‌​​​‌‌​‌‌​​​​‌​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​