multipath -ll 显示路径 active 不代表真正负载均衡或冗余生效,常见因 pgpolicy 为 failover、ALUA 未启用、udev/内核参数干扰或存储侧 zoning/LUN masking 不完整导致实际 I/O 仍走单路径。

运行 multipath -ll 显示路径状态为 active,不代表 I/O 真正负载均衡或冗余生效——常见问题出在底层配置未对齐,导致内核仍走单一路径。
路径组策略(pgpolicy)与选择器(selector)不匹配
即使所有路径都显示 active,若 pgpolicy 配置为 failover(默认值),系统只会启用一个优先路径,其余仅作备用。此时 multipath -ll 仍显示所有路径为 active,但实际 I/O 全部走第一组中的第一个路径。
- 检查方式:
multipath -t | grep -A5 "policy"或查看/etc/multipath.conf中defaults或devices段的path_grouping_policy - 建议:如需负载分担,显式设为
multibus或group_by_prio,并确保配套使用service-time或queue-lengthselector - 注意:
group_by_prio需配合存储端 ALUA 的优先级标记(如0x80表示 active/optimized),否则可能退化为 failover
ALUA 状态未正确识别或未启用
多数企业存储(如 Dell EMC, NetApp, HPE 3PAR)依赖 ALUA(Asymmetric Logical Unit Access)通告路径服务状态。若 multipathd 无法读取或解析 ALUA 信息,会将所有路径视为同级,但实际底层驱动或固件可能只响应某条路径的 I/O。
- 验证 ALUA 是否生效:
sg_rtpg -d /dev/sdX(需安装 sg3_utils),观察返回中是否含implicit transition或explicit transition及各 target port 的state(如Active/optimized) - 常见错误:未在
/etc/multipath.conf中启用hardware_handler "1 alua",或设备未列入已知 ALUA 支持列表(vendor/product匹配失败) - 补救:添加对应 device 段,明确指定
hardware_handler "1 alua"和path_selector "service-time 0"
udev 规则或内核参数干扰路径发现
某些 udev 规则(如强制设置 scsi_id 格式)或内核启动参数(如 rd.multipath=0、scsi_mod.use_blk_mq=0)可能导致 multipathd 启动时路径初始化异常,表现为“假 active”——路径可见但未真正加入 mpath 设备的请求队列。
- 排查:执行
systemctl status multipathd查看是否有 warning(如 “path already in use”、“failed to get path priority”) - 检查
/run/multipathd/bindings是否存在对应 WWID 条目;对比lsblk中 mpathN 下挂载的 sdX 设备数是否与multipath -ll列出路径数一致 - 关键点:确认
/sys/block/mpathN/device/holders/下是否存在多个sdX目录——若只有一个,说明仅一条路径被真正绑定到该 mpath 设备
存储侧 zoning 或 LUN masking 配置不完整
主机侧 multipath 看似正常,但存储交换机 zone 或存储控制器 LUN mask 仅对部分 HBA 口放行了读写权限(例如只允许 Active Path 对应的 WWPN 有 write 权限),其余路径虽能登录(login)、查询 INQUIRY,却在 SCSI WRITE 命令阶段被拒绝(返回 CHECK CONDITION + ASC 0x2A),导致上层重试后始终 fallback 到单路径。
- 证据:用
dd if=/dev/zero of=/dev/mapper/mpathN bs=4k count=100 oflag=direct测试时,iostat -xm 1显示仅一个 sdX 有持续 r/w,其余路径无 IO - 定位方法:开启
multipathddebug 日志(echo 2 > /sys/kernel/debug/multipathd/log_level),观察路径切换日志是否频繁出现path failed或checker failed - 协同排查:联系存储管理员确认所有 HBA WWPN 均被正确映射至同一 LUN,且 zone 内无遗漏端口










