[linux-lvm] Option devices/dir different from /dev does not work
Peter Rajnoha
prajnoha at redhat.com
Mon Jan 28 10:29:54 UTC 2019
On 1/26/19 10:14 PM, Andrei Borzenkov wrote:
> I attempt to put device nodes for volumes in sub-directory of /dev to
> avoid accidental conflict between device name and volume group and
> general /dev pollution. VxVM always did it, using /dev/vx as base
> directory, so I would use something like /dev/lvm.
>
> Option devices/dir sounds like exactly the right one based on description:
>
> # Directory in which to create volume group device nodes.
>
> Unfortunately it appears to have no effect, LVM devices are still
> created directly under /dev. The only device under /dev/lvm is
> /dev/lvm/mapper/control ...
>
> I suspect the reason is, device nodes are created by udev and it does
> not know anything about LVM settings:
>
> # Create symlinks for top-level devices only.
> ENV{DM_VG_NAME}=="?*", ENV{DM_LV_NAME}=="?*",
> SYMLINK+="$env{DM_VG_NAME}/$env{DM_LV_NAME}", GOTO="lvm_end"
>
> Is it intentional? In this case at the very least comment in lvm.conf
> should explicitly say that this setting has no effect if udev
> integration is enabled.
>
Yes, this works as expected. Now, we rely fully on udev to create the
/dev content for us.
However, there are still options like:
activation/verify_udev_operations
activation/udev_sync
activation/udev_rules
devices/obtain_device_list_from_udev
These can change the way how LVM relies on udev and so we can still make
LVM to work by creating the /dev content itself somehow, bypassing
udev... (kernel will still create the /dev/<kernel_name> thouhg, in our
case the "/dev/dm-N")
But don't change defaults for these settings here, please! Consider
those settings as advanced or meant to be used only for testing and debug.
The /dev content should be always created by udev these days otherwise
we can run into problems - anyone reading udev database (there are
various system components doing it today) won't see any content that was
created in /dev without udev! And LVM itself reads the udev database to
get the list of block devices even! That's the
"obtain_device_list_from_udev" setting.
I can try to update the comments in the config so this is a bit clearer...
> openSUSE Tumbleweed just updated.
>
> 10:~ # lvm2
> lvm2-2.02.180-3.1.x86_64
> 10:~ # lvmconfig --type full devices/dir
> dir="/dev/lvm"
> 10:~ # ls -l /dev/lvm
> total 0
> drwxr-xr-x 2 root root 60 Jan 27 00:05 mapper
> 10:~ # pvs
> PV VG Fmt Attr PSize PFree
> /dev/sdb vgTEST lvm2 a-- 10.00g 9.90g
> 10:~ # vgs
> VG #PV #LV #SN Attr VSize VFree
> vgTEST 1 1 0 wz--n- 10.00g 9.90g
> 10:~ # lvs
> LV VG Attr LSize Pool Origin Data% Meta% Move Log
> Cpy%Sync Convert
> lvTEST vgTEST -wi-a----- 100.00m
>
> 10:~ # ls -l /dev/vgTEST
> total 0
> lrwxrwxrwx 1 root root 7 Jan 27 00:05 lvTEST -> ../dm-0
> 10:~ # ls -l /dev/lvm/mapper
> total 0
> crw------- 1 root root 10, 236 Jan 27 00:05 control
> 10:~ # ls -l /dev/mapper
> total 0
> crw------- 1 root root 10, 236 Jan 27 00:05 control
> lrwxrwxrwx 1 root root 7 Jan 27 00:05 vgTEST-lvTEST -> ../dm-0
>
> _______________________________________________
> linux-lvm mailing list
> linux-lvm at redhat.com
> https://www.redhat.com/mailman/listinfo/linux-lvm
> read the LVM HOW-TO at http://tldp.org/HOWTO/LVM-HOWTO/
>
--
Peter
More information about the linux-lvm
mailing list