Linux udev: Difference between revisions

From Lolly's Wiki
Jump to navigationJump to search
No edit summary
m (Text replacement - "[[Kategorie:" to "[[Category:")
 
(10 intermediate revisions by the same user not shown)
Line 1: Line 1:
[[Kategorie:Linux|LVM]]
[[Category:Linux|udev]]
[[Kategorie:Linux|Udev]]
==Persistent network interface names==
If you have no <i>/etc/udev/rules.d/70-persistent-net.rules</i> just create one:
<syntaxhighlight lang=bash>
# lshw -C network | awk '/logical name:/{iface=$NF;}/serial:/{mac=$NF;printf "SUBSYSTEM==\"net\", ACTION==\"add\", DRIVERS==\"?*\", ATTR{address}==\"%s\", ATTR{dev_id}==\"0x0\", ATTR{type}==\"1\", KERNEL==\"eth*\", NAME=\"%s\"\n",mac,iface;}' >> /etc/udev/rules.d/70-persistent-net.rules
</syntaxhighlight>
or add a specific interface to <i>/etc/udev/rules.d/70-persistent-net.rules</i>:
<syntaxhighlight lang=bash>
# MATCHADDR="00:50:56:a1:20:22" INTERFACE=eth2 /lib/udev/write_net_rules
</syntaxhighlight>


/etc/udev/rules.d/99-custom.rules
ENV{DM_VG_NAME}=="VolumeGroup1", ENV{DM_LV_NAME}=="LogicalVolume1", MODE="0660", OWNER="lollypop", GROUP="disk", SYMLINK+="VirtualBox-$env{DM_NAME}"


==udev ofr MySQL on LVM with InnoDB on raw devices==
Change order with:
<syntaxhighlight lang=bash>
# vi /etc/udev/rules.d/70-persistent-net.rules
</syntaxhighlight>
Then let udev reread the file:
<syntaxhighlight lang=bash>
# udevadm trigger --action=add --subsystem-match=net  --verbose
</syntaxhighlight>
 
 
==udev for MySQL on LVM with InnoDB on raw devices==


===Make your rule===
===Make your rule===


<source lang=bash>
<syntaxhighlight lang=bash>
root@mysql:~# cat /etc/udev/rules.d/99-lvm-mysql-permissions.rules
root@mysql:~# cat /etc/udev/rules.d/99-lvm-mysql-permissions.rules
# udevadm info --query=all --name /dev/vg-data/lv-rawdisk-innodb01
# udevadm info --query=all --name /dev/vg-data/lv-rawdisk-innodb01
Line 15: Line 31:
# DM_LV_NAME=lv-rawdisk-innodb01
# DM_LV_NAME=lv-rawdisk-innodb01
ENV{DM_VG_NAME}=="vg-data" ENV{DM_LV_NAME}=="lv-rawdisk-innodb*" OWNER="mysql" GROUP="mysql"
ENV{DM_VG_NAME}=="vg-data" ENV{DM_LV_NAME}=="lv-rawdisk-innodb*" OWNER="mysql" GROUP="mysql"
</source>
</syntaxhighlight>


===Test your rule===
===Test your rule===
<source lang=bash>
<syntaxhighlight lang=bash>
root@mysql:~# ls -al /dev/vg-data/lv-rawdisk-innodb01
root@mysql:~# ls -al /dev/vg-data/lv-rawdisk-innodb01
lrwxrwxrwx 1 root root 7 Aug 12 14:45 /dev/vg-data/lv-rawdisk-innodb01 -> ../dm-0
lrwxrwxrwx 1 root root 7 Aug 12 14:45 /dev/vg-data/lv-rawdisk-innodb01 -> ../dm-0
Line 27: Line 43:
specified user 'mysql' unknown
specified user 'mysql' unknown
...
...
</source>
</syntaxhighlight>
OK user mysql unknown... maybe I should install MySQL ;-).
OK user mysql unknown... maybe I should install MySQL ;-).


