Oracle 11g RAC中ASMLIB驱动失效后,如何升级kmod-oracleasm内核模块版本以解决问题?
- 内容介绍
- 文章标签
- 相关推荐
本文共计722个文字,预计阅读时间需要3分钟。
相关专题
确认当前内核与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。这步常被忽略,但决定驱动能否随服务一起加载。
本文共计722个文字,预计阅读时间需要3分钟。
相关专题
确认当前内核与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。这步常被忽略,但决定驱动能否随服务一起加载。

