Anzeige

Speicherzuteilungsprobleme bei VHD-Dateien

Eine dynamische virtuelle Festplatte (VHD) beim Hyper-V wird beim Anlegen eines neuen virtuellen Computers in Form einer vhd-Datei erstellt. Nur wer sie explizit in eine VHD mit fester Größe konvertiert, kann davon abweichen. Bei der Planung der Storage-Ressourcen muss der Systembetreuer genau aufpassen, dass es aufgrund des Overcommitments nicht zu Speicherproblemen kommt.

Bild 1. Üblicherweise legt der Hyper-V eine VHD als dynamische virtuelle Festplatte an. Quelle: Microsoft
Bild 1. Üblicherweise legt der Hyper-V eine VHD als dynamische virtuelle Festplatte an. Quelle: Microsoft
Wer Microsofts Virtualisierungs-Plattform »Hyper-V« einsetzt und darauf virtuelle Maschinen (VMs) betreibt, der legt die Daten einer VM in einer virtuellen Festplatte (VHD, Virtual Hard Disk) ab. Dabei stehen verschiedene Typen von VHDs zur Verfügung. Zum einen gibt es die dynamisch erweiterbaren VHDs, bei denen nur der effektiv belegte Platz gefüllt ist. Braucht eine VM dann im Verlauf der Zeit mehr Kapazität, wächst die VHD entsprechend an. Dazu gesellt sich noch die differenzierenden virtuellen Festplatten, bei denen eine Ausgangsform als eine dynamisch erweiterbare VHD angelegt wird und zusätzliche Änderungen in kleinen Einzelteilen (als eigene Dateien) dazu genommen werden.

Die dritte Option ist eine VHD mit fester Größe (Fixed VHD). Dabei belegt diese Art der VHD genau den vordefinierten Kapazitätswert auf dem Massenspeicher des Virtualisierungs-Hosts. Die Standardvorgabe beim Anlegen einer VM beim Hyper-V ist die dynamische Variante – und dafür sprechen einige gute Gründe.

Anzeige

 Vorteile dynamischer VHDs

Die dynamischen VHDs lassen sich beim Anlegen eines VM wesentlich schneller erzeugen, denn es sind ja nur die vorliegenden Daten abzuspeichern. Will man dagegen eine VHD fester Größe anlegen, braucht das System mitunter Stunden für das Erzeugen der VHD – je nach Kapazitätsvorgabe. Damit lassen sich virtuelle Server mit dynamischen VHDs viel schneller in Betrieb nehmen.

Die geringere Datenmenge in einer dynamischen VHD zieht zudem noch Vorteile bei der Sicherung und dem Umziehen auf einen anderen Server nach sich: Beide Aktionen gehen schneller über die Bühne, wenn weniger Daten über das Netzwerk zu transferieren sind.

Für die Planung der IT-Ressourcen in einem Unternehmen, das die Virtualisierung der Server in Angriff nehmen möchte, hat das aber auch wichtige Auswirkungen. Bei einer entsprechenden Planung sollte das IT-Team genügend Leistungsfähigkeit für den Virtualisierungs-Host einrechnen. Hier sind die Bereiche Prozessor-Leistung, Arbeitsspeicher-Ausstattung, Netzwerk-Bandbreite (und Anzahl der physikalischen Netzwerkkarten) wichtige Punkte. Zudem kommt noch das Kapitel Massenspeicher-Subsystem ins Spiel.

Bild 2. Später kann der Administrator die dynamische VHD zu einer mit fester Größe konvertieren. Quelle: Microsoft
Bild 2. Später kann der Administrator die dynamische VHD zu einer mit fester Größe konvertieren. Quelle: Microsoft
Wer mehrere Server virtualisieren möchte, muss sicherstellen, dass auf dem Speicher-Array genügend Platz zur Verfügung steht. Da Speicherplatz in Form von Festplatten heutzutage vergleichsweise günstig zu haben ist, rangiert die Planung des Storage-Systems bei vielen Unternehmen nicht an oberster Stelle. Es wird in der Regel nur geprüft, ob für alle nötigen VHDs genügend Platz auf den Arrays zur Verfügung steht und zudem noch etwas mehr Platz für künftige Erweiterungen eingeplant und dann eingesetzt.

Ein Rechenbeispiel

Angenommen ein Unternehmen verfügt über einen Virtualisierungs-Host und  an diesem System ist ein Storage Array mit sechs Terabyte (TByte) angeschlossen. Auf dem Virtualisierungs-Host sollen zunächst sechs virtuelle Server aktiv werden, die zusammen vier der sechs TByte auf dem Array belegen. Dann bleiben noch zwei TByte freier Speicherplatz übrig. Da dieser Betrieb einer virtuellen Umgebung im Unternehmen über einige Monate sehr stabil läuft, fällt womöglich die Entscheidung, weitere virtuelle Server auf dem Host zu betreiben.

