根本原因是磁盘在操作系统层未被稳定、一致、可读地暴露给grid用户;需用udev基于WWID创建持久化符号链接(如/dev/asm-ocr),并正确配置ASM_DISKSTRING指向该路径,再重启ASM实例验证。
Oracle 12c 安装程序(gridSetup.sh 或 ASMCA)无法识别 ASM 磁盘,**根本原因不是 ASMLib 装没装,而是磁盘在操作系统层未被稳定、一致、可读地暴露给 grid 用户**。ASMLib 不仅早已弃用,而且在 EL8+ 及多数新版内核上根本不可用;依赖它只会把问题绕得更远。
为什么 oracleasm listdisks 有输出但 gridSetup.sh 还是看不到盘
这说明 asmlib 层“标记”成功了,但 oracle grid infrastructure 启动时压根没用 asmlib 设备路径——它只认 asm_diskstring 指向的路径下的设备。
-
oracleasm listdisks显示的是/dev/oracleasm/disks/下的软链接,而 ASM 实例默认不扫描这个路径 - 必须显式设置:
ALTER SYSTEM SET ASM_DISKSTRING='/dev/oracleasm/disks/*' SCOPE=BOTH; - 若系统同时配置了 udev 符号链接(如
/dev/asm-data01),又没清理旧的 ASMLib 规则,ASM_DISKSTRING里混入多个前缀(如'/dev/oracleasm/disks/*','/dev/asm*'),ASM 会跳过部分磁盘并静默失败 -
gridSetup.sh预检脚本(runcluvfy.sh)只检查ASM_DISKSTRING路径下是否有可读块设备,不查 ASMLib 缓存
为什么禁用 ASMLib 后仍要配 udev 规则
不用 ASMLib ≠ 不需要持久化设备名。裸设备路径(如 /dev/sdb)在重启、多路径切换、热插拔后极易漂移——gridSetup.sh 在节点 A 看到 /dev/sdb,节点 B 可能变成 /dev/sdc,RAC 直接挂掉。
- 必须用
scsi_id -g -u -d /dev/sdb获取 WWID,再通过 udev 创建稳定别名,例如/dev/asm-ocr - 规则文件(如
/etc/udev/rules.d/99-oracle-asm.rules)中必须包含:KERNEL=="sd*", PROGRAM=="/sbin/scsi_id -g -u -d /dev/$name", RESULT=="360050768028004d2e000000000000123", NAME="asm-ocr", OWNER="grid", GROUP="asmadmin", MODE="0660" - 执行
udevadm control --reload-rules && udevadm trigger --subsystem-match=block后,ls -l /dev/asm-*必须显示属主为grid:asmadmin - 切勿在规则里写
GROUP="oinstall":Oracle 12c 默认要求 ASM 设备属组为asmadmin,否则crsctl start res ora.asm会因权限校验失败而拒绝启动
ASM_DISKSTRING 配错的典型表现与修复
这是最隐蔽也最常被忽略的一环。即使所有磁盘都存在、权限正确、udev 生效,只要这个参数值和实际设备路径不匹配,asmcmd lsdsk 就为空,gridSetup.sh 就卡在预检。
- 先确认真实路径:
ls -l /dev/asm*或ls -l /dev/mapper/,看前缀是/dev/asm-还是/dev/mapper/mpath或/dev/dm- - 进
sqlplus / as sysasm查当前值:show parameter asm_diskstring - 若不匹配,立即改:
alter system set asm_diskstring='/dev/asm*' scope=both;(注意末尾通配符) - 改完必须重启 ASM 实例:
crsctl stop res ora.asm -f && crsctl start res ora.asm;仅 reload 参数无效 - 验证是否生效:
asmcmd lsdsk应列出所有磁盘,且HEADER_STATUS为CANDIDATE或MEMBER,不是UNKNOWN
ls -l /dev/asm-ocr 权限对了、scsi_id 输出一致、udevadm trigger 也跑了,却忘了进 SQL*Plus 检查 asm_diskstring——它默认是空的或残留着旧的 AFD:*,而这个参数一旦错,整个发现链就断在第一环。











