在Oracle RAC集群中配置Multipath多路径后,常见异常是部分节点无法识别共享LUN(如`/dev/mapper/mpatha`缺失或设备名不一致),导致ASM磁盘组无法启动或OCR/Voting Disk不可用。根本原因通常包括:multipathd服务未全局启用、udev规则未同步、`/etc/multipath.conf`中WWID配置错误或黑名单遗漏本地磁盘、权限/owner/group未按Oracle要求(如`grid:asmadmin`)设置,以及RAC各节点multipath映射不一致(如一节点显示`mpatha`,另一节点为`mpathb`)。此外,`kpartx -a`未执行、`/dev/dm-*`设备未生成,或ASM Filter Driver(AFD)与multipath冲突也会引发识别失败。需逐节点验证`multipath -ll`输出、`ls -l /dev/mapper/`、`blkid`及`kfod disk=asm`结果,确保LUN WWID唯一、映射稳定、权限一致且ASM可见性统一——任一节点识别异常都将导致RAC启停失败。
1条回答 默认 最新
请闭眼沉思 2026-02-09 23:26关注```html一、现象层:RAC节点LUN识别不一致的典型表征
- 节点A存在
/dev/mapper/mpatha,节点B对应LUN显示为/dev/mapper/mpathc或完全缺失 crsctl start crs失败,日志中报错:ORA-15042: ASM disk "0" is missing from group number "1"ocrcheck提示PROT-602: Failed to retrieve data from the OCRls -l /dev/mapper/输出在各节点间设备名、主次设备号、链接目标均不一致- ASM实例启动时卡在
ASM started with pid=27, OS id=12345后无进一步日志
二、验证层:标准化诊断流程与关键命令矩阵
检查维度 必执行命令 预期一致性要求 多路径服务状态 systemctl is-active multipathd && systemctl is-enabled multipathd所有节点必须返回 active且enabledWWID唯一性与映射稳定性 multipath -ll | grep -E "(wwid|size)"相同LUN的WWID在所有节点完全一致; mpathX别名应稳定(非随机轮换)设备节点权限与归属 ls -l /dev/mapper/mpath*属主必须为 grid:asmadmin,权限为brw-rw----三、根因层:五大核心故障域深度剖析
- multipathd服务未全局启用:仅在单节点启用或未设置
WantedBy=multi-user.target,导致reboot后服务未自启 - udev规则未同步:缺少
/etc/udev/rules.d/99-oracle-asm.rules或未执行udevadm control --reload-rules && udevadm trigger /etc/multipath.conf配置缺陷:- 未显式配置
wwid白名单,依赖默认匹配易误判 - 黑名单遗漏本地系统盘(如
^sd[b-z]未覆盖sdaa等新盘符) - 未设置
user_friendly_names yes+alias绑定,导致mpathX动态分配
- 未显式配置
- kpartx与dm设备链断裂:未执行
kpartx -a /dev/mapper/mpatha,导致/dev/dm-*子设备未生成,ASM无法扫描分区 - AFD与multipath冲突:启用AFD后仍保留
/dev/mapper/*路径,AFD强制接管设备但未禁用multipath映射,引发KFOD-00312错误
四、解决层:端到端修复操作清单(按执行顺序)
# 1. 全局启用并重启服务(所有节点) systemctl enable multipathd && systemctl restart multipathd # 2. 校验并同步multipath.conf(重点:wwid+alias+blacklist) multipath -t | grep -A5 "devices {" # 验证配置语法 multipath -p reload # 重载配置(不中断IO) # 3. 强制重建udev规则(所有节点) echo 'KERNEL=="dm-*", OWNER="grid", GROUP="asmadmin", MODE="0660"' > /etc/udev/rules.d/99-oracle-asm.rules udevadm control --reload-rules && udevadm trigger --subsystem-match=block # 4. 统一分区映射(OCR/Voting Disk所在LUN需先处理) kpartx -a /dev/mapper/ocr_lun # 执行后验证/dev/mapper/ocr_lun1是否存在 # 5. 权限固化(使用udev而非chmod临时修改) udevadm trigger --subsystem-match=mpath --action=change五、验证层:ASM可见性统一性闭环验证流程
graph TD A[执行 multipath -ll] --> B{WWID是否全节点一致?} B -->|否| C[修正 multipath.conf 中 wwid 配置] B -->|是| D[执行 ls -l /dev/mapper/] D --> E{设备名与权限是否统一?} E -->|否| F[检查 udev rules & 重新触发] E -->|是| G[执行 kfod disk=asm] G --> H{所有节点输出相同ASM磁盘列表?} H -->|否| I[排查 AFD 冲突:afd_state & afd_unload] H -->|是| J[启动 CRS 验证 OCR/Voting Disk 可访问]六、高阶防御:生产环境Multipath-RAC黄金实践
- 采用
alias绑定而非依赖user_friendly_names:在multipath.conf中为每个OCR、Voting、DATA LUN显式声明alias "ocr_lun" - 实施
WWID指纹库管理:部署脚本定期采集并比对各节点multipath -ll输出的WWID哈希值,异常自动告警 - 禁止混合使用AFD与multipath:若启用AFD,必须在
multipath.conf中将ASM LUN加入blacklist,并卸载dm-multipath模块 - 构建
crsctl pre-check扩展检查项:集成multipath -ll | wc -l与kfod disk=asm | wc -l差异比对逻辑 - 建立
/dev/mapper/设备变更审计:通过inotifywait监控目录事件,记录每次mpathX创建/删除时间戳及调用进程
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报- 节点A存在