ITPub博客

首页 > Linux操作系统 > Linux操作系统 > UDEV规则的匹配键和RAW的一点说明

UDEV规则的匹配键和RAW的一点说明

原创 Linux操作系统 作者:lusklusklusk 时间:2017-06-23 17:57:55 0 删除 编辑
udevadm命令可以看到具体信息udevadm info --attribute-walk --name=/dev/sda

UDEV涉及的一些常见目录信息
ll /sys/class/block/
ll /dev/raw
ll /dev/mapper
ll /dev/block
ll /dev/disk/by-path
ll /dev/disk/by-id
ll /dev/disk/by-uuid



UDEV规则的匹配字段属性
ACTION        匹配事件的动作名,例如:add( 添加设备 )、remove( 删除设备 )。
DEVPATH       匹配事件的设备相对路径。例如:sda的devpath是/dev/sda,sda2的devpath是/dev/sda2。
KERNEL        匹配事件的设备名字,比如sdb,比如sd*表示任意SCSI磁盘设备
NAME          匹配网络接口或者设备节点的名字。NAME只有在前面的规则赋值之后才可以使用。
SYMLINK       匹配设备节点符号链的名字。SYMLINK 只有在前面的规则赋值之后才可以使用。可以有多个 symlinks,只需要匹配一个。
SUBSYSTEM     匹配设备子系统
DRIVER        匹配设备在devpath里的设备驱动名称,例如:ide-cdrom。
BUS           设备在devpath 里的总线名称,例如:usb。
ID            设备在 devpath 里的识别号
ENV{key}      环境变量。ENV{MAJOR}=="8"和ENV{MINOR}=="1"表示sda1
PROGRAM       执行一个程序。如果程序成功返回, key 为 true。设备的属性被放在被执行进程的环境变量中,该程序的输出为 stdout, 可以从 RESULT 这个 key 读取。
RESULT        匹配最近一次 PROGRAM 调用的返回字符串。它应该在 PROGRAM 之后使用。
OWNER         匹配设备文件的属组
GROUP         匹配设备文件所在的组。
MODE          匹配设备文件的权限,采用8进制
MAJOR         表示磁盘号
MINOR         表示磁盘下面的分区号


UDEV规则匹配字段属性和可调用的替换操作符 
$kernel, %k:设备的内核设备名称,例如:sda、cdrom。
$number, %n:设备的内核号码,例如:sda3 的内核号码是 3。
$devpath, %p:设备的 devpath路径。
$id, %b:设备在 devpath里的 ID 号。
$sysfs{file}, %s{file}:设备的 sysfs里 file 的内容。其实就是设备的属性值。
$env{key}, %E{key}:一个环境变量的值。
$major, %M:设备的 major 号。
$minor %m:设备的 minor 号。
$result, %c:PROGRAM 返回的结果。
$parent, %P:父设备的设备文件名。
$root, %r:udev_root的值,默认是/dev/。
$tempnode, %N:临时设备名。
%%:符号 % 本身。
$$:符号 $ 本身。




ENV{key}的特别说明
linux内核中表示不同的设备是通过major 和minor number实现的,通过major和minor Number来加载相应的驱动程序。
sda和sdb的major number都是8,sda的minor number是0开始, sdb的minor number 是16开始。
ENV{major}     major表示不同的设备类型
ENV{minor}     minor表示同一个设备的的不同分区
ACTION=="add", KERNEL=="sda", RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", ENV{MAJOR}=="8", ENV{MINOR}=="1", RUN+="/bin/raw /dev/raw/raw2 %M %m"




raw命令(以前RHEL4版本用的多,现在RHEL6用的少,不过RHEL6也是可以使用这样的方式)
可以直接通过raw命令绑定裸设备,不过重启后就丢失了,需要写在/etc/sysconfig/rawdevices文件中如/dev/raw/raw1 /dev/sdb1
[root@localhost ~]# ll /dev/raw
总用量 0
crw-rw----. 1 root disk 162, 0 6月  23 16:58 rawctl

[root@localhost ~]# raw
Usage:
  raw /dev/raw/rawN
  raw /dev/raw/rawN /dev/
  raw -q /dev/raw/rawN
  raw -qa

[root@localhost ~]# raw /dev/raw/raw1 /dev/sdb1
/dev/raw/raw1:  bound to major 8, minor 17

[root@localhost ~]# ll /dev/|grep sdb
brw-rw----.  1 root disk      8,  16 6月  23 16:59 sdb
brw-rw----.  1 root disk      8,  17 6月  23 16:59 sdb1

[root@localhost ~]# raw -qa
/dev/raw/raw1:  bound to major 8, minor 17

[root@localhost ~]# raw -q /dev/raw/raw1
/dev/raw/raw1:  bound to major 8, minor 17

[root@localhost ~]# ll /dev/raw
总用量 0
crw-rw----. 1 root disk 162, 1 6月  23 17:25 raw1
crw-rw----. 1 root disk 162, 0 6月  23 16:58 rawctl

[root@localhost ~]# cat /etc/issue
CentOS release 6.5 (Final)
Kernel \r on an \m

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30126024/viewspace-2141179/,如需转载,请注明出处,否则将追究法律责任。

全部评论
Welcome to Lukes DB HOME。 Oracle OCM、Mysql OCP, 8年以上DBA工作经验,博客仅记录自己的一个学习过程,不代表完全准确,如有需要,欢迎转载。

注册时间:2015-02-02

  • 博文量
    404
  • 访问量
    661225