Speicher-Tricks

So richten Sie Ihre SSD unter Linux optimal ein

Trim-Befehl: Nur bei bestimmten SSDs aktivieren

Wenn das Dateisystem eine Datei verschiebt oder löscht, markiert es lediglich den freigewordenen Platz als wiederbeschreibbar, ohne den Dateiinhalt tatsächlich zu leeren. Eine SSD weiß also zunächst nicht, welche Speicherzellen tatsächlich frei sind, da dies das Dateisystem regelt. Der SSD-Controller sucht dann für neue Dateien zunächst einen freien Bereich oder fasst Speicherseiten neu zusammen, hält den Inhalt der als gelöscht markierten Blöcke aber noch vor, solange das Dateisystem dort nichts schreiben will.

Schwarze Liste im Kernel-Quellcode: Mit dem Trim-Befehl wird heute deutlich sparsamer umgegangen, weil SSDs mit fehlerhafter Firmware im Umlauf sind. Diese sind im Linux-Kernel von Trim ausgenommen.
Schwarze Liste im Kernel-Quellcode: Mit dem Trim-Befehl wird heute deutlich sparsamer umgegangen, weil SSDs mit fehlerhafter Firmware im Umlauf sind. Diese sind im Linux-Kernel von Trim ausgenommen.

Der interne SSD-Controller kann also mit dem freien Platz nicht effektiv nach seiner eigenen Logik haushalten. Dieses Problem löst der Trim-Befehl, mit dem das Dateisystem die SSD informiert, welche Blöcke tatsächlich nicht mehr benutzt werden, und damit für eine bessere Leistung beim Schreiben sorgt.

Mit dem Linux Kernel 3.7 ist der Trim-Befehl für die Dateisystem Ext3, Ext4, XFS, JFS und BTRFS möglich. Dazu muss aber auch die SSD Trim unterstützen, was das Kommandozeilen-Tool hdparm anzeigt:

sudo hdparm -I /dev/sda | grep TRIM

Liefert der Befehl unter anderem die Ausgabe „Data Set Management TRIM supported“, dann versteht die SSD den Trim-Befehl.

Aber Vorsicht: Es gibt Hersteller, die Trim fehlerhaft in die Firmware ihrer SSD implementiert haben. Bei SSDs von Crucial und Micron sollte man auf Trim grundsätzlich verzichten, denn Firmware-Bugs bei einigen Modellen können bei Trim und gleichzeitigen Schreibvorgängen zu Datenverlust führen. Neuere Kernel-Versionen haben sogar eine schwarze Liste, um Trim auf diesen Modellen ganz zu verbieten.

Es gibt zwei empfehlenswerte Methoden, Trim auf SSDs auszuführen:

Die manuelle Methode: Einen Trim-Befehl kann das Kommando

sudo fstrim -v /

starten. Es ist nicht nötig, den Befehl häufiger als einmal pro Woche auszuführen. Ein Nachteil ist, dass er einzeln auf alle Einhängepunkte von SSD-Partitionen ausgeführt werden muss, beispielsweise auch mit

sudo fstrim -v /home

für „/home“, sofern dieses Verzeichnis seine eigene Partition hat und diese auf einer SSD liegt. Swap ist ausgenommen, da der Swap-Bereich dies automatisch ausführt.

Die Methode per Cron-Job: Diese elegante Methode ist bei Ubuntu 14.04/14.10 und dessen Ablegern bereits Standard und richtet einen wiederkehrenden Cron-Job für fstrim ein, der einmal pro Woche automatisch abläuft, allerdings nur auf SSDs von Samsung und Intel. Dafür ist das Script „/etc/cron.weekly/fstrim“ verantwortlich. Fedora 21 und Open Suse 13.2 erledigen dies über Systemd und dessen Dienst fstrim.service. Bei diesen Distributionen muss man sich um Trim also keine Gedanken machen. Bei anderen Linux-Systemen, etwa Debian und dessen Varianten, muss der Cron-Job nachgerüstet werden. Erstellen Sie dazu als root oder mit sudo eine neue Datei mit dem Namen „fstrim“ im Verzeichnis „/etc/cron.d/fstrim“:

sudo -H gedit /etc/cron.d/fstrim

Als Inhalt bekommt die Datei einfach die fstrim-Befehle, die für alle SSD-Partitionen ausgeführt werden sollen:

fstrim -v /
fstrim -v /home

Aufgetaute SSD: Ein Klick auf die Schaltfläche „Sleep“ hat den Rechner kurz in den Ruhezustand versetzt. Nach dem Aufwachen hat sich der Status bei allen Laufwerken auf „Not frozen“ geändert.
Aufgetaute SSD: Ein Klick auf die Schaltfläche „Sleep“ hat den Rechner kurz in den Ruhezustand versetzt. Nach dem Aufwachen hat sich der Status bei allen Laufwerken auf „Not frozen“ geändert.

Es ist nicht nötig, hier nochmal jeweils ein sudo voranzustellen, weil der Cron-Job sowieso als root laufen wird, nachdem die Datei gespeichert ist.

Ein sofortiges Trim (Online Discard) über den Parameter „discard“ in den Mount-Optionen der Datei „/etc/fstab“ ist inzwischen nicht mehr empfehlenswert, da das bei einigen SSDs zu Leistungsnachteilen führt. Aktuelle Distributionen sehen von diesem Parameter sowieso ab.