LVM Tricks with a Little Help from kpartx
Or perhaps it should be: how to retrieve an lvm partition from an xvda partition within an lvm partition.
Quite some time ago, I built a CentOS Xen DomU using lvm within an xvda partition. And the whole VM was hosted in yet another lvm partition. While lvm is easy to manage and physical backup and restore is straightforward, accessing the contents of the embedded partition without the VM running is tricky. Luckily, device mapping in Linux is very powerful and can be used recursively (not quite like Haskell or OCaml, but impressive none the less).
This recipe can be applied multiple times to dig deeper into your embedded file systems.
Add the device mappings (assuming the device created is /dev/xvda ):
kpartx -a /dev/VolGroupXX/LogVolxx
Kpartx is amazing as it will scan all your lvm volumes and create device mapper entries, which are required for the lvm tools to do their thing.
Scan for physical volumes:
pvscan
The above should tell you the physical volumes with LVM partitions (the PV column) along with the volume groups on it (the VG column). Activate the volume group:
vgchange -ay {VG name from previous step}
If you have additional embedded LVM, run vgscan to discover these, and vgchange -ay as required. You may need to repeat the kpartx and pvscan too.
When you eventually get to the volume required, mount it with :
mount /dev/{VG name}/{LV name} /mnt/xxx ;
The folks at Citrix have more detail here, especially if you’re running Xen.
Recent Comments