首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> DB2 資料庫 >> DB2 教學

VMware 虛擬機安裝 Oracle RAC:ASM UDEV 無法獲取磁碟 UUID 解決方案

     編輯:DB2 教學

問題現象

在 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。

解決方案:啟用虛擬機 UUID 傳遞

方法 1:修改 .vmx 配置檔(永久生效)

  1. 關閉虛擬機。
  2. 編輯虛擬機目錄下的 .vmx 檔案,新增一行:
    disk.EnableUUID = "TRUE"
  3. 啟動虛擬機,重新執行 scsi_id -g -u -s /block/sdX,即可看到 UUID。

注意:任何修改虛擬機硬體設定(加磁碟、改網卡等)操作後,VMware 可能將此參數重置為 FALSE,**需再次手動修改為 TRUE**。

方法 2:若不想依賴 UUID,改用 SYSFS 屬性匹配

若環境不允許修改 .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"

方法 3:VirtualBox 環境建議

將虛擬磁碟控制器類型改為 **SATA**,通常能直接讓客體看到 UUID,避免上述問題。

補充:若磁碟已格式化(含分區表)

  • Oracle Linux 5 / RHEL 5 建議使用 **ASMLib** 管理 ASM 磁碟,避開 UDEV 複雜度。
  • Oracle Linux 6/7、RHEL 6/7 推薦 **ASM Filter Driver (ASMFD)** 或標準 UDEV + 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 磁碟勿建立分區、勿格式化**,直接綁定原始裝置。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved