Um eine virtuelle Festplatte im Microsoft VHDX-Format zu verkleinern bedarf es ein wenig Vorbereitung und ein paar Schritte.
Vorab-Bemerkung
Die einzelnen Vorgänge können je nach Größe, Hardware und Auslastung durchaus mehrere Stunden in Anspruch nehmen. Von daher sollte ein entsprechendes Zeitfenster mit Bedacht gewählt werden. Zudem empfiehlt es sich, vorab einen Testlauf mit einer Kopie oder aus einer Datensicherung heraus durchzuführen.
Datensicherung erstellen
Bevor man zu Tate schreitet, unbedingt eine Datensicherung erstellen, für den Fall das etwas schief läuft!
Defragmentierung durchführen
Vor dem verkleinern einer Partition bzw. einer *.vhdx sollte deren Inhalt defragmentiert werden. Das geht Online mit Bordmitteln, meist ist das Ergebnis allerdings Offline besser. Eine vorangehende Defragmentierung verhindert meist die Meldung beim Verkleinern der Partition, das nicht genügend Speicherplatz zur Verfügung stände oder, am Beispiel von Macronit Disk Partition Expert, eine Meldung erscheint, das es zuviele Fragmente gibt.
Bemerkung: Mit On-/Offline ist gemeint, ob der virtuelle Computer läuft oder nicht bzw. die VHDX verwendet wird oder nicht.
Partition verkleinern
Die Partition kann Online mit Bordmitteln von Windows verkleinert werden. Wenn’s nicht klappt, weil beispielsweise (immer noch trotz Defragmentierung) gemeckert wird, das nicht genügend Speicherplatz vorhanden wäre, dann Offline mit einem entsprechenden Partitionierer (z.B. Macrorit Disk Partition Expert, MiniTool Partition Wizard, etc.) arbeiten. Unter Hyper-V kann man z.B. einen virtuellen Computer der 1. Generation mit GParted Live starten und dann die Partition verkleinern. Letzteres hat bislang immer, selbst bei widerspenstigen Partitionen, erfolgreich funktioniert und ist gegenüber den Windows-Mitteln dank Schieberegler (imho) angenehmer.
VHDX verkleinern – Schritt 1
Damit der freie zur Verfügung stehende Speicherplatz innerhalb der VHDX reduziert wird, wird dieser wie folgt verringert:
- Im „Hyper-V Manager“ auf „Datenträger bearbeiten…“ klicken.
- Die gewünschte VHDX auswählen.
- „Verkleinern“ auswählen und auf der Folgeseite die neue Größe angeben.
Dieser Schritt ändert allerdings (noch) nicht die Größe der Datei auf der Festplatte! Siehe dazu Schritt 2
VHDX verkleinern – Schritt 2
Spielt die physikalische Größe, also der belegte Speicherplatz, der *.vhdx keine Rolle, kann dieser Schritt übersprungen werden. Soll allerdings die Datei real verkleinert werden, so muss eine Komprimierung durchgeführt werden.
- Im „Hyper-V Manager“ auf „Datenträger bearbeiten…“ klicken.
- Die gewünschte VHDX auswählen.
- „Komprimieren“ auswählen.
Abschlussbemerkung
Die einzelnen Vorgänge lassen sich per Skript (Powershell) vornehmen, siehe dazu die entsprechende Dokumentation und die Quellen.
Quellen:
Ben Armstrong’s Virtualization Blog – Shrinking a VHDX on a Running Virtual Machine
Dixin’s Blog – Shrink Virtual Hard Disk Image (VHD and VHDX) Files