Zauberer

Altaro: Gewusst wie: Virtuelle in Physikalische Maschine wandeln (V2P)

Autor: Eric Siron Originalartikel

 

Gewusst wie: Virtuelle in Physikalische Maschine wandeln (V2P)

Die Last für den geplanten Hypervisor hat nicht wie geplant gepasst? Vielleicht war sie einfach zu gross oder eine virtuelle Umgebung wird von genutzten Anwendungen nicht unterstützt. Unabhängig davon, manchmal muss man eine virtuelle Maschine wieder in eine physikalische umwandeln (V2P). Das ist nicht die einfachste Sache der Welt aber durchaus möglich. Dieser Artikel wurde mit Blick auf den Hyper-V Server erstellt, die Vorgehensweise sollte im Groben aber unabhägig vom Hypervisor ablaufen.

Meine erste Empfehlung ist, einen anderen Weg zu wählen. Obwohl V2P generell möglich ist, besteht eine hohe Wahrscheinlichkeit, dass das Endergebnis unbrauchbar ist. In der Regel wäre eine Migration zu empfehlen. Einfach das gewünschte Betriebssystem auf der neuen Hardware installieren und die Anwendungen und Einstellungen migrieren. Viele Softwarehersteller bieten hier Anleitungen für die Migration der eigenen Anwendung an. Meist ist sowohl das Vorgehen als auch das Ergebnis einer V2P vorzuziehen.

Wenn es sich um einen Hyper-V Server und bei der zu konvertierenden virtuellen Maschine um eine aktuelle Windows-Version handelt, könnte man das Betriebssystem auf der neuen physikalischen Hardware installieren, die VHDs der virtuellen Maschine dort mounten und die Dateien einfach transferrieren.

Daneben sollte man sich kommerzielle V2P-Anwendungen überlegen. Diese haben zwar ihren Preis, sparen dafür aber meist Zeit und Nerven.

Aber wenn es unbedingt V2P sein soll, dann fangen wir einfach an. Der erste Schritt besteht darin, ein Komplettbackup der zu konvertierenden virtuellen Maschine zu erstellen. Man stellt diese Maschine wirklich komplett um und dabei kann sehr vieles schief gehen, so dass dieses Backup die einzige Versicherung ist, die man hat. Also jetzt zuerst dieses Backup durchführen und erst danach wieder zu diesem Blog zurückkommen. Daneben empfehle ich noch die Erstellung eines Snapshots.

Als nächstes benötigen wir Benutzername und Passwort eines lokalen Administrators für diese Maschine. Eine Netzwerkverbindung beim ersten Neustart kann hier nicht garantiert werden, so dass die Anmeldedaten für einen lokalen Administrator niemals schaden.

Hardwareabhängigkeit entfernen

Die grösste Herausforderung bei V2P sind die Hardwaretreiber. Treiberprobleme aufgrund von Unterschieden zwischen installierten Treibern und vorhandener Hardware führen häufig zu hässlichen Bluescreens. Um dies so weit wie möglich zu verhindern, werden wir im Folgenden die Hardware so allgemeingültig wie möglich machen. Leider kann es auch hier Einschränkungen geben, so kann eventuell der Inhalt von virtuellen SCSI-Festplatten nur sichtbar sein, wenn ein entsprechendes Betriebssystem gestartet ist. In diesem Artikel wird zur Imageerstellung Clonezilla verwendet, bei dem dieses Problem nicht auftritt. Daneben könnte man auch bei vorhandenem Platz für die Dauer der Übertragung die SCSI-Laufwerke auf IDE-Laufwerke verschieben. Sobald das neue System aufgesetzt ist, könnte man entsprechend zurückgelassene VHDs mounten und die Daten auf diesem Weg übertragen.

