需先确认 multipathd 服务运行、路径 active、设备被识别为 multipath;/etc/multipath.conf 必须显式配置 path_grouping_policy、failback、no_path_retry 及 devices 厂商匹配;验证需 dd+iostat 实时监控并 down hba 端口,同时确保存储启用 alua、hba 驱动达标、挂载使用 /dev/mapper/ 设备。

怎么确认 multipathd 服务和路径状态是否正常
不看 multipath -ll 输出就动手配 failover,八成会踩坑。它只显示当前路径拓扑,不反映实际 IO 路径健康度。
真正要查的是三件事:服务是否运行、路径是否 active、底层设备是否被识别为 multipath 设备。
-
systemctl status multipathd必须是active (running);如果卡在activating,大概率是/etc/multipath.conf语法错误或设备未就绪 -
multipath -ll中每条路径应有active ready running状态,出现failed或ghost表示链路不通或 WWN 不匹配 -
lsblk或lsscsi确认后端 LUN 没被直接暴露为sdb/sdc等单路径设备——否则 multipath 会绕过它们,导致后续测试失效
为什么 /etc/multipath.conf 的 defaults 和 devices 段必须显式配置
默认配置对大多数 SAN(尤其是 Dell EMC PowerStore、HPE Alletra)不友好。不改就用系统默认值,failover 可能永远不触发。
关键参数不是“可选”,而是决定路径切换时机的核心开关:
-
path_grouping_policy multibus或failover:前者允许多路径并发 IO(需存储支持 ALUA),后者强制主备模式,更易测出切换行为 -
failback immediate:避免路径恢复后延迟回切,干扰 failover 观察;若设为failback 30,你手动拔线后等 30 秒才切,容易误判失败 -
no_path_retry queue:IO 阻塞时持续重试而非立即报错,否则dd测试会秒退,看不出路径是否自动转移
漏掉 devices 块匹配厂商型号(如 vendor "DellEMC"),multipathd 就不会加载对应硬件策略,ALUA 状态解析可能出错。
如何用 dd + iostat 实时验证 failover 是否生效
光看 multipath -ll 状态变化没用,得让 IO 真正在跑,再断路径,看业务是否中断。
推荐组合:后台 dd 写入 + iostat 监控 + 手动 down HBA 端口(非拔光纤),这样可控且可复现:
- 起一个持续写入:
dd if=/dev/zero of=/mnt/san/testfile bs=1M count=10000 oflag=direct,nonblock &——oflag=direct绕过 page cache,nonblock避免因路径抖动阻塞进程 - 另开窗口跑:
iostat -x 1 /dev/mapper/mpatha,盯住%util和await:切换瞬间await会飙升(>1000ms),但不应出现Input/output error - 触发 failover:
echo offline > /sys/class/fc_host/hostX/device/port_state(X 是对应 HBA 编号),比拔线更干净,也方便恢复
注意:如果 dd 进程退出或报错,说明 failover 失败或超时;如果 iostat 显示某条路径 svctm 归零但另一条接上,才是成功。
常见 failover 失败的三个硬伤点
很多问题不是配置不对,而是底层条件没满足,查三天才发现是存储侧没开 ALUA 或主机未注册。
- 存储未启用 ALUA(Asymmetric Logical Unit Assignment):
multipath -ll中看不到alua字样,或全是active/optimized和standby混乱,此时 multipathd 无法判断优先路径,failover 逻辑瘫痪 - HBA 驱动版本太老:比如 Emulex LPe32000 需要驱动 ≥ 12.8.276.25,旧版不支持 SCSI REPORT TARGET PORT GROUPS 命令,ALUA 信息拿不到
- 多路径设备被 mount 时用了底层路径(如
/dev/sdb):即使 multipath 正常,IO 也不走多路径栈,自然测不出切换效果;检查mount | grep san,确保挂载点指向/dev/mapper/mpatha类设备
这些点不解决,调再多 multipath.conf 参数都没意义——路径切换不是软件单方面能决定的事。










