Migrace z Xenu na KVM

Z Wiki UnArt Slavičín
Skočit na navigaciSkočit na vyhledávání

Migration of VMs between Xen and KVM - the simple way

I am writing this in English because I spent one whole day by googling and I found no simple howto's. So I spent another day by frustrating experiments with no results, only to find very simple way which made me happy.

What we want to achieve

Migration of VMs between two Xen and KVM machines.

The migration does not have to be completely online, but it must be quick and easy.

The Xen is Debian 5 Lenny, KVM is Ubuntu 10.04 (~Debian Squeeze).

Why I need this

KVM is cool, but if you have older HW without the VT-d support = anything older than the i5500 chipset, then KVM can't do PCI or USB passtrhrough. Xen supports this by special SW drivers. And I need PCI and USB passthrough.

How to do it

Klímova crazy migrace z KVM na XEN

  • Pomocí příkazu scp si překopírujeme obraz odpojeného virtuálu ze serveru s Xenem do server s KVM (pokud vám neběží jako nám na stejné mašině).
scp root@kraken.slfree.czf:/store/xen/domains/vpn/disk.img /store/disk.img
  • Nyní si na vytvoříme na KVM nový virtuál, kterému přiřadíme nový prázdný VIRTIO disk o velikosti malinko větší než je velikost zkopírovaného obrazu (+ ještě něco pro swap). Dále mu pak přidáme IDE disk, což bude samotný zkopírovaný obraz. Nakonec je ještě potřeba tomuto virtuálu nastavit bootování z CD-ROM, kterému jako obraz dáme některou LiveCD distribuci (já použil Ubuntu 10.10). Je vhodné si nastavit síť pro přístup do Internetu.
  • Po nabootování virtuálu do LiveCD spustíme terminál a přihlasíme se jako root (v Ubuntu otevřít gnome-terminal a napsat sudo -s).
  • Pomocí programů gparted nebo fdisk na VIRTIO disku vytvoříme novou tabulku oddílu a poté vytvoříme 2 oddíly - jeden malý pro boot (já dal 236MB ext2, nezapomenout nastavit příznak pro bootování!) a druhý nezformátovaný pro LVM.
  • Doinstalujeme lvm, vytvoříme výchozí VG a LV pro systém a swap.
apt-get install lvm2
pvcreate /dev/vda2
vgcreate rootg /dev/vda2
lvcreate -L velikost pro root -n root rootvg
lvcreate -L velikost pro swap -n swap rootvg
  • Vytvoříme swap.
mkswap -f /dev/mapper/rootvg-swap
  • Překopírujeme obraz původní virtuálu:
dd if=/dev/sda of=/dev/mapper/rootvg-root
  • Zvětšíme souborový systém do konce oddílu:
resize2fs /dev/mapper/rootvg-root
  • Připojíme si oddíly a do systému se chrootnume:
mount /dev/mapper/rootvg-root /mnt
mount /dev/vda1 /mnt/boot
mount -t proc none /mnt/proc
mount -t sysfs none /mnt/sys
mount -o bind /dev /mnt/dev
chroot /mnt /bin/bash
  • Doinstalujeme lvm, jádro a grub2.
apt-get install lvm2 linux-image-2.6.26-2-amd64 grub2
  • Pouze pro Debian Lenny: Právě tady nastává u lennyho problém. Možná se vám stalo, že se vám jádro nepodařilo zkonfigurovat. Na vině je bug v dmsetupu. Opravíme ho následujícím způsobem:
rm /dev/mapper/rootvg-root
cp -R /dev/dm-0 /dev/mapper/rootvg-root