必须启用disk.enableuuid="true",否则scsi_id无法获取唯一uuid导致asm识别失败;需在两节点.vmx中添加该行、关机重启后验证scsi_id输出一致,并用udev规则绑定原始块设备为/dev/asm-diskx。

udev 规则必须加 disk.EnableUUID = "TRUE",否则 scsi_id 拿不到唯一 UUID,ASM 识别会失败。
确认虚拟机磁盘 UUID 可读
VMware Workstation/ESXi 环境下,若未启用磁盘 UUID,scsi_id -g -u -d /dev/sdb 返回空或重复值,后续所有绑定都会错乱。
- 编辑每个节点的
.vmx文件,添加一行:disk.EnableUUID = "TRUE" - 关机后重启虚拟机,再执行
scsi_id -g -u -d /dev/sdb,应返回类似3613e0937b040da0801c0cd8afee9a263的 33 位字符串 - 两个节点上对同一块共享盘运行该命令,输出必须完全一致;不一致说明没真正共享,或 VMware 设置未生效
用 udev 绑定 ASM 设备名(推荐不分区直绑)
Oracle 官方文档明确建议:ASM 磁盘不要预先分区(即不用 fdisk),直接将原始块设备映射为 /dev/asm-diskX。分区后反而可能被 ASM 拒绝识别。
- 生成规则前先确认磁盘顺序,例如新挂载的四块盘是
/dev/sdb~/dev/sde - 逐个获取 UUID:
scsi_id -g -u -d /dev/sdb、scsi_id -g -u -d /dev/sdc… - 写入
/etc/udev/rules.d/99-oracle-asmdevices.rules,每行一条,例如:KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /dev/$name", RESULT=="3613e0937b040da0801c0cd8afee9a263", SYMLINK+="asm-diskb", OWNER="grid", GROUP="asmadmin", MODE="0660" - 注意路径:CentOS 7+ 中
scsi_id通常在/usr/lib/udev/下,不是/sbin/;路径错会导致规则静默失效
重载规则并验证设备节点是否就绪
udevadm control --reload 和 udevadm trigger 必须成对执行,且需在两个 RAC 节点上分别运行 —— 少一个节点,ASM 实例启动时就会报 ORA-15032 或找不到磁盘。
- 执行:
udevadm control --reload && udevadm trigger --type=devices --action=change - 立刻检查:
ls -l /dev/asm*,应看到brw-rw---- 1 grid asmadmin开头的设备节点 - 用
blkid /dev/asm-diskb验证是否仍显示 UUID(应有输出);若为空,说明scsi_id调用失败,回看规则里路径和权限 - 切到
grid用户执行:asmcmd lsdsk -k,应列出全部/dev/asm-disk*,状态为eligible或candidate
OCR/Voting Disk 和 DATA 磁盘组的盘符分配要隔离
OCR 和 Voting Disk 必须使用独立磁盘(不能与 DATA 混用),且建议用不同命名前缀(如 asm-ocr1、asm-vote1),避免误操作格式化。
- OCR 盘至少 3 块(外部冗余需奇数),每块 ≥ 4GB;Voting Disk 自动共用 OCR 磁盘组,无需单独指定
- DATA/FRA 磁盘组可共用一批磁盘,但首次创建时必须保证所有磁盘大小一致(差 1MB 都可能导致
CREATE DISKGROUP失败) - 不要在
/dev/asm-diskb上手动fdisk或mkfs,ASM 会直接裸写;误格式化会导致ORA-15036(磁盘被截断)
真实部署中最容易卡住的点,是两个节点上 /dev/asm-diskb 指向不同物理盘 —— 表现为一个节点能 ls 出来,另一个节点没有,或者 asmcmd lsdsk 输出磁盘数量不一致。这几乎全是 disk.EnableUUID 没开或 udev 规则没同步导致的。











