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 根因链路(完整闭环)
-
GI root.sh执行至InitConfig阶段,该阶段会执行ASM磁盘扫描、内核模块加载、集群初始化等操作,为GI部署正常流程;
-
磁盘层multipath、udev配置均为标准合规配置,无错误、无递归事件风暴,磁盘设备识别、权限挂载均正常;
-
InitConfig初始化过程中系统自动触发modprobe加载RDMA相关内核模块(ib_core/iw_cm);
-
RHEL8.2 4.18.0‑193.el8老旧内核存在已知RDMA模块初始化死锁BUG,
rdma_nl_register函数触发内核mutex互斥锁死锁; -
modprobe进程进入D态不可中断阻塞,系统设备初始化流程挂起;
-
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集群初始化部署正常完成。




