Nethence Documentation Lab Webmail Your IP BBDock  

Those documents are obsolete, please use the Nethence Documentation instead.


P2V for XEN
Here's a few ways to make a physical to virtual convertion for XEN :
- Ghost-like disk image (HVM & para)
- Cold system image (para)
- Hot system image (para)
Ghost-like disk image
See the Ghost-like rescue documentation (, but make ghosts against partitions (sda1), not the whole disk (sda).
Cold system image
To create a tared up system image, boot the machine with some NFS-client capable live CD (e.g. Gentoo installer) and proceed,
mkdir -p /mnt/migrate
mkdir -p /mnt/nfs
mount /dev/sda3 /mnt/migrate
mount /dev/sda1 /mnt/migrate/boot
/etc/init.d/portmap start
mount -t nfs dom0host:/data/guestX /mnt/nfs
cd /mnt/migrate
cat > /exclude.list << EOF
tar czp -X exclude.list -f /mnt/nfs/migrate.tar.gz .
Note. don't use '-P' as we may extract the archive inside vm's virtual disk directly from the dom0.
Note. '/dev' also may be exluced
Hot system image
If possible switch to init 1,
telinit 1
at least, stop the databases if there are some. And if there's Oracle, make sure the databases are stored on filesystem, nor RAW nor ASM. And proceed,
mkdir -p /mnt/nfs
/etc/init.d/portmap start
mount -t nfs dom0host:/data/guestX /mnt/nfs
cat > /exclude.txt << EOF
cd /
tar czp -X /exclude.txt -f /mnt/nfs/migrate.tar.gz .
Note. don't use '-P' as we may extract the archive inside vm's virtual disk directly from the dom0.
Note. '/dev' also may be exluced
Deploy the system image and customize the paravirtualized guest
On dom0, prepare the virtual partitions and swap,
cd /data/guestX
dd if=/dev/zero of=guestX.ext3 bs=1024k count=1 seek=10000
dd if=/dev/zero of=guestX.swap bs=1024k count=1024
mkfs.ext3 -F vmname.ext3
mkswap vmname.swap
note. no sparse for swap
note. 'mkswap -L' for swap label
Mount the virtual partitions and extract the archive,
mkdir tmp
mount -o loop guestX.ext3 tmp
tar xzpf migrate.tar.gz -C tmp
Prepare the kernel and initrd. If it's the same Redhat major release,
cp /boot/vmlinuz-`uname -r` vmlinuz
cp /boot/initrd-`uname -r`.img initrd.img
cp -R /lib/modules/`uname -r` tmp/lib/modules
if it's a different Redhat major release,
chroot tmp /bin/bash
#rpm -ivh ...
#yum install ...
otherwise you may get working kernels from Xensource directly (IIRC, no xenblk though),
chroot tmp /bin/bash
cd root
tar xvzf xen-*
cd dist
Configure the mount points,
vi tmp/etc/fstab
Disable TLS,
echo 'hwcap 0 nosegneg' > tmp/etc/
Note. on non Redhat distributions, you may have to,
#mv tmp/lib/tls tmp/lib/tls.disabled
Prepare the guest configuration,
vi guestX
name = "guest2"
memory = "256"
kernel = "/data/guest2/vmlinuz"
ramdisk = "/data/guest2/initrd.img"
disk = [ 'tap:aio:/data/guest2/guest2.disk,xvda,w' ]
vif = [ 'bridge=xenbr0' ]
vcpus = "1"
#console = "/dev/console"
Start the guest in single user mode,
vi guestX
add this,
#extra = "init=/bin/sh"
extra = "1"
start the guest,
xm cr guestX -c
update module symbols, disable unwanted services and prevent hardware clock synchronizations,
mount -n -o remount,rw /
/sbin/depmod -a
chkconfig microcode_ctl off
mv /sbin/hwclock /sbin/hwclock.dist
echo '/bin/true' > /sbin/hwclock
chmod +x /sbin/hwclock
Note. on RHEL 4.4 you need to fix "/etc/inittab" inside the guest,
1:2345:respawn:/sbin/mingetty console
Converting a VMWare image to Xen HVM

Last update: Sep 21, 2010