Migrieren von OpenVZ Containern nach KVM

Migration

Natürlich werden Root-Rechte benötigt!

  1. OpenVZ Container starten und mingetty installieren:
    aptitude install mingetty
  2. Terminals einrichten:
    /etc/inittab
    1:2345:respawn:/sbin/mingetty tty1
    2:2345:respawn:/sbin/mingetty tty2
    3:2345:respawn:/sbin/mingetty tty3
    4:2345:respawn:/sbin/mingetty tty4
    5:2345:respawn:/sbin/mingetty tty5
    6:2345:respawn:/sbin/mingetty tty6

    Hinweis: für andere Distributionen siehe Fixes.

  3. KVM mit dem selben Betriebssystem aufsetzen, wie es der OpenVZ Container hat.
  4. Nach erfolgreicher Installation KVM herunterfahren.
  5. Virtuelle Festplatte der KVM auf dem Hostsystem mounten:
    1. losetup -f

      gibt z.B. /dev/loop1 aus. Damit wird jetzt weiter gearbeitet.

    2. losetup /dev/loop1 /var/lib/libvirt/images/DICE.img

      bindet das KVM Image an das freie Loopback-Device.

    3. kpartx -av /dev/loop1

      ermittlet und mappt die enthaltenen Partitionen.

    4. mkdir /mnt/vmimage

      erstellt einen neuen Mount-Point.

    5. mount /dev/mapper/loop1p1 /mnt/vmimage/

      bindet das Image in den Dateisystembaum ein. Es wird hier angenommen, dass sich das komplette System auf der ersten Partition befindet.

  6. root auf dem KVM-Hostsystem den SSH-Login erlauben.
  7. DICE herunterfahren und in den Rescue-Modus versetzen.
  8. Auf dem Rescue-System jetzt mit
    chroot /mnt/dice/

    in das DICE-System wechseln.

  9. rsync --exclude=/etc/fstab --exclude=/boot --exclude=/proc --exclude=/lib/modules/ --exclude=/sys \
    -e ssh --numeric-ids -avpogtStlHz / root@KVM_HOST_SYSTEM:/mnt/vmimage/

    startet den Umzug.

  10. Nun das Image aushängen:
    1. umount /mnt/vmimage

      Hinweis: Die VM ist auch schon nach diesem Schritt wieder bootfähig.

    2. kpartx -dv /dev/loop1
    3. losetup -d /dev/loop1
  11. KVM neu starten.
  12. Fertig.

Tests

Template Status Anmerkungen
debian-6.0-amd64-minimal_carrot Siehe Fixes
ubuntu-10.04-amd64-carrot Siehe Fixes
debian-5.0.7-amd64-minimal_carrot
gentoo-current-amd64-hardened-carrot
centos-6-x86_64 Siehe Fixes

Migration erfolgreich Migration missglückt Muss noch getestet werden

Fixes

Debian

  • Terminal auf Deutsch umstellen:
    aptitude install console-data

    und den Anweisungen folgen.

Ubuntu

  • Upstart-Config für mingetty:
    /etc/init/tty.conf
    start on stopped rc2
    start on stopped rc3
    start on stopped rc4
    stop on runlevel 0
    stop on runlevel 1
    stop on runlevel 6
     
    respawn
     
    exec /sbin/mingetty tty1

CentOS

  • Auf dem Host-System die Root-Partition via LVM einbinden:
    vgscan
    lvs
    mount /dev/mapper/VolGroup-lv_root /mnt/vmimage/
  • SELinux verhindert den Login nach dem Umzug, darum muss es neu initialisiert werden. Dazu ins gemountete Image wechseln und
    chroot /mnt/vmimage
    touch /.autorelabel

    ausführen, danach neu starten.

Probleme

Keine…

Quellen

Kommentare