使用udev配置asm

广大2年前技术文章1207

环境:centos7    

1、udev介绍

  • udev概念

udev 是 Linux2.6 内核里的一个功能,它替代了原来的 devfs,成为当前 Linux 默认的设备管理工具。udev 以守护进程的形式运行,通过侦听内核发出来的 uevent 来管理 /dev目录下的设备文件。不像之前的设备管理工具,udev 在用户空间 (user space) 运行,而不在内核空间 (kernel space) 运行。

2、udev配置asm步骤

2.1、查看磁盘信息

#查看磁盘信息
fdisk -l
#根据上一步获取磁盘信息进行查看
ls -l /dev/sd*

2.2、获取WWID

WWID是磁盘的一个独一无二的标识,scsi_id命令执行后,只有磁盘、存储盘才可以显示wwid,多路径的存储盘显示的wwid一样,存储盘分区活分区格式化后,存储盘本身的wwid不变

UUID是文件系统的标识,blkid命令执行后,磁盘、本地磁盘分区、存储盘都可以显示uuid,且uuid之间有-横杠,多路径的存储盘显示的uuid一样,存储盘进行分区但是不格式的话,分区没有uuid,存储盘本身的uuid不变,存储盘进行分区且格式的话,分区有uuid,存储盘本身的uuid改变了。

注意:应用服务器上/ets/fstab里面只能使用uuid,不能使用wwid

  • 获取wwid命令和脚本

#命令1:
/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/sd$i(指定磁盘)

#命令2:
/usr/lib/udev/scsi_id -g -u  /dev/sd$i/(指定磁盘)


2.3、编写脚本制作99-oracle-asmdevices.rules内容

  1. 获取KERNEL基本信息命令

#nvme1n1需要换成/sys/block/下具体的磁盘
# udevadm info -a -p /sys/block/nvme1n1
  1. 根据获取的KERNEL信息编写获取wwid的脚本

两个脚本选择一个执行即可。

for i in `cat /proc/partitions | awk {'print $4'} `; 
do
echo "KERNEL==\"$i\", 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/$i`\", RUN+=\"/bin/sh -c 'mknod /dev/asm-disk$i b \$major \$minor; chown grid:asmadmin /dev/asm-disk$i; chmod 0660 /dev/asm-disk$i'\""
done

该脚本会输出所有盘,选择共享存储盘的规则复制到99-oracle-asmdevices.rules文件中。

2.4、根据脚本内容制作99-oracle-asmdevices.rules

配置udev的规则文件/etc/udev/rules.d/99-oracle-asmdevices.rules(修改磁盘别名为ocrX 和 data 便于后期创建asm 方便认识,也可以不修改)

  • 脚本一输出修改:

该方式RUN中使用mknod命令真实创建udev设备。

[root@rac1 ~]# cat /etc/udev/rules.d/99-oracle-asmdevices.rules

KERNEL=="nvme1n1", ENV{DEVTYPE}=="disk", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode", RESULT=="SNVMe_Alibaba_Cloud_Eluf6amt35i4q8l85qffvr", RUN+="/bin/sh -c 'mknod /dev/asm-ocr1 b $major $minor; chown grid:asmadmin /dev/asm-ocr1; chmod 0660 /dev/asm-ocr1'"
KERNEL=="nvme2n1", ENV{DEVTYPE}=="disk", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode", RESULT=="SNVMe_Alibaba_Cloud_Eluf6amt35i4q8l85qffvt", RUN+="/bin/sh -c 'mknod /dev/asm-ocr2 b $major $minor; chown grid:asmadmin /dev/asm-ocr2; chmod 0660 /dev/asm-ocr2'"
KERNEL=="nvme3n1", ENV{DEVTYPE}=="disk", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode", RESULT=="SNVMe_Alibaba_Cloud_Eluf6amt35i4q8l85qffvs", RUN+="/bin/sh -c 'mknod /dev/asm-ocr3 b $major $minor; chown grid:asmadmin /dev/asm-ocr3; chmod 0660 /dev/asm-ocr3'"
KERNEL=="nvme4n1", ENV{DEVTYPE}=="disk", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode", RESULT=="SNVMe_Alibaba_Cloud_Eluf6cdmidni893wbmft4u", RUN+="/bin/sh -c 'mknod /dev/asm-data b $major $minor; chown grid:asmadmin /dev/asm-data; chmod 0660 /dev/asm-data'"



2.5、启动udev

配置完成后启动udev即可

##crntos7命令
[root@linux7 rules.d]# /sbin/udevadm trigger --type=devices --action=change

##centos8命令
/sbin/udevadm control --reload-rules
/sbin/udevadm trigger

##如果修改配置文件后重新加载udev命令(如果还不生效可以重启生效)
/sbin/udevadm control --reload

2.6、配置完成后查看磁盘

[root@rac1 ~]# ll /dev/asm-*

brw-rw---- 1 grid asmadmin 259, 5 Sep  7 21:57 /dev/asm-data

brw-rw---- 1 grid asmadmin 259, 4 Sep  7 21:57 /dev/asm-ocr1

brw-rw---- 1 grid asmadmin 259, 3 Sep  7 21:57 /dev/asm-ocr2

brw-rw---- 1 grid asmadmin 259, 2 Sep  7 21:57 /dev/asm-ocr3


相关文章

大数据即席查询-Presto

一、Presto 概念Presto 是一个开源的分布式 SQL 查询引擎,数据量支持 GB 到 PB 字节,主要用来秒级查询的场景。注:虽然 Presto 可以解析 SQL,但它不是一个标准的数据库。...

mysql查线上数据注意数据库的隔离级别

数据库的隔离级别定义了一个事务可能对其他并发事务的可见性,以及它们可能对数据库的影响。隔离级别的选择影响着并发性能和数据的一致性,不同的隔离级别能够防止不同程度的并发问题,如脏读(Dirty Read...

Prometheus集成pushgateway监控k8s集群

Prometheus集成pushgateway监控k8s集群

Prometheus部署环境介绍本文的k8s环境是通过二进制方式搭建的v1.20.13版本清单准备注意集群版本的坑,自己先到Github上下载对应的版本。注意: 集群版本在v1.21.x之前需要注意下...

短信服务开通

短信服务开通

一、添加模版二、添加签名注意开通港澳台签名如果和国内签名冲突,需要修改国内签名 试用场景为通用,三、子账号授权新建RAM用户并创建AK信息提供 签名名称 以及模版CODE即可参考链接: https:/...

 MySQL性能优化(十)in参数列表过长导致的性能问题

MySQL性能优化(十)in参数列表过长导致的性能问题

有时候可能有人会问:where条件中使用in和or有什么区别,哪种写法性能更好?in参数个数有没有限制?下面就是一个由于in参数列表过长导致的性能问题。一个例子当时使用的是mysql 5.6版本SEL...

RabbitMQ 集群部署

RabbitMQ 集群部署

1. 两种模式说到集群,小伙伴们可能第一个问题是,如果我有一个 RabbitMQ 集群,那么是不是我的消息集群中的每一个实例都保存一份呢?这其实就涉及到 RabbitMQ 集群的两种模式:1)普通集群...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。