Homeserver 17: Optionen der fstab optimieren

Mein Server ist gerade dabei, das RAID zu erweitern. Das kann noch eine ganze Weile dauern, daher kümmere ich mich mal um ein Thema, dass ich etwas vernachlässigt habe. Ich will die Dateisysteme des Servers etwas optimieren, genauer gesagt, die Optionen in der fstab-Datei.

Optimierungen für die SSD

Wenn man auf der SSD etwas löscht, so wird der Block nicht sofort freigegeben. Das Dateisystem markiert den Block lediglich als „Frei“. Der Controler der SSD selbst, der auch die Speicherverwaltung und die zu beschreibenden Blöcke verwaltet, erfährt davon nichts. Dieser Block, obwohl nicht mehr benötigt, wird ständig weiter mitgeführt und bei Schreiboperationen evtl. weiter mitgeschrieben. Das kann, in gewissem Maße, die Lebensdauer der SSD beeinflussen.

Dafür gibt es den TRIM-Befehl, der solch eine Löschung auch an die Hardware der SSD meldet, so dass der Block wirklich als nicht mehr genutzt markiert wird. Linux unterstützt diesen Befehl, aber nicht standardmäßig.

Für weitere Informationen könnt ihr euch ja den Wikipedia-Artikel zu TRIM durchlesen.

Um die TRIM-Funktion zu aktivieren, fügen wir der fstab die Mount-Option „discard“ hinzu.

Eine weitere Optimierung ist, die letzte Zugriffszeit auf eine Datei nicht mitzuprotokollieren. Dies ist zum einen nicht unbedingt nötig, und macht die SSD auch unnötig langsamer. Um dies zu erreichen, fügen wir die Option „noatime“ hinzu.

Die fstab-Datei öffnen wir so:

sudo nano /etc/fstab

Ganz unten stehen die Zeilen mit den Dateisystemen, die zum Systemstart automatisch eingehängt werden. Die Zeile für mein Root-Verzeichnis sieht also so aus:

UUID=1d7a581e-f7da-4325-9600-438f4fabb75d /               ext4    errors=remount-ro 0       1

Wenn ich jetzt die oben angegebenen Änderungen durchführe, sieht die Zeile anschließend so aus:

UUID=1d7a581e-f7da-4325-9600-438f4fabb75d /               ext4    errors=remount-ro,discard,noatime 0       1

Beide Parameter, „discard“ und „noatime“, zumindest aber „discard“, sollten wir auch in die Swap-Zeile darunter einfügen.

RAID-Optimierung

Hier gibt es nicht so viel zu optimieren. Lediglich die letzte Zugriffszeit auf eine Datei möchte ich nicht automatisch protokollieren, weil dies das RAID zum Einen langsamer macht, und zum Anderen meinen Netzwerkpapierkorb stört.

Wenn ich eine Datei in den Papierkorb lege, also lösche, setzt Linux automatisch den Löschzeitpunkt als letzten Zugriffszeitpunkt. Diese Zugriffszeit nutze ich, um die automatische Leerung des Papierkorbs zu erledigen. Öffne ich die Datei, um zu gucken, ob die wirklich weg kann, aktualisiert sich die Zugriffszeit, und das Löschen dieser Datei aus dem Papierkorb verzögert sich nach hinten.

Insgesamt wird das RAID aber langsamer, weil bei jedem Dateizugriff dieser Wert angepasst wird. Das können durchaus viele Dateizugriffe sein, wenn z. B. ein Batch-Backup läuft. Also empfiehlt es sich hier auch, die Option „noatime“ zu setzen. Die Zeile sieht nach der Änderung also so aus:

/dev/md0    /raid1      ext4    noatime,defaults    0   2

Dieser Parameter beeinflusst aber nicht das gewollte Setzen der Zugriffszeit als Löschzeitpunkt. Das funktioniert weiterhin.

Fazit

Nun noch die fstab speichern, fertig. Im Falle des RAID reicht es, es mit umount auszuhängen und wieder mit mount zu mounten. Aber im Falle des Root- und Swap-Dateisystems wird man um ein Reboot nicht herumkommen. Daher sollte man vielleicht gleich einen Reboot machen.

Die Optimierungen fallen vielleicht nicht auf den ersten Blick auf, langfristig wird sich das aber schon bemerkbar machen. Windows ist, zumindest bei meinem Windows 7, standardmäßig so eingestellt, dass es die letzte Zugriffszeit nicht mitschreibt.

So, dann warte ich mal, bis mein Server mit RAID Erweitern fertig ist, dann kommt der Beitrag dazu.