根本原因是底层设备未被识别或权限/配置不匹配;需检查multipath.conf语法、HBA注册与WWN扫描、udev规则、内核模块加载,并通过wwid绑定ASM磁盘名,确保RAC各节点alias一致且asm_diskstring指向/dev/mapper/。
Oracle RAC节点上 multipathd 服务起不来怎么办
根本原因通常是底层设备未被识别或权限/配置不匹配,不是单纯重启服务能解决的。
检查 /etc/multipath.conf 是否存在且语法正确(multipathd -t 可验证),重点看 defaults 和 devices 段是否指定了正确的 HBA 厂商与产品型号;常见错误是照搬别人配置却没改 vendor 和 product 字段,导致 multipathd 忽略所有 LUN。
- 运行
ls /sys/class/fc_host/确认 HBA 卡已注册,再用cat /sys/class/fc_host/host*/port_name获取 WWN -
rescan-scsi-bus.sh -r或手动 echo 到/sys/class/scsi_host/host*/scan触发重新发现磁盘 - 确保
udev规则中未屏蔽sd*设备(尤其 RHEL 7+ 默认禁用部分 scsi 设备) - 确认内核模块
dm_multipath已加载:lsmod | grep multipath
如何把 Oracle ASM 磁盘绑定到固定 multipath 设备名(如 mpatha)
不能依赖 /dev/sdX 这类名字,必须通过 WWN + multipath 映射实现稳定设备名。否则 RAC 启动时 ASM 实例找不到磁盘会报 ORA-15032、ORA-15017。
核心是让 multipath 根据存储阵列返回的 WWN(wwid)生成唯一别名,而不是靠路径顺序或 SCSI ID。RHEL/CentOS 中需在 /etc/multipath.conf 的 blacklist_exceptions 下放行对应 WWN,并在 aliases 或 multipaths 段显式指定 wwid 和 alias:
multipaths {
multipath {
wwid "3600a09803830444f4f3b4e6c4e7a6a6a"
alias asm_disk1
}
}
- 用
multipath -v3 -d查看探测到的wwid,注意区分是 36 开头(EMC)还是 naa.6 开头(NetApp/HDS) - 别用
devnode匹配/dev/sd*,它不稳定;必须用wwid或uuid - RAC 所有节点的
/etc/multipath.conf中同一块盘的alias必须完全一致,否则 ASM 无法识别为同一磁盘组成员
Oracle RAC 环境下 multipath 配置后 ASM 仍无法识别磁盘的典型原因
多数情况不是 multipath 没生效,而是 udev 权限或 ASM Filter Driver(AFD)干扰了设备路径。
先确认 ls -l /dev/mapper/ 下 multipath 设备是否存在且属主为 grid:asmadmin;再查 oracleasm listdisks 或 kfod disk=asm 是否能列出设备。若不能,优先排查以下三点:
- 执行
udevadm control --reload-rules && udevadm trigger后,检查/dev/mapper/asm_disk1是否存在,且stat /dev/mapper/asm_disk1显示 major/minor 与multipath -ll输出一致 - 若启用了 AFD,
afd_label必须作用于/dev/mapper/asm_disk1,而非原始/dev/sdb;AFD 不识别 multipath 别名之外的路径 - SELinux 若启用,需确认
sestatus状态,并允许 multipathd 访问设备:临时测试可setenforce 0排除干扰 - 检查
asm_diskstring参数是否设为/dev/mapper/asm_*(非/dev/oracleasm/*或/dev/sd*)
RHEL 7/8 中 multipath 与 Oracle RAC 兼容性要注意的细节
RHEL 7.4+ 默认启用 device-mapper-multipath 的 find_multipaths 模式,它会自动合并路径,但容易误判本地磁盘为多路径设备,导致系统盘被接管 —— 这会让节点无法启动。
必须在 /etc/multipath.conf 的 defaults 段关闭该行为,并显式黑名单本地盘:
defaults {
find_multipaths no
user_friendly_names yes
}
blacklist {
devnode "^sda"
devnode "^nvme[0-9]n[0-9]"
}
-
find_multipaths yes在 RAC 环境下风险极高,会导致sda被映射成mpatha,进而破坏 rootfs 挂载 - RHEL 8.4+ 对 NVMe over FC 支持需额外开启
nvme_core.default_ps_max_latency_us=0,否则 multipath 可能无法识别 NVMe WWN - Oracle 官方只认证特定 kernel + device-mapper-multipath 组合(如 UEK6 + 0.8.4),混用版本可能触发
ORA-15063或心跳丢失
WWN 绑定这事看着只是配个 alias,但实际要串起 HBA、存储、multipath、udev、ASM、AFD 六层逻辑。漏掉任意一层的权限、路径或命名一致性,RAC 就会在最意想不到的时候丢盘。

















