VMDK, VHD: Virtuelle Festplatten defragmentieren


    Tags: ,

    Fragmentierte VHDAls die Zeit für FAT abgelaufen war, schien eine Ära nicht fragmentierender Dateisysteme anzubrechen, zumindest verschiedenenen Marketing-Versprechen zufolge. Faktum bleibt aber, dass alle Filesysteme ihre Dateien mehr oder weniger stark fragmentieren. Dank Virtualisierung verdoppelt sich das Problem, wenn Hosts und Gäste ihre Dateien nicht zusammenhängend speichern. Gefragt ist in dieser Situation allerdings mehr als zweifaches Defragmentieren.

    Der wesentliche Nachteil von stark fragmentierten Dateisystemen besteht bekanntlich darin, dass die Schreib-/Leseköpfe mechanischer Laufwerke mehr bewegt werden müssen als eigentlich nötig, um die zu einer Datei gehören Blöcke abzutasten. Dies kann zu Performance-Einbußen führen.

    Gast-Dateisystem fragmentiert auch auf virtuellen Platten

    Virtuellen Festplatten droht die Fragmentierung genauso wie physikalischen Laufwerken, wenn das Gastbetriebssystem beginnt, den von gelöschten Dateien freigegebenen Platz erneut zu belegen. Abhilfe schafft hier das Defragmentieren von innerhalb der VM, also etwa durch die Windows-eigene Funktion oder eine Software von Drittanbietern.

    Allerdings gilt es hier im Unterschied zu physikalischen Systemen zu beachten, dass andere Workloads auf dem Host durch das I/O-intensive Defragmentieren beeinträchtigt werden können. So kann das automatische Defragmentieren, das bei geringer Systemauslastung in einem Gast einsetzt, nicht erkennen, ob andere VMs gerade stark beansprucht werden.

    Snapshots als Falle für VM-interne Defragmentierung

    VMware SnapshotsVirtuelle Festplatten halten noch eine weitere Falle bereit, wenn man ihr Dateisystem im Gast defragmentieren möchte. Existiert nämlich ein Snapshot der VM, dann schreibt die Vir­tua­li­sierungs­soft­ware alle künftigen Änderungen nur mehr dorthin und die Eltern-vmdk bleibt unverändert. Daher würde eine Defragmentierung die ursprüngliche virtuelle Festplatte kein bisschen optimieren, aber dafür die Delta-Datei für den Snapshot gewaltig aufblähen, weil zahlreiche Blöcke verändert werden.

    Dies gilt für Snapshots unter VMware genauso wie für differenzielle VHDs von Microsoft. Aus diesem Grund empfiehlt es sich, vor dem Anlegen des ersten Snapshots das Dateisystem des Gasts zu defragmentieren. Außerdem sollte man bei Windows-7-Gästen die vorgegebene zeitgesteuerte Defragmentierung deaktivieren, denn sie weiß nichts über den Status der virtuellen Festplatte und würde versuchen, Snapshots zu optimieren. Ein unerwünschter Nebeneffekt kann auch darin bestehen, dass die Defragmentierungssoftware dynamische Disks vergrößert, weil sie für ihre Tätigkeit freien Plattenplatz benötigt.

    Shared Storage resistenter gegen Zersplitterung von Dateien

    Die zweite Ebene, auf der Dateien fragmentieren können, ist das Dateisystem des Hosts. Das bedeutet konkret, dass eine vmdk- oder VHD-Datei stark zerspittert und daher die Geschwindigkeit der Zugriffe negativ beeinflusst. Allerdings hängt diese Neigung zur Dateifragmentierung stark von der Konfiguration des Hosts ab.

    Auf Cluster Shared Volumes sollten nur Dateien gespeichert werden, die für Hyper-V-Rolle angelegt wurden.Wenn virtuelle Festplatten auf Shared Storage abgelegt werden und eigene LUNs nur dem Speichern von vmdk- oder VHD-Dateien dienen, dann droht hier wenig Gefahr. Eine solche Konstellation aus wenigen und sehr großen Dateien ist dafür kaum anfällig, eine Fragmentierung würde immer noch zu einer Aufteilung in relativ große Stücke führen. Eine Performance-Beeinträchtigung ist davon nicht zu erwarten. Abgesehen davon kommen dort in der Regel Cluster-Dateisysteme wie VMFS zum Einsatz, für das es ohnehin keine Defragmentierungs-Tools gibt. Microsofts Cluster Shared Volumes müssen extra für die Defragmentierung in den Wartungsmodus genommen werden.

    Typ-2-Hypervisor anfälliger für doppelte Fragmentierung

    Die VMware Workstation bietet eine eigene Funktion zur Defragmentierung von virtuellen Festplatten.Nutzt man dagegen einen Typ-2-Hypervisor wie VMware Workstation oder Hyper-V mit einer lokalen Disk, dann neigt auch das Host-Dateisystem zu Fragmentierung. In diesem Fall kann man wie gewohnt die Mittel des Host-Betriebssystems nutzen, um der Zersplitterung von vmdk- und VHD-Dateien in den Griff zu bekommen.

    VMware zieht noch eine dritte Ebene ein, indem es eine Funktion zur Defragmentierung von vmdk-Dateien anbietet. Dabei handelt es sich um die Reorganisation der Verwaltungsstruktur von virtuellen Festplatten, indem etwa belegte Blöcke am Anfang der Datei zusammengefasst werden. Eine derartige Optimierung ist unabhängig vom Gast-Dateisystem, sie spielt sich quasi eine Ebene darunter ab.

    VMware-eigene Reorganisation von vmdk-Dateien

    Um vmdk-Dateien zu defragmentieren, müssen sie auf einen Windows-Rechner heruntergeladen werden, wo man sie mit dem Kommandozeilen-Tool vmware-vdiskmanager bearbeitet. Dieses bietet eine Reihe von Funktionen, der Befehl zum Defragmentieren lautet

    vmware-vdiskmanager -d meineDisk.vmdk

    Wenn man virtuelle Laufwerke in VMware Workstation oder Player nutzt, dann kann man sie dort direkt defragmentieren, vorausgesetzt die VM ist ausgeschaltet. Dazu geht man in die Eigenschaften der VM, wählt dort die gewünschte Hard Disk und führt im rechten Fenster unter Utilities den Befehl Defragment aus.

    Fixe vmdks lassen sich nicht defragmentieren

    Egal ob man vmdk-Dateien über die Kommandozeile oder die Oberfläche des Players bzw. der Workstation defragmentiert, es gilt grundsätzlich die Einschränkung, dass sich die Funktion nur auf dynamische Festplatten anwenden lässt. Fixe Disks, die den maximalen zugewiesenen Speicherplatz von Anfang an komplett belegen, lassen sich auf dieser Ebene nicht defragmentieren. Sie sind übrigens auch die beste Vorsorge gegen eine Fragmentierung der vmdk im Host-Dateisystem, weil während des Betriebs für sie kein zusätzlicher Plattenplatz alloziert werden muss.

    Reihenfolge der Defragmentierung

    Nachdem virtuelle Festplatten auf mehreren Wegen defragmentiert werden können, stellt sich die Frage, welche Reihenfolge dabei einzuhalten ist. VMware empfiehlt folgendes Vorgehen:

    1. Dateisystem des Gastes innerhalb der VM optimieren
    2. vmware-diskmanager.exe oder entsprechenden GUI-Befehl in der Workstation ausführen
    3. Host-Dateisystem defragmentieren

    Bei diesem Dreischritt macht es grundsätzlich keinen Unterschied, ob man die eingebauten Funktionen von Windows und VMware verwendet oder eine Software von Drittanbietern verwendet. Diese reklamieren zwar teilweise für ihre Tools, dass sie auf virtuelle Umgebungen abgestimmt seien. Im Fall von PerfectDisk bedeutet dies dann, dass sich die automatische Defragmentierung nach der Auslastung des Host-Systems richtet oder freier Speicher mit Nullen überschrieben wird, so dass dynamische Disks wieder schrumpfen können. Um die meisten anderen Eigenheiten von virtuellen Laufwerken muss man sich jedoch selbst kümmern.

    Keine Kommentare