暂无图片
暂无图片
2
暂无图片
暂无图片
暂无图片

Every Day of a DBA,第156期:Oracle 19c GI root.sh卡在InitConfig阶段故障分析及处置报告

原创 ByteHouse 3天前
118

Oracle 19c GI root.sh卡在InitConfig阶段故障分析及处置报告

一、文档基础信息

项目 详细信息
故障时间 2026年08月09日
故障节点 bzsrv1(RAC第一部署节点)
系统环境 RHEL 8.2 4.18.0‑193.el8.x86_64
数据库环境 Oracle GI 19.3.0 RAC
磁盘管理方式 multipath+udev 管理ASM磁盘
故障操作 执行GI初始化脚本 root.sh
脚本日志路径 /u01/app/grid/crsdata/bzsrv1/crsconfig/rootcrs_bzsrv1_2026-08-09_12-20-27AM.log

二、故障现象描述

2.1 脚本执行现象

在执行Oracle 19c GI部署核心脚本 root.sh 过程中,脚本正常执行至16 of 19: InitConfig阶段后彻底挂起,长时间无后续执行日志输出,进程卡死不退出。该阶段为GI核心初始化环节,主要负责集群初始化、ASM磁盘扫描、ohasd/crsd服务启动、OCR磁盘组创建等关键操作。

脚本正常执行流程截断日志如下:

2026/08/09 12:22:02 CLSRSC-594: Executing installation step 16 of 19: 'InitConfig'.
2026/08/09 12:22:49 CLSRSC-4002: Successfully installed Oracle Trace File Analyzer (TFA) Collector.
# 后续无任何输出,进程持续挂起

2.2 系统内核异常现象

故障期间系统dmesg持续打印hung_task阻塞告警,modprobe进程(PID:67111)进入D不可中断睡眠状态,无法通过kill -9强制终止,判定为内核互斥锁死锁:

[ 5534.687756] INFO: task modprobe:67111 blocked for more than 120 seconds.
[ 5534.687759]       Tainted: P           OE    --------- -  - 4.18.0-193.el8.x86_64 #1
[ 5534.687761] modprobe        D    0 67111  12374 0x80004080
Call Trace:
 __mutex_lock.isra.5+0x2d0/0x4a0
 rdma_nl_register+0x18/0x90 [ib_core]
 iw_cm_init+0x32/0x1000 [iw_cm]
 do_one_initcall+0x46/0x1c3
 do_init_module
 load_module
 __do_sys_init_module

核心异常特征:死锁发生在RDMA模块初始化流程,rdma_nl_register()函数获取内核互斥锁阻塞,第三方内核模块导致系统内核标记Tainted。

2.3 存储层排查结论

经存储工程师核查底层存储日志、主机messages日志,确认:

  • 故障时间点存储无I/O超时、链路中断、设备挂起等异常事件,存储软硬件运行正常;

  • 主机无sdX单路径磁盘、mpathX多路径设备、iSCSI会话报错日志;

  • 本次I/O阻塞、脚本挂起问题与存储设备、存储链路、磁盘多路径/udev配置均无任何关联,为纯主机内核BUG导致。

三、故障根因完整分析

3.1 根因链路(完整闭环)

  1. GI root.sh执行至InitConfig阶段,该阶段会执行ASM磁盘扫描、内核模块加载、集群初始化等操作,为GI部署正常流程;

  2. 磁盘层multipath、udev配置均为标准合规配置,无错误、无递归事件风暴,磁盘设备识别、权限挂载均正常;

  3. InitConfig初始化过程中系统自动触发modprobe加载RDMA相关内核模块(ib_core/iw_cm);

  4. RHEL8.2 4.18.0‑193.el8老旧内核存在已知RDMA模块初始化死锁BUGrdma_nl_register函数触发内核mutex互斥锁死锁;

  5. modprobe进程进入D态不可中断阻塞,系统设备初始化流程挂起;

  6. root.sh依赖系统内核模块、设备初始化流程完成部署,最终整体挂死在InitConfig步骤,无法继续创建OCR_vote、DATA、FRA磁盘组。

3.2 分层根因总结

  • 触发诱因:GI InitConfig阶段正常内核模块加载机制,触发系统RDMA模块初始化;

  • 唯一核心根因:RHEL8.2低版本内核(4.18.0‑193.el8)自带RDMA(ib_core/iw_cm)模块存在固有内核死锁BUG;

  • 排除因素:存储硬件/链路、磁盘multipath/udev配置、ASM设备均无异常,与磁盘配置、存储设备无关。

四、故障处置方案及落地操作

经排查确认,本次故障与存储、磁盘multipath及udev配置无关。故障根源为当前操作系统内核存在固有BUG,服务器无IB/InfiniBand、ROCE硬件,无需加载RDMA系列驱动。本次采用禁用无用RDMA内核模块的方案,永久规避内核死锁问题,解决root.sh脚本挂起故障。

4.1 禁用RDMA内核模块(核心修复)

新建模块黑名单配置文件,强制禁用所有RDMA相关模块,禁止系统自动加载:

cat >> /etc/modprobe.d/99-disable-rdma.conf <<EOF
blacklist ib_core
blacklist iw_cm
blacklist ib_cm
blacklist ib_ucm
blacklist ib_uverbs
blacklist ib_umad
blacklist rdma_cm

install ib_core /bin/false
install iw_cm /bin/false
install rdma_cm /bin/false
EOF

4.2 配置生效验证

核查模块禁用策略是否生效:

modprobe -c | grep -E 'install.*ib_core|install.*iw_cm'

4.3 重建系统内核镜像

更新initramfs镜像,确保开机永久生效,彻底杜绝模块自动加载:

dracut -f /boot/initramfs-$(uname -r).img $(uname -r)

五、修复结果验证

5.1 系统内核状态正常

重新执行root.sh后,系统正常加载Oracle内核组件,无modprobe阻塞、无内核死锁、无hung_task告警,核心模块加载日志正常:

[日 8月  9 16:35:20 2026] oracleoks: module license 'Proprietary' taints kernel.
[日 8月  9 16:35:20 2026] Disabling lock debugging due to kernel taint
[日 8月  9 16:35:20 2026] OKSK-00028: In memory kernel log buffer address: 0xff2fdd90e32a1500, size: 10485760
[日 8月  9 16:35:20 2026] OKSK-00027: Oracle kernel distributed lock manager hash size is 2000000
[日 8月  9 16:35:20 2026] OKSK-00004: Module load succeeded. Build information:   (LOW DEBUG) USM_19.31.0.0.0ACFSRU_LINUX.X64_260329 2026/03/29 01:35:13
[日 8月  9 16:35:21 2026] ADVMK-0001: Module load succeeded. Build information:  (LOW DEBUG) - USM_19.31.0.0.0ACFSRU_LINUX.X64_260329 built on 2026/03/29 02:03:15
[日 8月  9 16:35:21 2026] asmInit: rval=0 mode=0 asm_request_based=1
[日 8月  9 16:35:21 2026] ACFSK-0037: Module load succeeded. Build information:   (LOW DEBUG) USM_19.31.0.0.0ACFSRU_LINUX.X64_260329 2026/03/29 02:31:56

5.2 业务部署恢复正常

重新执行GI root.sh脚本,顺利通过InitConfig阶段,成功完成OCR_vote、DATA、FRA磁盘组创建,脚本19个步骤全部执行完成,19c GI集群初始化部署正常完成。

最后修改时间:2026-08-10 09:37:39
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论