ACFS挂载失败主因是ora.drivers.acfs资源OFFLINE,表明内核模块未加载,需在两节点执行acfsroot uninstall/install、modprobe及acfsload start,并验证lsmod输出和内核版本一致性。
备节点挂载失败,几乎总是因为 ora.drivers.acfs 资源状态为 offline,而不是挂载命令写错了或路径不对。
查 ora.drivers.acfs 资源状态比试 mount 更快
直接在备节点上运行:crsctl stat res -t -init | grep acfs
如果输出里显示 ora.drivers.acfs 是 OFFLINE,说明内核模块压根没加载,后续所有 mount -t acfs 都会静默失败或报 ACFS-9459。
别急着改 /etc/fstab 或重跑 acfsutil registry——资源离线时,注册信息根本不会生效。
lsmod | grep oracle 为空?模块根本没进内存
常见现象:
• acfsroot install 执行完但 /lib/modules/$(uname -r)/extra/oracle/ 目录不存在或空
• modprobe oracleacfs 报 Invalid argument 或 Unknown symbol
• acfsdriverstate 显示 installed ACFS-9203: true,但 lsmod 就是没它
必须做:
• 先清理:acfsroot uninstall,再 rm -rf /lib/modules/$(uname -r)/extra/oracle
• 重装:$GI_HOME/bin/acfsroot install
• 验证:ls /lib/modules/$(uname -r)/extra/oracle/ 应至少有 oracleacfs.ko 和 oracleadvm.ko
• 加载:modprobe oracleacfs && modprobe oracleadvm
RAC 环境下必须两节点都执行 acfsload start
Oracle Clusterware 会在 RAC 启动时自动调用 acfsload start,但前提是:
• 两节点的内核版本完全一致(uname -r 输出一字不差)
• acfsroot install 在两节点都成功完成
• acfsload 不是服务,是把驱动注入当前内核;某节点漏执行,crsctl start res ora.xxx.acfs 就会卡住或失败
验证方式:
• 两节点分别执行:$GI_HOME/bin/acfsload start
• 再查:lsmod | grep -E "(oracleacfs|oracleadvm)",两边都得有输出
acfsutil info fs 报 “No ACFS file systems found” 怎么办
这说明模块已加载,但集群没识别到已注册的 ACFS 文件系统。原因通常不是配置错,而是:
• acfsutil registry -a 只在一个节点执行过,但没同步到 CRS 元数据
• ADVM 卷状态是 DISABLED(用 volinfo -G <dg><vol></vol></dg> 确认,必须是 ENABLED)
• ASM 磁盘组 compatible.advm SELECT name, value FROM v$asm_attribute WHERE name = 'compatible.advm';)
• 备节点上挂载目录权限不对(chown grid:oinstall /u01/acfsdata,不能是 root:root)
修复后,重启资源:srvctl stop filesystem -g <acfs_name></acfs_name>,再 srvctl start filesystem -g <acfs_name></acfs_name>
最易被忽略的是:RAC 中 ACFS 挂载不是“单点操作”,acfsroot install、acfsload、acfsutil registry、srvctl start filesystem 四个动作必须全部在两节点完成,缺一不可;任意一步只在主节点做,备节点就永远卡在 OFFLINE。











