部分参考自:

https://www.cnblogs.com/fah936861121/p/6496608.html

什么是udev

udev是Linux(linux2.6内核之后)默认的设备管理工具。udev 以守护进程的形式运行,通过侦听内核发出来的 uevent 来管理 /dev目录下的设备文件

使用udev的好处:

1)动态管理:当设备添加 / 删除时,udev 的守护进程侦听来自内核的 uevent,以此添加或者删除 /dev下的设备文件,所以 udev 只为已经连接的设备产生设备文件,而不会在 /dev下产生大量虚无的设备文件。

2)自定义命名规则:通过 Linux 默认的规则文件,udev 在 /dev/ 里为所有的设备定义了内核设备名称,比如 /dev/sda、/dev/hda、/dev/fd等等。由于 udev 是在用户空间 (user space) 运行,Linux 用户可以通过自定义的规则文件,灵活地产生标识性强的设备文件名,比如 /dev/boot_disk、/dev/root_disk、/dev/color_printer等等。

3)设定设备的权限和所有者/ 组 :udev 可以按一定的条件来设置设备文件的权限和设备文件所有者 / 组

如何使用udev

规则文件 /etc/udev/rules.d

规则文件是 udev 里最重要的部分,默认是存放在 /etc/udev/rules.d/下。所有的规则文件必须以“.rules”为后缀名

### 比如说,这个腾讯云下面的,就是添加一个网卡
[oracle@txy rules.d]$ cat 70-persistent-net.rules
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="52:54:00:f4:04:10", NAME="eth0" ### 绑定一块磁盘
vi /etc/udev/rules.d/99-oracle-asmdevices.rules KERNEL=="sd?",SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="36000c29ed7235ef77bbe5072ce96febb", SYMLINK+="asm-dggrid01",OWNER="grid", GROUP="asmadmin",MODE="0660"

udev的关键字

KERNEL: 内核设备名称,例如:sda, cdrom

ACTION: 事件 (uevent) 的行为,例如:add( 添加设备 )、remove( 删除设备 )

SUBSYSTEM: 设备的子系统名称,例如:sda 的子系统为 block。

PROGRAM 可执行的外部程序,如果程序返回0值,该键则认为为真(true)

RESULT: 外部命令 PROGRAM 的返回结果

PROGRAM== "/lib/udev/scsi_id -g -s $devpath", RESULT=="35000c50000a7ef67"

调用外部命令 /lib/udev/scsi_id查询设备的 SCSI ID,如果返回结果为 35000c50000a7ef67,则该设备匹配该 匹配键

以下为【赋值关键字】

SYMLINK:为 /dev/下的设备文件产生符号链接。由于 udev 只能为某个设备产生一个设备文件,所以为了不覆盖系统默认的 udev 规则所产生的文件,推荐使用符号链接。

## 比如说 SYMLINK+="asm-dggrid01",OWNER="grid", GROUP="asmadmin",MODE="0660"
[root@w1b ~]# ls -lsa /dev/asm*
0 lrwxrwxrwx. 1 root root 3 Feb 27 22:23 /dev/asm-dggrid01 -> sdc

OWNER, GROUP, MODE:为设备设定权限。

## 比如 sdc ,设了 SYMLINK+="asm-dggrid01",OWNER="grid", GROUP="asmadmin",MODE="0660"
[root@wmsdb ~]# ls -lsa /dev/sdc
0 brw-rw----. 1 grid asmadmin 8, 32 Feb 27 22:39 /dev/sdc

总结:

所以其实就是在 /dev/下面,创建了一个链接,然后会改了原来 /dev/sdc 的组成员和权限

Oracle ASM的udev绑盘方法

本机OS环境:oracle linux 7.6 x64

创建用户与组

如果有的话就不用再建了