In der Regel wird das IT-Team dann aber nicht mehr die ursprüngliche Kalkulation heranziehen und wissen, dass noch zwei TByte für Erweiterungen zur Verfügung stehen. Vielmehr ist die Arbeitsweise meistens so ausgelegt, dass sich die IT-Abteilung die aktuelle Ausnutzung des Massenspeichers ansieht und diesen Wert als Grundlage für die weiteren Vorhaben verwendet.

In diesem Fall kann es leicht dazu kommen, dass die Administratoren sehen, dass auf dem Array noch vier TByte unbenutzt sind (denn der Hyper-V arbeitet ja mit dynamischen Festplatten).  Daher werden dann weitere virtuelle Server auf den Host gebracht und die unbenutzte Speicherkapazität, die vier TByte, den neuen virtuellen Computern zugewiesen. Danach wird der Betrieb eine Zeitlang problemlos funktionieren, doch eines Tages tritt das Problem auf: Der Server hat zu wenig Massenspeicher.

Der Grund für dieses Verhalten ist schnell gefunden: Der Hyper-V legt im Standardfall eine dynamische VHD an (nicht zu verwechseln mit den Dynamic Disks, die Windows Server selbst unterstützt).  Nur wenn der Administrator beim Erstellen der VM explizit angibt, dass eine VHD mit fester Größe verwendet werden soll, weicht dieses Verhalten ab. Daher wird bei einer dynamischen VHD im ersten Ansatz wesentlich weniger Kapazität auf der physischen Festplatte belegt.

Angenommen es wird eine dynamische VHD mit einer Größe von 500 GByte angelegt, kann es durchaus vorkommen, dass zuerst leidglich 100 MByte auf der physischen Festplatte benutzt sind – dieses Konzept ähnelt sehr stark dem »Memory Overcommitment« im Storage-Umfeld. Erst im Verlauf der nächsten Betriebsstunden, -Tage, -Wochen und  -Monate wird die VHD auf dem physikalischen Datenträger anwachsen, bis sie irgendwann an die maximal zugestandene Größe kommt. In der Zwischenzeit aber ist die Belegung auf der physischen Festplatte entsprechend geringer.

Somit liegt der Fehler bei der zuvor beschriebenen Vorgehensweise in der Tatsache, dass der Verantwortliche im IT-Bereich sich die Auslastung auf der physischen Festplatte als Entscheidungskriterium heranzieht, wenn es darum geht, weitere VMs auf dem Virtualisierungs-Host anzusiedeln. Besser wäre es da, eine Liste zu führen, die alle maximalen Größen der einzelnen VHDs addiert und so ein Overcommitment vermeidet.

Denn sollte dieser Fall eintreten, hilft es auch nichts, wenn der Speicher-Administrator einfach Daten aus den einzelnen VHDs löscht. Die dynamischen VHD wachsen zwar automatisch bis zur vorgegebenen Grenze an. Doch ein automatisches Reduzieren der Größe einer VHD wird nicht unterstützt.

Das VHD-Dateiformat
Bei den Virtualisierungs-Plattformen von Microsoft, dem »Hyper-V« und dem »Virtual PC« (und auch beim älteren »Virtual Server«) wird eine virtuelle Festplatte ( Virtual Hard Disk) als eine .vhd-Datei abgespeichert. Aber auch andere Virtualisirungs-Plattformen wie der »XenServer« und der »Provisioning Server« von Citrix, beziehungswiese die »VirtualBox« von Oracle/Sun verwenden dieses Format. Dagegen setzt der Marktführer im Bereich der Server-Virtualisierung, VMware, mit den ».vmdk-Dateien« auf ein eigens entwickeltes Format.
Im Gegenzug zu einer physischen Festplatte  ist der Hyper-V in der Lage, eine .vhd-Datei innerhalb von wenigen Minuten anwachsen zu lassen. Dazu gilt es aber die Virtual Machine für diesen Vorgang vorzubereiten. Dazu gehören das Herunterfahren der VM sowie das Auflösen von eventuell gemachten Snapshots.
Es gibt für das Überführen von physischen Systemen in virtuelle Maschinen geeignete Tools. Eines davon ist frei verfügbar: »disk2vhd« von Sysinternals (mittlerweile ist das Unternehmen von Microsoft aufgekauft). Wie das Tool funktioniert, zeigt ein Beitrag auf www.nt4admins.de.