Das Klonen von virtuellen Maschinen spart wiederkehrende Konfigurationsarbeiten. Die meisten freien Virtualisierungsangebote erstellen ein Duplikat zwar auf Knopfdruck oder per
Kommandozeilenbefehl, das Kopieren birgt aber auch ein paar Stolperfallen. Der
Beitrag zeigt, auf was Sie achten sollten.
Wer regelmäßig mit virtuellen Maschinen jongliert, wünscht
sich irgendwann Duplikate. So lässt sich etwa mit einer geklonten Datenbank-VM
schnell die Ausfallsicherheit erhöhen oder zeitnah ein Cluster aufbauen.
Benötigt ein Anwender eine neue VM, erhält er mit einem Klon umgehend ein
bereits vorkonfiguriertes Exemplar. Mittlerweile erzeugen die meisten
Virtualisierungsansätze einen Klon mit wenigen Mausklicks oder über einen
knackigen Kommandozeilenbefehl. Die quelloffenen Angebote VirtualBox, Libvirt
mit seinem virt-manager sowie das Gespann aus KVM und Qemu erfordern dabei
jedoch etwas Aufmerksamkeit vom Administrator.
VM für Klonvorgang vorbereiten
Jeder Klon übernimmt unverändert die Inhalte der
ursprünglichen VM. Dabei bleibt insbesondere die Netzwerkkonfiguration des
Gastbetriebssystems erhalten. Sie müssen daher unter Umständen noch weitere
Werkzeuge auf das geklonte Gastsystem loslassen und mit ihnen beispielsweise
statische IP-Adressen korrigieren. In einer Libvirt-Installation können Sie dazu
das Werkzeug "virt-sysprep" heranziehen. Im Idealfall richten Sie die VM schon
im Vorfeld so ein, dass sie sich später einfach klonen lässt – beispielsweise,
indem sie ihre IP-Adressen per DHCP einholt. Wenn Sie eine Maschine mit
kommerzieller Software klonen, müssen Sie zudem die jeweiligen Lizenzbedingungen
beachten. So dürfen Sie zum Beispiel Windows nicht mehrfach starten, sondern
benötigen zunächst entsprechend viele Lizenzen.
Während das Gastsystem unangetastet bleibt, gilt dies nicht
für die MAC-Adressen der virtuellen Netzwerkadapter. Diese können Sie entweder
von der ursprünglichen VM übernehmen oder für den Klon neu wählen. Um
Kollisionen im Netzwerk zu verhindern, schlägt die Virtualisierungssoftware
bereits neu ausgewürfelte MAC-Adressen vor. Übernehmen sollten Sie die
MAC-Adressen der ursprünglichen VM nur im Ausnahmefall, etwa wenn der Klon das
Original ersetzen soll.
Wer regelmäßig mit virtuellen Maschinen jongliert, wünscht
sich irgendwann Duplikate. So lässt sich etwa mit einer geklonten Datenbank-VM
schnell die Ausfallsicherheit erhöhen oder zeitnah ein Cluster aufbauen.
Benötigt ein Anwender eine neue VM, erhält er mit einem Klon umgehend ein
bereits vorkonfiguriertes Exemplar. Mittlerweile erzeugen die meisten
Virtualisierungsansätze einen Klon mit wenigen Mausklicks oder über einen
knackigen Kommandozeilenbefehl. Die quelloffenen Angebote VirtualBox, Libvirt
mit seinem virt-manager sowie das Gespann aus KVM und Qemu erfordern dabei
jedoch etwas Aufmerksamkeit vom Administrator.
VM für Klonvorgang vorbereiten
Jeder Klon übernimmt unverändert die Inhalte der
ursprünglichen VM. Dabei bleibt insbesondere die Netzwerkkonfiguration des
Gastbetriebssystems erhalten. Sie müssen daher unter Umständen noch weitere
Werkzeuge auf das geklonte Gastsystem loslassen und mit ihnen beispielsweise
statische IP-Adressen korrigieren. In einer Libvirt-Installation können Sie dazu
das Werkzeug "virt-sysprep" heranziehen. Im Idealfall richten Sie die VM schon
im Vorfeld so ein, dass sie sich später einfach klonen lässt – beispielsweise,
indem sie ihre IP-Adressen per DHCP einholt. Wenn Sie eine Maschine mit
kommerzieller Software klonen, müssen Sie zudem die jeweiligen Lizenzbedingungen
beachten. So dürfen Sie zum Beispiel Windows nicht mehrfach starten, sondern
benötigen zunächst entsprechend viele Lizenzen.
Während das Gastsystem unangetastet bleibt, gilt dies nicht
für die MAC-Adressen der virtuellen Netzwerkadapter. Diese können Sie entweder
von der ursprünglichen VM übernehmen oder für den Klon neu wählen. Um
Kollisionen im Netzwerk zu verhindern, schlägt die Virtualisierungssoftware
bereits neu ausgewürfelte MAC-Adressen vor. Übernehmen sollten Sie die
MAC-Adressen der ursprünglichen VM nur im Ausnahmefall, etwa wenn der Klon das
Original ersetzen soll.
Das Klonen funktioniert grundsätzlich nur bei ausgeschalteter
VM; virt-manager erlaubt zwar auch das Kopieren einer pausierten VM, je nach
Backend und dessen Konfiguration kann der Klonvorgang dabei jedoch fehlschlagen.
Beim Ausschalten ist es möglich, den Zustand der VM festzuhalten. In VirtualBox
gelingt das über "Maschine / Schließen / Zustand sichern", in virt-manager
klicken Sie die Maschine mit der rechten Maustaste an und schalten sie unter
"Herunterfahren / Sichern" ab.
Dabei landet der aktuelle Hauptspeicherinhalt der VM auf der
Festplatte. Während VirtualBox diesen gesicherten Zustand in den Klon übernimmt,
kopiert virt-manager nur den Festplatteninhalt. Beim Start des Klons kann dies
dann zu unangenehmen Nebenwirkungen führen. War beispielsweise in der
ursprünglichen VM ein Textdokument geöffnet, aber noch nicht gespeichert, geht
es im Klon unweigerlich verloren. Sie sollten daher in virt-manager auf das
Sichern verzichten und die virtuelle Maschine geordnet herunterfahren. Das
Dateiformat der Festplatten bleibt übrigens bei allen Virtualisierungslösungen
erhalten: Nutzt das Festplattenimage das VMDK-Format, so verwendet es auch der
Klon.
Neue MAC-Adressen generieren
Um in der Benutzeroberfläche von VirtualBox einen Klon zu
erstellen, selektieren Sie die gewünschte Maschine in der Liste und rufen dann
aus dem Menü den Punkt "Klonen" auf. Noch schneller führt "Strg+O" zum Ziel.
Im erscheinenden Assistenten öffnen Sie den "Experten-Modus".
Der wichtigste Punkt ist die "MAC-Adressen-Richtlinie": In der
Standardeinstellung wählt der Assistent für alle virtuellen Netzwerkadapter neue
MAC-Adressen – mit Ausnahme aller Netzwerkschnittstellen, die am internen NAT
angeschlossen sind. Ob diese Ausnahme für Sie Sinn ergibt, hängt von Ihrem
Netzwerk ab. Im Zweifelsfall sollten Sie daher besser die Option "Neue
MAC-Adressen für alle Netzwerkadapter generieren" auswählen. Bei der Einstellung
"MAC-Adressen aller Netzwerkadapter mit einbeziehen" übernehmen alle virtuellen
Netzwerkadapter im Klon die MAC-Adressen des Originals.
Im obersten Feld müssen Sie der neuen VM einen Namen geben.
Diesen verwendet VirtualBox gleichzeitig als Dateinamen für das geklonte
Festplattenimage. In Bild 1 würde das Image folglich den Dateinamen "Ubuntu
Server-Klon.vdi" tragen. Wenn VirtualBox stattdessen den Dateinamen des
Originals übernehmen soll, setzen Sie einen Haken vor "Namen der Platten
behalten".
Jede Festplatte besitzt, wie einige andere
Hardwarekomponenten, eine eindeutige Identifikationsnummer (UUID). VirtualBox
weist deshalb der geklonten Festplatte automatisch eine neue UUID zu. Verhindern
können Sie dies mit einem Haken vor "Hardware-UUIDs behalten". Sinnvoll ist das
vor allem, wenn die Software in der VM die UUID abfragt. Dazu gehören unter
anderem einige Kopierschutzverfahren, die Sie allerdings damit nicht immer
besänftigen können.
Vollständiger und
verknüpfter Klon
Wenn Sie Snapshots verwenden, klont VirtualBox standardmäßig den gerade
aktuellen Zustand. Kontrollieren Sie daher vor dem Erstellen des Duplikats noch
einmal, welcher Snapshot gerade aktiv ist. Dieses Verhalten können Sie sich
allerdings auch für ein Backup zunutze machen: Jeder Snapshot besitzt sein
eigenes Festplattenimage, das alle Änderungen zu den vorherigen
Sicherungspunkten enthält. Beim Klonen erstellt VirtualBox ein neues
Festplattenimage, in das es nur die tatsächlich notwendigen Datenblöcke aus den
einzelnen Festplattenimages kopiert. Sie erhalten somit im Klon nicht nur ein
einziges und somit leichter zu sicherndes Festplattenimage, es belegt mitunter
auch noch weniger Speicherplatz als die Snap-shots zusammen. Möchten Sie
hingegen alle Snapshots in den Klon übernehmen, aktivieren Sie im Assistenten
den Punkt "Alles" im Bereich "Sicherungspunkte".
VirtualBox kann das Duplikat auf zwei Arten erstellen. Ein "vollständiger Klon"
ist eine komplette Kopie des Originals. Nach der Duplizierung existieren
folglich zwei unabhängige virtuelle Maschinen mit jeweils einem eigenen
Festplattenimage.
Der "verknüpfte Klon" nutzt hingegen die Festplatte des Originals mit. Das
Konzept dahinter ist allerdings etwas trickreich: Zunächst erstellt VirtualBox
für das Original und den Klon je ein eigenes neues Festplattenimage. In ihnen
landen jeweils die Änderungen gegenüber dem ursprünglichen Festplattenimage
(Ubuntu.vdi), wie in Bild 2 zu sehen ist. Ändert der Klon eine Datei, landet die
neue Fassung dieser Datei in seinem eigenen Festplattenimage (Image2.vdi).
Auf diese Weise teilen sich Original und Klon ein gemeinsames Festplattenimage,
sehen aber nicht die Änderungen der jeweils anderen VM. Im Hintergrund erstellt
VirtualBox den verknüpften Klon über die Snapshot-Funktion: Beim Klonen legt
VirtualBox in der ursprünglichen VM automatisch einen Snapshot unter dem Namen
"Ausgangspunkt für …" an, der wiederum die Basis für beide virtuellen Maschinen
bildet.
VM via Kommandozeile klonen
Das Klonen klappt nicht nur in der GUI von VirtualBox, sondern natürlich auch
remote auf der Kommandozeile über das Werkzeug "VBoxManage". Ihm führen Sie
sämtliche Einstellungen über Parameter zu, was zu Bandwürmern wie dem folgenden
führt:
Die Aktion clonevm weist VBoxManage an, die virtuelle Maschine "Ubuntu Server"
zu klonen. Anstelle des Namens können Sie auch die UUID angeben, die VBoxManage
list vms verrät. Hinter "--name=" steht der Name des Klons.
Mit der Option "--mode=all" übernimmt der Klon sämtliche Sicherungspunkte des
Originals. Gegenüber der GUI kann VBoxManage den Klon aber auch aus einem
beliebigen Snapshot erzeugen. Dazu ersetzen Sie "--mode=all" durch
"--mode=machine --snapshot="<Sicherungspunkt 2>"". Hinter "--snapshot=" steht
dabei der Name des Snapshots, aus dem VirtualBox eine neue virtuelle Maschine
erstellen soll. Die untergeordneten Sicherungspunkte dieses Snapshots klont
VBoxManage dabei allerdings nicht mit. Möchten Sie auch diese Sicherungspunkte
in den Klon übernehmen, tauschen Sie hinter dem Parameter "--mode=" die Angabe
"machine" gegen "machineandchildren" aus.
Wenn Sie "--mode=machine" oder "--mode=machineand-children" verwenden und den
Parameter "--snapshot" vergessen, klont VBoxManage automatisch immer den
aktuellen Zustand der originalen VM.
Sämtliche weiteren Einstellungen verrät jeweils ein mit "--options=" beginnender
Parameter. Mit "--options=Link" würde VBoxManage einen verknüpften Klon
erzeugen. Standardmäßig verpasst das Werkzeug allen virtuellen Netzwerkkarten
eine neue MAC-Adresse. Der Parameter "--options=KeepAllMACs" übernimmt hingegen
die MAC-Adressen aus der ursprünglichen VM, "--options=KeepNATMACs" nur die mit
dem NAT verbundenen. Abschließend behält VBoxManage mit dem Parameter
"--options=KeepDiskNames" die Dateinamen der Festplattenimages, "--options=
KeepHwUUIDs" würde zudem die UUIDs der Hardwarekomponenten übernehmen.
Das im Beispiel angehängte "--register" sorgt dafür, dass VirtualBox die neue
virtuelle Maschine registriert. Andernfalls würde VBoxManage den Klon einfach
nur in einem neuen Verzeichnis ablegen, was recht nützlich ist, wenn Sie nur ein
Backup erstellen möchten. Das Verzeichnis für den Klon hinterlegen Sie dann im
Parameter "--basefolder=", über den Sie immer das Speicherverzeichnis für das
Duplikat vorgeben können.
Duplikat mittels
virt-manager erstellen
In virt-manager erzeugt der Assistent aus Bild 4 den Klon. Dieser kann
allerdings keine Snapshots kopieren, das Duplikat entspricht immer dem aktuellen
Zustand. Prüfen Sie daher vor dem Klonen, ob in der zu kopierenden VM der
korrekte Snapshot aktiviert ist. Klicken Sie dann die virtuelle Maschine mit der
rechten Maustaste an und wählen Sie "Klonen".
Neben einem Namen lässt sich via "Details" für die jeweilige Netzwerkkarte eine
andere MAC-Adresse vorgeben – virt-manager schlägt bereits eine neue vor. Die
bislang von der ursprünglichen VM genutzte Adresse erscheint über dem
Eingabefeld. Standardmäßig kopiert virt-manager das Festplattenimage.
Je nach Backend und dessen Konfiguration können Sie über die Dropdown-Liste
unter "Speicherplatz" das jeweilige Image auch "freigeben". Ähnlich wie bei
VirtualBox nutzt dann der Klon das Festplattenimage des Originals mit.
Klonen mit Kommandozeilen-Tool virt-clone
Beim Einsatz von Libvirt dupliziert auf der Kommandozeile das Tool "virt-clone"
eine VM. Das Werkzeug steckt bei vielen Linux-Distributionen in einem eigenen
Paket, Ubuntu und Debian halten es beispielsweise in "virtinst" vor. Auch
virt-clone beachtet keine Snapshots, der Klon entspricht immer dem aktuellen
Zustand der zu kopierenden VM. Zum Erstellen einer Kopie genügt dann der Befehl:
virt-clone -o
"<Ubuntu Server>"
--auto-clone
Der Zusatz "-o" verrät den Namen der zu kopierenden VM, mit "--auto-clone" darf
das Werkzeug den Namen des Klons und dessen Einstellungen selbst wählen.
virt-clone nutzt dabei die von Libvirt vorgegebene Standardverbindung.
Eine Liste mit allen virtuellen Maschinen liefert auf der Kommandozeile
virsh
list --all. Das Tool "virsh" finden Sie bei Ubu- ntu und Debian im Paket
"libvirt-clients".
Wenn Sie den Klon selbst konfigurieren möchten, ersetzen Sie "--auto-clone" wie
folgt durch entsprechende Parameter:
Hinter "--connect" steht die URI, über die sich Libvirt mit dem passenden
Hypervisor verbindet. Wenn Sie den Parameter weglassen, verwendet virt-clone
wieder die Standardverbindung. Die Option "-n" legt den Namen des Klons fest und
"-f" verpasst dem kopierten Festplattenimage den angegebenen Dateinamen.
Letztgenannten müssen Sie wie im Beispiel samt Pfadangabe hinterlegen. Besitzt
die zu klonende VM mehrere Festplattenimages, hängen Sie für jedes einen
weiteren Parameter "-f" an. Wenn Sie noch "--pre-
serve-data" ergänzen, verwendet der Klon das Festplattenimage des Originals.
Auf einem Host mit Btrfs-Dateisystem können Sie zudem "--reflink" einsetzen.
virt-clone nutzt dann die sogenannten Lightweight Copies des Dateisystems. Dabei
verwendet der Klon zunächst das Festplattenimage des Originals. Erst geänderte
Datenblöcke speichert Btrfs separat. Dieses Verfahren spart Platz, funktioniert
derzeit allerdings nur, wenn die Festplatten-images das RAW-Format nutzen und
auf dem gleichen Subvolume liegen.
Über den Parameter "-m" vergeben Sie, wie im obigen Beispiel gezeigt, eine
eigene MAC-Adresse. Sind mehrere virtuelle Netzwerkadapter verbaut, hängen Sie
für jeden von ihnen einen weiteren Parameter "-m" an. Ergänzen Sie noch die
Option "--print-xml", erstellt virt-clone den Klon noch nicht, sondern gibt
lediglich seine Konfiguration als XML-Datei aus. Auf diese Weise prüfen Sie
vorab, ob die Einstellungen Ihren Vorstellungen entsprechen.
Dateiformat ändern
Sofern Sie auf einem System direkt mit KVM/QEMU arbeiten, greifen Sie zum
Werkzeug "qemu-img", das auch gleich noch das Dateiformat des Festplatten-images
ändern kann:
In diesem Beispiel überträgt qemu-img den Inhalt des Festplattenimages
"ubuntuserver.qcow2" im Format "qcow2" in das neue Festplattenimage
"ubuntuserver_kopie.vmdk", das VMDK als Dateiformat verwendet.
Fazit
Das Klonen einer virtuellen Maschine geht leicht von der Hand, in virt-manager
und VirtualBox erfordert es nur wenige Mausklicks. Die Kommandozeilenwerkzeuge
lassen sich in Shell-Skripte einbinden und erlauben so die Automatisierung des
Klonvorgangs. Gegenüber den GUIs bieten sie außerdem zusätzliche Einstellungen.
Administratoren sollten jedoch die Folgen des Klonens im Hinterkopf behalten:
Neben Lizenzfragen könnte auch die Netzwerkkonfiguration des Gastsystems
Probleme bereiten.