Speicher-Tricks

So richten Sie Ihre SSD unter Linux optimal ein

10.09.2015 von David Wolski
Eine SSD macht jedem PC Beine. Mit ihren Dateisystemen, Tools und Einstellungsmöglichkeiten bringen aktuelle Linux-Distributionen ideale Voraussetzungen für den optimalen Einsatz einer SSD mit.

Der Linux-Kernel unterliegt einem schnellen Entwicklungszyklus mit neuen Versionen alle zwei bis drei Monate und kann deshalb schnell auf neue Hardware, Datenträgertechniken und geänderte Anforderungen reagieren. Generell sind Linux-Systeme mit ihren verfügbaren Datensystemen, den Tools dazu und Kernel-Einstellungen für die I/O-Warteschlange (Scheduler) bestens für SSDs geeignet. Die Installer von Ubuntu/Mint, Open Suse und Fedora erkennen Solid State Drives und treffen dann einige Einstellungen bereits automatisch. Allerdings setzen Distributionen ihre Einstellungen für SSDs unterschiedlich und nicht immer konsequent um. Zum Teil gibt es auch unterschiedliche Meinungen, wie und ob ein Konfigurationsparameter eine bessere Leistung bringt. Es ist deshalb immer noch nötig, eine Reihe von Parametern zu überprüfen und bei Bedarf für den optimalen Betrieb dieses Laufwerkstyps anzupassen.

Geschwindigkeitsschub: Von allen Aufrüstungsmöglichkeiten verspricht der Einbau einer SSD mit Abstand die größte Leistungsverbesserung, selbst wenn der Rechner nicht mehr taufrisch ist.

SATA: AHCI-Modus im Bios aktivieren

Datenträger an der SATA-Schnittstelle arbeiten erst in vollem Tempo, wenn der Modus des SATA-Controller auf AHCI (Advanced Host Controller Interface) eingestellt ist und nicht auf IDE oder ATA. Bei Rechnern der letzten Jahre ist AHCI bereits die Werkseinstellung, und ein kurzer Blick in die Bios- beziehungsweise UEFI-Einstellungen sollte dies bestätigen: Wenn im Bios-Setup unter „SATA-Konfiguration“, „OnChip SATA Type“ beziehungsweise „SATA Operation“ die Option „Enhanced“ oder „AHCI“ eingestellt ist, nutzt die Festplatte AHCI. Steht dort hingegen „ATA“, „Disabled“, „Legacy“, „Native IDE“ oder „Compatibility Mode“, dann läuft die SSD mit geringerer Leistung. Mit aktuellen Linux-Distributionen als Betriebssystem ist es aber auch nachträglich, also nach deren Installation möglich, den Modus auf AHCI umzuschalten. Denn der Kernel enthält AHCI-Treiber und wird diese bei Bedarf laden, ohne dass dazu eine Neuinstallation des Systems erforderlich wäre.

Das Alignment der Partitionen überprüfen

SSDs arbeiten nicht wie ältere mechanische Festplatten mit physikalischen Sektoren zu 512 Byte, sondern mit Speicherseiten (Pages) mit 4096 oder 8192 Byte. Ideal ist die Ausrichtung (Alignment) einer Partition auf einer SSD, wenn deren Grenzen den Speicherseiten folgen. Ist das nicht der Fall, passen die logischen Blöcke des Dateisystems nicht zu den Speicherseiten. Der interne SSD-Controller muss dann stets mehrere Seiten ändern, um einen einzigen Dateisystemblock zu schreiben. Das Resultat ist eine deutlich schlechtere Performance als bei einem korrekten Alignment.

Partitions-Alignment: Orientiert sich eine Partition nicht an den Grenzen der Speicherseiten einer SSD, dann passen die Dateisystemblöcke nicht in die Seiten, und die SSD hat unnötig viel zu tun.

Festgelegt wird die Ausrichtung einer Partition bei deren Erstellung. Partitionierer wie Gparted, Fdisk, Gdisk und Installationsprogramme erkennen heute automatisch die sinnvollen Grenzen einer Partition, und es nicht nötig, dazu spezielle Parameter anzugeben. Ältere Versionen vor 2010 folgen indes noch häufig der Sektorgröße von Festplatten, und auch Imaging-Software wie Clonezilla richtet sich beim Zurückspielen von Partitions-Images nicht zwingend nach Speicherseiten. Um die Ausrichtung einer Partition auf einem Linux-System zu überprüfen, geben Sie den Befehl

