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.
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.
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
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:
Rufen Sie im gestarteten Live-System Parted Magic den „Partition Editor“ auf (Gparted).
Markieren Sie die Partition, etwa „/dev/sda1“, und klicken Sie auf „Größe ändern/verschieben“ in der Menüleiste.
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.
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.
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.
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.
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.
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)