AA-123RF-17878105-jipen-123RF.jpg

© jipen, 123RF

Solid State Drives unter Linux schonend ausreizen

Pimp my SSD

,
Nichts beschleunigt einen PC so nachhaltig wie der Umstieg auf eine SSD. Damit diese ihr volles Potenzial erreicht und möglichst lange lebt, gilt es, das Linux-System an einigen kritischen Stellen anzupassen.

Als LinuxUser 2011 zum ersten Mal die technischen Grundlagen von Solid State Disks unter Linux beleuchtete [1], lag der Preis pro GByte von SSDs bei etwa 2 Euro. Inzwischen kostet eine günstige SSD mit 240 GByte Speicherplatz etwa 90 Euro, pro GByte also in etwa 0,35 Cent – ein Sechstel des Preises von vor drei Jahren. Doch nicht nur beim Preis und der Kapazität ergaben sich in den letzten Jahren Änderungen, auch die Inbetriebnahme und Handhabung einer SSD fällt unter Linux inzwischen leichter.

Nach wie vor gibt es immer noch keine andere Einzelmaßnahme, die einen Rechner derart beschleunigt wie der Einbau einer SSD. Die Übertragungsraten einer solchen Disk liegen bis zu zehnmal höher als die einer Festplatte (Abbildung 1). Sinn macht der Austausch zuallererst für die Systempartition und das Home-Verzeichnis. Hierfür genügen normalerweise SSDs mit einer Größe zwischen 64 und 128 GByte – heute gar nicht mehr so teuer. Möchten Sie für die Datenablage eine größere SSD oder gar eine USB-SSD erwerben, müssen Sie jedoch nach wie vor tief in die Tasche greifen. Mit der nächsten Strukturverkleinerung auf 12 Nanometer dürften aber auch die Preise für große SSDs weiter nachgeben.

Abbildung 1: Die SSD vom Typ OCZ Vertex 3 liefert auch nach vier Jahren Betrieb immer noch im Schnitt 450 MByte/s.

In der Fortsetzung unseres ersten Artikels überprüfen wir, welche Änderungen am Linux-System auch heute noch erforderlich sind und wie Sie Ihre SSD optimal einrichten, damit diese möglichst lange, schnell und zuverlässig ihre Aufgabe verrichtet.

Ausrichten der Partitionen

Für eine maximale Geschwindigkeit ist besonders bei SSDs mit ihren Seitengrößen von 4096 oder 8192 Bytes wichtig, dass sich die Partitionen an sinnvollen Grenzen des Datenträgers ausrichten – im Fachjargon nennt sich die Ausrichtung Partition Alignment [2]. Beim herkömmlichen Partitionieren von HDDs begann eine Partition bei einer Sektorgröße von 512 Byte automatisch immer mit dem 64. Sektor. Heute arbeiten viele Festplatten und vor allem SSDs allerdings mit physischen Sektorgrößen von 4 und mehr KByte.

Richten Sie nun auf einer SSD eine Partition ein, die wie üblich bei Sektor 64 beginnt, formatieren diese dann aber mit einem Dateisystem mit einer Blockgröße von 4 KByte, dann passen die 4K-Dateisystem-Blöcke nicht in die 4- oder 8-KByte-Pages der SSD (Abbildung 2). Beim Speichern eines 4K-Dateisystem-Blocks müsste der Speichercontroller dann immer gleich in zwei Sektoren schreiben. Hinzu kommt, dass die emulierten 512-Byte-Blöcke erhalten bleiben müssen, was zu einem Read/Modify/Write-Modus führt. Dieser Versatz setzt sich fort und bremst die Platte maßgeblich aus. Messungen bei IBM belegten eine bis zu 25-fach schlechtere Schreibleistung bei kleinen Dateien.

Abbildung 2: Für optimale Schreib-Leseleistung sollten sich Partitionen an den Speicherseiten der SSD ausrichten.

Mussten Sie 2011 noch selbst für die korrekte Ausrichtung sorgen, indem Sie beispielsweise cfdisk entsprechende Werte übergaben, so erledigen heutzutage grafische Partitionierungswerkzeuge wie GParted die Aufgabe automatisch. Sie richten den Beginn der ersten Partition auf genau 1 MByte aus. Mit fdisk oder gdisk prüfen Sie die Partitionierung der SSD (Listing 1). Die Ausgabe zeigt die Architektur der gesamten Platte. In der letzten Zeile sehen Sie den Beginn der Partition auf Sektor 2048, was nach der Rechnung 2048 Sektoren * 512 Byte pro (logischem) Sektor gleich 1 048 576 Bytes gleich 1 MByte entspricht – für SSDs optimal ausgerichtet.