Vollkommene Unabhängigkeit ist nicht zwingend notwendig, wenn ein sich um ein aktuelles Betriebssystem handelt. Allerdings
ist es als Vorbeugung sicherlich wertvoll und schadet auf keinen Fall. Jeder Schritt der bei diesem Prozess ausgelassen wird, erhöht die Wahrscheinlichkeit, dass die Umstellung fehlschlägt.

Zuerst entfernen wir alle statischen IP-Adressen aus den virtuellen Adaptern. Da sie nicht in die Adapter der Zielmaschine übetragen werden, ist das der einfachste Weg. Dazu stellen wir aktuell einfach auf DHCP. Falls es sich um ein Windows-System handelt, bitte danach über den Gerätemanager den Adapter entfernen.

Jetzt die virtuelle Maschine herunterfahren (kein Neustart). Jetzt den virtuellen Adapter im Hyper-V Manager entfernen (es geht auch mit Remove-VMNetworkAdapter in der PowerShell).

Nun die VM wieder starten. Bei älteren Betriebssystemen (vor 2008/Vista) den „Dienst für virtuelle Gäste“ entfernen. Er sollte, falls er entfernbar ist, bei den installierbaren/entfernbaren Anwendungen zu finden sein. Bei anderen Umgebungen als Hyper-V bitte entsprechend der Dokumentation die Integrationstools entfernen. Danach das System neu starten. Falls das Betriessystem Windows XP (eventuell auch bei 2003) ist, bitte folgenden Knowledgebase-Artikel einmal lesen.

SYSPREP ausführen: Entweder in einer Kommandozeile oder über das Startmenü „C:\Windows\System32\Sysprep\Sysprep.exe“ ausführen. Je nach System sieht Sysprep etwas anders aus, aber das Ziel ist es, eine Basis für eine Neuinstallation zu erstellen und danach die virtuelle Maschine herunterzufahren.

Nun sollte die virtuelle Maschine so Hardware-neutral wie möglich sein.

Image Erstellen und Umziehen

Die virtuelle Maschine sollte inzwischen ausgeschalten sein. Allerdings wird nun statt einer sauberen virtuellen Maschine ein sauberes Image benötigt. Der einfachste Weg dazu ist der Einsatz einer Imaging-Software. Hierbei gibt es verschiedene Lösungen, in diesem Artikel verwende ich Clonezilla Live. Bei anderen Produkten sollte der Ablauf ähnlich sein.

Es gibt zwei grundsätzliche Möglichkeiten, Klonen ausführen, nämlich einmal über das Netzwerk und einmal als Festplattenkopie. Ich werde die grundlegenden Aufgaben für beide Methoden aufzeigen und darauf folgend Clonezilla mit verschiedenen Einstellungen ausführen um die jeweils passendste Methode zu zeigen.

Transfer über Netzwerk

Mit Clonezilla gibt es verschiedene Wege, um die Daten über das Netzwerk zu verschieben. Ein Weg ist die Benutzung eines DRBL Servers, allerdings bin ich damit nicht vertraut, so dass ich hierzu auf die Dokumentation verweisen muss. Wenn ein Netzwerktransfer allerdings nicht häufig ausgefürt werden muss, ist der einmalige Aufwand für DRBL eh viel zu hoch. Die zweite Möglichkeit nutzt einen gemeinsam erreichbaren Netzwerk-Share, auf dem das Image zunächst abgelegt wird. Bei der dritten Möglichkeit werden die Daten direkt vom Quell- zum Zielsystem übertragen.

Um die Daten über das Netzwerk zu übertragen, benötigen wir in der virtuellen Maschine einen Netzwerkadapter. Für hier nicht vorgestellte Kloning-Tools oder beim Einsatz von PXE muß es sich dabei um einen Legacy Adapter handeln, im Falle von Clonezilla kann es ein Standard virtueller Adapter sein. Unabhängig davon, wenn man die vorherigen Schritte bis hierher genau befolgt hat hat die virtuelle Maschine keinen Netzwerkadapter mehr und man fügt einfach den bevorzugten hinzu:

Hierbei VLAN nicht vergessen, wenn es benötigt wird. Man kann sich jetzt fragen, warum vorher der Netzwerkadapter entfernt werden musste, wenn man ihn nun wieder hinzufügt. Aber das installierte Gastbetriebssystem weiß momentan nichts von einem Netzwerkadapter und so wird nach dem Umzug auch keiner fehlen.

Transfer über Festplatten

Wenn wir unser System per Festplatte übertragen wollen, fügen wir unserer virtuellen Maschine eine weitere VHD hinzu, auf der Clonezilla das Image ablegt. Wir werden keinen Disk-zu-Disk-Transfer durchführen, da dies uns nichts anderes liefern würde, als wir schon haben. Diese Methode ist am sinnvollsten, wenn man ein externes Laufwerk besitzt, das man auch am Zielsystem anschliessen kann, andernfalls wird es problematisch.

Die neue VHD, die hinzugefügt wird muß etwas grösser sein als die Summe aller Daten aller bestehenden virtuellen Festplatten. Wenn aktuell keinerlei Vorstellung über die Datenmenge vorhanden ist, empfehle ich eine grosse dynamische Festplatte. Diese Platte dient eh nur als temporärer Zwischenspeicher. Darauf achten, das Gastbetriebssystem nicht zu booten, während diese Festplatte angeschlossen ist, da sie nach dem Umzug auf die physikalische Hardware nicht mehr verfügbar ist.

Die VHD zur Aufnahme des Image muss formattiert sein. Einfach an einem anderen System (wie dem Hypervisor selbst) anschliessen, formatieren und wieder entfernen.

Ausführen des Clonezilla Transfers

Als nächstes das Clonezilla Live CD-Image herunterladen, an die virtuelle Maschine anschliessen und booten. Es kann sein, dass beim Booten einige Fehlermeldungen erscheinen, die allerdings keine Rolle spielen, es sollte trotzdem alles funktionieren.

Beim Begrüssungsbildschirm einfach „Clonezilla Live“ wählen oder den Timeout abwarten.

Im ersten Dialog nach dem Begrüssungsbild kann man die gewünschte Sprache einstellen. Einfach die Passende wählen und per [Enter] bestätigen. Danach kann man das Tastaturlayout, in aller Regel die Standardmässige per [Enter] auswählen. Nun Start_Clonezilla per [Enter] ausführen. Ab hier treten je nach Transfermethode die ersten Unterscheidungen auf. Man verwendet „device-image“, wenn man die Daten per Image-Datei auf einer lokal angeschlossenen Festplatte oder über einen Netzwerkshare überträgt. „device-device“ wird ausgewählt, wenn man das System als Server definiert und das Zielsystem anbindet.

Device-Image

Nach der Wahl von „device-image“ sollte etwa folgender Bildschirm erscheinen:


Zuerst stelle ich vor, wie der Transfer über ein Netzwerk-Share abläuft, da das die einfachste Methode ist. Danach zeige ich noch den Weg über eine lokale Festplatte. Falls vorhanden, kann man das Image auch über einen SSH oder NFS Server übertragen (wird in diesem Artikel aber nicht beschrieben). Unter Windows oder *nix-Zielsystem mit Samba entsprechend „Samba-Server“ auswählen.

Device-Image auf ein Netzwerk-Share speichern

Als Nächstes muss der Netzwerkadapter ausgewählt werden. Wenn alle vorherigen Schritte eingehalten wurden, sollte es hierbei nur eine Möglichkeit geben. In meinem Fall sind rein aus Demonstrationszwecken zwei vorhanden, ein Legacyadapter und ein virtueller:

