利用UDEV服务解决RAC ASM存储设备名 1.确认在所有RAC节点上已经安装了必要的UDEV包[root@rh2 ~]# rpm -qa|grep udev udev-095-14.21.el52.通过scsi_id获取设备的块设备的唯一标识名,假设系统上已有LUN sdc-sdpfor i in c d e f g h i j k l m n o p ; do echo "sd$i" "`scsi_id -g -u -s /block/sd$i` "; done3 for i in b c d e f g h i j k ;doecho "KERNEL=="sd*", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -s %p", RESULT=="`scsi_id -g -u -s /block/sd$i`", NAME="asm-disk$i", OWNER="grid", GROUP="asmadmin", MODE="0660""done中的 2脚本for i in c d e f g h i j k l m n o p ; do echo "sd$i" "`scsi_id -g -u -s /block/sd$i` "; done没有任何返回值 用UDEVTEST 检查 确实无法返回ID[root@localhost block]# udevtest /block/sdb main: looking at device "/block/sdb" from subsystem "block" run_program: "/lib/udev/usb_id -x" run_program: "/lib/udev/usb_id" returned with status 1 run_program: "/lib/udev/scsi_id -g -x -s /block/sdb -d /dev/.tmp-8-16" run_program: "/lib/udev/scsi_id" returned with status 1 run_program: "/lib/udev/scsi_id -g -x -a -s /block/sdb -d /dev/.tmp-8-16" run_program: "/lib/udev/scsi_id" (stdout) "ID_VENDOR=VMware" run_program: "/lib/udev/scsi_id" (stdout) "ID_MODEL=Virtual_disk" run_program: "/lib/udev/scsi_id" (stdout) "ID_REVISION=1.0" run_program: "/lib/udev/scsi_id" (stdout) "ID_SERIAL=" run_program: "/lib/udev/scsi_id" (stdout) "ID_TYPE=disk" run_program: "/lib/udev/scsi_id" (stdout) "ID_BUS=scsi" run_program: "/lib/udev/scsi_id" returned with status 0 run_program: "/lib/udev/path_id /block/sdb" run_program: "/lib/udev/path_id" (stdout) "ID_PATH=pci-0000:00:10.0-scsi-0:0:1:0" run_program: "/lib/udev/path_id" returned with status 0 udev_rules_get_name: add symlink "disk/by-path/pci-0000:00:10.0-scsi-0:0:1:0" run_program: "/lib/udev/vol_id --export /dev/.tmp-8-16" run_program: "/lib/udev/vol_id" returned with status 4 run_program: "/lib/udev/edd_id --export /dev/.tmp-8-16" run_program: "/lib/udev/edd_id" (stderr) "no kernel EDD support" run_program: "/lib/udev/edd_id" returned with status 2 run_program: "/sbin/scsi_id -g -u -s /block/sdb" run_program: "/sbin/scsi_id" returned with status 1 run_program: "/sbin/scsi_id -g -u -s /block/sdb" run_program: "/sbin/scsi_id" returned with status 1 run_program: "/sbin/scsi_id -g -u -s /block/sdb" run_program: "/sbin/scsi_id" returned with status 1 run_program: "/sbin/scsi_id -g -u -s /block/sdb" run_program: "/sbin/scsi_id" returned with status 1 run_program: "/sbin/scsi_id -g -u -s /block/sdb" run_program: "/sbin/scsi_id" returned with status 1 run_program: "/sbin/scsi_id -g -u -s /block/sdb" run_program: "/sbin/scsi_id" returned with status 1 run_program: "/sbin/scsi_id -g -u -s /block/sdb" run_program: "/sbin/scsi_id" returned with status 1 run_program: "/sbin/scsi_id -g -u -s /block/sdb" run_program: "/sbin/scsi_id" returned with status 1 run_program: "/sbin/scsi_id -g -u -s /block/sdb" run_program: "/sbin/scsi_id" returned with status 1 run_program: "/sbin/scsi_id -g -u -s /block/sdb" run_program: "/sbin/scsi_id" returned with status 1 udev_rules_get_name: no node name set, will use kernel name "sdb" udev_device_event: device "/block/sdb" already in database, validate currently present symlinks udev_node_add: creating device node "/dev/sdb", major = "8", minor = "16", mode = "0640", uid = "0", gid = "6" udev_node_add: creating symlink "/dev/disk/by-path/pci-0000:00:10.0-scsi-0:0:1:0" to "../../sdb" main: run: "socket:/org/kernel/udev/monitor" main: run: "/lib/udev/udev_run_devd" main: run: "socket:/org/freedesktop/hal/udev_event" main: run: "/sbin/pam_console_apply /dev/sdb /dev/disk/by-path/pci-0000:00:10.0-scsi-0:0:1:0"解决方案第一设备不能格式化如果是VM 虚拟机的vmx文件里面加入disk.EnableUUID ="TRUE" 如果再进行任何虚拟机的设置,比如添加磁盘,修改网卡类型或者其它的操作, disk.EnableUUID参数又会重置为FALSE,所以每次进行虚拟机设置以后,都需要手工再次修改该参数。想避免添加人工修改的话 只能采用udevinfo来获得SYSFS[start]和SYSFS[size]的方式来设置了udevinfo -a -p /sys/block/sdb/sdb1KERNEL=="sdb1", SUBSYSTEM=="block", SYSFS{size}=="16771797", SYSFS{start}=="63", NAME="asmdisk1-crs",OWNER="grid", GROUP="asmadmin", MODE="0660"如果是VBOX的话 建议换硬盘总线为SATA 如果格式化的 LINUX 5 那么请用ASMLIB 更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12本文永久更新链接地址