Listing 1

$ sudo gdisk -l /dev/sda
GPT fdisk (gdisk) version 0.8.10
Disk /dev/sda: 117231408 sectors, 55.9 GiB
Logical sector size: 512 bytes
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 117231374
Partitions will be aligned on 2048-sector boundaries
Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048       117229567   55.9 GiB    8300  Linux filesystem

TRIM dich fit

Herkömmliche Festplatten überschreiben fortwährend gelöschte Daten mit neuen Dateien. SSDs arbeiten aufgrund ihrer internen Struktur und des Speichermediums NAND-Flash [3] allerdings mit einem anderen Verfahren: Hier muss der NAND-Chip eine Datei erst gezielt löschen, bevor neue Daten den von ihr belegten Platz einnehmen dürfen.

Die kleinste beschreibbare Einheit einer SSD stellt eine Seite ("page") dar. Die Steuereinheit des Speichers kann Seiten einzeln auslesen, fasst beim Schreiben jedoch die Seite zu Blöcken von 64 oder 128 Einheiten zusammen. Die kleinste löschbare Einheit stellt demnach solch einen "erasable block" mit einer Speichergröße von typischerweise 256 oder 512 KByte dar.

Um den belegten Platz einer gelöschten Datei nun auch wirklich vollständig zurückzuerhalten, muss der Controller zunächst alle noch benötigten Daten des Blocks in den Cache kopieren und dann den Block komplett löschen (Abbildung 3). Steuert der Controller nicht dagegen, resultiert daraus langfristig eine starke Fragmentierung der Daten und damit eine immer geringere Schreibleistung der SSD.

Abbildung 3: Schematische Darstellung eines Löschvorgangs von auf einer SSD gespeicherten Daten.

Zudem führt die durch das Umkopieren entstehende Vervielfältigung der Daten (die sogenannte Write Amplification [4]) dazu, dass der SSD irgendwann die freien Blöcke für das Speichern neuer Daten ausgehen würden (Abbildung 4). Daher arbeiten beim Löschen nicht mehr benötigter Daten zwei Mechanismen Hand in Hand: Auf der Seite des Laufwerks läuft die Garbage Collection [5] (Abbildung 5), auf Ebene des Dateisystems tritt der TRIM-Mechanismus [6] in Aktion. Beide Verfahren helfen dabei, zu löschende Daten zu markieren und bereits vor der neuerlichen Verwendung freizugeben.

Abbildung 4: Write Amplification aufgrund von Wear Leveling und Garbage Collection.

Ab Kernel 2.6.33 beherrscht Linux dazu den TRIM-Befehl. Er teilt dem Controller der SSD mit, welche Blöcke er aus der Sicht des Betriebssystems übergehen darf. Die Inhalte werden somit nicht mehr weiter mitgeschrieben, was die Schreibzugriffe auf das Laufwerk beschleunigt und zudem die Lebensdauer des Speichermediums erhöht. Dazu versucht der Speichercontroller, die Schreibzugriffe möglichst gleichmäßig über den Speicherbereich der SSD zu verteilen. Das Wear Leveling [7] gewährleistet eine gleichmäßige Abnutzung der Speicherblöcke und damit eine längere Lebensdauer der Platte (Abbildung 6).

Das Betriebssystem muss also dem Dateisystem mitteilen, wie und wann es TRIM-Befehle absetzen soll. Verwaltet der Logical Volume Manager (LVM) das Dateisystem und ist es obendrein mit LUKS/Dm-crypt verschlüsselt, so muss TRIM auf allen drei Ebenen agieren. Für die Verschlüsselungsebene geschieht dies in der Datei /etc/crypttab, die die Option discard enthalten muss (Listing 2).

Listing 2

# <target name>  <source device>      <key file>  <options>
sda1_crypt       /dev/sda1  none        luks,discard