Nach Auswahl des Adapters muss noch eingestellt werden, ob eine statische IP-Adresse oder DHCP verwendet wird (oder PPPoE, was ich hier aber nicht behandle). Am Einfachsten ist es, wenn ein DHCP-Server bei einem Netzwerk-Share vorhanden ist, da man sich dann nicht um die IP-Adresse kümmern muss. Da die DHCP-Einstellung sehr einfach ist, werde ich im Folgenden die Einstellung der statischen IP-Adresse vorstellen.

Nach der Einstellung für statische IP-Adressen muss zuerst eine IP-Adresse angegeben werden. Wichtig ist hierbei, dass es sich um eine gültige und aktuell unbenutzte IP-Adresse des Netzwerks handelt. Wenn die ursprüngliche virtuelle Maschine eine statische IP-Adresse hatte, eignet sich diese IP-Adresse, da sie aktuell sicher nicht in Benutzung ist. Im folgenden Schirm werden Netzwerkmaske und Gateway sowie abschliessend ein Namensserver (DNS) abgefragt.

Nach Konfiguration der Netzwerkeinstellungen werden die IP-Adresse oder der eindeutige Name des Servers mit dem gemeinsamen Zugriff abgefragt. Danach wird die Domäne benötigt; diese wird auf das Konto angewendet, das auf diesen Netzwerk-Share zugreifen will, so dass hier die Sicherheitseinstellungen dieses gemeinsamen Zugriffspunktes zu beachten sind. Wenn keine Domäne eingegeben wird, werden lokale Sicherheintseinstellungen verwendet. Die folgende Eingabe des Kontos wird mit der Domäne verknüpft, so dass nur das Konto ohne Domänenzusatz („Domäne\Konto“) notwendig ist. Danach wird das Zielverzeichnis abgefragt. Bei einem Windows-Server ist das der Name des gemeinsamen Zugriffspunktes. Der führende „/“ wird benötigt. Abschliessend wird ein Passwort benötigt. Falls alles korrekt ist, zeigt Clonezilla danach alle Datensätze, die es findet (einige davon sind auf dem CD-Image – bitte nicht wundern, wenn einige keinen Sinn ergeben). Mit [Enter] kommt man nun zum Cloning-Fenster. Nun bitte zum Teil „Erstellen des Images“ vorgehen.

Device-Image auf lokale Festplatte speichern

Im „Mount Clonezilla image directory“ Schirm die Auswahl „local_dev“ wählen, per [Enter] bestätigen und dann nochmals [Enter] drücken für USB Erkennung.

Bei diesem Schirm bitte genau aufpassen. Hier wird das Ziellaufwerk eingestellt, auf den das Image abgespeichert wird. Wenn das falsche Laufwerk gewählt wird, geht zwar die Welt nicht unter aber das Image wird dort abgelegt (falls der Festplattenplatz ausreicht) und das eigentlich geplante Zielmedium bleibt leer. Helfen kann die Angabe der Laufwerksnamen in der Anzeige. Ich habe eine dynamisch wachsende Platte mit Standardgrösse (127GB) als Ziellaufwerk gewählt, was es relativ einfach für mich macht:

Im nächsten Schirm kann man das Unterverzeichnis wählen, in das das Image gelegt wird. Da ich diese Platte speziell für den Transfer erstellt habe, ist die Root hier OK. Falls man plant, dies häufiger auszuführen, empfehle ich eine eigene VHDX mit entsprechend sinnvoller Verzeichnisstruktur. Ich drücke hier einfach [Enter]. Falls alles passt, wird nun die Dateistruktur angezeigt. Hier einfach [Enter] drücken.

Erstellen des Images

Hier „Beginner“ wählen (alle Anderen benötigen diesen Artikel vermutlich nicht):

Dann „savedisk“ wählen. „saveparts“ steht für „save partitions“ und generiert für Ungeübte eher Kopfschmerzen als Freude.

Danach einen Namen für das Image angeben. Ich empfehle hier etwas, das zur leichteren Erkennen auch den Computernamen beinhaltet.

