多路径设备未识别的主因是SCSI设备未标记为多路径候选或multipathd服务未启动;需依次检查lsscsi -v输出、multipath.conf黑名单、启动multipathd并运行multipath -v2扫描。

多路径设备没识别出来,lsblk 和 lsscsi 都看不到路径聚合设备?
根本原因通常是底层 SCSI 设备未被正确标记为“多路径候选”,或 device-mapper-multipath 服务没启动。别急着重装,先确认硬件链路是否通:用 lsscsi -v 看每个 LUN 是否有多个 host:channel:id:lun 条目;再检查 /etc/multipath.conf 里有没有误加了 blacklist 把真实 HBA 口或 vendor ID 给拦了。
实操建议:
- 运行
systemctl start multipathd && systemctl enable multipathd,再立刻执行multipath -v2触发扫描(不是systemctl restart,重启会丢掉当前已发现的路径) - 如果输出里有
skipping multipath device,说明设备被 blacklist 或者find_multipaths yes模式下未满足“至少两条路径”条件,临时改成find_multipaths no测试 -
multipath -ll显示为空但dmsetup ls有mpath.*设备?那是 udev 规则没生效,手动跑一次udevadm trigger --subsystem-match=block
multipath.conf 里 path_grouping_policy 选 multibus 还是 failover?
这不是性能选择题,而是存储阵列能力适配问题。multibus 要求阵列支持 ALUA(Asymmetric Logical Unit Access),否则 I/O 会卡在 standby 路径上不转发;failover 虽然“安全”,但只用一条路径,等于白配多路径。
判断依据很简单:查阵列文档,或直接看 scsi_id -g -u -s /block/sdX 输出里有没有 alua 字样;更准的是用 sg_rtpg /dev/sdX 查 TP9(Target Port Group)状态,返回值含 0x01(Active/Optimized)才真正支持 ALUA。
常见错误现象:
- 选了
multibus但 I/O 延迟飙升、dm-multipath日志频繁报path failed→ 实际是阵列没开 ALUA,切回failover或联系存储厂商开通 - 选
group_by_prio却没配path_checker tur和对应prio插件(如alua),结果优先级永远是 0 → 必须配prio "alua"且确保sg3_utils已安装
启用 ALUA 后,mpathX 设备突然变成只读,dmesg 报 read-only mode forced
这是 Linux 内核对 ALUA 状态变更的保守响应:当某条路径从 Active/Optimized 切到 Standby,内核可能误判为设备故障,主动锁死写入。本质不是配置错,而是路径状态同步延迟或阵列固件 bug。
绕过方法有限,但可缓解:
- 在
multipath.conf的defaults段加features "1 queue_if_no_path",避免路径全断时立即冻结队列(注意:这会延长 I/O 超时,需配合应用层重试) - 禁用内核自动只读保护:临时 echo 0 > /sys/block/mpathX/device/allow_restart(仅限测试),长期方案是升级内核到 5.10+,该行为已在 blk-mq 层优化
- 别碰
readonlysysfs 接口强行改写,可能触发 dm 异常释放路径
存储网络层面,iSCSI 多路径和 FC 多路径的安全加固关键点在哪?
iSCSI 的风险不在多路径本身,而在 CHAP 认证没开或者用明文密码存 /etc/iscsi/iscsid.conf;FC 则是 WWPN 白名单没配,导致任意主机都能登录目标 LUN。两者共性问题是:路径隔离没做,一条物理链路故障就拖垮所有路径。
必须落地的操作:
- iSCSI:用
iscsiadm -m node -T target_iqn -p ip:port --op=update -n node.session.auth.authmethod -v CHAP强制开启,密码存在/etc/iscsi/secrets并设权限 600 - FC:在存储端配置 Zone,确保每个主机 HBA 的 WWPN 只能访问分配给它的 LUN;Linux 端用
echo "1" > /sys/class/fc_host/host*/issue_lip刷新后,再运行multipath -r,否则旧路径残留 - 网卡绑定不能只绑 IP 层——iSCSI 多路径依赖不同 TCP 连接走不同物理口,所以必须用
mode=4 (802.3ad)或mode=2 (balance-xor),不能用mode=1 (active-backup)
最易被忽略的是:FC 交换机 zone 名称变更后,Linux 不会自动感知,multipath -ll 看起来正常,但某条路径实际已无法通信,得靠 sg_inq /dev/sdX 检查 INQUIRY 响应时间是否突增来定位。










