Migration von LVM zu qemu

16 Okt 2015 Lesezeit: 4 Minuten

Es gibt viele Wege die nach Rom führen. Das gilt auch in Landschaften für virtuelle Infrastrukturen. Was einem heute noch gefallen mag, ist morgen nicht mehr praktisch.

Wie in vielen Dingen ist es bei Lösungen unter Linux nicht gegeben, dass man ein oder zwei Wege zur Auswahl hat, sondern mehrere. In vielen fällen wird geraten VMs auf LVM (Logical Volume Manager) Basis mit RAW Festplatten auszustatten. Das ist in sofern richtig, dass weniger Abstraktionsschichten auch bedeuten dass es weniger zu verwalten gibt und daher auch meist schneller ist.

Im Vergleich zu dem KVM (qemu) eigenen QCow2 Format gibt es seit jeher Messungen, Messungen, Diskussionen und Vergleiche was denn nun das beste sei. Ich denke, das ab einem gewissen Grad an vorhandener Grundleistungen die Zahlen kaum noch das reale Empfinden bei der Arbeit mit den Maschinen widerspiegeln - gesonderte Ausnahmen selbstverständlich aussen vor.

Allerdings hat man mit Images auf Dateibasis den Vorteil der Flexibilität auf seiner Seite. Mitnehmen, verschieben, zwischen den Maschinen migrieren - alles langweilig, weil einfach.

Wenn man nun diesen Weg gehen möchte, muss das, was bisher als logical  Volume vorlag in ein Image umgewandelt werden. Dazu habe ich mir dieses einfach Skript überlegt und getestet. Wichtig ist, dass alle umzuwandelnden Disks in einer Volumegroup liegen. Hat man sich für eine Namenskonventions der Laufwerke entschieden kann diese nachträglich eingebaut werden. Will man die Dateien und Laufwerke manuell angeben kann das Skript ebenfalls sehr einfach angepasst werden.

 

#!/bin/bash
VGNAME=/dev/name-der-volumegroup
STORE=/mnt/
CONVFORMAT=qcow2
 for i in $(ls /dev/$VGNAME/);
do
qemu-img convert -p -O $CONVFORMAT VGNAME/$i $STORE/$i.qcow2;
done

 

Sobald alles durchgelaufen ist, hat man seine Images unterhalb des Verzeichnisses, dass in der Variablen $STORE angegeben ist. 

Natürlich kann man noch 1000 Features einbauen. Für mich hat es allerdings gereicht um eine Umgebung für den Umzug vorbereiten zu können.

Wichtig: Nach der Umwandlung die Konfiguration der virtuellen Maschine anpassen, sodass die neue Festplatte genutzt wird. Das passiert üblicher Weise in der Datei /etc/libvirt/qemu/VMNAME.xml 

<disk type='file' device='disk'>
<driver name='qemu' type='qcow2' cache='none'/>
<source file='PFAD-ZUM-IMAGE.qcow2'/>


Linux KVM LVM Volume auf Qcow2 konvertieren

13 Okt 2015 Lesezeit: 2 Minuten

Wenn man seine virtuelle Infrastruktur mit KVM betreibt, so hat man es nicht leicht. Viele Möglichkeiten und eine fast besser als die andere. Perfomantes LVM RAW Device für die Festplatten gegenüber dem flexiblem QCow2 zum mitnehmen und leichten ablegen/bewegen der Images.

Im grunde genommen spielt es vermutlich kaum eine rolle welche der vielen Möglichkeiten man für sich entdeckt - die Einfachheit hat auch hier wieder eine Lösung für den Fall das man sich mittendrin anders entscheidet.

Wenn man beispielsweise seine VM von einem Debian mit LVM/RAW auf ein CentOS mit QCow2 umziehen möchte, so geht das folgendermaßen:

  1. Image der LVM VM: qemu-img convert -O qcow2 /dev/{VOLUMEGROUP}/{LVMDEVICE} /{PATH-TO-STORAGE}/{VM-NAME}.qcow2
  2. Transfer des Image auf den neuen Hypervisor: scp -v /{PATH-TO-STORAGE}/{VM-NAME}.qcow2 root@NEUERHYPERSIOR:/STORAGE/
  3. Transfer der Konfiguration auf den neuen Hypervisor: scp -v /etc/libvirt/qemu/{VM-NAME}.xml root@NEUERHYPERSIOR:/etc/libvirtd/qemu/{VM-NAME}.xml 
  4. Anpassen der Konfiguration auf dem neuen Hypervisor:
    1. <emulator>/usr/bin/kvm</emulator> ändern zu <emulator>/usr/libexec/qemu-kvm</emulator>
    2. <type arch='x86_64' machine='pc-1.1'>hvm</type> ändern zu <type arch='x86_64' machine='pc-i440fx-rhel7.0.0'>hvm</type>
       
    3. <driver name='qemu' type='raw'/> ändern zu <driver name='qemu' type='qcow2'/>
    4. <source dev='/dev/{VOLUMEGROUP}/{LVMDEVICE}'/> ändern zu <source dev='{PATH-TO-STORAGE}/{VM-NAME}.qcow2'/>

Grundsätzlich empfiehlt es sich nicht allzu viele Sonderlocken einzubauen und sich möglichst nah am Standard zu bewegen, damit die kompatibilitäten innerhalb der Systeme gegeben sind.

Happy migrating!