Moving a virtualbox to real hardware part II

After last weekend, the raw hard disk image of the virtual host has been successfully extracted. Now we will use this image, to try and find the PV’s on the disk so that we can extract those and import them back.

1) Look for volumes on the virtual disk

[root@hardware /vbox/HDD]# fdisk -l -u virtual.bak.vdi
last_lba(): I don't know how to handle files with mode 8180
You must set cylinders.
You can do this from the extra functions menu.

Disk virtual.bak.vdi: 0 MB, 0 bytes
255 heads, 63 sectors/track, 0 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

         Device Boot      Start         End      Blocks   Id  System
./virtual.bak.vdi1              63      224909      112423+  83  Linux
./virtual.bak.vdi2          224910     4433939     2104515   82  Linux swap / Solaris
./virtual.bak.vdi3         4433940    41929649    18747855   8e  Linux LVM
Partition 3 has different physical/logical endings:
     phys=(1023, 254, 63) logical=(2609, 254, 63)

2) Now we can extract the volume using DD, note that the first partition is not an LVM volume and the second partition is the swap file. So we need the 3d partition.

dd if=virtual.bak.vdi of=virtual.pv skip=4433939 count= 37495710 

Note: Numbers in skip and count are starting location of lvm and lenght of lvm.
This information is gathered from fdisk.
The start of the partition is the skip argument, the Blocks*2 is the count argument.

Note2: Make SURE the bs (block size) is the default fdisk output  ( eg. Units are in 512-byte sectors )
The sector-size determines the multiplication factor of the blocks. If the Unit size =1024 bytes then
you do not need to multiply by 2.

4) check for loopback devices on the system

[root@hardware /vbox/HDD]# losetup -f
/dev/loop0

Note: If LVM probably has a lot of LVs in it you will quickly run
out of the 8 loop devices linux allows by default. If using GRUB, you
must pass a max_loop=X argument to set the number of loop devices
available on boot. LILO probably has something similar.

Note2: losetup -d [ to unmount the device ]

5) Map loop device to Image

losetup /dev/loop0  virtual.pv
6) Scan for new physical volumes
[root@hardware /vbox/HDD]# pvscan
  PV /dev/loop0   VG virtual_rootvg   lvm2 [17.88 GB / 2.88 GB free]
  Total: 1 [17.88 GB] / in use: 1 [17.88 GB] / in no VG: 0 [0   ]

If you get an error like this one below:

Note: WARNING: Duplicate VG name VolGroup00: gKOBnM-SdmK-V3SO-fI1M-Twlt-tmr6-36IoBs (created here) takes precedence over FXHljU-CSVg-zSRX-snZ2-KHxA-S5UD-3YxJYg

That means that you have 2 pv’s belonging to a different volume group, but with the same name.

The solution is easy, just rename the virtual_volumegroup by identifying it with its VG-ID.

6) export VG


[root@host system_disk]# vgexport virtual_rootvg
  Volume group "virtual_rootvg" successfully exported

7) Import VG


[root@host system_disk]# vgimport virtual_rootvg
  Volume group "virtual_rootvg" successfully imported

8 ) Make volume active


[root@hardware /vbox/HDD]# vgchange -ay virtual_rootvg
  1 logical volume(s) in volume group "virtual_rootvg" now active

9) Try mounting the volume

[root@hardware /vbox/HDD]# mount /dev/virtual_rootvg/lv_root /mnt/virtdisk

 

[root@hardware /vbox/HDD]# ls -l /mnt/virtdisk/
total 204
drwxr-xr-x  2 root root  4096 Sep 25 04:02 bin
drwxr-xr-x  2 root root  4096 Sep 10 07:00 boot
drwxr-xr-x  4 root root  4096 Sep 10 07:00 dev
drwxr-xr-x 96 root root 12288 Dec  2 04:02 etc
drwxr-xr-x 79 root root  4096 Oct 28 00:00 home
drwxr-xr-x 12 root root  4096 Sep 11 04:06 lib
drwxr-xr-x  8 root root  4096 Sep 11 04:06 lib64
drwx------  2 root root 16384 Sep 10 06:58 lost+found
drwxr-xr-x  2 root root  4096 Sep 10 14:37 lsst
drwxr-xr-x  2 root root  4096 Oct  6 10:40 media
dr-xr-xr-x  2 root root  4096 Sep 10 13:05 misc
drwxr-xr-x  2 root root  4096 Oct 10  2006 mnt
dr-xr-xr-x  2 root root  4096 Sep 10 13:05 net
drwxr-xr-x  2 root root  4096 Oct 10  2006 opt
drwxr-xr-x  2 root root  4096 Sep 10 07:00 proc
drwxr-x--- 16 root root  4096 Dec  2 14:59 root
drwxr-xr-x  2 root root 12288 Sep 11 04:07 sbin
drwxr-xr-x  2 root root  4096 Sep 10 14:02 scr
drwxr-xr-x  2 root root  4096 Sep 10 07:00 selinux
drwxr-xr-x  3 root root  4096 Sep 10 14:38 share
drwxr-xr-x  2 root root  4096 Oct 10  2006 srv
drwxr-xr-x  2 root root  4096 Sep 10 07:00 sys
drwxrwxrwt 10 root root  4096 Dec  2 15:41 tmp
drwxr-xr-x 15 root root  4096 Sep 10 07:03 usr
drwxr-xr-x 24 root root  4096 Sep 10 07:08 var

Now, I can unmount the volume, etc. etc. etc.:

[root@hardware /vbox/HDD]# umount /mnt/virtdisk
[root@hardware /vbox/HDD]# vgchange -a n
[root@hardware /vbox/HDD]# losetup -d /dev/loop0

Finally, I am sure that the PV is healthy and I can move it to the backup host.

Next step, boot from Live-CD.