【真实经验分享】Oracle ASM 在 Solaris 上添加磁盘报错 `SVR4 Error 5: I/O error` 排查实录

Oracle ASM 在 Solaris 上添加磁盘报错 SVR4 Error 5: I/O error 排查实录

环境 :Oracle 11g RAC + ASM,Solaris 10/11

场景 :从存储阵列映射新 LUN 后,ASM 中执行 ALTER DISKGROUP ... ADD DISK 失败


一、问题现象

在 ASM 实例中执行添加磁盘命令:

sql 复制代码
alter diskgroup data_dg add disk '/dev/rdsk/cxdxsx' rebalance power 9;

报错信息如下:

复制代码
ORA-15032: not all alterations performed
ORA-15031: disk specification '/dev/rdsk/cxdxsx' matches no disks
ORA-15025: could not open disk "/dev/rdsk/cxdxsx"
ORA-27041: unable to open file
SVR4 Error: 5: I/O error
Additional information: xx
Additional information: xx
Additional information: xxxxxxxxx

在 OS 层面,设备文件已存在且权限正确:

bash 复制代码
$ ls -Ll /dev/rdsk/*sx
crw-rw---- 1 grid asmadmin 281, 70 Aug 2 16:17 cxdxsx

二、错误逐层拆解

这条错误链是从 OS 内核一路"冒泡"到 SQL 层的:

错误码 含义 谁报的
ORA-15031 磁盘规格匹配不到任何磁盘 ASM
ORA-15025 无法打开该磁盘 ASM
ORA-27041 无法打开文件 Oracle 通用 I/O 层
SVR4 Error 5 I/O 错误(errno = EIO Solaris 内核

核心结论SVR4 Error 5 不是 Oracle/ASM 的逻辑错误,而是 Solaris 内核在 open() 设备文件时,底层 I/O 请求失败后返回的标准 UNIX 错误码。

关于 Additional information: xx/xx/xxxxxxxxxx:这是 Oracle 内部诊断码(操作类型、打开标志、内存地址),对日常排查无直接意义。


三、排查思路与常见原因

SVR4 Error 5 在 Solaris + ASM 场景下,常见根因包括:

  1. 磁盘头脏数据 --- 磁盘残留旧 ASM 头或文件系统超级块
  2. 磁盘被占用 --- 已被 ZFS、SVM、VxVM 或文件系统锁定
  3. 硬件/链路故障 --- 存储阵列 LUN 离线、多路径异常
  4. 磁盘无 VTOC 标签 --- Solaris 特有! 新盘未写 Label,slice 无法定位

因为是新建的盘,且其他盘是正常运行,以上的1、2、3这3中情况可以暂时先排除。再结合官方文档《ASM is not Discovering Disks on Solaris: ORA-15025 ORA-27041 SVR4 Error: 5: I/O error. KB149842》中的内容,先检查磁盘是否有 VTOC 标签。


四、根因定位

执行 format 命令查看磁盘状态:

bash 复制代码
$ format

选择磁盘 cxdx 后,系统提示:

复制代码
[disk formatted]
Disk not labeled,  Label it now?  yes

真相大白 :存储阵列映射过来的新 LUN,虽然在 /dev/rdsk/ 下生成了 cxdxsx 这样的设备文件,但磁盘本身没有 VTOC(Volume Table of Contents)标签

Solaris 的磁盘访问层级是:

复制代码
物理磁盘 (c1d8)
    ↓
VTOC 标签(分区表 / Slice 定义)
    ↓
Slice 切片(s0 ~ s7)
    ↓
设备文件(/dev/rdsk/cxdxsx)

没有 VTOC 标签,内核就不知道 sx 这个切片对应磁盘的哪个柱面、多大范围。此时任何进程(包括 ASM)尝试 open() 或读写该 slice,Solaris 都会直接返回 SVR4 Error 5: I/O error


写 Label 后,直接回到 ASM 重试:

sql 复制代码
alter diskgroup data_dg add disk '/dev/rdsk/cxdxsx' rebalance power 9;

命令成功执行,磁盘顺利加入 Disk Group。

五、一句话总结

Solaris 上新 LUN 映射后,ASM 报 SVR4 Error 5,先检查 format 里有没有写 VTOC Label ------ 没 Label,slice 就是"假设备",内核不认,ASM 自然打不开。

相关推荐
A心有千千结5 小时前
GO 使用 OpenTelemetry 进行编译时插桩,实现零码注入
数据库·golang·可观测性·观测云
GreatVicent5 小时前
腾讯AI产业大会解读:Agent进场,企业基础设施怎么搭
大数据·数据库·人工智能·llm·agent·企业信息化
大模型码小白6 小时前
告别造假数据,直接连数据库查真实时序数据喂给 TimechoAI 大模型
java·数据库·人工智能·microsoft·架构
晚安日记wanna6 小时前
大表 DDL 面试翻车现场Online DDL 为什么还会锁死业务
数据库·面试·架构
IvorySQL6 小时前
PostgreSQL 日报|建库策略致备库静默丢数据(9 月 12 日)
数据库·人工智能·postgresql
这个DBA有点耶6 小时前
当Agent从“写SQL”变成“执行SQL”:数据库安全模型需要重新设计
数据库·aigc·dba
晚安日记wanna6 小时前
MySQL 主从延迟别只答并行复制
数据库·面试·架构
qq_401700417 小时前
Qt QUrl 详解与代码示例
开发语言·数据库·qt
程序员阿鹏7 小时前
如何实现MySQL分库分表?
数据结构·数据库·sql·mysql·缓存
风哥2号8 小时前
数据库教程FGMT33‑MySQL主从复制项目实施与维护06(MySQL8.4/9.7 MGR组复制)
数据库·mysql