Speicherzellen einer SSD sind nicht unendlich beschreibbar. Damit sie möglichst lange halten, verteilt die interne Logik der SSD Schreibzugriffe gleichmäßig über alle Bereiche — Wear Leveling. Dafür muss die SSD aber wissen, welche Blöcke wirklich frei sind. Diese Information kann sie nur vom Dateisystem bekommen. Genau dafür gibt es TRIM.
Wer sich für TRIM allgemein interessiert — im älteren Beitrag zu TRIM für SSDs und Flash-Speicher steht mehr zu den Grundlagen. Hier geht es nur um ZFS.
autotrim — kontinuierliches TRIM
ZFS kennt die Pool-Eigenschaft autotrim. Wenn aktiviert, schickt ZFS nach jedem Freigeben von Blöcken automatisch TRIM-Befehle an die darunterliegenden Geräte. Prüfen, ob es aktiv ist:
$ zpool get autotrim bpool rpool NAME PROPERTY VALUE SOURCE bpool autotrim off local rpool autotrim off local
Aktivieren:
$ zpool set autotrim=on bpool $ zpool set autotrim=on rpool
Kontrolle — jetzt sollte on stehen:
$ zpool get autotrim bpool rpool NAME PROPERTY VALUE SOURCE bpool autotrim on local rpool autotrim on local
zpool trim — manuelles TRIM
Neben dem kontinuierlichen autotrim gibt es auch manuelles TRIM. Das ist sinnvoll, wenn man autotrim bisher nicht aktiviert hatte und den Pool einmalig aufräumen will:
$ zpool trim rpool
Der Fortschritt lässt sich mit zpool status -t rpool beobachten. Bei großen Pools kann das eine Weile dauern.
Tipp: SSD-Wartungsmodus
Wenn eine SSD nur am Strom hängt, ohne dass ein Rechner darauf zugreift, fallen viele SSDs in einen internen Wartungs- und Reparaturmodus. Die Firmware sortiert dann selbstständig Speicherzellen um, führt Diagnosen durch und versucht schwache Zellen zu retten. Einfach 2–3 Stunden laufen lassen. Über diesen Weg lassen sich manchmal sogar „tote“ SSDs wiederbeleben. Mit aktivem TRIM funktioniert das alles natürlich deutlich besser.
Hinweis für FreeBSD: autotrim und zpool trim funktionieren dort genauso — FreeBSD nutzt seit langem OpenZFS.
Fragen? Einfach melden.
Hi, sehr schön geschriebener Artikel. Also eine SSD trimmt im Betrieb, ganz normal, nebenher. Und auch wenn die Platta am Strom hängt, aber der Rechner „nichts“ tut. Warum dann (noch als dritte zusätzliche Option) manuell trimmen?
Hallo Segafredos, ich bin mir nicht sicher, ob ich deine Frage richtig verstehe. Ja, eine SSD sortiert seine Blöcke selbständig um. Oft sind in der Firmware einer SSD ebenfalls Diagnose- und Reparaturfunktionen, welche aktiv werden, wenn eine SSD nur am Strom angeschlossen ist; Also einfach das Datenkabel ziehen, die Platte im Anschluss mit Strom versorgen und einige Stunden „liegen“ lassen.
Wenn man Daten auf eine SSD schreibt, werden sie auf diese geschrieben *Überraschung*. Wenn man Daten löscht, werden sie aber (ohne TRIM durch das Filesystem) nicht mehr von der SSD „gelöscht“. Dieses vorgehen stammt von normalen Festplatten. Dort werden die Daten ebenfalls nicht gelöscht, sondern im Dateisystem nur der Verweis gelöscht. Also das Kapitel wird aus dem „Inhaltsverzeichnis“ gelöscht; Die Blöcke sind dann zum neuen Beschreiben freigegeben und würden beim Speichern weiterer Daten überschrieben. Bei einer Festplatte vollkommen egal und schneller als wenn man die einzelnen Blöcke z.B.: noch nullt. Daher lassen sich gelöschte Daten oft wiederherstellen, da sie nie wirklich weg sind (solange man sie nicht überschreibt). Da die SSD keine Ahnung hat, welche ihrer Blöcke vom Filesystem noch mit echten Daten vollgeschrieben sind, wird eine SSD diese immer behandeln wie Blöcke mit aktiven Nutzdaten. Ein TRIM ist ganz grob so etwas wie ein Abgleich zwischen Dateisystem und SSD, damit die SSD weiß, welche Blöcke wirklich noch Nutzdaten enthalten und welche zum Überschreiben freigegeben sind. So kann die SSD ihre Daten selbst besser verteilen und die Belastung der einzelnen Blöcke besser gewichten.
Im Artikel ist ein Link zu Wikipedia, vielleicht hilft dir dieser weiter?
Perfekt, genau was ich gesucht hab!