/usr/sbin/groupadd -g 60001 oinstall
/usr/sbin/groupadd -g 60002 dba
/usr/sbin/groupadd -g 60003 oper
/usr/sbin/groupadd -g 60004 backupdba
/usr/sbin/groupadd -g 60005 dgdba
/usr/sbin/groupadd -g 60006 kmdba
/usr/sbin/groupadd -g 60007 asmdba
/usr/sbin/groupadd -g 60008 asmoper
/usr/sbin/groupadd -g 60009 asmadmin
/usr/sbin/useradd -u 61001 -g oinstall -G asmadmin,asmdba,dba,asmoper,oper grid
/usr/sbin/useradd -u 61002 -g oinstall -G dba,backupdba,dgdba,kmdba,asmadmin,asmdba,oper oracle

得到磁盘的uuid

## 使用一段小循环得到磁盘的uuid
for i in {c..z} a{a..c};
do
echo "sd$i" "`/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/sd$i` ";
done ## 例子:
[root@w1b ~]# for i in {c..z} a{a..c};
> do
> echo "sd$i" "`/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/sd$i` ";
> done
sdc 36000c29ed7235ef77bbe5072ce96febb
sdd 36000c2961e79943ee268b4e5c6f08c11
sde 36000c29a43ced0def592837d072d2586

得到ruld脚本

## 使用一段小循环
for i in {c..z} a{a..c};
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 ## 类似这样
[root@w1b ~]# for i in {c..z} a{a..c};
> 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 KERNEL=="sd?",SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="36000c29ed7235ef77bbe5072ce96febb", SYMLINK+="asm-diskc",OWNER="grid", GROUP="asmadmin",MODE="0660"
KERNEL=="sd?",SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="36000c2961e79943ee268b4e5c6f08c11", SYMLINK+="asm-diskd",OWNER="grid", GROUP="asmadmin",MODE="0660"
KERNEL=="sd?",SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="36000c29a43ced0def592837d072d2586", SYMLINK+="asm-diske",OWNER="grid", GROUP="asmadmin",MODE="0660"

编辑udev配置文件

上面的SYMLINK+="asm-diske",可以改一下,变成SYMLINK+="asm-dggrid01"之类的,变个别名

vi /etc/udev/rules.d/99-oracle-asmdevices.rules
## 注意:sdaa 类型需要使用sd??来映射
KERNEL=="sd?",SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="36000c29ed7235ef77bbe5072ce96febb", SYMLINK+="asm-dggrid01",OWNER="grid", GROUP="asmadmin",MODE="0660"

重启udev,检查结果

## 这个是重启udev
/sbin/udevadm trigger --type=devices --action=change
## 重新加载规则
/sbin/udevadm control --reload-rules

udev简介与使用的更多相关文章

  1. 转://UDEV简介及配置过程

    在Linux环境下安装Oracle11g RAC时,OS层面配置好多路径软件后(multipath),下一步就需要配置udev或asmlib来处理共享分区(Lun),以便Orace ASM能够看到这些 ...

  2. linux下udev简介

    一.关于Udev u即user space,dev是device,通过它的名字,我们就可以简单了解到,它是一个和用户态相关的驱动设备管理机制.udev是一个针对2.6内核的文件系统.提供一种基于用户空 ...

  3. linux下udev简介【转】

    本文转载自:http://blog.csdn.net/skyflying2012/article/details/9364555 一.关于Udev u即user space,dev是device,通过 ...

  4. (转载)使用 udev 高效、动态地管理 Linux 设备文件

    概述: Linux 用户常常会很难鉴别同一类型的设备名,比如 eth0, eth1, sda, sdb 等等.通过观察这些设备的内核设备名称,用户通常能知道这些是什么类型的设备,但是不知道哪一个设备是 ...

  5. 嵌入式 使用udev高效、动态地管理Linux 设备文件

    本文以通俗的方法阐述 udev 及相关术语的概念.udev 的配置文件和规则文件,然后以 Red Hat Enterprise Server 为平台演示一些管理设备文件和查询设备信息的实例.本文会使那 ...

  6. 【转】使用 udev 高效、动态地管理 Linux 设备文件

    简介: 本文以通俗的方法阐述 udev 及相关术语的概念.udev 的配置文件和规则文件,然后以 Red Hat Enterprise Server 为平台演示一些管理设备文件和查询设备信息的实例.本 ...

  7. 使用 udev 高效、动态地管理 Linux 设备文件

    本文转自:https://www.ibm.com/developerworks/cn/linux/l-cn-udev/index.html 概述: Linux 用户常常会很难鉴别同一类型的设备名,比如 ...

  8. 使用 udev 管理 Linux 设备文件

    本文以通俗的方法阐述 udev 及相关术语的概念.udev 的配置文件和规则文件,然后以 Red Hat Enterprise Server 为平台演示一些管理设备文件和查询设备信息的实例.本文会使那 ...

  9. udev规则以及编写

    主要内容: udev简介 如何配置和使用udev 如何编写udev规则 字符串替换和匹配 udev主要作用 编写udev规则实例 难点解析 1. udev简介 1.1 什么是udev? udev是Li ...

  10. udev和rules使用规则

    本文以通俗的方法阐述 udev 及相关术语的概念.udev 的配置文件和规则文件,然后以 Red Hat Enterprise Server 为平台演示一些管理设备文件和查询设备信息的实例.本文会使那 ...