sudo /sbin/blockdev --getalignoff/dev/sda1

Verschieben und zurückschieben: Der Partitionierer Gparted, hier im Live-System Parted Magic, kann das Partition Alignment nachträglich und ohne Datenverlust korrigieren.

ein, hier beispielsweise für die Partition „/dev/sda1“. Das Kommando gibt den Versatz (Offset) der abgefragten Partition aus, und wenn es eine Null zurückgibt, liegt diese perfekt auf den Speicherzellen. Nur wenn eine andere Zahl erscheint, passt das Partitions-Alignment nicht zur SSD.

Ist die der Fall, dann kann der Partitionierer Gparted, der über das Live-System Parted Magic zur Verfügung steht, die Ausrichtung auch nachträglich ändern.

Das gelingt ihm üblicherweise ohne Datenverlust, aber ein Backup der Daten auf der betroffenen Partition ist empfehlenswert, denn das Verschieben von Partitionen mit Gparted ist immer eine kritische Operation:

  1. Rufen Sie im gestarteten Live-System Parted Magic den „Partition Editor“ auf (Gparted).

  2. Markieren Sie die Partition, etwa „/dev/sda1“, und klicken Sie auf „Größe ändern/verschieben“ in der Menüleiste.

  3. Im Feld „Vorhergehender freier Speicherplatz (MiB)“ geben Sie „2“ ein, lassen „Ausrichten an“ auf „MiB“ und klicken auf „Größe ändern“. Bevor die Änderung durchgeführt wird, müssen Sie diese bestätigen und dann mit einem Klick auf „Anwenden“ anstoßen.

  4. Ist die Operation abgeschlossen, was auf einer SSD nicht lange dauert, markieren Sie wieder „/dev/sda1“, gehen abermals auf „Größe ändern/verschieben“ und setzen nun „Vorhergehender freier Speicherplatz (MiB)“ auf „1“. Nach einer Bestätigung und Anwendung der Änderung ist „/dev/sda1“ ausgerichtet.

Falls sich mehrere Partitionen auf der SSD befinden, dann wiederholen Sie diesen Prozess nacheinander für alle.

Mount-Optionen: Schreibzugriffe reduzieren

Linux speichert im Dateisystem nicht nur das Erstell- und Änderungsdatum von Dateien, sondern zudem auch immer den Zeitpunkt des letzten Zugriffs. Folglich sind reine Lesevorgänge immer mit Schreibvorgängen verbunden, was für SSDs nicht optimal ist. Um dies abzustellen, eignet sich die die Ergänzung „relatime“ in den Mount-Optionen der „/etc/fstab“. Diese Option bewirkt, dass Dateien nicht automatisch bei jedem Lesezugriff einen neuen Zeitstempel als Zugriffszeit bekommen. Die Option „relatime“ ist dabei der verwandten Einstellung „noatime“ vorzuziehen, damit die letzte aufgezeichnete Zugriffszeit einer Datei nicht plötzlich hinter ihrer Änderungszeit liegt. Bei vielen aktuellen Linux-Distributionen wie Ubuntu und Co ist „relatime“ standardmäßig bei SSDs gesetzt, ein kontrollierender Blick in auf die Ausgabe des Befehls „mount“ genügt deshalb meist. Ist „relatime“ für einen Mount-Punkt nicht vorhanden, dann ergänzen Sie die Option dazu in der Datei „/etc/fstab“. Für die Partition „/dev/sda1“ mit Ext4 sieht die resultierende Zeile dann beispielsweise so aus:

/dev/sda1 / ext4 defaults,relatime 1 1

Setzen Sie hinter „defaults“ ein Komma und dann die Option „relatime“. Den Rest jeder Zeile lassen Sie unverändert. Dies funktioniert nicht nur wie in diesem Beispiel mit Ext4, sondern genauso auch mit Ext3, XFS, JFS oder BTRFS.