In der LVM-Konfiguration schalten Sie die TRIM-Funktion scharf, indem Sie das Trimmen im Abschnitt Devices der Datei /etc/lvm/lvm.conf mit dem Eintrag issue_discards = 1 aktivieren. Für das Dateisystem – sowohl Ext4 als auch Btrfs eignen sich gut für SSDs – gibt es zwei Arten, das Trimmen einzusetzen: Online Discard und Batched Discard. Beim Online Discard fügen Sie für das jeweilige Gerät die Mount-Option discard in die Datei /etc/fstab ein (Listing 3).

Listing 3

UUID=uuid-nummer  /  ext4  defaults,noatime,discard,errors=remount-ro  0  1

Neben discard kommt es auch auf die Mount-Option noatime an. Linux speichert mit der atime von Haus aus die Zeit des letzten Dateizugriffs [8]. Dadurch entsteht bei jedem Lesevorgang auch wieder ein Schreibvorgang. Für die Lebensdauer der SSD wäre dieses Verfahren alles andere als zuträglich, daher sollte die SSD mit der Mount-Option noatime das Protokollieren ganz lassen. Alternativ bietet es sich an, mittels der Option relatime die Zugriffszeit nur dann zu speichern, wenn der letzte Zugriff vor der letzten Änderung der Datei stattfand.

Für dem kommenden Entwicklungszweig 3.19 des Linux-Kernels steht mit Lazytime [9] eine weitere Mount-Methode auf dem Plan. Diese speichert die Zugriffszeiten im Arbeitsspeicher und sichert sie nur dann auf die Platte, wenn es im selben Zug auch wichtigere Daten zu sichern gibt. Lazytime soll sich in Zukunft als Standard für Ext4-Dateisysteme etablieren.

Den im Internet weit verbreiteten "Tipp", das Journaling bei Ext3/4-Partitionen auf SSDs abzuschalten, ordnet der Entwickler des Ext-Dateisystems Theodore T'so ins Land der Mythen ein. Er empfiehlt, das Journaling aktiviert zu lassen, um die Gefahr von Datenverlusten zu reduzieren [10].

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 7 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Solid State Drives optimal eingestellt
    Früher galt: Mehr RAM macht den Rechner schneller. Heute dominieren Solid State Drives das Rennen um den schnellsten Durchsatz im Gesamtsystem.
  • Solides System
    Bei einer Festplatte, die mit über 100 MByte/s schreibt und doppelt so schnell liest, denkt man eigentlich kaum ans Optimieren. Doch mit dem richtigen Dateisystem und etwas Tuning liegt noch etwas mehr drin.
  • Hdparm in Version 9.22 erhältlich
    Das freie Festplatten-Tool Hdparm ist in Version 9.22 verfügbar. Die Release verbessert die Zusammenarbeit mit Solid State Disks (SSD) und dem Dateisystem Ext 4.
  • MSA720-Serie von Transcend
    Dem Trend zur Bestückung von Notebooks und PCs mit SSDs statt - oder als Zusatz zu - herkömmlicher Festplatten folgt Hersteller Transcend mit der neuen MSA720-Serie.
Kommentare

Infos zur Publikation

LU 11/2017: Server für Daheim

Digitale Ausgabe: Preis € 8,50
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

HINWEIS ZU PAYPAL: Die Zahlung ist ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!

Stellenmarkt

Aktuelle Fragen

Lieber Linux oder Windows- Betriebssystem?
Sina Kaul, 13.10.2017 16:17, 3 Antworten
Hallo, bis jetzt hatte ich immer nur mit
IT-Kurse
Alice Trader, 26.09.2017 11:35, 2 Antworten
Hallo liebe Community, ich brauche Hilfe und bin sehr verzweifelt. Ih bin noch sehr neu in eure...
Backup mit KUP unter Suse 42.3
Horst Schwarz, 24.09.2017 13:16, 3 Antworten
Ich möchte auch wieder unter Suse 42.3 mit Kup meine Backup durchführen. Eine Installationsmöglic...
kein foto, etc. upload möglich, wo liegt mein fehler?
kerstin brums, 17.09.2017 22:08, 5 Antworten
moin, zum erstellen einer einfachen wordpress website kann ich keine fotos uploaden. vom rechne...
Arch Linux Netzwerkkonfigurationen
Franziska Schley, 15.09.2017 18:04, 0 Antworten
Moin liebe Linux community, ich habe momentan Probleme mit der Einstellung des Lan/Wlan in Arc...