Linux 安装Oracle RAC Udev 设备绑定
环境:
redhat5.6+multipath
# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 5.6 (Tikanga)
# cat /etc/udev/rules.d/99-asm.rules
KERNEL=="/dev/mapper/asm_vnx5200_data0[1-5]", OWNER="grid", GROUP="oinstall", MODE="660"
redhat6.5+multipath
# cat /etc/redhat-release
CentOS release 6.5 (Final)
# cat /etc/udev/rules.d/99-asm.rules
KERNEL=="dm-[2-8]", OWNER="grid", GROUP="oinstall", MODE="660"
由于操作系统版本不同,那么在操作系统上设备识别出来的文件类型也不一样。所以绑定的规则也不一样。
以上设置在生产系统运行一直很稳定。
下面的内容是网上收集而来,可以参考使用:
安装RAC需要绑定磁盘映射,需要获取磁盘WWID来使用UDEV绑定。
scsi_id命令发出一个SCSI INQUIRY指令给设备,访问vital product data (VPD)页0x83的数据,那里包含
设备的WWID和其他的信息,或者页0x80的数据,那里包含单元序列号(unit serial number)。 scsi_id
命令的执行结果(一长串字符)是设备的WWID,当前映射到/dev/sdc(/sys/block/sdc)。每一条到设备的
路径和设备上的每一个分区的WWID都是相同的。设备的WWID不会改变,即使将其他的设备添加到系统或者从
系统中删除。但是,映射到/dev/sdc的设备可能会改变。这就是为什么需要创建一个静态的设备名。可以根
据WWID创建设备名。
一、 如何获取设备WWID
(1) Redhat 5 Enterprise Linux 如下:
#/sbin/scsi_id -g -u -s /dev/sdb
Or
#/sbin/scsi_id -g -u -s /block/sdb
Shell脚本
# for i in `cat /proc/partitions | awk {'print $4'} |grep sd`; do echo "### $i: `scsi_id -g -u -s /block/$i`"; done
(2) Redhat 6 Enterprise Linux 如下:
#/sbin/scsi_id -g -u /dev/sdb
Or
#/sbin/scsi_id -g -u /block/sdb
Or
#/sbin/scsi_id --whitelist [--replace-whitespace] [ --device=] /dev/sdb
Shell脚本
# for i in `cat /proc/partitions | awk {'print $4'} |grep sd`; do echo "### $i: `scsi_id --whitelist --replace-whitespace /dev/$i`"; done
二、 写入udev .rules
(1) 对于整个盘的绑定写入 99-oracle-asmdevices.rules (文件名,测试可以随便命令)
RHEL5
for i in b c d e f ;
do
echo "KERNEL==\"sd*\", BUS==\"scsi\", PROGRAM==\"/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/\$name\", RESULT==\"`/sbin/scsi_id -g -u -s /dev/sd$i`\", NAME=\"asm-disk$i\", OWNER=\"grid\", GROUP=\"asmadmin\", MODE=\"0660\"" >> /etc/udev/rules.d/99-oracle-asmdevices.rules
done
RHEL6
for i in b c d e f ;
do
echo "KERNEL==\"sd*\", BUS==\"scsi\", PROGRAM==\"/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/\$name\", RESULT==\"`/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/sd$i`\", NAME=\"asm-disk$i\", OWNER=\"grid\", GROUP=\"asmadmin\", MODE=\"0660\"" >> /etc/udev/rules.d/99-oracle-asmdevices.rules
done
(2) 对于磁盘子分区的绑定
Redhat Enterprise Linux 5 用如下参数
KERNEL=="sd?[1-2]", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -s %p", RESULT=="1ATA_VBOX_HARDDISK_VBaef9fa71-c32978c8", NAME="asm-ocr%n", OWNER="grid", GROUP="asmdba", MODE="0660"
Redhat Enterprise Linux 6 用如下参数
KERNEL=="sd?[1-2]", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u /dev/$name", RESULT=="1ATA_VBOX_HARDDISK_VBaef9fa71-c32978c8", NAME="asm-ocr%n", OWNER="grid", GROUP="asmdba", MODE="0660"
Or
KERNEL=="sdb1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -d /dev/$parent" RESULT=="1ATA_VBOX_HARDDISK_VB8383313d-441fd502", NAME="asm-crs1", OWNER="grid", GROUP="asmadmin", MODE="0660"
(3) 只改权限
[root@rac01 oracle]# cat /etc/udev/rules.d/99-asm-multipath.rules
PROGRAM="/bin/chown oracle:oinstall /dev/mapper/back_mpath1p1"
PROGRAM="/bin/chown oracle:oinstall /dev/mapper/back_mpath2p1"
PROGRAM="/bin/chown oracle:oinstall /dev/mapper/data_mpath1p1"
PROGRAM="/bin/chown oracle:oinstall /dev/mapper/data_mpath2p1"
Linux平台在识别设备方面有独特之处,所以Udev 在Linux平台的使用的很广泛,用于绑定设备,名称持久化,有关Udev和rac设备绑定方面,还有哪些好的使用技巧,欢迎分享和交流。