在 VMware 虛擬機上部署 Oracle RAC + ASM,配置 UDEV 規則綁定 ASM 磁碟時,scsi_id -g -u -s /block/sdX **無任何輸出**,udevtest 顯示 ID_SERIAL 為空,導致無法生成穩定的 /dev/asm-disk* 設備連結。
VMware 虛擬磁碟預設**不向客體作業系統暴露 UUID**。SCSI 層缺少唯一標識符,scsi_id 自然無法返回 UUID。
.vmx 檔案,新增一行:disk.EnableUUID = "TRUE"scsi_id -g -u -s /block/sdX,即可看到 UUID。注意:任何修改虛擬機硬體設定(加磁碟、改網卡等)操作後,VMware 可能將此參數重置為 FALSE,**需再次手動修改為 TRUE**。
若環境不允許修改 .vmx 或參數易失效,可用 udevinfo 獲取固定屬性(SYSFS{start}、SYSFS{size})編寫 UDEV 規則:
udevinfo -a -p /sys/block/sdb/sdb1
# 輸出示例
SYSFS{size}="16771797"
SYSFS{start}="63"
對應規則:
KERNEL=="sdb1", SUBSYSTEM=="block", SYSFS{size}=="16771797", SYSFS{start}=="63", \
NAME="asmdisk1-crs", OWNER="grid", GROUP="asmadmin", MODE="0660"
將虛擬磁碟控制器類型改為 **SATA**,通常能直接讓客體看到 UUID,避免上述問題。
# 1. 確認 scsi_id 返回 UUID
for i in b c d e f; do echo "sd$i" "`scsi_id -g -u -s /block/sd$i`"; done
# 2. 重新載入 UDEV 規則
udevadm control --reload-rules
udevadm trigger
# 3. 檢查 /dev/asm-disk* 是否建立
ls -l /dev/asm-disk*
VMware RAC 部署中 ASM 磁碟 UUID 缺失,**首選在 .vmx 中設定 disk.EnableUUID = "TRUE"**;若易失效,改用 SYSFS{size/start} 硬編碼規則;VirtualBox 則改用 SATA 控制器。切記:**ASM 磁碟勿建立分區、勿格式化**,直接綁定原始裝置。