linux 7.x中udev绑定磁盘失败,Linux 7.x 中 UDEV 配置的变化

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

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

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

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

Oracle Linux 7: Udev rule for ASM Cannot Place the ASM Disk in a Directory under /dev (Doc ID 2217951.1)https://www.cndba.cn/dave/article/3907https://www.cndba.cn/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'"

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

https://www.cndba.cn/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

@ ~]# udevadm control --reload-rules

@ ~]# udevadm trigger --type=devices --action=change

@ ~]# ll /dev/asm/

total 0

brw-rw---- 1 oracle oinstall 8, 32 Oct 18 22:51 ASP_DATA12C

Check the udev Rules

@ ~]# 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'"

@ ~]# udevadm control --reload-rules

@ ~]# udevadm trigger --type=devices --action=change'mknod /dev/asm/ASP_DATA12C b $major $minor

@ ~]# ll /dev/sdc

sdc sdc1

@ ~]# 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

@ ~]# mkdir /dev/asm <<<< Created Directory 'asm'

@ ~]# mknod /dev/asm/ASP_DATA12C b 8 33 <<<<<<< 8 33 are major and minor numbers .

@ ~]# udevadm control --reload-rules

@ ~]# udevadm trigger --type=devices --action=change

@ ~]# 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) :

~]# 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 :

~]# udevadm control --reload-rules

~]# udevadm trigger --type=devices --action=change

Check by Rebooting the server and check if the directory are present .

~]# ll /dev/asm/

total 0

brw-rw----. 1 oracle oinstall 8, 16 Oct 19 10:42 ASP_DATA12C

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值