Schnelle SSD Datenträger entwickeln sich immer mehr zum Standard und es hat sich mittlerweile auch herumgesprochen, dass man SSDs nicht defragmentieren sollte. Leider empfehlen verschiedene Quellen deshalb auch, die Datenträger Optimierung in Windows komplett zu deaktivieren. Was ist nun richtig, was hat es mit dem Defragmentieren von SSDs auf sich?
Beginnen wir einmal ganz von vorne. Unter Defragmentieren versteht man die Neuordnung bzw. das Zusammenführen von fragmentierten Datenblöcken. Bisherige Festplatten sind grob gesagt in vielen gleich großen Datenblöcken aufgeteilt. Wenn eine Datei gespeichert wird, die größer als ein Datenblock ist, wird die Datei auf mehrere Datenblöcke aufgeteilt. Wenn nun nicht genügend zusammenhängende Datenblöcke vorhanden sind, wir die Datei dann eben an mehreren komplett anderen Stellen auf der Festplatte gespeichert. Beim Lesen einer Datei, die auf mehreren nicht zusammenhängenden Datenblöcken gespeichert ist, muss nun der Schreib-/Lesekopf der Festplatte von einer Stelle zur anderen springen, was eben unnötig Zeit kostet. Deshalb sollte man Festplatten von Zeit zu Zeit defragmentieren. Dabei werden die verteilten Datenblöcke umsortiert und wieder zusammengeführt.
Diesen Vorgang führt Windows automatisch zyklisch im Hintergrund durch. Allerdings sind SSDs anders aufgebaut. Diese Datenträger sind nicht in einzelnen Datenblöcken aufgeteilt und einen Schreib-/Lesekopf gibt es auch nicht. Stattdessen werden bei einer SSD die Daten in Chips gespeichert, aufgeteilt in einzelne Speicherzellen. Dabei sind allerdings nicht beliebig viele Schreibvorgänge pro Speicherzelle möglich. Genauer gesagt ist der Löschvorgang das Problem, der aber vor jedem Schreibzugriff erfolgt. Bei den ersten MLC SSDs waren es noch rund 10.000 Zyklen, bei modernen SLC SSDs sind es mittlerweile über 100.000 Zyklen. Da man also vor allem in den Anfangszeiten der SSDs “sparsam” mit den Schreib-/Löschvorgängen umgehen musste, sollte man schon alleine aus diesem Grund eine SSD nicht defragmentieren. Und eben aus dem Grund raten viele Quellen die Datenträger Optimierung im Windows Betriebssystem zu deaktivieren.
Genau dies sollte man aber tunlichst unterlassen! Ab Windows 7 erkennt das Betriebssystem eine verbaute SSD und verzichtet auf die Defragmentierung dieser, obwohl die Datenträger Optimierung aktiviert ist. Hinter der Datenträger Optimierung verbirgt sich nämlich noch viel mehr, weshalb man mit der Deaktivierung der Datenträger Optimierung eher das Gegenteil erreicht.
Wie wir weiter oben gelernt haben, können die einzelnen Speicherzellen einer SSD nicht unbegrenzt oft beschrieben bzw. gelöscht werden. Um sich vor der übermäßigen Abnutzung einzelner Speicherzellen zu schützen gibt es das sogenannte Wear-Leveling. Dabei verteilt die SSD die Schreibvorgänge möglichst gleichmäßig auf die einzelnen Speicherzellen. Problem dabei ist, dass dieser Vorgang komplett auf der SSD abläuft und von der Firmware des Datenträgers gesteuert wird. Das Betriebssystem bekommt davon also gar nichts mit. Schon alleine deshalb wäre es kontra produktiv, wenn das Betriebssystem die Daten auf der SSD wieder umsortieren würde.
Ein weiteres Problem ist die Tatsache dass die SSD gar nicht weiß, welche Speicherzellen wirklich leer sind. Klingt verrückt, ist aber der Tatsache geschuldet, dass das Betriebssystem beim Löschen einer Datei die Speicherzelle gar nicht leert, sondern lediglich im Inhaltsverzeichnis des Dateisystems den Speicherplatz als frei markiert. Die eigentlichen Daten bleiben erst einmal erhalten, bis die Speicherzelle wieder neu beschrieben werden soll. Aus diesem Grund konnte man bei herkömmlichen Festplatten die Daten auch relativ leicht wiederherstellen, solange sie nur gelöscht und nicht überschrieben waren. Bei herkömmlichen Festplatten war dieser Umstand kein Problem, hier konnten die Datenblöcke einfach überschrieben werden. Bei einer SSD müssen die Speicherzellen allerdings vorher explizit gelöscht werden, um sie wieder neu beschreiben zu können.
Eine SSD muss also selbst wissen welche Speicherzellen nicht mehr benötigt und deshalb gelöscht werden können. Die SSD hat aber wiederum keinen Zugriff auf das “Inhaltsverzeichnis” des Dateisystems also muss das Betriebssystem der SSD auf einem anderen Weg mitteilen, welche Sektoren frei geworden sind und gelöscht werden können. Zwar könnte die SSD die Speicherzellen erst dann löschen, wenn sie wieder mit neuen Daten beschrieben werden sollen. Erst löschen und dann beschreiben würde aber natürlich länger dauern als wenn man direkt in eine leere Speicherzelle schreiben kann. Nun kommt der TRIM Befehl ins Spiel. Ab Windows 7 teilt das Betriebssystem der SSD mit, welche Sektoren nicht mehr benötigt werden. Das Betriebssystem sammelt in der sogenannten TRIM Queue die Bereiche, die auf der SSD freigegeben werden müssen. Sobald keine Schreib-/Leseoperationen auf der SSD mehr anstehen wird diese Warteschlange dann abgearbeitet.
Allerdings ist die TRIM Queue nicht unendlich groß. Ist die Warteschlange voll, fallen ältere Einträge weg. Aus diesem Grund gibt es das sogenannte “Re-Trimming”, bei dem alle freien Sektoren aus dem “Inhaltsverzeichnis” des Dateisystems an die SSD gemeldet werden. Und hier kommen wir nun endlich wieder auf die Datenträger Optimierung bzw. auf die Funktion “Laufwerke optimieren”, wie sie unter Windows 10 heißt, zurück. Seit Windows 8 wird eben genau dieses “Re-Trimming” über die Datenträger Optimierung gesteuert. Wenn wir diese also im Betriebssystem deaktivieren, erfolgt kein “Re-Trimming” und die SSD weiß nicht mehr, welche Speicherzellen gelöscht werden können. Die SSD wird im schlimmsten Fall mit der Zeit also langsamer, da nicht mehr genügend freie Speicherzellen vorhanden sind und diese erst zeitaufwendig gelöscht werden müssen wenn sie neu beschrieben werden sollen.
Die Datenträger Optimierung erkennt also automatisch wenn eine SSD verbaut ist und führt wöchentlich verschiedene Optimierungen der SSD durch, verzichtet dabei allerdings auf eine Defragmentierung. Wobei das nicht ganz stimmt. Sofern die Volumen-Schattenkopien aktiviert sind, was in der Regel der Fall ist, dann erfolgt einmal pro Monat eine Defragmentierung um die Performance der Schattenkopien aufrecht zu erhalten. Genauer gesagt alle 28 Tage. Windows versucht hier also einen Mittelweg aus optimaler Performance und wenig Verschleißerscheinungen der SSD.
Wer übrigens testen möchte, ob die TRIM Funktion im Betriebssystem aktiv ist, der führt in der Eingabeaufforderung mit administrativen Rechten den Befehl fsutil behavior query DisableDeleteNotify aus. Wird als Ergebnis “DisableDeleteNotify = 0” ausgegeben, ist alles prima und TRIM ist aktiv. Kommt die Ausgabe “DisableDeleteNotify = 1”, ist die TRIM Funktion deaktiviert. Man kann Windows mit dem folgenden Befehl manuell anweisen, TRIM zu aktivieren: fsutil behavior set DisableDeleteNotify 0
Quelle: Scott Hanselman und Microsoft Wiki