<p>mpathconf --enable 仅生成或修改 /etc/multipath.conf 模板,不加载内核模块(dm_multipath)也不启动 multipathd 服务,故无法生成 /dev/mapper/mpath* 设备;必须手动执行 modprobe dm_multipath 和 systemctl enable --now multipathd,RHEL/CentOS 7 还需 dracut -f 重建 initramfs。</p>

为什么 mpathconf 不能直接启用 multipath?
很多用户执行 mpathconf --enable 后发现设备没生成 /dev/mapper/mpath*,根本原因是该命令只修改配置模板,不重启服务也不加载内核模块。实际生效必须手动补全两步:加载 dm_multipath 模块 + 启动 multipathd 服务。
-
modprobe dm_multipath(检查是否已载入:运行lsmod | grep multipath) -
systemctl enable --now multipathd(--now确保立即启动,不只是开机自启) - 若系统为 RHEL/CentOS 7 且使用了
dracut,还需重建 initramfs:dracut -f,否则重启后 multipath 设备丢失
如何识别并排除非存储 LUN 的干扰路径?
multipath -ll 输出里常混入本地 SCSI 光驱、USB 存储甚至虚拟机模拟磁盘,这些会错误聚合成 mpath 设备,导致 I/O 异常或 device-mapper: reload ioctl failed 错误。
- 先用
lsscsi或lsblk -S查物理 HBA 连接的目标 ID 和 LUN 号,比对存储侧分配的 WWN - 在
/etc/multipath.conf中用blacklist显式过滤:blacklist { devnode "^sr[0-9]*" devnode "^nvme[0-9]n[0-9]*" wwid "0x1234567890abcdef" # 填真实 WWN,不是设备名 } - 修改后必须运行
multipath -F && multipath刷新,systemctl restart multipathd不会重载 blacklist
multipath.conf 中 defaults 和 devices 的优先级怎么算?
全局 defaults 设定是兜底值,但厂商特定参数(如 HPE MSA、Dell EMC PowerStore)必须写在 devices 块中,否则路径切换策略、超时值全按默认走,容易引发 IO hang。
-
devices匹配靠vendor+product,用scsi_id -g -u -s /block/sda查真实字符串(注意空格和大小写) - 关键参数示例:
devices { device { vendor "DELL*" product "PERC H7*" path_grouping_policy "multibus" path_selector "service-time 0" features "1 queue_if_no_path" hardware_handler "1 alua" failback "immediate" } } - 改完配置必须
multipath -p reload(不是systemctl reload),否则新策略不生效
为什么路径恢复后 LVM 无法自动识别 multipath 设备?
LVM 默认不扫描 device-mapper 多路径设备,即使 /dev/mapper/mpathb 已存在,pvscan 仍可能报 No matching physical volume found。
- 编辑
/etc/lvm/lvm.conf,确认types = [ "device-mapper", 1 ]已启用(RHEL 8+ 默认开启,但旧版常被注释) - 若使用 udev,确保
/usr/lib/udev/rules.d/60-persistent-storage.rules中有ENV{ID_WWN}相关规则,否则 multipath 设备无稳定 WWN 属性供 LVM 匹配 - 最简验证法:
pvs /dev/mapper/mpathb手动指定设备,成功则说明 LVM 配置问题;失败则需检查 multipath 设备权限(ls -l /dev/mapper/mpathb应属root:disk)
实际部署中最容易被跳过的点是:存储阵列侧 ALUA 状态未启用或未同步。Linux multipath 依赖 SCSI REPORT TARGET GROUP STATES 返回的 ALUA 状态做路径优选,如果存储端关闭 ALUA 或固件版本过旧,multipath -ll 会显示所有路径为 active 或全 failed,此时任何配置都无效——得先联系存储管理员确认 ALUA 已 on 并且 target port group 状态一致。


















