Mounting logical volumes from an external hard drive.

Introduction - why this is different to normal mounting of drives.

The hard drive on my laptop recently started to make strange noises so as a precaution I ordered a new drive to replace the old.

The install went fine but when I used my IDE to USB connector to mount my old drive and copy data off it before it completely failed I was unable to see any of the Linux partitions except for the /boot partition.

When connected Gnome would mount the Windows NTFS and FAT partitions fine along with the boot partition but there was no Linux to be seen.

I discovered that this is because being a Fedora user the default for the Anaconda installer is to create Logical Volumes, which I was aware of, but it seems these partitions cannot just be mounted like normal physical ext3 partitions.

Fortunately the solution is very simple once known.

Connect the drive

First plug in the drive as normal and let Gnome/KDE mount the partitions it can see. My USB connected disk gets mounted to /media and is device /dev/sdb.

$ cd /media
$ ls -l
total 14
drwxr-xr-x  4 root    	root 1024 2007-12-05 07:10 _boot
drwxr-xr-x 11 bobpeers 	root 4096 1970-01-01 01:00 DATA
drwxrwxrwx  1 root    	root 8192 2007-10-19 23:00 SYSTEM

Here you can see the 3 mounted partitions

So no Linux partitions visible. To see what's actually on the disk we can use fdisk as root.

# /sbin/fdisk -l /dev/sdb

Disk /dev/sdb: 40.0 GB, 40007761920 bytes
255 heads, 63 sectors/track, 4864 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x86c986c9

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   *           1        1567    12586896    7  HPFS/NTFS
/dev/sdb2            1568        2220     5245222+   c  W95 FAT32 (LBA)
/dev/sdb3            2221        2245      200812+  83  Linux
/dev/sdb4            2246        4864    21037117+   5  Extended
/dev/sdb5            2246        4864    21037086   8e  Linux LVM

So we see that /dev/sda1 through 3 are mounted but /dev/sdb4 and 5 are the Logical Volume holding the Linux data I need to mount and copy to the new drive.

Scan the drive with pvscan

To see what logical volumes are available use the following command as root. The man page for pvscan says 'pvscan scans all supported LVM block devices in the system for physical volumes'.

# /sbin/pvscan
  PV /dev/sdb5   VG Fedora_volume   lvm2 [20.03 GB / 0    free]
  PV /dev/sda5   VG Linux_volume    lvm2 [44.81 GB / 32.00 MB free]
  Total: 2 [64.84 GB] / in use: 2 [64.84 GB] / in no VG: 0 [0   ]

Here we can now see 2 logical volume groups, the first (Fedora_volume) is the one we want on /dev/sdb5 (the USB drive) while the second (Linux_volume) is the one on my new internal drive, /dev/sda5

Scan the drive with lvscan

We can also use lvscan to scan for logical volumes and to give more detail.

# /usr/sbin/lvscan 
  inactive          '/dev/Fedora_volume/LogVol00' [14.03 GB] inherit
  inactive          '/dev/Fedora_volume/LogVol02' [5.00 GB] inherit
  inactive          '/dev/Fedora_volume/LogVol01' [1.00 GB] inherit
  ACTIVE            '/dev/Linux_volume/LogVol00' [33.78 GB] inherit
  ACTIVE            '/dev/Linux_volume/LogVol02' [10.00 GB] inherit
  ACTIVE            '/dev/Linux_volume/LogVol01' [1.00 GB] inherit

The reason why I can't see the USB logical volume is now clear, it's marked as inactive. Here we see 3 logical volumes in the Fedora_volume volume group. These are the 3 partitions I created: 1GB swap, 5GB Home and 14GB root.

Activate the Volume Group with lvchange

To activate the volume group is very simple.

# /usr/sbin/lvchange -a y /dev/Fedora_volume

Now the volume group is active I can create mount points and mount each partition within the volume group.

Mount the partitions as normal

# mkdir /mnt/root
# mkdir /mnt/home

Note that I didn't create a mount point for /dev/Fedora_volume/LogVol01 as this is my swap partition.

To mount the volumes is now simple.

# mount -t ext3 /dev/Fedora_volume/LogVol00 /mnt/root
# mount -t ext3 /dev/Fedora_volume/LogVol02 /mnt/home

Now we can access all our data contained on the LV's. When finished just unmount (umount) the partitions and mark the Volume Group as inactive.

# /usr/sbin/lvchange -a n /dev/Fedora_volume