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.
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
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.