Mount a disk image containing LVM
If you have an image with standard partitions, you can mount any partition as a loopback device using the offset given by fdisk:
user@machine:/home/user# fdisk -l disk.img Disk disk.img: 750.2 GB, 750156374016 bytes 255 heads, 63 sectors/track, 91201 cylinders, total 1465149168 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00073e63 Device Boot Start End Blocks Id System /dev/sda1 * 2048 204802047 102400000 7 HPFS/NTFS/exFAT /dev/sda2 204804094 1465147391 630171649 5 Extended /dev/sda5 204804096 1457340415 626268160 83 Linux /dev/sda6 1457342464 1465147391 3902464 82 Linux swap / Solaris
The sda5 partition starts on sector 204804096. We know from fdisk -l that one sector is made of 512 bytes, so we need to multiply that number: 204804096 * 512 = 104859697152
Now we can mount the partition using the specified offset (in bytes):
mount -o loop,offset=104859697152 -t ext4 /dev/sda5 /mnt
LVM
However, if there is LVM inside that image, the above described procedure won’t work. In this case, we need to use the whole image as a loop device first:
user@machine:/home/user# fdisk -l lvmdisk.raw Disk lvmdisk.raw: 250.1 GB, 250058268160 bytes 255 heads, 63 sectors/track, 30401 cylinders, total 488395055 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x000bad8e Device Boot Start End Blocks Id System /home/user/lvmdisk.raw1 * 63 208844 104391 83 Linux /home/user/lvmdisk.raw2 208845 488392064 244091610 8e Linux LVM
losetup is used to set up and control the loop device on /dev/loop0, while kpartx maps the partitions of the image and maps them as virtual block devices in /dev/mapper.
losetup /dev/loop0 lvmdisk.raw kpartx -a /dev/loop0
We’ll now be able to see the partitions in /dev/mapper/ as /dev/mapper/loop0p1 and /dev/mapper/loop0p2. Now, we can work with volume groups as usual
vgscan vgchange -ay VolGroup00 mount -t ext4 /dev/mapper/VolGroup00-LogVol00 /mnt