Bei der Microsoft Virtualisierungslösung Hyper-V werden die virtuellen Maschinen in VHD bzw. VHDX Dateien gespeichert. Jeder kennt das Problem, dass die VHD in der Regel im Betrieb immer größer wird und man den Wunsch hat, dass die VHD-Festplatte weniger Festplattenplatz belegt.

Das spart nicht nur Platz, sondern verkürzt natürlich auch die Backup-Zeiten. Im Hyper-V gibt es ja bereits die Funktion, eine VHD zu verkleinern. Dies funktioniert im Hyper-V Manager im Assistent zum Bearbeiten virtueller Festplatten. Das Verkleinern einer .VHD oder .VHDX Datei kann übrigens auch per PowerShell vorgenommen werden.

hyper-v-assistent-zum-bearbeiten-virtueller-festplatten

Der Vorgang kann jederzeit ausgeführt werden, wenn die VM ausgeschaltet ist. Der Vorgang dauert je nach Größe der VHD recht lange und im Normalfall verläuft die Komprimierung problemlos. Ein Backup sollte vorher natürlich immer gemacht werden. Leider ist der Erfolg der Komprimierung in der Regel mehr als schlecht. Oftmals bringt es sogar gar nichts.

Das liegt daran, dass eine VHD, die evtl. frei gewordenen Blöcke nicht wirklich wieder freigibt, sodass dieser Komprimierungsvorgang die VHD auch verkleinern kann. Wenn Ihr z.B. Logfiles in einer VHD löscht und hinterher eine Komprimierung macht, so verkleinert sich die VHD nicht mehr. Es muss somit eine Lösung gefunden werden, die freien Bereiche wirklich wieder freizugeben.

Lösung:

Und hier kommt nun das kostenlose Tool „SDELETE“ von Microsoft Sysinternals ins Spiel. Mit Hilfe dieses Programms könnt Ihr die freien Bereiche wieder wirklich freigeben.

sdelete-befehl-parameter

Einfach bei laufender VM in der VM das Programm SDELETE (Secure Delete) mit dem Parameter -z aufrufen. Dieser Parameter bedeutet „Zero free space (good for virtual disk optimization)„. Dieser Parameter ist spezielle für die Anwendung innerhalb von virtuellen Maschinen.

Der Vorgang dauert ebenfalls recht lange, es wird aber immer der Fortschritt in % angezeigt. Dabei werden die freien Stellen der Partition wieder so markiert, dass sie hinterher durch den Hyper-V Komprimierungslauf auch wirklich wieder freigegeben werden.

Nach erfolgreichem Durchlauf müsst Ihr die VM herunterfahren und den oben aufgeführten Komprimierungsvorgang wiederholen. Nun sollte sich die VHD entsprechend verkleinern.

Wichtig ist dass Ihr unbedingt ein Backup Eurer VM vor diesen Tätigkeiten durchführt!

Das Tool SDELETE hat übrigens noch weitere Parameter, die wir Euch hier nachfolgend kurz aufgelistet haben.

SDelete v2.0 – Secure file delete
c   Löscht freien Speicherplatz. Ein Prozentsatz des restlichen Speicherplatzes kann angegeben werden.
p  Gibt die Anzahl der Überschreibvorgänge an. Der Standardwert ist 1
r   Entfernt das Read-Only Attribut.
-s   Geht rekursiv durch die Verzeichnisstruktur und berücksichtigt auch die Unterverzeichnisse.
z   Zero free space (Besondere Option für virtuelle Maschinen)
-nobanner   Zeigt das Startup Banner nicht an

Übrigens gibt es das Programm mittlerweile auch in einer 64-Bit Version, dieses ist ebenfalls in dem Downloadlink mit enthalten. Es ist am besten, Ihr kopiert Euch beide Programme in Eurer Windows Verzeichnis „C:\Windows\System32“, damit es Euch immer ohne Pfadangabe zur Verfügung steht.

Hier nachfolgend findet Ihr den Link zum SDELETE Programm:

Download SDELETE (Windows Sysinternal Tools)