gridsetup.sh提示“未找到可用磁盘”的根本原因是asm无法从操作系统识别裸设备路径,常见于udev规则未生效、设备被占用、发现路径不一致、nvme适配缺失、adr初始化失败或asmlib与udev模式冲突。
gridsetup.sh 提示“未找到可用磁盘”,不是磁盘不存在,而是 grid infrastructure 安装程序根本没看到你认为“已配好”的设备。核心原因就一个:asm 无法从操作系统层面识别并访问裸设备路径。
asmcmd lsdsk 返回空但 ls -l /dev/sdX 显示权限正常?
说明磁盘节点存在、属主也对,但 ASM 实例压根没扫描到它——常见于以下情况:
-
udev规则未生效:执行udevadm control --reload-rules && udevadm trigger后,必须用ls -l /dev/sdX确认属主/权限已变,不能只信udevadm info输出 - 设备被占用:运行
lsof /dev/sdX或fdisk -l /dev/sdX看是否已有分区表或文件系统(哪怕没挂载,ASM 也会跳过) - 路径不一致:
gridSetup.sh默认扫描/dev/oracleasm/disks/(旧 ASMLIB 模式),但你配的是裸设备如/dev/sdb;此时需在安装界面手动把“ASM Disk Discovery Path”改成/dev/sd*或具体路径 - NVMe 盘未适配:
/dev/nvme0n1不匹配sd*模式,udev规则必须用SUBSYSTEM=="block", KERNEL=="nvme[0-9]n[0-9]"
KFOD 报错 Error 49802 initializing ADR
这是安装时最典型的“假死”信号:不是磁盘问题,而是 Grid 的诊断框架(ADR)初始化失败,导致整个磁盘发现流程中断。
- 错误日志里出现
Kfod result Error 49802 initializing ADR at /u01/app/grid,基本可判定$GRID_HOME所在文件系统权限异常或空间不足 - 检查
df -h /u01是否满;再确认grid用户对/u01/app/grid有读写权限(尤其diag子目录) - 别忽略
ORACLE_BASE和GRID_HOME的归属:必须是grid:oinstall,且不能和数据库软件混用同一路径
oracleasm scandisks 成功但 gridSetup.sh 仍看不到磁盘
说明你在用 ASMLIB(已弃用),而 19c 默认走裸设备 + udev 模式,两者不兼容。
- 停掉旧服务:
systemctl stop oracleasm,禁用开机自启 - 彻底卸载 ASMLIB 包:
yum remove oracleasmlib oracleasm-support - 清空残留:
oracleasm deletedisk全部磁盘,再dd if=/dev/zero of=/dev/sdX bs=1M count=100抹头 - 改用 WWID + udev 符号链接:用
scsi_id -g -u -d /dev/sdX获取唯一 ID,规则中绑定/dev/asm-diskb这类稳定名,安装时选这个链接而非原始/dev/sdb
真正卡住的从来不是“怎么配”,而是“配完之后 ASM 能不能跨进程、跨重启、跨用户稳定看到它”。很多环境跑通一次就以为搞定,但重启后 crsctl start crs 失败,根源往往就在第一次没清干净磁盘头、没固化 udev 权限、或者 ADR 目录权限在 root 和 grid 之间撕扯。











