Es gibt viele Hyper-V Backup Tools, Programme und Skripte auf dem Markt.
Auch wenn diese oftmals nicht viel kosten, helfen sie nicht, wenn das darunter liegende Betriebssystem nicht unterstützt wird. Werden virtuelle Maschinen auf Windows 7 oder Windows 10 betrieben (Client Hyper-V), muss daher eine andere, aber dennoch schöne und funktionale Lösung her.
Im nachfolgenden Artikel wird ein universelles PowerShell Skript mit E-Mail-Reports und Kompression der exportierten virtuellen Systeme, inklusive einer Duplizierung auf ein entfernt liegendes Netzwerkgerät beschrieben. Der Download des fertigen Skripts kann unter <LINK> erfolgen.
Einleitung
Wird für eine kleine Virtualisierungslösung in KMU Betrieben zunächst eine Client Virtualisierung verwendet, so stellen sich unweigerlich Fragen zu Backup und Wiederherstellung. Beim Ersatz von Windows 7 Computern mit installierter Software, wird häufig das alte Betriebssystem virtualisiert und dieses auf einem neuen Computer als virtuelle Maschine weiter betrieben.
Aber auch für kleine Server Umgebungen wird häufig Microsoft Hyper-V auf Windows 10 oder einem einzelnen Server eingesetzt, damit betriebsrelevante Anwendungen weiter betrieben werden können.
Aufgabenstellung
Ein bestehender, auf Windows 7 basierter PC, muss ersetzt werden. Die auf dem Computer installierte Anwendung ist jedoch nicht Windows 10 fähig. Eine Virtualisierung des Systems ist notwendig.
Der neue Windows 10 Computer ist wesentlich leistungsfähiger und kann mittels Hyper-V eine Virtualisierung des alten Computers durchführen.
Es muss sichergestellt werden, dass regelmäßige Backups sowohl lokal, als auch im Netzwerk ohne Benutzerinteraktion bereitgestellt werden.
Problemdarstellung
Produkte wie Altaro VM Backup, SolarWinds Backup Hyper-V oder Acronis sind einfach zu bedienen, unterstützen jedoch keine oder nur begrenzt Client Hyper-V Systeme. Eine Client Hardware ist günstig, jedoch nicht mehr so günstig, wenn eine vollwertige Windows Lizenz zum Betrieb angeschafft werden muss. Es entfällt zudem die Möglichkeit, den neuen Computer als Arbeitsplatz verwenden zu können.
Thematische Abgrenzung
In diesem Artikel geht es nicht um Themen zum Update der Kernanwendung. Vielmehr geht es darum, die Anwendung, wie sie ist, bei einem Hardwareaustausch weiter betreiben zu können, ohne bestehende Prozesse im Unternehmen zu verändern und dabei die Datensicherheit zu wahren. Gewiss ist eine Aktualisierung oder Portierung der im Betriebssystem liegenden Anwendung notwendig, soll hier aber nicht thematisiert werden.
Themen zur Lizensierung der dann virtualisiert betriebenen Anwendung, als auch des originalen Betriebssystems müssen dabei beachtet werden, sind hier jedoch nicht Kern der Betrachtung.
Anforderungsmanagement
Ein Hyper-V-Backup, für Windows 7 oder Windows 10, Server 2008 R2 und fortfolgende durchzuführen, kann mittels PowerShell realisiert werden. Hierbei können die notwendigen Anforderungen in ein Skript eingebaut werden.
Aufnahme
Die zu erstellende Lösung muss für Client Hyper-V Systeme ausgelegt sein, darf sich aber Serverbetriebssystemen nicht versperren. Es müssen vollständige Exporte einer laufenden VM incl. Duplikat in ein Netzlaufwerk durchgeführt werden. Themen wie Kompression und Parallelisierung des Exports sowie die Ablage der Exporte mit Passwortschutz müssen erfüllt werden. Berichte müssen via E-Mail versendet werden, damit keine vor Ort Kontrolle des aktuellen Jobs, sowie der zuvor durchgeführten Jobs notwendig ist. Das Skript soll alles selbständig ohne Benutzerinteraktion durchführen können.
Spezifikation
- PowerShell als Basis
- Export auf
- Lokalen Computer
- Entfernten Datenspeicher
- Unterstützte Betriebsysteme
- Windows 7
- Windows 10
- Windows Server 2008 ff.
- Parallelisierung des Exports
- Passwort für Export (Verschlüsselung)
- Kompression für Export
- Duplizierung und Versionierung des Exports
Technische Lösungsoptionen
Damit das PowerShell Skript unter Server 2008 funktioniert, benötigen wir die PSHyperv Library die James O’Neill entwickelt und unter CodePlex (Download unter http://www.codeplex.com/psHyperV) frei zur Verfügung stellt. Alle anderen Betriebssysteme unterstützen bereits die Steuerung via PowerShell.
Hürden der PowerShell überwinden
Damit PowerShell Skripte ungehindert ausgeführt werden können, müssen sie signiert werden. Diese Option steht nicht immer zur Verfügung, erst recht nicht, wenn der Computer keinen Zugriff auf das Internet hat. Das magische Wort heißt “ExecutionPolicy”.
“Unresticted” Policy
Der Befehl “Set-ExecutionPolicy unrestricted” löst das Problem auf einfache Weise, führt aber dadurch zusätzliche Sicherheitsrisiken im Betriebssystem ein. Diese sind für das Skript und das Ziel dienlich.
“Unresticted” Aufruf
Eine wesentlich bessere Alternative stellt der Aufruf eines Skripts mit “powershell.exe -ExecutionPolicy Unrestricted” dar. Hierfür benötigt der ausführende Benutzer die notwendigen Administratorrechte. Das so aufgerufene Skript kann dadurch ungehindert ausgeführt werden. Eine generelle Anpassung der Ausführungsrichtlinie muss dadurch nicht für das gesamte Betriebssystem durchgeführt werden.
Hürden des Betriebssystems überwinden
Ein Client Hypervisor hat einen entscheidenden Nachteil. Er ist so in das System integriert, dass sich keine (oder nur sehr schwer) die notwendigen Rechte eines Benutzers für die Steuerung und den Zugriff auf Hyper-V regeln lassen. Dadurch ist es notwendig dem Benutzer, welcher das Skript ausführen soll, Administratorrechte zu geben.
Ausführung als NT-AUTORITÄT\SYSTEM
Die Ausführung als System ermöglicht es dem Skript, sowohl einen vollen Zugriff auf alle Schnittstellen, als auch Elemente der Festplatte zu erhalten. Leider sind dadurch die erstellten Dateien auf diesen Account gesperrt und können nur umständlich weiterbearbeitet werden.
Ausführung als %COMPUTERNAME%\Administrator
Die Verwendung des lokalen Administratorenkontos erscheint zielführend, wird jedoch immer wieder bei Windowsupdates unterbunden. Diese deaktivieren das Administratorkonto zum Schutze des Systems gegenüber Viren, Würmern und Trojanern.
Ausführung als dediziertes Administratives Konto (Service Account)
Durch die Erstellung eines eigenen lokalen Kontos und hinzufügen dessen in die Gruppe der Administratoren, können die o. g. Einschränkungen überwunden werden.
Hyper-V Backup
Wie in Windows Server gibt es im Client Hyper-V unterschiedliche Optionen der Backups.
Hyper-V Snapshots / Prüfunkte / Checkpoints
In Windows 10 können Checkpoints für die Speicherung eines virtuellen Computers verwendet werden. Teilweise werden diese auch Prüfpunkte oder Snapshots genannt. Alles in allem haben sie aber grundsätzlich die Problematik, dass das virtuelle System kurz angehalten wird und daraus ein Image erzeugt wird. Es ist somit nicht immer sichergestellt, dass eine Datenbank oder Anwendung in einem definierten Zustand ist. Leider werden die Schnittstellen nicht über alle Client Hyper-V in der Anforderung gleich gestellt und müssen systemabhängig behandelt werden.
Befehle STOP-VM / EXPORT-VM / START-VM
Diese Möglichkeit besteht über alle Betriebssysteme hinweg, auch wenn die Parameter ein wenig abweichen. Für Server 2008 kann PSHyperv Library von James O’Neill unter http://www.codeplex.com/psHyperV verwendet werden. Leider unterstützen nicht alle virtuellen Systeme (ohne Addons) die Shutdown Funktion.
Befehle SAVE-VM / EXPORT-VM / START-VM
Eine zuverlässige und über alle Systeme funktionierende Befehlsabfolge stellt das Speichern, Exportieren und nachträgliches Starten der virtuellen Maschine dar.
Verschlüsselung
Prinzipiell ist eine Verschlüsselung, ohne genaue Definition und passende Mechanismen, plattformübergreifend sehr schwierig zu lösen. PKI Verfahren wie PGP wären möglich, sind jedoch für unerfahrene Personen schwierig in der Handhabung. Die Reduzierung der Anforderung auf ein definiertes Kennwort mittels einer plattformübergreifenden Komprimierung, schlägt zwei “Fliegen mit einer Klappe”. Hierzu ist 7zip bestens geeignet.
Duplizierung
Eine Duplizierung der exportierten Daten auf ein SMB basiertes Netzlaufwerk kann, nachgelagert durch einen passenden Kopierbefehl, realisiert werden. Hierzu können alle Basisfunktionen von Windows wie FTP, SMB oder gar WebDAV als Möglichkeiten herangezogen werden. Die Konzentration auf SMB stellt die schnellste und einfachste Möglichkeit im Rahmen eines PowerShell Skripts dar.
Versionierung
Die exportierten virtuellen Systeme könnten als Dateien oder Verzeichnisse vorliegen. Eine Iteration und Sortierung über den Backup-, Export- oder Duplizierungspfad löst das Problem der Versionierung. Angedacht werden könnten Versionen, welche auf dem Datei-Datum basieren. Die programmatische Lösung wäre das Alter der Dateien oder Verzeichnisse, oder anhand der Dateibenennung über eine separate vorgelagerte Funktion mit Iteration und Löschung des ältesten Elements möglich.
Parallelisierung der Aufgaben
Durch einen gezielten Aufbau des Skriptes kann eine Parallelisierung erfolgen. Hierzu müssen die zu erstellenden Funktionen sowohl zeitlich, als auch speichertechnisch unterschieden und gekapselt werden. Daraus ergibt sich, dass sowohl für jede virtuelle Maschine ein zeitgleicher Task gestartet werden könnte. Hieraus würde dich aber auch eine mögliche Überlastung des Hostsystems ergeben. Die Lösung der Parallelisierung liegt somit im Skriptaufbau, den möglichen Instanzen, als auch beim Administrator in der Definition.
Spezifikation der Aufgabenschritte je Skript
- Export von definierten VMs
- Kompression von definierten VMs
- Duplizierung
Spezifikation der definierten VMs je Skript
Durch die Erstellung unterschiedlicher Skript-Konfigurationen, können sowohl die Reihenfolge, als auch die zeitliche Abfolge der Backups definiert werden.
Einschränkungen der Parallelisierung
Die Aufgabenschritte müssen zwingend in Abfolge hintereinander durchgeführt werden, um mögliche Probleme des Backups zu vermeiden. Die Definition der zeitlichen Abfolge der Schritte würde eine Statusübergabe zwischen den Schritten notwendig machen.
Berichte via E-Mail
Die Übermittlung der Konsolenausgabe via PowerShell stellt, aufgrund vieler bereits verfügbarer Implementierungen einer Mailfunktion, keine Herausforderung dar. Diese wird für den eigentlichen Export durchgeführt.
Berichte mit Details über die Versionen und Größen stellen einen höheren Aufwand dar. Bestenfalls wird dieser Report nach jeder Ausführung erstellt und dem Administrator zur Verfügung gestellt. Adrian Milliner hat hierzu ein Skript zum Konsolen Buffer zu HTML erstellt. Dieses kann als Basis für einen Report passend verwendet werden.
Parametrisierung
Zusammenfassend wäre es zielführend eine Parametrisierung des Skripts durchführen zu können. Zum einen um einen Mehrfachaufruf zur Parallelisierung zu ermöglichen. Zum anderen um systemrelevante Details ohne Skriptkenntnisse schnell, den Anforderungen entsprechend, anpassen zu können. Hierfür haben sich in der Windows-Welt INI-Dateien bewährt.
Damit eine zeitgesteuerte Ausführung des Skripts durchgeführt werden kann, wird der Windows Taskplaner verwendet. Er hat neben einem zeitlich geplanten Aufruf die Möglichkeit, notwendige Parameter aufzunehmen, sodass eine gesonderte Kommandozeilennutzung nicht benötigt wird.
Lösung
Damit dieser Artikel nicht zu lang wird, wird die Lösung in Teil2 dargestellt.
Mehr zu diesem Beitrag
Quellen / Einzelnachweise
- PSHyperv Library James O’Neill (http://www.codeplex.com/psHyperV)
- Buffer Console Output to HTML (thanks to Adrian Milliner https://ps1.soapyfrog.com/2007/01/06/console-screen-grabs-in-html/)
Weiterführende Links
- Hyper-V Befehle für Windows 10 und Server 2016
- PSHyperv Library
- Buffer PS1 Skript
Änderungshistorie
Erstellt: 2020-11-05 | Zuletzt geändert: 2023-04-09 |
Änderungshistorie: – 2020-11-05: Basis – Layout + Text 2023-04-09: Anpassung & Korrektur Text |