udev简介与使用
部分参考自:
什么是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简介与使用的更多相关文章
- 转://UDEV简介及配置过程
在Linux环境下安装Oracle11g RAC时,OS层面配置好多路径软件后(multipath),下一步就需要配置udev或asmlib来处理共享分区(Lun),以便Orace ASM能够看到这些 ...
- linux下udev简介
一.关于Udev u即user space,dev是device,通过它的名字,我们就可以简单了解到,它是一个和用户态相关的驱动设备管理机制.udev是一个针对2.6内核的文件系统.提供一种基于用户空 ...
- linux下udev简介【转】
本文转载自:http://blog.csdn.net/skyflying2012/article/details/9364555 一.关于Udev u即user space,dev是device,通过 ...
- (转载)使用 udev 高效、动态地管理 Linux 设备文件
概述: Linux 用户常常会很难鉴别同一类型的设备名,比如 eth0, eth1, sda, sdb 等等.通过观察这些设备的内核设备名称,用户通常能知道这些是什么类型的设备,但是不知道哪一个设备是 ...
- 嵌入式 使用udev高效、动态地管理Linux 设备文件
本文以通俗的方法阐述 udev 及相关术语的概念.udev 的配置文件和规则文件,然后以 Red Hat Enterprise Server 为平台演示一些管理设备文件和查询设备信息的实例.本文会使那 ...
- 【转】使用 udev 高效、动态地管理 Linux 设备文件
简介: 本文以通俗的方法阐述 udev 及相关术语的概念.udev 的配置文件和规则文件,然后以 Red Hat Enterprise Server 为平台演示一些管理设备文件和查询设备信息的实例.本 ...
- 使用 udev 高效、动态地管理 Linux 设备文件
本文转自:https://www.ibm.com/developerworks/cn/linux/l-cn-udev/index.html 概述: Linux 用户常常会很难鉴别同一类型的设备名,比如 ...
- 使用 udev 管理 Linux 设备文件
本文以通俗的方法阐述 udev 及相关术语的概念.udev 的配置文件和规则文件,然后以 Red Hat Enterprise Server 为平台演示一些管理设备文件和查询设备信息的实例.本文会使那 ...
- udev规则以及编写
主要内容: udev简介 如何配置和使用udev 如何编写udev规则 字符串替换和匹配 udev主要作用 编写udev规则实例 难点解析 1. udev简介 1.1 什么是udev? udev是Li ...
- udev和rules使用规则
本文以通俗的方法阐述 udev 及相关术语的概念.udev 的配置文件和规则文件,然后以 Red Hat Enterprise Server 为平台演示一些管理设备文件和查询设备信息的实例.本文会使那 ...
随机推荐
- 寻路数据集 —— PathFinding数据集 —— Moving AI Lab. 实验室
好几个做pathfinding的论文都是引用这个网站的数据集,不过这个网站的数据集的地图都是 .map 格式,这个类型的格式该如何打开还不知道. Moving AI Lab. 实验室的工作 地址: h ...
- 【转载】 CNN训练Cifar-10技巧
原文地址: https://www.cnblogs.com/neopenx/p/4480701.html ====================================== 关于数据集 Ci ...
- 【转载】【转载视频】 如何成为好的IT技术面试官
在外网找到了一个IT技术面试官的面试心得,感觉还不错,挺有借鉴的,这里mark一下. 地址: https://www.youtube.com/watch?v=yFMmkoqDPlM ========= ...
- ComfyUI插件:efficiency-nodes-comfyui节点
前言: 学习ComfyUI是一场持久战, efficiency-nodes-comfyui是提高工作流创造效率的工具,包含效率节点整合工作流中的基础功能,比如Efficient Loader节点相当于 ...
- 循环Map的几种方法
package cn.jdbc.test;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import ...
- 16-canvas绘制圆弧
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="U ...
- 如何实现基于Cortex-A9 的UART裸机驱动
前言 Uart在一个嵌入式系统中是一个非常重要的模块,他承担了CPU与用户交互的桥梁.用户输入信息给程序.CPU要打印一些信息给终端都要依赖UART. 本文将以Exynos4412的UART控制器为基 ...
- AvaloniaChat-v0.0.2:兼容智谱AI 快速使用指南
智谱AI介绍 北京智谱华章科技有限公司(简称"智谱AI")致力于打造新一代认知智能大模型,专注于做大模型的中国创新.公司合作研发了中英双语千亿级超大规模预训练模型GLM-130B, ...
- 基于 GoFrame 框架的 Go 项目打包成镜像,并上传至 Harbor 镜像库
〇.前言 在云服务时代最流行的部署方式就是容器部署,这也是最推荐的部署方式. 对于 GoFrame 框架就不多介绍了,直接来初始化一个 demo,备用. // 初始化一个项目:gf-demo gf i ...
- 忘记 mysql 8.0 root 密码 怎么修改
本文copy自 Centos7重置Mysql 8.0.1 root 密码 问题产生背景: 安装完 最新版的 mysql8.0.1后忘记了密码,向重置root密码:找了网上好多资料都不尽相同,根据自己的 ...