Migrating a 32bit server to a 64bit server as a Xen image
Posted: | 2008-02-25 19:16 |
---|---|
Tags: | Debian, Virtulization, Hosting |
I've got a 32bit intel Mac Mini server running Ubuntu Dapper Drake and I wanted to package it up as a Xen image to run on an AMD 64 server running Debian. Here's what I did.
First create the Xen image on the 64bit server:
sudo mkdir /var/xen sudo xen-create-image --debootstrap --dir=/var/xen --size=60Gb --memory=512Mb --fs=ext3 --dist=etch --hostname=vm2 --ip 78.47.146.253 --netmask 255.255.255.248 --initrd=/boot/initrd.img-2.6.18-4-xen-amd64 --kernel=/boot/vmlinuz-2.6.18-4-xen-amd64 --mirror=http://ftp.freenet.de/debian/ --swap=1024Mb
Then mount it:
sudo mkdir /mount/vm2 sudo mount -t ext3 -o loop /var/xen/domains/vm2/disk.img /mount/vm2
Then sync the filesystems:
cd /mount/vm2/ sudo rsync -aHxvzgop --progress --delete --numeric-ids root@pauli.3aims.com:/ .
Now shutdown the old server because any changes will be lost.
Create a new fstab for the copy on the 64bit server after backing up the old one:
sudo cp -p /mount/vm2/etc/fstab /mount/vm2/etc/fstab.bak
Make the new one like this:
/dev/sda1 / ext3 errors=remount-ro 0 1 proc /proc proc rw,nodev,nosuid,noexec 0 0 /dev/sda2 none swap sw 0 0
Unmount the disk and boot the image:
# You can't unmount a directory you are still in so we move out. cd .. sudo umount /mount/vm2 # You might want to skip this, it takes ages. sudo cp /var/xen/domains/vm2/disk.img /var/xen/domains/vm2/disk.img.bak sudo xm create -c /etc/xen/vm2.cfg
Check the server is up and can ping and be pinged then change the DNS settings to point all the services to the new server.
You might need the lib64 modules:
sudo mount -t ext3 -o loop /var/xen/domains/vm2/disk.img /mount/vm2 sudo cp -r /lib/modules/2.6.18-4-xen-amd64 /mount/vm2/lib/modules/ sudo ln -s /mount/vm2/lib /mount/vm2/lib64 sudo umount /mount/vm2 sudo xm create -c /etc/xen/vm2.cfg
Also need to mess with any files containing the wrong IP. Some of these commands might be handy:
sudo mount -t ext3 -o loop /var/xen/domains/vm2/disk.img /mount/vm2 sudo cp -pr /mount/vm2/etc /mount/vm2/etc.bak cd /mount/vm2/etc sudo grep -rl "212.69.38.27" . 2> /dev/null sudo perl -pi -e 's/212.69.38.27/78.47.146.253/g' /apache2/vhosts/* sudo grep -rl "212.69.38.27" . 2> /dev/null cd / sudo umount /mount/vm2 sudo xm create -c /etc/xen/vm2.cfg
Finally you'll need to update your networking configuration, here's how mine look, /etc/network/interfaces:
auto lo iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet static address 78.47.146.253 network 78.47.146.248 netmask 255.255.255.248 up route add 78.46.35.5 dev eth0 up route add default gw 78.46.35.5 down route del default gw 78.46.35.5 down route del 78.46.35.5 dev eth0
and /etc/resolve.conf:
### Hetzner Online AG installimage # nameserver config nameserver 213.133.99.99 nameserver 213.133.100.100 nameserver 213.133.98.98
I run ISPConfig too so I also need to update its database so changes it makes for bind are correct:
mysql> update dns_a set ip_adresse='78.47.146.253' where ip_adresse='212.69.38.27'; mysql> update dns_isp_dns set dns_soa_ip= '78.47.146.253' where dns_soa_ip='212.69.38.27';