#!/bin/bash # Script to move a vserver from one machine to another # version 1.00 if [ ! "$1" ] then echo "Usage: move-server.sh " echo exit fi if [ ! "$2" ] then echo "Usage: move-server.sh " echo exit fi NAME=$1 DEST=$2 PARTSIZE=`lvdisplay /dev/my_volume_group/$NAME |grep "LV Size" | awk {'print $3'}` echo "Creating volume on destination server" ssh $DEST lvcreate -L ${PARTSIZE}G -n $NAME my_volume_group ssh $DEST mkfs -t ext3 /dev/my_volume_group/$NAME ssh $DEST mount -t ext3 /dev/my_volume_group/$NAME /target if [ $? != 0 ] then echo echo "Error creating volume on remote host. Cannot continue." echo exit fi echo "Beginning copy" ssh $DEST dd if=/dev/zero of=/xen/swap/${NAME}.swap bs=1k seek=256k count=1 scp /etc/xen/auto/${NAME}.cfg ${DEST}:/etc/xen/auto/ # Do initial rsync lvcreate -L 2G -s -n vmsnapshot /dev/my_volume_group/$NAME mount -t ext3 /dev/my_volume_group/vmsnapshot /mnt rsync -e ssh -avHl /mnt/ $DEST:/target/ && umount /mnt # Now save the account echo "Stopping Account..." xm shutdown $NAME sleep 20 echo "Performing final rsync..." mount -t ext3 /dev/my_volume_group/$NAME /mnt rsync -e ssh -avHl /mnt/ ${DEST}:/target/ ssh $DEST umount /target ssh $DEST xm create /etc/xen/auto/${NAME}.cfg # Cleanup commands mv /etc/xen/auto/${NAME}.cfg /etc/xen/disabled/ grep -v $NAME /etc/backup/backup.list > /etc/backup/backup.list lvremove -f /dev/my_volume_group/vmsnapshot umount /mnt sleep 5 lvremove -f /dev/my_volume_group/$NAME echo echo "Migration Complete." echo