Voici la procédure pour miger une VM XEN vers un hyperviseur Proxmox KVM :

Sur le serveur ProxMox, il faut récupérer un ID libre :

echo $((`ls /etc/pve/nodes/*/qemu-server | sed s/.conf//g | grep -v /etc/pve/nodes|sort -n | tail -1` +1))
  • correspond au numéro renvoyé par cette ligne de commande
  • correspond au nom de la VM

On crée le répertoire et le fichier de configuration correspondant

mkdir /VMs/images/<ID>
touch /etc/pve/qemu-server/<ID>.conf

Sur le serveur Xen

lvcreate -s -n snap-<VM> -L 20g /dev/system/<VM>-disk
qemu-img convert -O qcow2 /dev/system/snap-<VM> /var/backup/<ID>.qcow2
scp /var/backup/<VM>.qcow2 serveur_proxmox:/VMs/images/<VM>/<ID>.qcow2

Sur le serveur ProxMox, on monte l’image

modprobe nbd max_part=8
qemu-nbd -c /dev/nbd0 /VMs/images/<ID>/<VM>.qcow2
mkdir /mnt/temp
mount /dev/nbd0 /mnt/temp
mount -o bind /dev /mnt/temp/dev
mount -o bind /dev/pts /mnt/temp/dev/pts
mount -o bind /proc /mnt/temp/proc

On chroot dedans et on installe les paquets necessaires

chroot /mnt/temp
apt-get install grub2
# installer dans /dev/nbd0 quand il demande où l'installer
apt-get install -t squeeze-backports linux-image-3.2.0-.bpo.4-amd64
apt-get remove linux-image-2.6.32-5-xen-amd64

On adapte la configuration grub

vim /boot/grub/grub.cfg

Remplir comme ceci :

set root='(/dev/sda)'
linux /boot/vmlinuz-3.2.0-.bpo.4-amd64 root=/dev/sda ro console=tty0 cons

On adapte le fstab

vim /etc/fstab

Mettre juste ces deux lignes :

proc /proc proc defaults  
/dev/sda / ext3 errors=remount-ro  1

Ajouter les lignes suivantes dans /etc/inittab :

1:2345:respawn:/sbin/getty 38400 tty1
2:23:respawn:/sbin/getty 38400 tty2
3:23:respawn:/sbin/getty 38400 tty3
4:23:respawn:/sbin/getty 38400 tty4
5:23:respawn:/sbin/getty 38400 tty5
6:23:respawn:/sbin/getty 38400 ttyS0

On adapte la configuration réseau

vim /etc/network/interfaces

Mettre une autre IP ou 1.1.1.1 afin de ne pas avoir l’IP montée deux fois

On sort du chroot et on démonte l’image

exit
cd /
umount /mnt/temp/dev/pts
umount /mnt/temp/dev/
umount /mnt/temp/proc
umount /mnt/temp
qemu-nbd -d /dev/nbd0

Faire fichier de conf

vim /etc/pve/qemu-server/<ID>.conf

Remplir comme ceci :

args: -serial unix:/var/run/qemu-server/<ID>.serial,server,nowait -balloon virtio
boot: cdn
bootdisk: ide0
cores: 1
ide0: <NOM_storage>:<ID>/<VM>.qcow2
keyboard: fr
memory: 4096
balloon: 2048
name: <VM>
onboot: 1
ostype: l26
sockets: 1

On lance la VM :

qm start <ID> && minicom -D unix#/var/run/qemu-server/<ID>.serial

Pour ajouter une swap, il faut créer un disque :

cd /VMs/images/<VMID>/
qemu-img create -f qcow2 vm-<VMID>-disk-2.qcow2 2G

Sur la VM, ajouter la ligne suivante au fichier /etc/fstab

/dev/vda none swap sw 0 0

Charger les modules pour l’ajout à chaud de disque

modprobe acpiphp pci_hotplug

Sur l’hyperviseur

qm monitor <VMID>
pci_add auto storage file=/VMs/images/<VMID>/vm-<VMID>-disk-2.qcow2,if=virtio

Puis lancer les commandes suivantes pour activer la swap:

mkswap -f /dev/vda
swapon -a

Ajouter la ligne suivante dans le fichier de configuration .conf

virtio0: <Storage>/vm-<VMID>-disk-2.qcow2