随机推荐

  1. FFmpeg开发笔记(四十四)毕业设计可做的几个拉满颜值的音视频APP

    ​一年一度的毕业季就要到了,毕业设计算是大学生毕业前的最后一个大作业,尤其是计算机相关专业的毕业设计,通常要通过编程开发一个软件,比如开发一个图书馆管理系统,开发一个电商APP等等. 一个好的毕业设计 ...

  2. 动手煮面的一次经历,加餐DIY

    去年和今年一直是有疫情的,也是如此像我这种在学校呆着的不是在家窝着就是在学校窝着,尤其是到了假期的时候,如果晚回家几天那食堂的伙食就会变得十分的恐怖. 面对这样的伙食也是十分的无奈,虽然也是十分理解当 ...

  3. 【转载】回复“大修意见”(Major Revision)的模板 —— 审稿意见回复模板

    原文地址: https://zhuanlan.zhihu.com/p/80214252 ================================================== 上周有个小 ...

  4. tf.py_func的一些使用笔记——TensorFlow1.x

    tensorflow.py_func是TensorFlow1.x版本下的函数,在TensorFlow.2.x已经不建议使用了,但是依然可以通过tf.compat.v1.py_func的方式来进行调用. ...

  5. &times被替换成x 的解决办法

    今天写代码遇到一个很有趣的问题: 在php中使用echo 输出url的时候当url中包含&times字段时就会被html直接解析成 x (乘号)这样一来我返回的地址就不能正常访问url了: 解 ...

  6. grpc报错合集以及解决方案

    这里介绍下grpc各种报错以及解决方案 io.grpc.StatusRuntimeException: UNIMPLEMENTED 这个错误网上很多,大部分情况下 是由于方法找不到,即客户端与服务端p ...

  7. 一文搞懂Cortex-A9 ADC裸机和基于Linux驱动编写方法

    前言 在嵌入式开发中,ADC应用比较频繁,本文主要讲解ADC的基本原理以及如何编写基于ARM的裸机程序和基于Linux的驱动程序. ARM架构:Cortex-A9 Linux内核:3.14 在讲述AD ...

  8. linux驱动、ARM学习环境搭建

    安装包也可以关注公众号:一口Linux 后台回复 :ubuntu 0.环境说明 通常安装1个可以编译ARM汇编代码的linux环境,需要安装以下3个软件: vmware:在该软件中可以安装其他操作系统 ...

  9. Postman Code Java-Unirest 代码的依赖

    本来是Postman的Code直接使用的,结果根据这个名字 Unirest,搜出来了很多依赖,使用了排名第一的, https://search.maven.org/search?q=Unirest 结 ...

  10. spark 新建一个column并用另一column的最大值赋值

    finalDF.withColumn("NEW_COLUMN", max("start_date").over()).show()   Ref: https:/ ...