Mit ein paar wenigen Schritten, lässt sich die Größe einer VHD komprimieren. Ungenutzter Speicherplatz lässt sich damit wieder freisetzen und für andere Zwecke nutzen.

VHD komprimieren auf tatsächliche Größe

Die Möglichkeit, eine VHD komprimieren zu können, besteht nur, wenn das Festplattenimage als Typ „Dynamisch erweiterbar“ angelegt wurde. In diesem Fall wird nämlich das sogenannte Thin Provisioning angewendet. Das bedeutet, dass sich die Image-Datei nur dann vergrößert, wenn der Speicherplatz in der VM auch wirklich belegt wird. Das eigentlich Dumme an der Sache ist, dass einmal belegter Speicherplatz andersrum nicht wieder automatisch freigegeben wird.

Die beiden nachfolgenden Bilder beschreiben das Problem etwas genauer:

VHD komprimieren

Auf der Partition D sind von knapp 10GB noch 8,23GB Speicherplatz für die freie Verwendung vorhanden.

vhd datei verkleinern

Auf dem Hyper-V Host nimmt die VHD Datei allerdings ca. 9GB Speicherplatz in Anspruch.

Ist genügend Speicherplatz auf dem Hyper-V Host vorhanden, ist dieser Umstand zunächst nicht weiter schlimm. Problematisch wird es allerdings, wenn die maximale Größe der virtuellen Festplatten den insgesamt vorhandenen Speicherplatz überschreitet. Dann besteht die Gefahr, dass die Partition oder das Cluster Shared Volume (CSV) „voll läuft“. Das Ergebnis wäre der Ausfall sämtlicher virtueller Computer, die auf dieser Partition, bzw. CSV liegen.

 

Per PowerShell die VHD verkleinern

Für ein optimales Ergebnis bei der Komprimierung darf sich die VHDX-Datei nicht im Schreibzugriff berfinden. Sprich: die virtuelle Maschine muss ausgeschaltet, bzw. heruntergefahren sein. Andernfalls bekommst Du die Fehlermeldung: „Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendet wird (0x80070020)“ angezeigt.

Der PowerShell Befehl zum Verkleinern einer VHDX-Datei lautet Optimize-VHD:

Dadurch wird die betreffende virtuelle Festplatte auf die geringst mögliche Größe komprimiert. Der Schalter „-mode Full“ bewirkt, dass beim Komprimieren neben „ausgenullten“ auch nach unbenutzen Blöcken gesucht wird und auch deren  verwendeter Speicherplatz freigegeben wird.  Nachdem dieser Prozess beendet wurde, lohnt sich ein Blick in den Ordner „Virtual Hard Disks“.

In meinem Beispiel wurde die VHDX-Datei von ca. 8,6GB auf 1,9GB verkleinert. Das entspricht einer Komprimierungsrate von knapp 77%. Es kann sich also besonders bei virtuellen Datenträgern, welche in der Vergangenheit große Datenmengen beheimateten, lohnen die VHD Komprimierung einmal auszuführen.

VHD komprimieren

Nach der Komprimierung der VHDX-Datei ist das Festplattenimage keine 2GB mehr groß.

VHD komprimieren per Hyper-V Manager

Für alle Freunde der grafischen Oberfläche: Der ganze Prozess ist auch über den Hyper-V Manager möglich. Dazu muss lediglich die virtuelle Festplatte in den Einstellungen der virtuellen Maschine ausgewählt werden. Mit einem Klick auf Bearbeiten bekommen wir die möglichen Operationen angezeigt.

VHD komprimieren mit Hyper-V Manager

Auch über die grafische Oberfläche des Hyper-V Servers lässt sich die VHD komprimieren

VHDX komprimieren mit Hyper-V

Die VHDX-Datei kann mittels der Option „Komprimieren“ verkleinert werden.

Egal für welche der beiden Möglichkeiten Du Dich entscheidest, das Ergebnis ist das Gleiche. Die VHDX-Datei wird auf die Größe verkleinert, welche der tatsächlichen Datenmenge entspricht, die in ihr gespeichert ist. Nachdem alle virtuellen Festplatten entsprechend verkleinert wurden, kann die virtuelle Maschine wieder gestartet werden.

Wenn Dir diese Information weitergeholfen hat, kannst Du mir das gerne in die Kommentare schreiben. Ebenfalls freue ich mich über jede kleine Spende, die Du diesem Blog ganz unkompliziert über PayPalMe zukommen lassen kannst. Vielen Dank.