kfod 扫不到磁盘的根本原因是 ASM 无法按 asm_diskstring 配置“看到”它,而非设备未识别;需检查该参数值、UDEV/ASMLIB 配置、权限及磁盘头状态。
为什么 kfod 扫不到磁盘,但 /dev/sdb1 明明存在?
根本原因不是设备没识别,而是 asm 无法按当前配置“看到”它。asm 不直接读 /dev/sdb1,它依赖 asm_diskstring 参数定义的路径模板去扫描,再结合 asmlib 或 udev 规则映射为合法磁盘。如果 asm_diskstring 配置为空、路径写错、权限不足或 asmlib 未就绪,kfod 就会返回空——这不是磁盘丢了,是“门关着”。
-
kfod disk=all返回空,先别急着重启 ASM,先查asm_diskstring:sqlplus / as sysasm -c "show parameter asm_diskstring" - 常见错误值:
'ORCL:*'(依赖 ASMLIB)、'/dev/oracleasm/disks/*'(旧版 ASMLIB 路径)、'/dev/asm-disk*'(UDEV 规则路径),必须与实际磁盘符号链接位置严格一致 - 若用 UDEV,确认规则文件(如
/etc/udev/rules.d/99-oracle-asm.rules)已生效:udevadm control --reload-rules && udevadm trigger,再检查ls -l /dev/asm-disk*是否指向真实块设备
kfod 和 asmcmd lsdsk 结果不一致怎么办?
kfod 是底层发现工具,绕过 ASM 实例,只做路径扫描和头校验;asmcmd lsdsk 则依赖 ASM 实例已启动且能访问磁盘元数据。两者不一致,说明磁盘物理可达但元数据异常或实例未加载完整。
- 若
kfod能扫出磁盘但asmcmd lsdsk无输出:大概率是 ASM 实例没起来,或+ASM进程未获得磁盘读权限(ls -l /dev/asm-disk*看属主是否为grid:asmadmin) - 若
kfod无输出但asmcmd lsdsk有结果:极罕见,通常是 ASM 实例缓存了旧磁盘信息,需重启 ASM 并清空$ORACLE_BASE/diag/asm/+asm/asm/trace/下的最近 trace 文件 - 验证磁盘头是否有效:
kfod op=validate ds=true dev=/dev/asm-disk1—— 若报Invalid ASM disk header,说明元数据损坏,不能强挂载
修改 asm_diskstring 后仍不生效?注意三个隐性依赖
改完参数不等于立刻生效。ASM 实例不会动态重读该参数,且它还受 OS 层、驱动层、集群注册状态三重约束。
- 必须重启 ASM 实例:
srvctl stop asm -n $(hostname) && srvctl start asm -n $(hostname)(RAC 环境下要逐节点操作) - ASMLIB 必须已加载且
/dev/oracleasm已挂载:oracleasm status输出必须含“loaded”和“mounted”,否则ORCL:*类路径永远失败 - RAC 环境下,
ocrcheck必须通过,且所有节点的asm_diskstring值必须完全一致,否则某节点挂载成功,另一节点因扫描路径不同而报ORA-15063: ASM discovered an insufficient number of disks
挂载失败时,日志里反复出现 no PST quorum 怎么办?
这不是配置问题,是仲裁机制触发的保护行为。PST(Physical Sector Table)是 ASM 磁盘组的元数据仲裁结构,外部冗余要求至少 2 块磁盘在线才能形成 quorum;正常冗余需半数以上;高冗余需三分之二以上。少一块,就卡在这里。
- 查实际在线磁盘数:
asmcmd lsdsk -k(显示header_status = MEMBER的才算有效参与 quorum) - 若磁盘状态为
PROVISIONED或CANDIDATE,说明未加入磁盘组,需先执行ALTER DISKGROUP DATA ADD DISK '/dev/asm-disk2' - 切勿在缺失磁盘时强行
mount force——ASM 允许挂载,但后续 I/O 可能静默失败,且无法保证数据一致性
磁盘组挂载问题最麻烦的从来不是命令输错,而是你看到的“磁盘不存在”,其实是 ASM 在某个环节被拦住了:可能是路径没对上,可能是权限卡在系统层,也可能是集群节点间状态撕裂。动手前,先用 kfod op=groups 看 ASM 自己认出了几个组,比盲目重启更省时间。






