Reduziert die Schreibzugriffe: In der Konfigurationsdatei „/etc/fstab“ sorgt die Mount-Option „relatime“ dafür, dass der Datei-Zeitstempel nur noch beim Schreiben aktualisiert wird.

Aktuelle Linux-Distributionen nutzen hier statt des Gerätenamens „/dev/sd[x][n]“ die UUID der Partition nach dem Schema „UUID=3b1e7234-8ae8-42ba-8e07-187a344f7d05“.

Der sonstige Aufbau der Einträge ist aber identisch. Bei der Bearbeitung der Datei ist stets Vorsicht geboten, da Linux beim Booten recht giftig auf Syntaxfehler in der fstab reagiert. Rufen Sie deshalb zum Test

mount –a

auf, um die Mount-Optionen auf Fehler zu überprüfen, und behalten Sie ein Backup der unveränderten Konfigurationsdatei. Für die Swap-Partition darf die Option nicht gesetzt werden.

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.

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.

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.

SSDs zurücksetzen mit ATA Secure Erase

Die Controller-Logik einer SSD steuert alle Schreibvorgänge der SSD, um die Speicherzellen möglichst gleichmäßig zu nutzen. Ein nachteiliger Nebeneffekt ist, dass herkömmliche Programme SSDs nicht sicher und komplett löschen können. Nur direkte ATA-Befehle an den Controller erlauben ein zuverlässiges Zurücksetzen jeder einzelnen Speicherzelle. Der Befehl ATA Secure Erase ist eine Erweiterung der Firmware und im Befehlssatz des Laufwerks untergebracht. Vor einer Weitergabe eines Datenträgers sorgt der Befehl dafür, dass keine wiederherstellbaren Dateireste auf dem Medium zurückbleiben.

Auf SSDs hat der Befehl den zusätzlichen Nutzen, dass er das Laufwerk samt der reservierten Speicherzellen in den Werkszustand zurücksetzt. Das erhöht zwar nicht die Haltbarkeit der Speicherzellen, macht eine SSD aber wieder so schnell wie am ersten Tag.

Ein geeignetes Live-System, das ATA Secure Erase ausführen kann, ist wiederum Parted Magic. Nach dem Start gehen Sie auf dem Desktop auf das Symbol „Erase Disk“ und wählen dann die Option „Internal -> ATA Secure Erase“. Im nächsten Schritt wählen Sie das gewünschte Laufwerk aus, das zurückgesetzt werden soll. Es dürfen nur Laufwerke ausgewählt werden, die am SATA-Port angeschlossen sind. Bei SSDs an USB, eSATA, SAS oder Raid-Controllern kann der Befehl die Laufwerke beschädigen. Vorsicht bei der Auswahl ist generell geboten, denn die Daten auf dem Laufwerk gehen unwiederbringlich verloren.

ATA Secure Erase in Parted Magic: Das Zurücksetzen der Speicherzellen dauert bei einer SSD nur einige Sekunden und löscht auch die reservierten Bereiche für alte Speicher-Pages.

Wenn Sie die Statusanzeige unter Parted Magic darüber informiert, dass sich die SSD im Zustand „frozen“ befindet, dann klicken Sie zunächst auf die Schaltfläche „Sleep“, um den Rechner in den Ruhezustand zu versetzen. Nach dem Aufwecken des Rechners hat sich der Status auf „Not frozen“ geändert, und Sie können mit der Laufwerksauswahl und der Option „Secure“ fortfahren. Viele SSDs erlauben es, ATA Secure Erase mit einem Passwort zu schützen, damit sich der Befehl nur noch nach der Eingabe des richtigen Passworts aufhalten lässt. Dieses Feld können Sie ignorieren und auf „Continue“ klicken. Jetzt ist noch eine Bestätigung des Löschbefehls nötig mit der Klickbox „I allow this utility to erase the listed device“. Danach startet Parted Magic im Hintergrund das Kommandozeilen-Tool hdparm, um auf dem ausgewählten Laufwerk ATA Secure Erase in Gang zu setzen. Der Vorgang dauert auf SSDs nur wenige Sekunden.

(PC-Welt/ad)