I'm trying to mount an LVM2 volume in Linux, but all the instructions I see online say to mount the Volume Group, such as:
mkdir -p /mnt/VolGroup00/LogVol00but I don't know how to figure out the name of it. I see the drive in Palimpsest, and that's all the info I know.
27 Answers
Here are the steps I used to accessing a LVM from Fedora 17, it should work with most forms of Linux.
Boot Fedora 17.
Make sure lvm2 is installed:
$ sudo yum install lvm2Load the necessary module(s) as root:
$ sudo modprobe dm-modScan your system for LVM volumes and identify in the output the volume group name that has your Fedora volume (mine proved to be VolGroup00):
$ sudo vgscanActivate the volume:
$ sudo vgchange -ay VolGroup00Find the logical volume that has your Fedora root filesystem (mine proved to be LogVol00):
$ sudo lvsCreate a mount point for that volume:
$ sudo mkdir /mnt/fcrootMount it:
$ sudo mount /dev/VolGroup00/LogVol00 /mnt/fcroot -o ro,userYou're done, navigate to /mnt/fcroot and copy the files and paste somewhere else.
6Faced this problem a while ago, I'd posted this on my blog
List out all your partitions, type
linux:/ # lvmdiskscanYou will get a list of something like this
File descriptor 3 left open
File descriptor 4 left open
/dev/dm-0 [ 9.67 GB]
/dev/sda1 [ 78.41 MB]
/dev/dm-1 [ 6.44 GB]
/dev/sda2 [ 115.52 GB]
/dev/dm-2 [ 2.00 GB]
/dev/sda3 [ 18.11 GB] LVM physical volume
/dev/sda5 [ 15.33 GB]Make a note of /dev/dm-x, those are the devices which correspond to the LVM partitions. Also do note the sizes.
Next, type lvdisplay to show a detailed list of all the logical volumes available.
lvdisplay |more
LV Name /dev/system/home
VG Name system
LV UUID 1QP9XM-vlKi-umNO-CXvV-TnZN-RCLk-e1FDIr
LV Write Access read/write
LV Status available
# open 1
LV Size 9.67 GB
Current LE 2475
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0
— Logical volume —
LV Name /dev/system/root
VG Name system
LV UUID D1fKUJ-uU1C-jlVB-4imh-rrgy-FQu0-TC2Ssm
LV Write Access read/write
LV Status available
# open 1
LV Size 6.44 GB
Current LE 1649
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:1
— Logical volume —
LV Name /dev/system/swap
VG Name system
LV UUID w5LqIb-xvcr-Xsbk-y3wg-lT3i-LqdN-GFK8Mi
LV Write Access read/write
LV Status available
# open 0
LV Size 2.00 GB
Current LE 512
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:2Now from the above set of data, we can deduce that my /home partition, of size 9.67 GB is available as LV group /dev/system/home on /dev/dm-0
Now that we know where the partition is available, we can proceed with the mounting using the mount command, as
mount /dev/dm-0 /homeAnd there you go, your LV partition is mounted!
You can get a list of volume names by running lvscan.
The output will look like
/dev/VG1/LV1
/dev/VG1/LV2
/dev/VG2/LV3i.e. with the volume group names in the middle and logical volumes at the end. See if any of them correspond to the information in Palimpsest Disk Utility.
Also, compare to the list of disks already mounted (mount), and see which one isn't there. It might look a little different, e.g.:
$ mount
/dev/mapper/VG1-LV1 is mounted on /usr
/dev/mapper/VG1-LV2 is mounted on /homeYou can see where the volume group and logical volume appear at the end.
Once you've found the right one, mount it in the usual way:
mount /dev/VG2/LV3 /mnt I find guestmount(1) the easiest way.
# guestmount -m /invalid/path -a /path/to/block/device /mnt/
guestmount: '/invalid/path' could not be mounted.
guestmount: Did you mean to mount one of these filesystems?
(...)
guestmount: /dev/vg0/root (ext4)
(...)
# guestmount -m /dev/vg0/root -a /path/to/block/device /mntSee also .
Package guestmount on ubuntu, libguestfs-tools on RHEL and derivates.
Here's another way to mount it I found handy:
DISK=mydisk
lvdisplay | grep $DISK | grep "LV Path" | sed 's/.* //g'
LV_DISK=$(lvdisplay | grep $DISK | grep "LV Path" | sed 's/.* //g')
fdisk -l $LV_DISK
fdisk -lu $LV_DISK | sed -n '/lv[0-9]p[1-3]/ p' | grep p1 | awk '{print $2}'
OFFSET=$(fdisk -lu $LV_DISK | sed -n '/lv[0-9]p[1-3]/ p' | grep p1 | awk '{print $2}')
OFFSET=$((OFFSET * 512))
MOUNT=/mnt/$DISK
mkdir -p $MOUNT
mount -o loop,offset=$OFFSET $LV_DISK $MOUNT you can view the name of the lvm using the command
lsblkthen you can find that name under /dev/mapper/ dierctory, for example i can mount my old home directory by:
mount /dev/mapper/rhel-home /mnt This can be done from UI with KVPM.
Simply select the group you want to mount and click the "mount fs" option.