[dm-devel] device mapper mapping across reboot

Zdenek Kabelac zkabelac at redhat.com
Mon Mar 12 09:49:02 UTC 2018


Dne 10.3.2018 v 11:47 Jitendra napsal(a):
> 
> 
>> lvm2 is exactly solving this problem as it maintains consistent
>> 'metadata' on every device - so upon reboot devices are discovered and
>> from their metadata dm tables are actived/restored.
> 
> Got it.
> 
>> So  are you looking for recreation of all the lvm2 infrastructure for
>> this relatively quite complex task ?
> Not exactly, but I want to create mapper device created before the root and
> other fs get mounted so that I can track I/Os in target.
> 
>> Or you just want to 'create' DM after kernel is booted ?
> dmsetup create with my target.
> 
>> Or you even want to pass 'DM' table line on kernel boot option line -
>> so even your boot device is a 'DM' device ?
> 
> It is something exactly, I wanna to do.
> 
> eg. I wrote a basic target as explained here
> http://techgmm.blogspot.in/p/writing-your-own-device-mapper-target.html
> 
> Now, to use this target (kernel module), I need to create mapper device as
> echo 0 <size_of_device> basic_target /Path/to/your/device 0 | dmsetup create 
> my_basic_dm_device
> 
> After creation of device as /dev/mapper/my_basic_dm_device for /dev/sda, if I 
> do I/O from
> /dev/mapper/my_basic_dm_device, then all I/O goes through basic_target before it
> hits to /dev/sda.
> 
> Now, if system is booted and disk is offline then it is very easy to create
> mapper device. But now let suppose I want to boot on
> /dev/mapper/my_basic_dm_device instead of /dev/sda1 etc. then I have to create
> mapper device even before it get switch root.
> 
> This is same case for other disks as well. So there should be a way so that I
> can use device mapper framework after reboot.

Hi

Well in general - that's why every distribution is using init ramdisk.

This ramdisk is loaded from a small /boot partition together with kernel.
As you can see - you simply always need something to boot from - you cannot 
load your kernel from "DM" device.

Once kernel is booted and 'ramdisk' is processed - you have plenty of time and 
lots of binaries there (typically with lvm2 built-in)  - so here you can 
safely activate your root volume being on dm device (even without lvm2 just by 
issuing couple 'dmsetup' commands)

I'm aware there is some  Android person who proposed some booting into DM 
without initramfs - i.e.

https://www.redhat.com/archives/linux-lvm/2017-May/msg00055.html

I'm not sure in which stage this patch is - likely still not upstream thought, 
but there was some progress around this.

Still it's worth to say -  not using ramdisk is pretty much bogus idea - you 
should always use ramdisk - otherwise you are missing lots of important tools 
i.e. for validation of filesystem  before it gets mounted - so whoever wants 
to use 'DM'  to mount  rootfs  without initramfs is doing something wrong.

Anyway - since it's still unclear what is your actually work - it's really 
hard to give you proper advice here.

Regards

Zdenek




More information about the dm-devel mailing list