*note this is a really old draft I just published so some of the stuff are old but I figure it might be useful for some people.*
1st step, get VM ready for migration
ssh to the VM you’re migrating.
yum install grub kernel-xen
ln -s /boot/grub/menu.lst /etc/grub.conf
ln -s /boot/grub/menu.lst /boot/grub/grub.conf
mv /etc/fstab /etc/fstabold
NOTE: If you want to boot up the hyperVM VM then all you have to do is put the old fstab back in and it’ll boot backup.
2nd step is to convert the LVM to img
You can use either dd to clone the partition to a disk image OR manually dd an image and use cp -rp. Suggestion is to use method 1 for all VMs that is 20 gig. If its 40 gig, method 1 is suggested if usage is over 15-20 gig otherwise method 2 is faster. Obviously for those with 80 gigs, method 2 is much faster unless the VM is using alot of space. The problem is that in some cases (IE heavily loaded platform) cp can take a substantial amount of time. Your mileage may vary.
Before you do anything MAKE SURE THE VM IS SHUTDOWN
dd if=/dev/VolGroup00/migrationtesting_rootimg of=/root/migrationtesting.img bs=4096 conv=noerror
Create a 10 gig image file, Change this according to how much space customer is using (IE a little more then what is being used)
dd if=/dev/zero of=/root/migrationtesting.img bs=1M count=1 seek=10240
mount -o loop migratingtesting.img migratingtesting
#Copy the mounted files over from hyperVM and unmount afterward
cp -rp /home/xen/migrationtesting.vm/mnt/* /root/migratingtesting
3nd step (Convert the image file to xva file)
NOTE: USE ONLY the NFS mount IF you don’t have enough local space for the converted file. I learned that the conversion takes quite a long time so I believe creating the xva file locally and then cping it to NFS is actually faster. This is probably the same reason as exporting from xenserver takes 3 times as long as importing.
grab citrix’s python file to convert. I saved it locally here just in case.
#run the file and dump the converted file to the nfs mount. -n is the name that appears when you are done importing. The converted file will not work unless --is-pv is there.
python /root/xva.py -n migratingtesting --is-pv --disk /root/migratingtesting.img --filename=/mnt/migrateNFS/tim/migratingtesting.xva
4th step (Import, resize disk, add swap, tools)
#Import VM in the platform.
xe vm-import filename=/mnt/migrateNFS/tim/migratingtesting.xva
#If method 2 is used then you'll have to resize the HD. Just increase it back to orginal size before booting it up and run
#Also add a new disk thru xencenter for the swap. It'll probably be xvdb. Run fdisk -l to make sure its xvdb
#now create and enable swap. You shouldn't need to check /etc/fstab because I've already made xvdb the swap in there.
#Double check /etc/fstab and change accordingly IF the new drive isn't xvdb.
#I notice that I wasn't able to mount the xentools. I've tarred up the xentools file for easy access (5.6 SP2)
tar -xvvf Linux.tar
Just for reference, menu.lst. Obviously the latest kernel at this time is 2.6.18-238.19.1.el5xen; if that change this file will have to be edited with the new kernel.
# grub.conf generated by anaconda
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You do not have a /boot partition. This means that
# all kernel and initrd paths are relative to /, eg.
# root (hd0,0)
# kernel /boot/vmlinuz-version ro root=/dev/sda1
# initrd /boot/initrd-version.img
title CentOS (2.6.18-194.el5)
kernel /boot/vmlinuz-2.6.18-238.19.1.el5xen ro root=/dev/xvda
/dev/xvda / ext3 defaults,usrquota,grpquota 1 1
devpts /dev/pts devpts gid=5,mode=620 0 0
tmpfs /dev/shm tmpfs defaults 0 0
proc /proc proc defaults 0 0
sysfs /sys sysfs defaults 0 0
/dev/xvdb swap swap defaults 0 0
alias eth0 xennet
alias eth1 xennet
alias scsi_hostadapter xenblk