在以前,部署Oracle RAC的时候,会涉及到RAW的共享存储的配置,具体可以查阅:
http://d-prototype.com/archives/513
检索【为raw配置udev策略】
可以从中看到,在过去写好了UDEV策略之后,为了让UDEV的策略生效,使用的方式是:start_udev
[root@11g-node1 ~]# cat /etc/udev/rules.d/60-raw.rules
# Enter raw device bindings here.
#
# An example would be:
# ACTION=="add", KERNEL=="sda", RUN+="/bin/raw /dev/raw/raw1 %N"
# to bind /dev/raw/raw1 to /dev/sda, or
# ACTION=="add", ENV{MAJOR}=="8", ENV{MINOR}=="1", RUN+="/bin/raw /dev/raw/raw2 %M %m"
# to bind /dev/raw/raw2 to the device with major 8, minor 1.
# for Oracle database 11g RAC
KERNEL=="raw*",OWNER="grid",GROUP="asmadmin",MODE="0660"
#-----------------------
[root@11g-node1 ~]#
[root@11g-node1 ~]# ll /dev/raw
total 0
crw------- 1 root root 162, 1 Aug 2 22:50 raw1
crw------- 1 root root 162, 2 Aug 2 22:50 raw2
[root@11g-node1 ~]#
[root@11g-node1 ~]# start_udev
Starting udev: [ OK ]
[root@11g-node1 ~]#
[root@11g-node1 ~]# ll /dev/raw
total 0
crw-rw---- 1 grid asmadmin 162, 1 Aug 2 22:50 raw1
crw-rw---- 1 grid asmadmin 162, 2 Aug 2 22:50 raw2
[root@11g-node1 ~]#
但是在RHEL7之后的版本中,系统移除了start_udev命令:
[root@oracle1 rules.d]# cat /etc/redhat-release
CentOS Linux release 7.8.2003 (Core)
[root@oracle1 rules.d]#
[root@oracle1 rules.d]# start_udev
bash: start_udev: command not found...
[root@oracle1 rules.d]#
那么,在这样的操作系统上如何让UDEV的策略即时生效呢?
通过重启对应的UDEV的系统服务。
先看看我们的共享磁盘:
[root@oracle1 rules.d]# fdisk -l /dev/sdb
Disk /dev/sdb: 15.3 GB, 15334375424 bytes, 29949952 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x9702fc0e
Device Boot Start End Blocks Id System
/dev/sdb1 2048 206847 102400 83 Linux
/dev/sdb2 206848 411647 102400 83 Linux
/dev/sdb3 411648 4605951 2097152 83 Linux
/dev/sdb4 4605952 29949951 12672000 83 Linux
[root@oracle1 rules.d]#
[root@oracle1 rules.d]# ls -ltr /dev/sdb*
brw-rw---- 1 root disk 8, 16 Jun 25 15:28 /dev/sdb
brw-rw---- 1 root disk 8, 20 Jun 25 15:28 /dev/sdb4
brw-rw---- 1 root disk 8, 18 Jun 25 15:28 /dev/sdb2
brw-rw---- 1 root disk 8, 17 Jun 25 15:28 /dev/sdb1
brw-rw---- 1 root disk 8, 19 Jun 25 15:28 /dev/sdb3
[root@oracle1 rules.d]#
可以看到,共享磁盘确实存在。
我们的UDEV策略是这样写的:
[root@oracle1 rules.d]# cat /etc/udev/rules.d/60-raw.rules
ACTION=="add",KERNEL=="sdb1",RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add",KERNEL=="sdb2",RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION=="add",KERNEL=="sdb3",RUN+="/bin/raw /dev/raw/raw3 %N"
ACTION=="add",KERNEL=="sdb4",RUN+="/bin/raw /dev/raw/raw4 %N"
ACTION=="add",KERNEL=="raw[1-4]",OWNER="root",GROUP="root",MODE="660"
[root@oracle1 rules.d]#
这时候,先查看一下RAW的状态:
[root@oracle1 rules.d]# ls -ltr /dev/raw/
total 0
crw-rw---- 1 root disk 162, 0 Jun 25 15:26 rawctl
[root@oracle1 rules.d]#
可以看到,当前是没有RAW的。
一、通过:udevadm
网上有很多方法是通过udevadm命令让UDEV的配置即时生效的,我们来验证一下:
例如:
/sbin/udevadm control –reload-rules
/sbin/udevadm trigger –type=devices –action=change
[root@oracle1 rules.d]# udevadm trigger --type=devices --action=change
[root@oracle1 rules.d]#
[root@oracle1 rules.d]# ls -ltr /dev/raw/
total 0
crw-rw---- 1 root disk 162, 0 Jun 25 15:26 rawctl
[root@oracle1 rules.d]#
[root@oracle1 rules.d]# ls -ltr /dev/raw/
total 0
crw-rw---- 1 root disk 162, 0 Jun 25 15:28 rawctl
[root@oracle1 rules.d]#
[root@oracle1 rules.d]#
[root@oracle1 rules.d]# ls -ltr /dev/raw/
total 0
crw-rw---- 1 root disk 162, 0 Jun 25 15:28 rawctl
[root@oracle1 rules.d]#
[root@oracle1 rules.d]# ls -ltr /dev/raw/
total 0
crw-rw---- 1 root disk 162, 0 Jun 25 15:28 rawctl
[root@oracle1 rules.d]#
[root@oracle1 rules.d]# ls -ltr /dev/raw/
total 0
crw-rw---- 1 root disk 162, 0 Jun 25 15:28 rawctl
[root@oracle1 rules.d]#
[root@oracle1 rules.d]# ls -ltr /dev/raw/
total 0
crw-rw---- 1 root disk 162, 0 Jun 25 15:28 rawctl
[root@oracle1 rules.d]#
[root@oracle1 rules.d]# ls -ltr /dev/raw/
total 0
crw-rw---- 1 root disk 162, 0 Jun 25 15:28 rawctl
[root@oracle1 rules.d]#
[root@oracle1 rules.d]# ls -ltr /dev/raw/
total 0
crw-rw---- 1 root disk 162, 0 Jun 25 15:28 rawctl
[root@oracle1 rules.d]#
[root@oracle1 rules.d]# ls -ltr /dev/raw/
total 0
crw-rw---- 1 root disk 162, 0 Jun 25 15:28 rawctl
[root@oracle1 rules.d]#
[root@oracle1 rules.d]# ls -ltr /dev/raw/
total 0
crw-rw---- 1 root disk 162, 0 Jun 25 15:28 rawctl
[root@oracle1 rules.d]#
[root@oracle1 rules.d]# ls -ltr /dev/raw/
total 0
crw-rw---- 1 root disk 162, 0 Jun 25 15:28 rawctl
[root@oracle1 rules.d]#
可以看到,udevadm命令在执行完成后,过了很久,RAW的策略依旧没有得到应用。
二、通过:重启UDEV相关的服务
先看看系统中有哪些UDEV相关的服务:
[root@oracle1 rules.d]# ls -ltr /usr/lib/systemd/system/ | grep udev
-rw-r--r--. 1 root root 751 Apr 1 2020 systemd-udev-trigger.service
-rw-r--r--. 1 root root 827 Apr 1 2020 systemd-udev-settle.service
-rw-r--r--. 1 root root 812 Apr 1 2020 systemd-udevd.service
-rw-r--r--. 1 root root 570 Apr 1 2020 systemd-udevd-kernel.socket
-rw-r--r--. 1 root root 595 Apr 1 2020 systemd-udevd-control.socket
-rw-r--r--. 1 root root 668 Apr 1 2020 initrd-udevadm-cleanup-db.service
lrwxrwxrwx. 1 root root 56 May 13 10:39 dracut-pre-udev.service -> ../../dracut/modules.d/98systemd/dracut-pre-udev.service
[root@oracle1 rules.d]#
其中头五个的服务说明如下:
systemd-udev-settle.service loaded active exited udev Wait for Complete Device Initialization
systemd-udev-trigger.service loaded active exited udev Coldplug all Devices
systemd-udevd.service loaded active running udev Kernel Device Manager
systemd-udevd-control.socket loaded active running udev Control Socket
systemd-udevd-kernel.socket loaded active running udev Kernel Socket
在这里,解决我们上面即时应用RAW策略的问题的相关服务是:systemd-udev-trigger.service
下面来尝试一下:
[root@oracle1 rules.d]# systemctl restart systemd-udev-trigger
[root@oracle1 rules.d]#
[root@oracle1 rules.d]# ls -ltr /dev/raw/
total 0
crw-rw---- 1 root disk 162, 0 Jun 25 15:28 rawctl
[root@oracle1 rules.d]# ls -ltr /dev/raw/
total 0
crw-rw---- 1 root disk 162, 0 Jun 25 15:28 rawctl
[root@oracle1 rules.d]# ls -ltr /dev/raw/
total 0
crw-rw---- 1 root disk 162, 0 Jun 25 15:28 rawctl
crw------- 1 root root 162, 1 Jun 25 15:28 raw1
crw------- 1 root root 162, 3 Jun 25 15:28 raw3
crw------- 1 root root 162, 2 Jun 25 15:28 raw2
crw------- 1 root root 162, 4 Jun 25 15:28 raw4
[root@oracle1 rules.d]#
可以看到,服务【systemd-udev-trigger】重启后,过了一会儿,RAW设备的资源就按照我们在UDEV策略中配置的方式,运行起来了。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。