Warum Sie unter Windows 8 und 10 die Laufwerksoptimierung für SSDs NICHT abschalten sollten

//EN: This article is in parts based on information from an excellent blog post of  Scott Hanselman. For english original see: hanselman.com.

In zahlreichen Foren lese ich immer wieder die Frage „Was sollte ich beim Umstieg auf eine SSD beachten?“ gefolgt von Zahlreichen gut gemeinten Ratschlägen.

Neben dem Deaktivieren von SuperFetch und PreFetch (worauf ich evtl. in einem weiteren Artikel eingehe) ist auch immer der Tipp dabei, die Datenträgeroptimierung („Defragmentierung“) zu deaktivieren. Ferner schalten sogar einige, den SSDs beiliegende Programme, wie zB. „Samsung Magician“ die Funktion ebenfalls ab.

Nun verhält es sich mit diesem Tipp wie mit allen Informationen in der IT-Welt: Das, was gestern noch richtig war, stimmt heute unter Umständen nicht mehr. So auch dieser Mythos. Primär hängt die richtige Antwort auf die Frage nämlich vom verwendeten Betriebssystem, also der Windows Version, ab.

Ältere Betriebssysteme – alles vor Windows 7 (also Vista, XP, 2000 usw.) kennen „SSDs“ gar nicht, und wissen daher auch nicht, wie diese zu behandeln sind. Windows 7, erkennt SSDs unter Umständen (siehe hier) und deaktiviert dann den Windows Defragmentierungsdienst für diese Laufwerke. Wird die SSD von Windows 7 nicht erkannt, muss der Anwender in der Tat den Defragmentierungsdienst entsprechend anpassen.

Seit Windows 8 kann das Betriebssystem mit SSDs und deren technischen Besonderheiten umgehen. Microsoft hat daher die Funktion nun in „Datenträger Optimieren“ umbenannt.

Im folgenden möchte ich gern eine ausführliche Antwort auf die Frage nach dem Sinn bzw. Unsinn der Defragmentierung geben. Leser, die nur die Antwort auf die Frage: „Was ist nun bei Windows 8 anders?“ interessiert: Bitte ganz nach unten schauen.

Was ist Defragmentieren eigentlich?

