1. 程式人生 > >How to use udev for Oracle ASM in Oracle Linux 6

How to use udev for Oracle ASM in Oracle Linux 6

但是在OEL6或者RHEL6中,這一切都有所變化。

主要的變化是: 1. scsi_id的命令語法發生了變化,scsi_id -g -u -s這樣的命令不再有效。 2. udevtest命令已經沒有了,整合到了udevadm中。 可以參考Redhat的官方文件(這個文件中本身有一些錯誤,在udev rules中漏了–device=,正確的方法參看下面的第3步): 步驟如下: 1. 編輯/etc/scsi_id.config檔案,如果該檔案不存在,則建立該檔案,新增如下行:
options=--whitelisted --replace-whitespace

備註:在我的測試中,此步驟可以省略。

2. 獲取需要繫結為ASM Disk的磁碟uuid,比如我們要使用/dev/sdc和/dev/sdd作為ASM磁碟,那麼:

# scsi_id --whitelisted --replace-whitespace --device=/dev/sdc
1ATA_VBOX_HARDDISK_VB36a9e548-1838194a
# scsi_id --whitelisted --replace-whitespace --device=/dev/sdd
1ATA_VBOX_HARDDISK_VB9808fc7f-cdf35030

3. 編寫udev rules檔案,PROGRAM中寫scsi_id命令,RESULT中寫上面命令中返回的uuid,這跟OEL5中沒什麼區別,只是scsi_id命令的語法發生變化了。

vi /etc/udev/rules.d/99-oracle-asmdevices.rules
KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM=="/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="1ATA_VBOX_HARDDISK_VB36a9e548-1838194a", NAME="asm-disk1",  OWNER="grid",  GROUP="dba", MODE="0660"
KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM=="/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="1ATA_VBOX_HARDDISK_VB9808fc7f-cdf35030", NAME="asm-disk2",  OWNER="grid",  GROUP="dba", MODE="0660"

4. 用udevadm進行測試,注意udevadm命令不接受/dev/sdc這樣的掛載裝置名,必須是使用/sys/block/sdc這樣的原始裝置名。

udevadm test /sys/block/sdc
udevadm info --query=all --path=/sys/block/sdc
udevadm info --query=all --name=asm-disk1

在顯示中,有類似如下輸出,表示測試正確,/dev/sdc裝置在udev啟動以後將會繫結為/dev/asm-disk1:

udevadm_test: UDEV_LOG=6
udevadm_test: DEVPATH=/devices/pci0000:00/0000:00:0d.0/host4/target4:0:0/4:0:0:0/block/sdc
udevadm_test: MAJOR=8
udevadm_test: MINOR=32
udevadm_test: DEVNAME=/dev/asm-disk1
udevadm_test: DEVTYPE=disk
udevadm_test: ACTION=add
udevadm_test: SUBSYSTEM=block

5. 啟動udev

# /sbin/start_udev

6. 檢查裝置是否正確繫結

# ls -l /dev/asm*
brw-rw---- 1 grid dba 8, 32 Oct 26 21:24 /dev/asm-disk1
brw-rw---- 1 grid dba 8, 48 Oct 26 21:17 /dev/asm-disk2