【真实经验分享】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 自然打不开。

相关推荐
做运维的阿瑞9 分钟前
SQL 面试高频:用户、商品、订单三表查询全解析
数据库·sql·mysql
CJi0NG1 小时前
【自用】MySQL - 语法:DDL、DML、DQL、DCL
数据库·mysql
姜鱼问生2 小时前
数据库备份 + 灾难恢复演练:从 dump 恢复全库
运维·数据库
ao-weilai2 小时前
MySQL数据库:表约束
数据库·mysql·adb
ly76893 小时前
Redis 分布式锁的边界条件:Redlock 争议、锁续期与客户端崩溃后的互斥失效
数据库·redis·分布式·分布式锁·watchdog·redlock
kaixin_learn_qt_ing3 小时前
qgeoview-samples-basic
数据库
Omics Pro3 小时前
微软:多模态生物世界模型
数据库·人工智能·算法·microsoft·机器学习·自然语言处理
字节渡客4 小时前
接口明明返回成功,数据库偶尔就是没写入
数据库
Ivanqhz4 小时前
KV Cache
服务器·数据库·人工智能·深度学习·算法
Omics Pro4 小时前
~30,000+引用!理论2005,R包2008,多组学集成AI增强
开发语言·数据库·人工智能·算法·机器学习·自然语言处理·r语言