linux-lvm.redhat.com archive mirror
 help / color / mirror / Atom feed
* [linux-lvm] Option devices/dir different from /dev does not work
@ 2019-01-26 21:14 Andrei Borzenkov
  2019-01-28 10:01 ` Zdenek Kabelac
  2019-01-28 10:29 ` Peter Rajnoha
  0 siblings, 2 replies; 3+ messages in thread
From: Andrei Borzenkov @ 2019-01-26 21:14 UTC (permalink / raw)
  To: linux-lvm

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.

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

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [linux-lvm] Option devices/dir different from /dev does not work
  2019-01-26 21:14 [linux-lvm] Option devices/dir different from /dev does not work Andrei Borzenkov
@ 2019-01-28 10:01 ` Zdenek Kabelac
  2019-01-28 10:29 ` Peter Rajnoha
  1 sibling, 0 replies; 3+ messages in thread
From: Zdenek Kabelac @ 2019-01-28 10:01 UTC (permalink / raw)
  To: LVM general discussion and development, Andrei Borzenkov

Dne 26. 01. 19 v 22:14 Andrei Borzenkov napsal(a):
> 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.

That is a very HARD task you want to achieve - I'd probably better advice you 
to avoid doing this.

First - please start out with reasoning.

1.
Normally it really DOES NOT matter where device node is - it's in /dev and you 
can create as my subdirs there - it will not help anything - as any app can 
still find the node be there.

2.
You CANNOT change where /dev/dm-XXX node will appear - it's made by kernel 
just one any DM device is created. Udev ONLY controls it's symlink.

3.
With LVM - we advice users to use  /dev/vg/lv  links - although you will find 
out there are way more of them in your /dev  pointing to final /dev/dm node - 
so you SHOULD be using these symlinks for passing devices to VxVM.

4.
If all your work is because you want to avoid LVM commands to access device
you've created and passed to your VMs - you have number of way  easier 
solutions - personally I'd recommend to use FILTERS (in lvm.conf). Just 
'accept' devices which are possible PVs for your hosting machine (be it 
/dev/sd* or whatever else you have) and reject any other device from scanning 
- this will greatly improve performance, avoids various scanning troubles and 
also makes your VMs completely separated.

In the upstream (unstable git HEAD) we have something named 'scan_lvs' in 
lvm.conf  - where you can globally disable scanning of any activated LV  (DM 
device with LVM- UUID prefix) - but it's also not a perfect solution in case 
you would need to use same actived devices locally and some others not.


Regards

Zdenek

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [linux-lvm] Option devices/dir different from /dev does not work
  2019-01-26 21:14 [linux-lvm] Option devices/dir different from /dev does not work Andrei Borzenkov
  2019-01-28 10:01 ` Zdenek Kabelac
@ 2019-01-28 10:29 ` Peter Rajnoha
  1 sibling, 0 replies; 3+ messages in thread
From: Peter Rajnoha @ 2019-01-28 10:29 UTC (permalink / raw)
  To: LVM general discussion and development, Andrei Borzenkov

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@redhat.com
> https://www.redhat.com/mailman/listinfo/linux-lvm
> read the LVM HOW-TO at http://tldp.org/HOWTO/LVM-HOWTO/
> 


-- 
Peter

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2019-01-28 10:29 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-01-26 21:14 [linux-lvm] Option devices/dir different from /dev does not work Andrei Borzenkov
2019-01-28 10:01 ` Zdenek Kabelac
2019-01-28 10:29 ` Peter Rajnoha

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).