Im folgenden Schirm wird es interessant. Hier wählt man die Laufwerke aus, die man klonen will. Die Anzeige kann allerdings recht kryptisch sein. Am Besten orientiert man sich an der Angabe der Größe der Laufwerke. Wenn man auf ein lokales Laufwerk kopiert, wird dieses Laufwerk hier nicht angezeigt. Um ein Laufwerk an- oder abzuwählen, das entsprechende Laufwerk markieren und mit der Leertaste selektieren. Ein „*“ gibt ab, ob das Laufwerk ausgewählt ist.

Die Laufwerksüberprüfung (Check for Errors) nicht aktivieren (einfach [Enter] drücken). Ob Clonezilla das Image auf dem Ziel überprüfen soll, bleibt jedem selbst überlassen. Es verlängert allerdings den Vorgang. Nach dem Drücken von [Enter] zeigt Clonezilla den Befehl an, den es ausführen wird. Wenn man also diese Aktionen häufiger ausführen will, kann man sich durch Notieren der Befehle und Benutzung der Clonezilla Shell einiges an Zeit sparen. Jetzt wieder [Enter] drücken und die angezeigten Informatioen überprüfen. Sobald alles überprüft wurde und fertig zur Ausführung ist, kommt die letzte Abfrage. Nun einfach mit [Y] und [Enter] den Vorgang starten und warten…

Sobald der Vorgang abgeschlossen ist, kann man die VM einfach ausschalten oder nach [Enter] und danach [0] und nach dem Countdown nochmals [Enter] das System beenden.

Wiederherstellen des Images

Wenn man das Image per lokalem Datenträger übertragen will, muss natürlich die Zielmaschine zuerst Zugriff auf diesen lokalen Datenträger erhalten. Dazu die VHD mit dem Image am Hypervisor oder einem anderen System anbinden. Danach beispielsweise ein externes USB-Laufwerk mit genügend freiem Speicherplatz anschliessen und das Image auf diese tragbare USB-Platte kopieren.

Die Wiederherstellung selbst geht relativ einfach. Zuerst geht man wie bei der Erstellung eines Images vor. Sobald man aber das Verzeichnis anbindet, in dem die Image-Datei abgelegt ist, erhält man ein anderes Menu:

Jetzt „restoredisk“ auswählen und mit [Enter] bestätigen. Danach die entsprechende Image-Datei (Clonezilla hängt hier noch eine Zeitangabe sowie den Laufwerksnamen an) auswählen und wieder [Enter] drücken.

Danach muss das Ziellaufwerk ausgewählt werden, in das die Wiederherstellung abgespeichert wird. Unter bestimmten Umständen können hier Probleme auftreten, wenn Quell- und Ziellaufwerke einfach nicht entsprechend passen.

Sobald das Ziellaufwerk gefunden und ausgewählt ist, dies mit [Enter] bestätigen und es wird wieder der entsprechende Befehl zur Ausführung angezeigt. Diesen mit [Y] zur Ausführung akzeptieren und auch die abschliessende Sicherheitsabfrage bestätigen. Danach beginnt der Prozess der Wiederherstellung, der ziemlich ähnlich zur Erstellung des Images aussieht. Sobald dieser beendet ist, kann mit [1] ein Neustart des Systems durchgeführt werden um fortzufahren.

Nun bitte zu „Abschlussarbeiten“ gehen.

Device-Device

Bei dieser Methode werden die Daten direkt von der Quell- zur Zielstation übertragen. Hierbei gibt es einige Einschränkungen. Die Erste ist, dass nur jeweils ein Laufwerk übertragen werden kann. Für mehrere Laufwerke muss der Prozess mehrfach ausgeführt werden. Die Zweite, und deutlich kleinere ist, dass man manuell einige Zeilen in der Befehlszeile eingeben muss. Allerdings sind diese relativ einfach und hier wird genau beschrieben, was gemacht werden muss. Wer sich dennoch dabei unwohl fühlt, sollter eher die „device-image“-Option benutzen.