After that:
After that:
<source lang=bash>
<syntaxhighlight lang=bash>
root@mysql:~# id -a mysql
root@mysql:~# id -a mysql
uid=108(mysql) gid=114(mysql) groups=114(mysql)
uid=108(mysql) gid=114(mysql) groups=114(mysql)
Line 42: Line 58:
set permissions /dev/dm-0, 060660, uid=108, gid=114
set permissions /dev/dm-0, 060660, uid=108, gid=114
...
...
</source>
</syntaxhighlight>


===Trigger your rule===
===Trigger your rule===
<source lang=bash>
<syntaxhighlight lang=bash>
root@mysql:~# udevadm trigger
root@mysql:~# udevadm trigger
root@mysql:~# ls -alL /dev/vg-data/lv-rawdisk-innodb01  
root@mysql:~# ls -alL /dev/vg-data/lv-rawdisk-innodb01  
brw-rw---- 1 mysql mysql 252, 0 Aug 12 15:07 /dev/vg-data/lv-rawdisk-innodb01
brw-rw---- 1 mysql mysql 252, 0 Aug 12 15:07 /dev/vg-data/lv-rawdisk-innodb01
</source>
</syntaxhighlight>

Latest revision as of 05:32, 26 November 2021

Persistent network interface names

If you have no /etc/udev/rules.d/70-persistent-net.rules just create one:

# lshw -C network | awk '/logical name:/{iface=$NF;}/serial:/{mac=$NF;printf "SUBSYSTEM==\"net\", ACTION==\"add\", DRIVERS==\"?*\", ATTR{address}==\"%s\", ATTR{dev_id}==\"0x0\", ATTR{type}==\"1\", KERNEL==\"eth*\", NAME=\"%s\"\n",mac,iface;}' >> /etc/udev/rules.d/70-persistent-net.rules

or add a specific interface to /etc/udev/rules.d/70-persistent-net.rules:

# MATCHADDR="00:50:56:a1:20:22" INTERFACE=eth2 /lib/udev/write_net_rules


Change order with:

# vi /etc/udev/rules.d/70-persistent-net.rules

Then let udev reread the file:

# udevadm trigger --action=add --subsystem-match=net  --verbose


udev for MySQL on LVM with InnoDB on raw devices

Make your rule

root@mysql:~# cat /etc/udev/rules.d/99-lvm-mysql-permissions.rules
# udevadm info --query=all --name /dev/vg-data/lv-rawdisk-innodb01
# DM_VG_NAME=vg-data
# DM_LV_NAME=lv-rawdisk-innodb01
ENV{DM_VG_NAME}=="vg-data" ENV{DM_LV_NAME}=="lv-rawdisk-innodb*" OWNER="mysql" GROUP="mysql"

Test your rule

root@mysql:~# ls -al /dev/vg-data/lv-rawdisk-innodb01
lrwxrwxrwx 1 root root 7 Aug 12 14:45 /dev/vg-data/lv-rawdisk-innodb01 -> ../dm-0

root@mysql:~# udevadm test /class/block/dm-0
...
read rules file: /etc/udev/rules.d/99-lvm-mysql-permissions.rules
specified user 'mysql' unknown
...

OK user mysql unknown... maybe I should install MySQL ;-).

After that:

root@mysql:~# id -a mysql
uid=108(mysql) gid=114(mysql) groups=114(mysql)

root@mysql:~# udevadm test /class/block/dm-0
...
OWNER 108 /etc/udev/rules.d/99-lvm-mysql-permissions.rules:4
GROUP 114 /etc/udev/rules.d/99-lvm-mysql-permissions.rules:4
handling device node '/dev/dm-0', devnum=b252:0, mode=0660, uid=108, gid=114
set permissions /dev/dm-0, 060660, uid=108, gid=114
...

Trigger your rule

root@mysql:~# udevadm trigger
root@mysql:~# ls -alL /dev/vg-data/lv-rawdisk-innodb01 
brw-rw---- 1 mysql mysql 252, 0 Aug 12 15:07 /dev/vg-data/lv-rawdisk-innodb01