签到成功

知道了

CNDBA社区CNDBA社区

Linux 7.x 中 UDEV 配置的变化

2020-01-04 21:38 3621 0 原创 Linux
作者: dave

Linux 中磁盘绑定有两种方法:udev 和 multipath。如果在Linux 7.x 中按之前的版本进行UDEV 绑定,配置之后不会生效。 http://www.cndba.cn/cndba/dave/article/3907http://www.cndba.cn/cndba/dave/article/3907

在我之前的一篇博客中也提到过linux 7.x 的配置方法。 http://www.cndba.cn/cndba/dave/article/3907

Linux 7.x 中 UDEV 生效的方法
https://www.cndba.cn/cndba/dave/article/2671

http://www.cndba.cn/cndba/dave/article/3907

Oracle 官方有一篇文档解释了为什么linux 7.x中UDEV 不生效,并给出了解决方法。 根据MOS的提供的规则,我们修改自动生成规则文件的脚本如下:http://www.cndba.cn/cndba/dave/article/3907

http://www.cndba.cn/cndba/dave/article/3907

Oracle Linux 7: Udev rule for ASM Cannot Place the ASM Disk in a Directory under /dev (Doc ID 2217951.1)

http://www.cndba.cn/cndba/dave/article/3907

[dave@www.cndba.cn ~]# for i in b c d e ;
do
echo "KERNEL==/"sd*/",ENV{DEVTYPE}==/"disk/",SUBSYSTEM==/"block/",PROGRAM==/"/usr/lib/udev/scsi_id -g -u -d /$devnode/",RESULT==/"`/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/sd$i`/", RUN+=/"/bin/sh -c 'mknod /dev/dm-disk$i b  /$major /$minor; chown dmdba:dmdba /dev/dm-disk$i; chmod 0660 /dev/dm-disk$i'/"" >> /etc/udev/rules.d/99-dm-devices.rules
done;

查看规则文件:

[dave@www.cndba.cn ~]# cat /etc/udev/rules.d/99-dm-devices.rules
KERNEL=="sd*",ENV{DEVTYPE}=="disk",SUBSYSTEM=="block",PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode",RESULT=="36000c2943f9a2a555d66be7511a2df65", RUN+="/bin/sh -c 'mknod /dev/dm-diskb b  $major $minor; chown dmdba:dmdba /dev/dm-diskb; chmod 0660 /dev/dm-diskb'"
KERNEL=="sd*",ENV{DEVTYPE}=="disk",SUBSYSTEM=="block",PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode",RESULT=="36000c290796384ac54b08951fcbb8132", RUN+="/bin/sh -c 'mknod /dev/dm-diskc b  $major $minor; chown dmdba:dmdba /dev/dm-diskc; chmod 0660 /dev/dm-diskc'"
KERNEL=="sd*",ENV{DEVTYPE}=="disk",SUBSYSTEM=="block",PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode",RESULT=="36000c29d6d88ae306799cb7c5d4714ac", RUN+="/bin/sh -c 'mknod /dev/dm-diskd b  $major $minor; chown dmdba:dmdba /dev/dm-diskd; chmod 0660 /dev/dm-diskd'"
KERNEL=="sd*",ENV{DEVTYPE}=="disk",SUBSYSTEM=="block",PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode",RESULT=="36000c290583e1e8e57d0a806e2ec3625", RUN+="/bin/sh -c 'mknod /dev/dm-diske b  $major $minor; chown dmdba:dmdba /dev/dm-diske; chmod 0660 /dev/dm-diske'"

让规则生效:http://www.cndba.cn/cndba/dave/article/3907

http://www.cndba.cn/cndba/dave/article/3907
http://www.cndba.cn/cndba/dave/article/3907

[dave@www.cndba.cn ~]# /sbin/udevadm trigger --type=devices --action=change
[dave@www.cndba.cn ~]# ll /dev/dm-*
brw-rw---- 1 root  disk  253,  0 1月   4 18:31 /dev/dm-0
brw-rw---- 1 root  disk  253,  1 1月   4 18:31 /dev/dm-1
brw-rw---- 1 dmdba dmdba   8, 16 1月   4 18:31 /dev/dm-diskb
brw-rw---- 1 dmdba dmdba   8, 32 1月   4 18:31 /dev/dm-diskc
brw-rw---- 1 dmdba dmdba   8, 48 1月   4 18:31 /dev/dm-diskd
brw-rw---- 1 dmdba dmdba   8, 64 1月   4 18:31 /dev/dm-diske
[dave@www.cndba.cn ~]#

Oracle 官方说明:

SYMPTOMS
The ASM disk is configured to be placed under /dev/asm as per the below udev rule but the asm disk is not created after a reboot.
Udev rule :
KERNEL=="emcpower*[!0-9]", ENV{DEVTYPE}=="disk", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode", RESULT=="360060160da5031005e5c4dab3230e311", RUN+="/bin/sh -c 'mknod /dev/asm/ASP_DATA12C b $major $minor; chown oracle:oinstall /dev/asm/ASP_DATA12C; chmod 0660 /dev/asm/ASP_DATA12C'"

CAUSE
The udev rule is triggered but it fails to create the disk under /dev/asm because the directory asm is not present under /dev.
In OL7, the /dev is a tmpfs and generated dynamically when the system comes up and hence the asm directory is not present under /dev after a reboot.
Test case:
There is no directory /dev/asm
<HOSTNAME>@ ~]# udevadm control --reload-rules
<HOSTNAME>@ ~]# udevadm trigger --type=devices --action=change
<HOSTNAME>@ ~]# ll /dev/asm/
total 0
brw-rw---- 1 oracle oinstall 8, 32 Oct 18 22:51 ASP_DATA12C
Check the udev Rules
<HOSTNAME>@ ~]# cat /etc/udev/rules.d/99-oracle-asmdevices.rules
ACTION=="add|change", KERNEL=="sdc", ENV{DEVTYPE}=="disk", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode", RESULT=="0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-1", RUN+="/bin/sh -c 'mknod /dev/asm/ASP_DATA12C b $major $minor; chown oracle:oinstall /dev/asm/ASP_DATA12C; chmod 0660 /dev/asm/ASP_DATA12C'"
<HOSTNAME>@ ~]# udevadm control --reload-rules
<HOSTNAME>@ ~]# udevadm trigger --type=devices --action=change'mknod /dev/asm/ASP_DATA12C b $major $minor
<HOSTNAME>@ ~]# ll /dev/sdc
sdc sdc1
<HOSTNAME>@ ~]# ll /dev/sdc1
brw-rw---- 1 root disk 8, 33 Oct 18 22:48 /dev/sdc1
Created 'asm' directory manually but after the reboot directory will be deleted
<HOSTNAME>@ ~]# mkdir /dev/asm                                              <<<< Created Directory 'asm'
<HOSTNAME>@ ~]# mknod /dev/asm/ASP_DATA12C b 8 33            <<<<<<< 8 33 are major and minor numbers .
<HOSTNAME>@ ~]# udevadm control --reload-rules
<HOSTNAME>@ ~]# udevadm trigger --type=devices --action=change
<HOSTNAME>@ ~]# ll /dev/asm/
total 0
brw-r--r-- 1 root root 8, 33 Oct 18 22:50 ASP_DATA12C 

But after the reboot this directory will be deleted . 

SOLUTION
The solution is to create the directory using the udev rule before the asm disk is created.
 Add the line highlighted in Bold (/usr/bin/mkdir /dev/asm) : 
<HOSTNAME> ~]# vi /etc/udev/rules.d/96-asmmultipath.rules
ACTION=="add|change", KERNEL=="sdb", ENV{DEVTYPE}=="disk", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode", RESULT=="1ATA_VBOX_HARDDISK_VB4e42ee2e-c26ef95f", RUN+="/bin/sh -c '/usr/bin/mkdir /dev/asm; mknod /dev/asm/ASP_DATA12C b $major $minor; chown oracle:oinstall /dev/asm/ASP_DATA12C; chmod 0660 /dev/asm/ASP_DATA12C'"

Try to run udevadm 'reload' and 'trigger' command once the rule is set :
<HOSTNAME> ~]# udevadm control --reload-rules
<HOSTNAME> ~]# udevadm trigger --type=devices --action=change

Check by Rebooting the server and check if the directory are present .
<HOSTNAME> ~]# ll /dev/asm/
total 0
brw-rw----. 1 oracle oinstall 8, 16 Oct 19 10:42 ASP_DATA12C

版权声明:本文为博主原创文章,未经博主允许不得转载。

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
dave

dave

关注

人的一生应该是这样度过的:当他回首往事的时候,他不会因为虚度年华而悔恨,也不会因为碌碌无为而羞耻;这样,在临死的时候,他就能够说:“我的整个生命和全部精力,都已经献给世界上最壮丽的事业....."

  • 2283
    原创
  • 3
    翻译
  • 579
    转载
  • 196
    评论
  • 访问:8172065次
  • 积分:4428
  • 等级:核心会员
  • 排名:第1名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