Nun wieder „beginner“ auswählen und mit [Enter] bestätigen.

Danach „disk_to_remote_disk“ wählen und mit [Enter] bestätigen.

Die folgenden Masken fragen die IP-Informationen für den lokalen Adapter ab. Sie sollten eigentlich selbsterklärend sein und wurden weiter oben im Bereich „Device-Image“ etwas genauer betrachtet.

Danach das Quelllaufwerk, das übertragen werden soll auswählen, mit [Enter] bestätigen und mit [Y] die Übertragung, bzw. das Warten auf die Antwort des Ziels starten.

Jetzt das Zielsystem mit der Clonezilla CD starten. Die Standardwerte akzeptieren bis zum Punkt „Start Clonezilla“. Nun wählen wir allerdings im Gegenzug zum Quellsystem nicht „Start Clonezilla“ sondern „Enter shell“. Danach mit [2] eine Kommandozeile starten.

Falls mehr als eine Festplatte im Zielsystem vorhanden sind, empfehle ich, zuerst den Befehl „fdisk -l“ (das kleine L steht hierbei für „list“) auszuführen, um zu erkennen wie die einzelnen Festplatten heissen. Es wird als „/dev/sda“ u.s.w. angezeigt, aber interessant ist nur, was nach dem „/dev/“ folgt: sda, sdb etc. . Jetzt sollte am Urprungssystem in gelb angezeigt werden, was am Zielsystem eingegeben werden soll:

Jede Zeile ist dabei ein Befehl. Daher zuerst „sudo su -“ eingeben und mit [Enter] bestätigen, danach „ocs-live-netcfg“ und wieder [Enter]. Damit werden die vorhandenen Netzwerkadapter erkannt und man kann entsprechende IP-Einstellungen vornehmen oder es auf DHCP setzen. Nach den entsprechenden Einstellungen kommt man wieder auf die Kommandozeile. Jetzt den Befehl „ocs-onthefly -s ***ANGEGEBENE IP-ADRESSE*** -t ***ZIELLAUFWERK*** – wie sda“ eingeben und mit [Enter] bestätigen. Es werden die Laufwerksdaten des entsprechenden Laufwerks angezeigt und man muss jetzt zweimal mit [Y] bestätigen. Falls es sich um ein bootfähiges Laufwerk handelt, muss man nochmals zweimal [Y] drücken. Nun wird der Status der Übertragung angegeben.

Man muss diese Schritte für alle verfügbaren Laufwerke durchführen, die übertragen werden sollen.

Abschlussarbeiten

Jetzt haben wir den Moment der Wahrheit erreicht. Einfach die Clonezilla CD vom Zielsystem entnehmen und das System starten. Hoffentlich können Sie sich anmelden. Danach sollten einige Meldungen bezüglich neu gefundener Hardware und entsprechender Treiberinstallation folgen. Hierfür müssen eventuell entsprechende Treiber der Hardwarehersteller bereit gestellt werden. Nach diesen Installationen sollte das System zumindest einmal gebootet werden, ohne dass noch irgendwelche aufgeschobenen Änderungen vorhanden sind. Anschliessend sollten Tests durchgeführt werden um zu prüfen, ob das Zielsystem korrekt arbeitet.

Abschliessend sollte die ursprüngliche virtuelle Maschine gelöscht werden. Es existiert ein Backup (zumindest sollte es das), so dass ein Restore noch möglich ist, falls das neue System doch plötzlich im Produktiveinsatz nicht funktioniert. Viel schlimmer wäre es, wenn aus Versehen diese virtuelle Maschine gestartet und in einen Konflikt mit unserer neuen physikalischen Maschine gerät. Es war vermutlich schon nervenaufreibend genug.

Ende

Ich hoffe, dass dieser Artikel hilfreich für Sie war.