1. 生成规则文件
touch /etc/udev/rules.d/99-oracle-asmdevices.rules
或者
touch /usr/lib/udev/rules.d/99-oracle-asmdevices.rules
2. 生成规则
没有对sdb进行分区,执行如下shell脚本,
for i in b ;
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+=\"asm-disk$i\", OWNER=\"grid\", GROUP=\"asmadmin\", MODE=\"0660\""
done
对sdb 进行了分区,执行如下shell脚本,
for i in b1 b2
do
echo "KERNEL==\"sd$i\", SUBSYSTEM==\"block\", PROGRAM==\"/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/\$parent\", RESULT==\"`/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/sd${i:0:1}`\", SYMLINK+=\"asm-disk$i\", OWNER=\"grid\", GROUP=\"asmadmin\", MODE=\"0660\""
done;
注意未分区用 $name
分区用 $parent
3. 将结果复制到 99-oracle-asmdevices.rules
将第二步的输出粘贴入 99-oracle-asmdevices.rules 这个文件
KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="36000c2948ef9d9e4a7937bfc65888bc8", NAME="asm-diskb", OWNER="grid", GROUP="asmadmin", MODE="0660"
Load updated block device partition tables.
# /sbin/partprobe /dev/sdb
备注:
获取RESULT
在 Linux 7下,可以使用如下命令:
# /usr/lib/udev/scsi_id -g -u /dev/sdb
在 Linux 6下,可以使用如下命令:
# /sbin/scsi_id -g -u /dev/sdb
在 Linux 5下,可以使用如下命令:
# /sbin/scsi_id -g -u -s /block/sdb/sdb
4. 用udevadm进行测试,注意udevadm命令不接受/dev/sdc这样的挂载设备名,必须是使用/sys/block/sdb这样的原始设备名。
udevadm test /sys/block/sdb
udevadm info --query=all --path=/sys/block/sdb
udevadm info --query=all --name=asm-diskb
5. 启动udev
/usr/sbin/udevadm control --reload-rules
systemctl status systemd-udevd.service
systemctl enable systemd-udevd.service
6. 检查设备是否正确绑定
# ls -l /dev/asm* /dev/sdb
lrwxrwxrwx 1 root root 3 Nov 29 18:17 /dev/asm-diskb -> sdb
brw-rw---- 1 grid asmadmin 8, 16 Nov 29 18:17 /dev/sdb