#在添加新磁盘之后,只只能对新加磁盘进行udev 规则 trigger。
udevadm trigger --sysname-match=sdX -v ###---对sdX这块盘生效,不加sysname-match那么会触发所有设备.复制
--- 针对dm设备:
udevadm trigger --verbose --subsystem-match=block --sysname-match=dm-* --action=add
udevadm trigger --verbose --subsystem-match=block --sysname-match=dm-* --action=change
sdX不是/dev/sdX因为它是根据pci路径来定位name的,比如sdX的路径是: udevadm info 可以查询相关名称。
/devices/pci0000:00/0000:00:10.0/host0/target0:0:1/0:0:1:0/block/sdb
复制
查询路径信息:
[root@docker rules.d]# udevadm info -q path -n /dev/sdb
/devices/pci0000:00/0000:00:10.0/host0/target0:0:1/0:0:1:0/block/sdb
复制
udevadm trigger
可以真正触发udev事件,但是不会真正改变硬件,只是触发kernel和udev的事件,会触发udev rules,我用这个触发事件,校验rules匹配.
udevadm control --relaod-rules
重载udev rules,对之后触发的新设备有效,对之前已经触发的无效
复制
1,测试新添加磁盘sdb,sdc规则
[root@docker rules.d]# cat 99-asm.rules
KERNEL=="sda",ENV{DEVTYPE}=="disk", SUBSYSTEM=="block",SYMLINK+="asmdisks/asmdisk01", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sdb",ENV{DEVTYPE}=="disk", SUBSYSTEM=="block",SYMLINK+="asmdisks/asmdisk02", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sdc",ENV{DEVTYPE}=="disk", SUBSYSTEM=="block",SYMLINK+="asmdisks/asmdisk03", OWNER="grid", GROUP="asmadmin", MODE="0660"
2,检查当前磁盘只有sda
[root@docker rules.d]# ll /dev/asmdisks/*
lrwxrwxrwx 1 root root 6 Mar 22 09:45 /dev/asmdisks/asmdisk01 -> ../sda
3,执行添加磁盘sdb
[root@docker rules.d]# udevadm control --reload-rules
[root@docker rules.d]# udevadm trigger --action=add --sysname=sdb -v
/sys/devices/pci0000:00/0000:00:10.0/host0/target0:0:1/0:0:1:0/block/sdb <<<<<< 可以看到只针对sdb 设备进行相关规则触发。
[root@docker rules.d]# ll /dev/asmdisks/*
lrwxrwxrwx 1 root root 6 Mar 22 09:45 /dev/asmdisks/asmdisk01 -> ../sda
lrwxrwxrwx 1 root root 6 Mar 22 09:47 /dev/asmdisks/asmdisk02 -> ../sdb <<<<<< 可以看到只针对sdb 设备进行相关规则触发。
4,执行添加磁盘sdb
[root@docker rules.d]# udevadm trigger --action=add --sysname=sdc -v
/sys/devices/pci0000:00/0000:00:10.0/host0/target0:0:2/0:0:2:0/block/sdc
[root@docker rules.d]#
[root@docker rules.d]# ll /dev/asmdisks/*
lrwxrwxrwx 1 root root 6 Mar 22 09:45 /dev/asmdisks/asmdisk01 -> ../sda
lrwxrwxrwx 1 root root 6 Mar 22 09:47 /dev/asmdisks/asmdisk02 -> ../sdb
lrwxrwxrwx 1 root root 6 Mar 22 09:47 /dev/asmdisks/asmdisk03 -> ../sdc
#测试发现 --sysname 可以只针对指定磁盘的udev规则进行生效。
udevadm trigger --action=add --sysname=sdX
5,命令使用说明
# udevadm trigger -h
udevadm trigger OPTIONS
Request events from the kernel.
-h --help Show this help
--version Show package version
-v --verbose Print the list of devices while running
-n --dry-run Do not actually trigger the events
-t --type= Type of events to trigger
devices sysfs devices (default)
subsystems sysfs subsystems and drivers
-c --action=ACTION Event action value, default is "change"
-s --subsystem-match=SUBSYSTEM Trigger devices from a matching subsystem
-S --subsystem-nomatch=SUBSYSTEM Exclude devices from a matching subsystem
-a --attr-match=FILE[=VALUE] Trigger devices with a matching attribute
-A --attr-nomatch=FILE[=VALUE] Exclude devices with a matching attribute
-p --property-match=KEY=VALUE Trigger devices with a matching property
-g --tag-match=KEY=VALUE Trigger devices with a matching property
-y --sysname-match=NAME Trigger devices with this /sys path <<<<< 指定设备名称 /sys udevadm info /dev/sdb 可以查询
--name-match=NAME Trigger devices with this /dev name <<<<< 指定设备名称 /dev
-b --parent-match=NAME Trigger devices with that parent device
6,重新加载全部udev规则信息: 针对系统所有设备进程触发。
[root@docker rules.d]# udevadm trigger --type=devices --action=change -v |wc -l
1733
udevadm trigger --type=devices --action=add -v