姚令武 2026-02-09 23:25 采纳率: 98.2%
浏览 0
已采纳

Oracle RAC集群中Multipath多路径配置后LUN识别异常怎么办?

在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 OCR
    • ls -l /dev/mapper/ 输出在各节点间设备名、主次设备号、链接目标均不一致
    • ASM实例启动时卡在 ASM started with pid=27, OS id=12345 后无进一步日志

    二、验证层:标准化诊断流程与关键命令矩阵

    检查维度必执行命令预期一致性要求
    多路径服务状态systemctl is-active multipathd && systemctl is-enabled multipathd所有节点必须返回 activeenabled
    WWID唯一性与映射稳定性multipath -ll | grep -E "(wwid|size)"相同LUN的WWID在所有节点完全一致;mpathX别名应稳定(非随机轮换)
    设备节点权限与归属ls -l /dev/mapper/mpath*属主必须为 grid:asmadmin,权限为 brw-rw----

    三、根因层:五大核心故障域深度剖析

    1. multipathd服务未全局启用:仅在单节点启用或未设置WantedBy=multi-user.target,导致reboot后服务未自启
    2. udev规则未同步:缺少/etc/udev/rules.d/99-oracle-asm.rules或未执行udevadm control --reload-rules && udevadm trigger
    3. /etc/multipath.conf配置缺陷
      • 未显式配置wwid白名单,依赖默认匹配易误判
      • 黑名单遗漏本地系统盘(如^sd[b-z]未覆盖sdaa等新盘符)
      • 未设置user_friendly_names yes + alias绑定,导致mpathX动态分配
    4. kpartx与dm设备链断裂:未执行kpartx -a /dev/mapper/mpatha,导致/dev/dm-*子设备未生成,ASM无法扫描分区
    5. 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 -lkfod disk=asm | wc -l差异比对逻辑
    • 建立/dev/mapper/设备变更审计:通过inotifywait监控目录事件,记录每次mpathX创建/删除时间戳及调用进程
    ```
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 今天
  • 创建了问题 2月9日