Oracle 11g RAC中ASMLIB驱动失效后,如何升级kmod-oracleasm内核模块版本以解决问题?

2026-04-29 01:242阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计722个文字,预计阅读时间需要3分钟。

Oracle 11g RAC中ASMLIB驱动失效后,如何升级kmod-oracleasm内核模块版本以解决问题?

相关专题

确认当前内核与kmod-oracleasm版本是否匹配

驱动初始化失败最常见原因是 kmod-oracleasm 模块编译时所针对的内核版本和运行时 uname -r 输出不一致。比如系统内核是 2.6.32-754.35.1.el6.x86_64,但安装的 rpm 包名却是 kmod-oracleasm-2.6.32-696.el6-2.0.8-1.el6.x86_64.rpm,模块就无法加载。

执行以下命令快速比对:

uname -r rpm -qa | grep oracleasm

若输出中内核主干版本(如 2.6.32-754)不一致,必须更换对应 RPM;注意还要匹配架构(x86_64 vs i686)、SMP/PAE/XEN 变体(如 el6 vs el6xen)。

手动加载 oracleasm.ko 失败时检查模块路径与依赖

/sbin/insmod 直接加载失败,常见于:oracleasm.ko 所在目录未被 depmod 索引,或模块依赖的符号(如 kernel/drivers/scsi/scsi_mod.ko)未先加载。

  • 先确认模块实际位置:find /lib/modules/$(uname -r) -name oracleasm.ko
  • 若不在标准子目录(如 kernel/drivers/addon/oracleasm/),需手动拷贝并重建依赖:cp oracleasm.ko /lib/modules/$(uname -r)/kernel/drivers/addon/oracleasm/ && depmod -a
  • 再尝试加载:modprobe oracleasm(比 insmod 更智能,会自动处理依赖)

SELinux 启用状态下 oracleasm 初始化静默失败

即使 modprobe oracleasm 成功,/etc/init.d/oracleasm configure 仍可能卡在 Initializing the Oracle ASMLib driver: [FAILED],日志 /var/log/oracleasm 显示 Loading module "oracleasm": failed —— 这往往是 SELinux 阻止了模块加载或设备节点创建。

临时验证:运行 setenforce 0 后重试 oracleasm configure。若成功,则必须永久禁用:

  • 编辑 /etc/selinux/config
  • SELINUX=enforcing 改为 SELINUX=disabled
  • 重启生效(仅 setenforce 0 不足以让 oracleasm 服务自启时通过)

升级 kmod-oracleasm 后仍不生效的遗漏点

换包、禁 SELinux、depmod 都做完,重启后 oracleasm status 仍显示未运行,大概率是 init 脚本未触发模块加载。RHEL/CentOS 6+ 的 oracleasm 服务默认不调用 modprobe,而是依赖 /etc/sysconfig/oracleasm 中的 ORACLEASM_MODULE 设置。

检查并修正该配置项:

grep ORACLEASM_MODULE /etc/sysconfig/oracleasm

若为空或值不是 oracleasm,请设为:

ORACLEASM_MODULE="oracleasm"

然后执行:service oracleasm restart。这步常被忽略,但决定驱动能否随服务一起加载。

标签:Oracle

本文共计722个文字,预计阅读时间需要3分钟。

Oracle 11g RAC中ASMLIB驱动失效后,如何升级kmod-oracleasm内核模块版本以解决问题?

相关专题

确认当前内核与kmod-oracleasm版本是否匹配

驱动初始化失败最常见原因是 kmod-oracleasm 模块编译时所针对的内核版本和运行时 uname -r 输出不一致。比如系统内核是 2.6.32-754.35.1.el6.x86_64,但安装的 rpm 包名却是 kmod-oracleasm-2.6.32-696.el6-2.0.8-1.el6.x86_64.rpm,模块就无法加载。

执行以下命令快速比对:

uname -r rpm -qa | grep oracleasm

若输出中内核主干版本(如 2.6.32-754)不一致,必须更换对应 RPM;注意还要匹配架构(x86_64 vs i686)、SMP/PAE/XEN 变体(如 el6 vs el6xen)。

手动加载 oracleasm.ko 失败时检查模块路径与依赖

/sbin/insmod 直接加载失败,常见于:oracleasm.ko 所在目录未被 depmod 索引,或模块依赖的符号(如 kernel/drivers/scsi/scsi_mod.ko)未先加载。

  • 先确认模块实际位置:find /lib/modules/$(uname -r) -name oracleasm.ko
  • 若不在标准子目录(如 kernel/drivers/addon/oracleasm/),需手动拷贝并重建依赖:cp oracleasm.ko /lib/modules/$(uname -r)/kernel/drivers/addon/oracleasm/ && depmod -a
  • 再尝试加载:modprobe oracleasm(比 insmod 更智能,会自动处理依赖)

SELinux 启用状态下 oracleasm 初始化静默失败

即使 modprobe oracleasm 成功,/etc/init.d/oracleasm configure 仍可能卡在 Initializing the Oracle ASMLib driver: [FAILED],日志 /var/log/oracleasm 显示 Loading module "oracleasm": failed —— 这往往是 SELinux 阻止了模块加载或设备节点创建。

临时验证:运行 setenforce 0 后重试 oracleasm configure。若成功,则必须永久禁用:

  • 编辑 /etc/selinux/config
  • SELINUX=enforcing 改为 SELINUX=disabled
  • 重启生效(仅 setenforce 0 不足以让 oracleasm 服务自启时通过)

升级 kmod-oracleasm 后仍不生效的遗漏点

换包、禁 SELinux、depmod 都做完,重启后 oracleasm status 仍显示未运行,大概率是 init 脚本未触发模块加载。RHEL/CentOS 6+ 的 oracleasm 服务默认不调用 modprobe,而是依赖 /etc/sysconfig/oracleasm 中的 ORACLEASM_MODULE 设置。

检查并修正该配置项:

grep ORACLEASM_MODULE /etc/sysconfig/oracleasm

若为空或值不是 oracleasm,请设为:

ORACLEASM_MODULE="oracleasm"

然后执行:service oracleasm restart。这步常被忽略,但决定驱动能否随服务一起加载。

标签:Oracle