rhel 7.5 使用 udev rules 配置裸设备的两种方式
方式 一
1、修改规则文件
vi /usr/lib/udev/rules.d/rules.d/60-raw.rules
添加如下内容:
ACTION=="add", KERNEL=="sdb", RUN+="/usr/bin/raw /dev/raw/raw1 %N"
ACTION=="add", KERNEL=="sdc", RUN+="/usr/bin/raw /dev/raw/raw2 %N"
ACTION=="add", KERNEL=="sdd", RUN+="/usr/bin/raw /dev/raw/raw3 %N"
ACTION=="add", KERNEL=="sde", RUN+="/usr/bin/raw /dev/raw/raw4 %N"
KERNEL=="raw1", OWNER="grid" GROUP="asmadmin", MODE="0660"
KERNEL=="raw2", OWNER="grid" GROUP="asmadmin", MODE="0660"
KERNEL=="raw3", OWNER="grid" GROUP="asmadmin", MODE="0660"
KERNEL=="raw4", OWNER="grid" GROUP="asmadmin", MODE="0660"
2、重启主机或者重新载入规则文件
udevadm control --reload-rules
3. 检查设备
[root@whdatarac1 ~]# ls -al /dev/raw/
total 0
drwxr-xr-x 2 root root 140 Dec 26 09:45 .
drwxr-xr-x 20 root root 3380 Dec 26 09:45 ..
crw-rw---- 1 grid asmadmin 162, 1 Dec 28 12:04 raw1
crw-rw---- 1 grid asmadmin 162, 2 Dec 26 09:45 raw2
crw-rw---- 1 grid asmadmin 162, 3 Dec 28 12:04 raw3
crw-rw---- 1 grid asmadmin 162, 4 Dec 28 12:04 raw4
方式 二
1. 生成规则文件
生成如下规则文件之一:
/etc/udev/rules.d/99-oracle-asmdevices.rules
/usr/lib/udev/rules.d/99-oracle-asmdevices.rules
2. 生成规则
没有对sdb进行分区,执行如下shell脚本:
for i in b; #此处可加多个设备,如 b c d
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
不同版本系统获得UUID的命令位置不同
RHEL7 :/usr/lib/udev/scsi_id
RHEL7以前版本:/sbin/scsi_id
使用方式:scsi_id -g -u /dev/*
VMware 共享硬盘 UUID 获取不到,编辑虚拟机文件,添加:disk.EnableUUID = "TRUE"
3. 将结果复制到 99-oracle-asmdevices.rules
将第二步的输出粘贴入创建好的规则文件/etc/udev/rules.d/99-oracle-asmdevices.rules
或/usr/lib/udev/rules.d/99-oracle-asmdevices.rules
重新载入硬盘挂载信息:partprobe /dev/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