With this post, I want to describe how you can mount partitions, nested within LVM volumes. A possible use-case includes file based backup of virtual machines running on LVM volumes.
In the example below, I use a Windows Server 2008 system partition (NTFS). The Windows server is running on a Debian KVM system.
You will need:
- kpartx
- (In this exampe also ntfs-3g)
Lets get started – first some information about the LVM setup:
root@SERVER:/# lvdisplay
--- Logical volume ---
LV Name /dev/lvm/windoze2k8
VG Name lvm
LV UUID 836UYu-lmuT-qCUg-2lRx-QNgZ-COf7-h6NUH6
LV Write Access read/write
LV Status available
# open 0
LV Size 19.53 GiB
Current LE 5000
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 254:1
The partition table of our LVM volume:
root@SERVER:/# fdisk -l /dev/lvm/windoze2k8
Disk /dev/lvm/windoze2k8: 21.0 GB, 20971520000 bytes
255 heads, 63 sectors/track, 2549 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x1a13ce21
Device Boot Start End Blocks Id System
/dev/lvm/windoze2k81 * 1 2550 20477952 7 HPFS/NTFS
Now, lets move on to the the actual doing:
root@SERVER:~# kpartx -a /dev/lvm/windoze2k8
root@SERVER:~# mkdir /mnt/lvm-windoze2k81 && mount /dev/mapper/lvm-windoze2k81 /mnt/lvm-windoze2k81
Et voila:
root@SERVER:~# ls /mnt/lvm-windoze2k81
autoexec.bat bootmgr config.sys hiberfil.sys PerfLogs Program Files System Volume Information Windows
Boot BOOTSECT.BAK Documents and Settings pagefile.sys ProgramData $RECYCLE.BIN Users
To remove the mapping, do the following:
root@SERVER:/# umount /mnt/lvm-windoze2k81
root@SERVER:/# kpartx -d /dev/lvm/windoze2k8
Note
If you want to use such a setup to do file based backup of running virtual machines, it is wise to create a LVM snapshot first and applying kpartx on the snapshot device.