von hobvias sudoneighm from Edmonton, Canada (book shelf project 1 ~ striatic {notes}) [CC BY-SA 2.0 (http://creativecommons.org/licenses/by-sa/2.0)], via Wikimedia Commons
Ein „fragmentiertes“ Bücherregal von hobvias sudoneighm, Edmonton, Canada [CC BY-SA 2.0], via Wikimedia Commons
Speichert Ihr PC Daten auf einen Datenträger müssen Sie sich das ungefähr so vorstellen, als ob Sie unter enormen Zeitdruck versuchen einen Brockhaus Band (oder für die jüngeren Leser alle 7 Harry Potter Romane inkl. der 3 Begleitbücher) in ein sehr großes, schon recht volles Bücherregal zu bekommen. Wenn in Ihrem Bücherregal nur noch ein Fach mit Platz für 5, eines für 3 und ein weiteres für 2 Bücher frei ist – Sie aber 10 Bücher unterbringen wollen – müssen Sie die Bücher zwangsläufig verteilen. (In diesem Falle „fragmentieren“ Sie dann den Brockhaus Band, oder ihre Harry Potter Kollektion.) – Da Sie unter Zeitdruck arbeiten – was ein PC stets tut, da der Anwender ja nicht warten soll – kommen Sie nicht dazu, das Bücherregal erst aufzuräumen und dann die Bücher nebeneinander zu stellen.

Da Ihr Bücherregal wie schon gesagt sehr, sehr groß ist, und die freien Regalplätze nicht nebeneinander waren, tragen Sie sich zudem in einem Inhaltsverzeichnis ein, wo Sie die Bücher hin gestellt haben, um sie schneller wieder zu finden. Dieses Inhaltsverzeichnis können Sie auch nutzen, um noch freie Regalplätze ausfindig zu machen. Dieses „Inhaltsverzeichnis“ nennt sich bei Computern mit Windows Betriebssystem FAT (File Allocation Table) oder MFT (Master File Table) und ist bestandteil des Dateisystems (zB. FAT32, exFAT oder NTFS) – es dient dort genau dem gleichen Zweck, wie oben skizziert: Finden von Dateien und freien Ablageplätzen auf dem Datenträger. Entscheidend dabei ist, das dieses Inhaltsverzeichnis vom Betriebssystem und nicht vom Datenträger selbst geführt wird. [Genau genommen führen moderne Festplatten und SSDs ein zusätzliches, eigenes Inhaltsverzeichnis. Siehe dazu weiter unten „TRIM“.]

Wenn Sie nun später etwas mehr Zeit haben, können Sie  das Bücherregal aufräumen. Jetzt sorgen Sie natürlich dafür, dass alle Bücher des Bandes bzw. der Sammlung möglichst nahe beieinander stehen – nach Möglichkeit im gleichen Fach. Im „Inhaltsverzeichnis“ tragen Sie nun auch die neuen Reglplätze ein – und markieren die frei gewordenen wieder als leer. So können Sie dann schneller auf alle Bücher auf einmal zugreifen, und wissen, wo Sie beim nächsten mal, noch Bücher unter bringen können. (Sie haben nun gerade das Bücherregal „defragmentiert“ und damit die Zugriffszeit auf den kompletten Band verbessert.)

Ordner der mehr Platz verbraucht als nötig
Ordner der mehr Platz verbraucht als nötig

[Logistisch gesehen passen in ein Fach unter Umständen mehrere Bücher. Bei einem Datenträger ist das ähnlich. Mehrere Sektoren, die die kleinste adressierbare Speichereinheit darstellen, werden zu sog. Clustern (auch Zuordnungseinheiten, in unserem Falle einem „Fach“) zusammen gefasst. Pro Zuordnungseinheit können mehrere Dateien – oder Dateibestandteile („Bücher“) abgelegt werden. Daher unterscheidet Windows beim Defragmentieren noch nach der Größe der „Bücher“ und stapelt diese dann optimiert in die einzelnen „Fächer“, sodass immer möglichst viele Bücher in jeweils einem Fach unter kommen. Würde man dies nicht machen, wäre der Datenträger irgendwann voll, obwohl die Datenmenge die Kapazität der Festplatte tatsächlich noch nicht erreicht hat. Rechts sehen Sie in einem Screenshot einen Ordner, der ungünstig abgelegt ist, und damit mehr Platz einnimmt, als er eigentlich verbraucht.]

Warum sollten Festplatten defragmentiert werden?

Schreib-/Leseköpfe in einer Festplatte von William Warby from London, England (Hard Drive) [CC BY 2.0 (http://creativecommons.org/licenses/by/2.0)], via Wikimedia Commons
Schreib-/Leseköpfe in einer Festplatte von William Warby, London, England [CC BY 2.0], via Wikimedia Commons

Eine Festplatte kann – bedingt durch die Konstruktion – Daten immer nur an/von einer Stelle schreiben/laden. [Genau genommen sind in einer Festplatte mehrere sich drehende Platten untergebracht, die jeweils auf der Ober- und Unterseite beschrieben werden können. Pro Plattenhälfte gibt es, vergleichbar mit einem Plattenspieler, ein Arm, der die Schreib-/Leseköpfe an die benötigte Stelle bewegt. Diese Arme sind starr miteinander verbunden, dh. alle Schreib-/Leseköpfe sind immer an der gleichen Stelle auf der jeweiligen Platte – und nur an dieser Stelle können dann die Daten gelesen / geschrieben werden.] – Ist nun eine einzelne Datei über mehrere Platten an verschiedensten Stellen verteilt, dauert das Einlesen der Datei entsprechend lange, da die Schreib-/Leseköpfe alle Ablageorte nacheinander „anfahren“ müssen. Gleiches gilt für das Schreiben der Datei, wenn diese nicht mehr in einem Stück abgelegt werden kann.

Durch das Defragmentieren werden die Daten auf der Platte so abgelegt, dass diese nach Möglichkeit „in einem Rutsch“ gelesen werden können. Zum anderen wird der freie Speicherplatz so optimiert, dass neue Daten möglichst in einem Stück abgelegt werden können.

Warum sollten SSDs eigentlich nicht defragmentiert werden?

76coolio at the English language Wikipedia
Geöffnete SSD, zu sehen sind die einzelnen Speicherchips. Foto von 76coolio at the English language Wikipedia [CC-BY-SA-3.0], via Wikimedia Commons

Eine SSD funktioniert nicht mechanisch. Die Daten sind auf mehreren Chips im Inneren der SSD gespeichert. Diese Chips haben zwei entscheidende Vorteile:

  • Zum einen können Sie wesentlich schneller die Daten von einer bestimmten Stelle lesen bzw. an eine bestimmte Stelle schreiben.
  • Zudem können Sie das voneinander unabhängig an verschiedenen Stellen parallel machen.

Daher hat die Fragmentierung bei einer SSD nicht die oben für Festplatten beschriebenen Nachteile was die Lese-/Schreibgeschwindigkeit angeht.

Allerdings ist es nun so, dass eine SSD bedingt durch den Aufbau der Speicher-Chips nicht beliebig viele Schreibvorgänge pro Speicherzelle ermöglicht. (Genauer gesagt, ist das Löschen einer bereits belegten Speicherzelle nicht beliebig oft möglich, da mit jedem Löschvorgang das Material der Speicherzelle abgenutzt wird. Weiteres siehe: Wikipedia.)  Die SSD „schützt“ sich vor der übermäßigen Abnutzung einzelner Speicherzellen, indem Daten beim Schreiben möglichst gleichmäßig über alle Speicherzellen verteilt werden. Dieses Vorgehen nennt man Wear-Leveling. Da dies im Datenträger, also der SSD, abläuft, bekommt das Betriebssystem davon nichts mit. Durch ein regelmäßiges Umsortieren (Defragmentieren) der Daten durch das Betriebssystem würden die Speicherzellen häufiger als nötig gelöscht und erneut beschrieben ohne einen positiven Effekt zu erzielen.

Da alte Betriebssysteme gar nicht wissen, was eine SSD ist, wissen diese auch nicht, dass eine SSD durch das permanente Defragmentieren auf Dauer schneller verschleißen würde. Daher muss das zyklische Defragmentieren dort manuell deaktiviert oder zumindest wie für Windows 7 geschrieben kontrolliert und ggfs. abgeschaltet werden.

[Das durch das Abschalten der Defragmentierung das oben beschriebene Kapazitätsproblem (Nicht vollständig gefüllte Cluster) auftritt, wird in dem Falle akzeptiert, um die Lebensdauer der SSD zu erhöhen.]

Was ist eigentlich TRIM, und wofür braucht eine SSD das?

Im Zusammenhang mit SSDs und der optimalen Verwendung fällt auch immer wieder der Begriff „TRIM“-Unterstützung. Wie gerade beschrieben, verteilt eine SSD die Schreiboperationen gleichmäßig über alle zur Verfügung stehenden freien Speicherzellen. Dazu muss eine SSD allerdings auch erst einmal wissen, dass eine bereits benutzte Speicherzelle evtl. wieder frei ist. Was ziemlich simpel klingt, ist technisch natürlich wieder ein Problem. Denn: Löscht das Betriebssystem eine Datei, so wird der von der Datei eingenommene Speicherplatz im „Inhaltsverzeichnis“ des Dateisystems einfach wieder als frei markiert. Die tatsächlichen Ablageorte bleiben weiterhin mit den Daten gefüllt und werden erst bei erneuter Nutzung überschrieben. [Das ist auch der Grund, warum auf „normalem Wege“ gelöschte Dateien von einer Festplatte noch mit relativ geringem Aufwand wiederhergestellt werden können.]

Da das „Inhaltsverzeichnis“ vom Betriebssystem (genauer dem Dateisystem) geführt wird, weiß der Datenträger selbst also nicht, welcher seiner Bereiche voll oder leer ist. Bei Festplatten war und ist dies auch nicht weiter relevant, da die Sektoren einer Festplatte verglichen mit den Speicherzellen einer SSD fast unbegrenzt oft beschrieben werden können und daher auch nicht zwingend umverteilt werden müssen. Außerdem können die Sektoren einer Festplatte direkt mit neuen Werten „überschrieben“ werden, ohne diese zuvor explizit löschen zu müssen.

[Der Vollständigkeit halber sei gesagt, dass auch bei Festplatten einzelne Sektoren beschädigt bzw. abgenutzt werden können. Daher gibt es auch in modernen Festplatten ein „internes“ Inhaltsverzeichnis, welches von der Festplatte genutzt wird, um Daten, die auf einen Defekten Sektor geschrieben werden sollen „on the fly“ – also für das Betriebssystem unsichtbar – an eine andere, für genau diesen Fall reservierte, Stelle umzuleiten, und dann auch entsprechend wieder zu finden. Hier ließt man dann häufig von „Reallocated Sectors„. Da die defekten Sektoren idR. aber irreparabel sind, werden diese aus dem „Umleiteverzeichnis“ nicht wieder entfernt.]

Für eine SSD hingegen, die wegen des Wear-Levelings selbstständig entscheiden muss, wo Sie die Daten ablegt, und die eine bereits benutzte Zelle erst löschen muss, bevor sie diese erneut beschreiben kann ist es hingegen durchaus relevant zu wissen, welche Speicherzellen frei sind oder wieder frei werden. Aufgrund der Tatsache, dass die SSD keinen Zugriff auf das „Inhaltsverzeichnis“ des Dateisystems hat, führt eine SSD ein zusätzliches internes Inhaltsverzeichnis, in dem sie ua. markiert, welche Speicherzelle belegt ist, welche gelöscht wurde und welche noch frei ist.

Da das tatsächliche Löschen nun aber nur im Inhaltsverzeichnis des Dateisystems erfolgt, muss die SSD auf andere Weise heraus bekommen, welche Speicherzellen frei geworden sind. Prinzipiell merkt sie das natürlich spätestens dann, wenn das Betriebssystem Daten an an eine bestimmte Stelle schreiben will. Diese muss ja aus Sicht des Betriebssystems leer gewesen sein. Waren die gewünschten Zellen bereits in Verwendung, muss die SSD diese Zellen zunächst löschen, um sie danach erneut zu beschreiben. Die Vorgänge Löschen + Schreiben sind in Kombination natürlich langsamer als das einfache Beschreiben einer noch leeren Speicherzelle. Dieser Umstand wird von Anwendern von SSDs bzw. Systemen ohne TRIM Unterstützung als zunehmende Verlangsamung bei Schreiboperationen wahrgenommen – je voller die SSD ist, desto langsamer wird sie, da nur das beschreiben von leeren Zellen schnell ist.

Daher ist es bei SSDs gängige Praxis, die Zellen, die als belegt galten und nun erneut beschrieben werden sollen nur als „zu löschen“ zu markieren, und die Daten stattdessen in andere, bislang weniger häufig genutzte freie Zellen zu schreiben. Wenn die SSD dann einmal nichts zu tun hat (idle ist, wie man so schön sagt), löscht Sie die als „zu löschen“ markierten Zellen wirklich und markiert sie als frei. Dieses Vorgehen ist ein Bestandteil der sog. „Garbage Collection„.

Effektiver wäre es natürlich, wenn das Betriebssystem der SSD gleich mitteilen würde, welche Sektoren durch das Löschen bzw. Verschieben von Daten frei geworden sind und dies nicht nur in seinem eigenen Inhaltsverzeichnis vermerken würde. Dazu wurde der TRIM Befehl eingeführt (unter Windows ab Version 7). Mit dessen Hilfe kann das Betriebssystem einem SSD Datenträger mitteilen, welche Sektoren es nicht mehr benötigt. Die SSD kann diese daraufhin bereits vorzeitig löschen und später erneut belegen. [Mithilfe des TRIM Befehls kann eine SSD die internen Datenstrukturen – die Erasable Blocks – zusätzlich besser optimieren, was zu einer weiter reduzierten Schreibtätigkeit und damit geringerem Verschleiß führt. Das tiefer auszuführen würde jedoch jetzt zu weit gehen.]

Ein gewisser Nachteil des TRIMmings ist allerdings, dass nun mit jedem Löschprozess weitere Befehle – abhängig von der Größe der Datei an den Datenträger geschickt werden müssen. Gerade bei großen Datenmengen müssen viele Sektoren als gelöscht gemeldet und von der SSD verarbeitet werden, was Datenträger-abhängig wiederum zu Verzögerungen führen kann. Das Problem löst das Betriebssystem nun so, dass es sich in einer Liste im Hauptspeicher „merkt“, welche Bereiche freigegeben werden müssen. Die sog. TRIM-Queue. Dies Wartschlange wird abgearbeitet, sobald keine Schreib-/Leseoperationen auf der SSD mehr anstehen, um diese nicht auszubremsen.

[Ein technischer Super-Gau wäre gewissermaßen eine Defragmentierung des Dateisystems auf einer SSD unter einem System auszuführen, welches den TRIM Befehl nicht unterstützt: Das Ergebnis wären zahlreiche umsortierte und nicht korrekt freigegebene Datenblöcke. Die SSD wird also langsamer und verschleißt schneller.]

Was ist nun in Windows 8 (und neuer) anders?

Mit Windows 8 hat Microsoft eine bessere Behandlung von SSDs im Betriebssystemkern untergebracht. Das System erkennt die SSD nicht nur als solche (Siehe Screenshot, Spalte „Medientyp“) sondern weiß auch, wie diese sinnvoll zu optimieren sind.

Die Windows 10 Datenträgeroptimierung
Die Windows 10 Datenträgeroptimierung

Die bereits beschriebene TRIM-Queue ist unter Windows nicht unendlich lang. Stehen mehr Löschoperationen an, als in diese Schlange hinein passen, werden neue Einträge unter Umständen verworfen. Die SSD bekommt also nicht immer mit, welche Bereiche frei gegeben wurden. Es kann außerdem vorkommen, dass nicht alle TRIM Befehle überhaupt in der SSD ankommen, oder dort verarbeitet werden – zB. bei einem Stromausfall. Um das Problem zu beheben, kann das Betriebssystem in regelmäßigen Abständen ein sogenanntes „Retrimming“ durchführen, bei dem es alle freien Sektoren aus dem Inhaltsverzeichnis des Dateisystems an die SSD meldet.

Genau dies ist seit Windows 8 in Form der Laufwerksoptimierung umgesetzt. Für Festplatten wird wie schon unter Windows Vista und 7 wöchentlich eine Defragmentierung durchgeführt. Bei SSDs wird ein regelmäßiges Retrimming ausgeführt, um sicher zu stellen, dass alle nicht belegten Zellen wieder frei gegeben werden. Das Retrimming läuft allerdings kontrolliert ab, damit die TRIM-Queue nicht überfüllt wird.

Zudem wird bei aktivem Volumen-Schattenkopie-Dienst einmal monatlich auch eine SSD defragmentiert, um die Performance der Schattenkopien hoch zu halten. Das löst parallel auch das oben angesprochene, durch die Fragmentierung entstehende Kapazitätsproblem.

Zusammenfassung

Zusammenfassend lässt sich also sagen, dass für alle Systeme ab Windows 8 die Datenträgeroptimierung für SSD nicht ab, sondern angeschaltet werden sollte, da das System die Laufwerkstypen unterscheidet und daraufhin entsprechend unterschiedlich behandelt.

Deaktiviert man die Optimierung für SSDs, läuft man Gefahr, dass das System auf Dauer langsamer wird. Bei aktiver Optimierung wird sicher gestellt, dass alle nicht mehr verwendete Bereiche ordnungsgemäß freigegeben werden. Außerdem werden die Daten monatlich optimal angeordnet. Dadurch bleiben natürlich in geringerem Maße die oben erwähnten Verschleißerscheinungen an den Speicherchips der SSD.

Windows ab Version 8 versucht hier also einen Mittelweg zwischen Performance und Verschleiß zu beschreiten. Was den Verschleiß angeht, muss man wissen, dass moderne SLC SSDs bereits jetzt über 100’000 Schreibzyklen pro Speicherzelle aushalten (ältere MLC SSDs ca. 10’000 Zyklen). Daher ist gegen eine gelegentliche Defragmentierung moderner SSDs im Zuge der Laufwerksoptimierung nichts einzuwenden. Um Datenverlust vorzubeugen sollten Sie ohnehin auf eine zusätzliche Backuplösung setzen.

Da die Preise für SSDs derzeit rapide fallen, ist auch ein Austausch der SSD nach wenigen Jahren – mit dem dann auch höhere Kapazitäten und verbesserte Zugriffszeiten verbunden sein dürften – recht wahrscheinlich, sodass man diese nun nicht übermäßig schonen muss.

Bei einem Upgrade auf Windows 10 wird die Datenträgeroptimierung im übrigen automatisch für alle SSD Laufwerke wieder eingeschaltet.

Gefahr ist weiterhin nur dann im Verzug, wenn das System eine SSD als normale Festplatte erkennt und auch TRIM nicht aktiviert. Das können Sie im oben gezeigten Dialog einfach nachvollziehen.

Aus meiner Sicht ist jedoch noch Luft nach oben: Es bleibt zu hoffen, dass in Zukunft die Dateisysteme besser auf die Arbeitsweise von SSDs abgestimmt werden. – Ganz ohne die doppelte Buchführung wäre es noch effizienter.

Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s