multipath -ll只显示一个路径的主因是底层链路被截断,即内核仅识别到一条有效LUN路径,常见于SAN Zone配置错误、HBA驱动未启用多路径支持或存储侧未授权该主机多路径访问权限。

为什么 multipath -ll 只显示一个路径,但物理上明明连了两条?
这不是 multipathd 没启动或配置错的典型表现,而是底层链路在某个环节被“截断”了——软件看到的设备树里,只有一条路径能成功识别到 LUN。常见原因有三类:SAN 交换机 Zone 配置错误、HBA 卡驱动未启用多路径支持、存储侧未给该主机分配多路径访问权限。
先确认物理路径是否都被系统识别到了
别急着查 multipath,先看内核有没有把两条路径都当“磁盘”加载进来:
- 运行
lsblk,检查是否出现两个独立的 NVMe 或 SCSI 设备(如nvme1n1、nvme2n1,或sdb、sdc);如果只看到一个,说明问题出在 HBA 驱动或 BIOS/UEFI 设置里(比如只启用了单个 HBA 端口) - 运行
lsscsi -v,观察每个设备的host:bus:target:lun是否不同;若两个设备的 target ID 相同、但 host 不同,说明是多路径候选;若 target 也一样,大概率是 Zone 配置把两条路径映射到了同一个 LUN 实例,而非冗余路径 - 检查
dmesg | grep -i "scsi\|nvme",确认有没有类似rejecting I/O to dead device或LU not ready的报错——这往往指向存储侧 LUN 未对第二个 HBA 端口开放
multipathd 启动后仍只聚合出一个路径,重点查配置和权限
即使物理路径都在线,multipathd 也可能因策略或黑名单跳过某条路径:
- 执行
multipath -t查看当前生效的配置模板,确认defaults或devices段中没有误配path_grouping_policy为failover且只允许一个 active 路径 - 检查
/etc/multipath.conf是否包含针对该设备的blacklist或blacklist_exceptions规则;常见坑是用devnode "^sd[a-z]"黑了所有 sd 设备,却忘了排除你的数据盘 - 运行
multipath -v3 -d(加-d表示 dry-run),它会逐条打印路径探测过程;重点关注哪条路径被跳过,以及输出末尾的status = 2(路径 down)还是status = 0(up 但未纳入)
最易忽略的点:存储侧未开启多路径许可或 LUN 映射不完整
很多故障最终卡在这一步——服务器和交换机都没问题,但存储阵列管理界面里,该 LUN 只绑定了一个 WWPN(即只授权了一个 HBA 端口访问)。这时 multipath 看到的两个设备,其实一个是主路径,另一个是“不可见 LUN”,内核会拒绝将其加入多路径组。
验证方法:sg_inq /dev/sdb 和 sg_inq /dev/sdc 分别查看两个设备的 Vendor、Product 和 Unit Serial Number;如果序列号不同,说明是两块独立磁盘;如果完全一致,但 multipath 就是不聚合,八成是存储侧未做多路径映射。这时候必须登录存储管理平台,确认该 LUN 已同时映射到服务器两个 HBA 的 WWPN,并启用 ALUA 或 Asymmetric Active/Active 模式。











