linux多路径配置核心目标是将多条物理链路映射的同一lun聚合为稳定逻辑设备,实现故障切换与负载均衡;失败主因是默认黑名单屏蔽所有设备,需注释devnode "*"、启用user_friendly_names、排除本地盘、启动服务并执行multipath -f && multipath -v2扫描。

Linux 文件系统多路径(multipath)配置的核心目标,是让同一块存储 LUN 通过多条物理链路(如多个 HBA、交换机端口、存储控制器)被识别为一个稳定、可挂载的逻辑设备,从而实现故障自动切换和 I/O 负载分担。配置失败最常见的表现是 multipath -ll 输出为空或仅显示 control,这几乎总是因为默认黑名单阻断了所有设备,而非服务未启动或硬件没连通。
确认基础组件已就位
在动配置文件前,先确保底层支撑可用:
- 运行
lsmod | grep dm_multipath,若无输出,执行modprobe dm_multipath并将dm_multipath写入/etc/modules或/usr/lib/modules-load.d/multipath.conf实现开机加载 - RHEL/CentOS 系统检查是否安装:
rpm -qa | grep device-mapper-multipath;Debian/Ubuntu 用:dpkg -l | grep multipath-tools,未安装则补上 - 用
lsscsi -s或lsblk确认主机已看到多个路径指向同一 LUN(例如/dev/sdb、/dev/sdc、/dev/sdd),这是 multipath 工作的前提
最小可用配置写法
默认的 /etc/multipath.conf 常含残缺黑名单,新手应删掉全部内容,只保留以下 4 行有效配置(其余全注释或删除):
- 取消注释并设为 yes:
defaults { user_friendly_names yes },否则设备名为一长串 WWID,无法用于 mount 或 LVM - 注释掉整段
devnode_blacklist { devnode "*" }—— 这是 90% 首次失败的根源,它会直接屏蔽所有 SCSI 设备 - 在
blacklist块中明确排除系统盘,例如:devnode "^sda",或更稳妥地用 WWID:wwid "36000c29263f724bede70506b10bce244"(用/usr/lib/udev/scsi_id -g -u -d /dev/sda获取) - 针对存储厂商加
devices块,vendor和product必须与scsi_id -g -u -d /dev/sdb输出完全一致(大小写敏感),例如 NetApp 对应vendor "NETAPP" product "LUN"
强制重载与验证
改完配置后,multipathd 不会自动重读规则,必须手动触发:
- 执行
multipath -F清除旧映射,避免残留 ghost 设备干扰 - 立即执行
multipath -v2(不是 -v3)强制扫描并应用新配置,它会逐行输出匹配过程,重点关注是否出现blacklisted或skip: no path - 成功后运行
multipath -ll应显示类似mpathb (36005076b...) dm-3 NETAPP,LUN的条目,对应设备出现在/dev/mapper/mpathb
绑定稳定别名供文件系统使用
/dev/mapper/mpathb 名字重启后可能变化,不能直接用于 fstab 或 Oracle ASM。真正稳定的是 WWID,但太长难记。解决方法是显式绑定别名:
- 首次
multipath -v2后,/var/lib/multipath/bindings自动生成映射关系,如mpathb 36005076b08164f4011ae88b23efb95fe - 在
/etc/multipath.conf的multipaths段中添加:multipath { wwid "36005076b08164f4011ae88b23efb95fe" alias "asm_data" } - 改完仍需执行
multipath -F && multipath -v2才生效,之后/dev/mapper/asm_data就固定不变,可放心用于mkfs.xfs、mount或pvcreate











