在Oracle Linux上用UDEV SCSI来配置ASM
对于使用ASM管理的磁盘来说,需要一种能够用于一致性标识磁盘设备及其正确的所属关系和权限的手段。在Linux系统中,可以使用ASMLib来执行这项任务,但是这样做的缺点是在操作系统上增加了额外的一层,从而导致了管理的复杂性,使用ASMLib配置ASM的方式现在已经不再流行。
一种替代的解决方案是:使用Linux设备管理器“udev”来完成这项任务。自2.6内核开始,就可以使用udev协助管理系统中各设备名称,udev能动态地在/dev目录里产生自定义的、标识性强的设备文件或设备链接。
从本质上来说,UDEV是一种对已定义好的规则的应用,这个规则以文件的形式保存在“/etc/udev/rules.d”目录下。规则的定义可以采用多种方式,我们需要做的是确定设备以及说明希望UDEV用它做什么。众所周知,所有的磁盘设备才采用“/dev/sd?1”的形式命名。
我们可以使用以下的规则参数来标识设备,比如:
KERNEL=="sd?1",BUS=="scsi"
udev参数为磁盘指定了一个别名、磁盘的所属关系以及权限:
NAME="asm-disk1", OWNER="oracle", GROUP="dba", MODE="0660"
综上所述,对于一个磁盘来说,完整的udev规则定义如下:
KERNEL=="sd?1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -d /dev/$parent", RESULT=="SATA_VBOX_HARDDISK_VBd306dbe0-df3367e3_", NAME="asm-disk1", OWNER="oracle", GROUP="dba", MODE="0660"
这意味着指向磁盘“sd*1”分区与“SATA_VBOX_HARDDISK_VBd306dbe0-df3367e3_”的SCSI ID总是被称为“/dev/asm-disk1”,不管Linux为“?”分配何种字符。此外,该设备将有正确的所属关系和权限。
使用vi /etc/udev/rules.d/99-oracle-asmdevices.rules命令,管理udev规则文件。
在OL6上快速生成udev规则文件的脚本:
for i in b c d e f g;
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
注意:此脚本直接写到了/etc/udev/rules.d/99-oracle-asmdevices.rules中。
然后使用/sbin/start_udev启动。
