multipath -ll输出为空或仅显示control,主因是devnode "*"黑名单未注释或内核模块未加载;正常时每条路径末尾标有active(主)、enabled(备)、[failed]等状态。

用 multipath -ll 看主备路径状态,但得先确保它真在干活
如果 multipath -ll 输出为空、只显示 control 或一堆 undef,不是命令错了,而是 multipathd 根本没识别到任何有效路径——90% 情况是配置文件里还留着 devnode "*" 黑名单,或者内核模块没加载。先跑 lsmod | grep dm_multipath 确认模块在;再看 systemctl status multipathd 有没有报 blacklisting all devices,有就说明 /etc/multipath.conf 缺失或黑名单没注释。
multipath -ll 输出里哪些字段对应主备链路
正常输出中每个多路径设备(如 mpathb)下面会列出所有物理路径,关键看每行末尾的括号内容:
-
[active][ready]:当前 I/O 正走这条路,且路径健康(主路径) -
[enabled][ready]:路径可用,但当前没承载流量(备用路径) -
[failed]或[faulty]:链路中断或设备不可达 -
[ghost]:路径存在但未被multipathd纳入管理(常见于刚插拔 HBA 或 iSCSI session 未重连)
注意:status=active 不等于“正在用”,它只是表示该路径处于活动组(active group),真正负载取决于策略(如 round-robin 还是 failover)。查策略用 multipath -t | grep -A5 "devices {" 看 path_grouping_policy 设置。
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
为什么 multipath -ll 显示多条路径却全是 [enabled]?
这通常意味着没有启用 active/passive 模式,或者存储阵列本身不支持 ALUA(Asymmetric Logical Unit Access)。常见原因包括:
- 存储控制器未开启 ALUA(比如某些 Dell/EMC 阵列需在存储侧配置
alua enabled) -
/etc/multipath.conf里devices段没配hardware_handler "1 alua"或features "2 pg_init_retries 50" - iSCSI 场景下,
iscsiadm -m session -P 3查到的Target Address:只有一个 IP,说明只建了一个 session,另一条物理路径根本没连上 - 路径名重复:比如两条路径都叫
sdb(因 udev 规则冲突),multipath无法区分,直接丢弃其中一条
实时观察路径切换,别只靠静态快照
multipath -ll 是瞬间状态,故障切换时可能抓不到。更可靠的方式是:
- 持续监听日志:
journalctl -u multipathd -f | grep -E "(switch|fail|reinstate)" - 查路径 IO 分布:
multipathd show maps stats(显示各路径实际 IO 次数和字节数) - 手动触发故障测试:
echo 1 > /sys/block/sdb/device/delete(临时下线某路径),再看multipath -ll是否自动把另一条提为[active]
真正容易被忽略的是:路径状态依赖底层 SCSI 层反馈。如果 HBA 驱动没正确上报 ASYMMETRIC_ACCESS_STATE,或者存储固件版本太老,ALUA 就会退化为纯 failover,[enabled] 路径永远不升 [active]——这时得去翻存储侧的 ALUA 支持矩阵,而不是改 Linux 配置。

















