说明:
建议采用Linux内核工具udev进行ASM磁盘的配置,由于UDEV工具在不同OS系统命令存在差异性,请按照相应的OS版本进行配置。
操作步骤:
步骤1:查询所有共享逻辑卷的SCSI ID值。
由于所有卷均为共享卷,查询命令在一个数据库节点上执行即可。
(1)若数据库节点的OS为RedHat Linux 6时,以sdb、sdc为例:
[root@db01~]# /sbin/scsi_id -g -u -d /dev/sdb
3648fd8e10027e6d80550a12100000027
[root@db01~]# /sbin/scsi_id -g -u -d /dev/sdc
3648fd8e10027e6d80550a13d00000028
(2)若数据库节点的OS为RedHat Linux 7(以sdb、sdc为例):
[root@db01~]# /usr/lib/udev/scsi_id -g -u -d /dev/sdb
3648fd8e10027e6d80550a12100000027
[root@db01~]# /usr/lib/udev/scsi_id -g -u -d /dev/sdc
3648fd8e10027e6d80550a13d00000028
步骤2:用root用户登录所有数据库节点,编辑UDEV规则文件。
说明:
1)若没有直接vi创建,每一个设备对应一条配置项,每条配置项中包含多个参数,每个卷的scsi_id均不同,仔细查询配置规则。
2)其中需要注意并根据实际环境进行配置的参数有:
RESULT——参数格式为RESULT==“3688860300000000ae036568967094421”,每个设备的值不一样,值为通过scsi_id -g -u /dev/sdb查询到的scsi id值;
SYMLINK——参数格式为SYMLINK+=“asmdisk/OCRDISK01”,其中asmdisk为ASM磁盘组在/dev/下的目录名,OCRDISK01为ASM磁盘名称,按照实际环境的规划填写;
OWNER和GROUP——参数格式为OWNER=“grid”, GROUP=“asmadmin”,按照实际环境填写,本文以grid用户和规划好的用户组asmadmin为例。
注意:命名规则必须采用SYMLINK的方式,禁止使用NAME的命名方式。
(1)若数据库节点的OS为RedHat Linux 6,以sdb、sdc为例,在规则文件中按照如下格式添加待扩容磁盘规则:
[root@db01 u01]# vi /etc/udev/rules.d/99-oracle-asmdevices.rules
KERNEL=="sd*", BUS=="scsi", PROGRAM=="/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="3688860300000000ae036568967094421", SYMLINK+="asmdisk/OCRDISK01", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd*", BUS=="scsi", PROGRAM=="/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="36888603000000009e036568967094421", SYMLINK+="asmdisk/OCRDISK02", OWNER="grid", GROUP="asmadmin", MODE="0660"
(2)数据库节点的OS为RedHat Linux 7,以sdb、sdc为例,在规则文件中按照如下格式添加待扩容磁盘规则:
[root@db01 u01]# vi /etc/udev/rules.d/99-oracle-asmdevices.rules
KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="3648fd8e1005e339f62e1bfb90000000c", SYMLINK+="asmdisk/OCRDISK01", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="3648fd8e1005e339f760c521700000004", SYMLINK+="asmdisk/OCRDISK02", OWNER="grid", GROUP="asmadmin", MODE="0660"
使用for循环生成配置
RedHat Linux 6版本为例:
for i in b c;
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`\", SYMLINK+=\"asmdisk/asm-disk$i\", OWNER=\"grid\", GROUP=\"asmadmin\", MODE=\"0660\""
done
RedHat Linux 7版本为例:
for i in b c;
do
echo "KERNEL==\"sd*\", SUBSYSTEM==\"block\", PROGRAM==\"/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/\$name\", RESULT==\"`/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/sd$i`\", SYMLINK+=\"asmdisk/asm-disk$i\", OWNER=\"grid\", GROUP=\"asmadmin\", MODE=\"0660\""
done
步骤3:编辑完并保存之后,使用如下命令使该规则生效。
[root@db01 u01]# /sbin/udevadm control --reload-rules
[root@db01 u01]# /sbin/udevadm trigger --type=devices --action=change
注意:命名规则必须采用SYMLINK的方式,禁止使用NAME的命名方式。
步骤4:检查ASM磁盘是否生效。
[root@db01 u01]# ll /dev/asmdisk/
lrwxrwxrwx 1 root root 6 Jul 31 10:40 DATA1 -> ../sdb
lrwxrwxrwx 1 root root 6 Jul 31 10:40 DATA2 -> ../sdc
lrwxrwxrwx 1 root root 6 Jul 31 10:40 FRADISK -> ../sdi
lrwxrwxrwx 1 root root 6 Jul 31 10:01 VDISK1 -> ../sdf
lrwxrwxrwx 1 root root 6 Jul 31 10:01 VDISK2 -> ../sdg
lrwxrwxrwx 1 root root 6 Jul 31 10:38 VDISK3 -> ../sdh
—结束