Sunday, March 29, 2015

Configure UDEV rules for ASM devices



Tested Environment

  • OEL 6.4 with RAC 11.2.0.4

Key Facts

  • Don’t use /dev/sdX or /dev/dm-XX as device name as this device names can change after a reboot
  • Use the WWID for identifying devices
  • The World Wide Identifier (WWID) can be used to reliably identifying disk devices.
  • WWID is a persistent, system-independent ID that the SCSI Standard requires from all SCSI devices.

Display all available WWID on your system

Shell script to display WWID on your system
#!/bin/bash
#
#Usage:  As root user run : ./check_wwid.sh 
#
for FILE in `find /dev -name "sd*" | sort`
   do
     WWID=`scsi_id --whitelisted --replace-whitespace --device=$FILE `
     echo $FILE " WWID:  "  $WWID
   done

$ sudo ./check_wwid.sh
..
/dev/sdb   WWID:   1ATA_VBOX_HARDDISK_VB81c4f844-94203a15
/dev/sdb1  WWID:   1ATA_VBOX_HARDDISK_VB81c4f844-94203a15
/dev/sdc   WWID:   1ATA_VBOX_HARDDISK_VB2ed83c09-e66dbcfb
/dev/sdc1  WWID:   1ATA_VBOX_HARDDISK_VB2ed83c09-e66dbcfb
..
--> Of course WWIDs for partitions and for the complete disk are identical 

Create UDEV for a WWID identified SCSI device
  • Note in this sample we only change owner, group and protection for a disk device /dev/sdX
# cat 99-oracle-asmdevices.rules
KERNEL=="sd*", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", ENV{ID_SERIAL}=="14f504e46494c45523264556151442d5261336d2d566e4250", OWNER="grid", GROUP="asmadmin", MODE="0660"

# ls -ls /dev/sdr
0 brw-rw----. 1 grid asmadmin 65, 16 Mar 19 14:42 /dev/sdr

Reload and Restart the udev rules 
# udevadm control --reload-rules
# start_udev
Starting udev:                                             [  OK  ]
Verify disk protections:
# ls -ltr /dev/asm*
brw-rw----. 1 grid asmadmin   8,  17 Mar 15 10:03 /dev/asmdisk1_udev_sdb1
brw-rw----. 1 grid asmadmin   8,  33 Mar 15 10:03 /dev/asmdisk2_udev_sdc1

Redistribute   99-oracle-asmdevices.rules file to all cluster nodes and restat udev echo system on these nodes
# scp 99-oracle-asmdevices.rules grac42:/etc/udev/rules.d
# scp 99-oracle-asmdevices.rules grac43:/etc/udev/rules.d

On each RAC node
# udevadm control --reload-rules
# start_udev
# ls -ltr /dev/asm*
brw-rw----. 1 grid asmadmin   8,  17 Mar 15 10:03 /dev/asmdisk1_udev_sdb1
brw-rw----. 1 grid asmadmin   8,  33 Mar 15 10:03 /dev/asmdisk2_udev_sdc1

UDev rules for a disk partition using /sbin/scsi_id ( prefered mothode as we can change the NAME )

  • Note this sample maps:   /dev/sdb1 to /dev/asmdisk1_udev_sdb1, …
# cat 99-oracle-asmdevices.rules
KERNEL=="sd?1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -d /dev/$parent", RESULT=="1ATA_VBOX_HARDDISK_VB81c4f844-94203a15", NAME=
"asmdisk1_udev_sdb1", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd?1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -d /dev/$parent", RESULT=="1ATA_VBOX_HARDDISK_VB2ed83c09-e66dbcfb", NAME=
"asmdisk1_udev_sdc1", OWNER="grid", GROUP="asmadmin", MODE="0660"

# ls -l /dev/asmdisk1_udev_sdb1 /dev/asmdisk1_udev_sdc1
brw-rw----. 1 grid asmadmin 8, 17 Mar 19 13:53 /dev/asmdisk1_udev_sdb1
brw-rw----. 1 grid asmadmin 8, 33 Mar 19 13:53 /dev/asmdisk1_udev_sdc1

Reference:   

  •  How To Setup Partitioned Linux Block Devices Using UDEV (Non-ASMLIB) And Assign Them To ASM? (Doc ID 1528148.1)