linux上使用udev创建裸设备
目录
需求和分析
在一次项目中需要将进行oracle数据库的备份,要求在oracle机器总是能认到备份的块设备的路径以保证备份和恢复的正常。同时还需要对磁盘进行修改,转化中asm格式的。
基于这种情况下,在linux中将磁盘转化成对应的裸设备是一种合适的方法。
简单的操作就是将配置写入/etc/udev/rule.d/1401-oracle-asmdevice.rules
文件中,让udev管理。
udev 规则的匹配键
- ACTION: 事件 (uevent) 的行为,例如:add( 添加设备 )、remove( 删除设备 )。
- KERNEL: 内核设备名称,例如:sda, cdrom。
- DEVPATH:设备的 devpath 路径。
- SUBSYSTEM: 设备的子系统名称,例如:sda 的子系统为 block。
- BUS: 设备在 devpath 里的总线名称,例如:usb。
- DRIVER: 设备在 devpath 里的设备驱动名称,例如:ide-cdrom。
- ID: 设备在 devpath 里的识别号。
- SYSFS{filename}: 设备的 devpath 路径下,设备的属性文件“filename”里的内容。 例如:SYSFS{model}==“ST936701SS”表示:如果设备的型号为 ST936701SS,则该设备匹配该 匹配键。 在一条规则中,可以设定最多五条 SYSFS 的 匹配键。
- ENV{key}: 环境变量。在一条规则中,可以设定最多五条环境变量的 匹配键。
- PROGRAM:调用外部命令。
- RESULT: 外部命令 PROGRAM 的返回结果。
配置文件 这里是CentOS 6的版本
|
|
然后加载配置文件
|
|
注意
在CentOS6
和CentOS7
的配置有所不同。
一个是scsi_id
命令,还有是udev
规则变化。
|
|
scsi_id
命令需要安装systemd
包,如果知道命令对应的软件包名称,可以使用yum命令查看
|
|
udev
需要使用RUN
来代替NAME
,在RUN
中能使用linux的命令,使用;
分隔多个命令。
mknod
是CentOS7中转化设备的新命令,格式为:
|
|
同时修改udev
的命令也发生了变化。
|
|
在同时添加多个设备时,后添加的设备同步较慢。比较好的方法是先全部添加到.rules
文件中,最后再执行udevadm trigger
加载。