Ubuntu 9.10 SSD Optimierung

Wie bei Äpfeln und Birnen gibt es gravierende Unterschiede bei SSDs und HDDs. Im Internet kann man Guides für verschiedene Betriebssysteme finden. Meistens geht es darum Optimierungen für normale Festplatten zu deaktivieren oder aber die Anzahl der Schreibzugriffe auf die SSD zu verringern. Da ich auf meinem Notebook Ubuntu 9.10 installiert habe, will ich hier kurz Beschreiben welche Einstellungen und Tweaks ich vorgenommen habe.

Die Optimierung beginnt bereits bei der Wahl des Dateisystems. Moderen Dateisysteme sind meistens Journaling Dateisysteme. Diese Dateisysteme legen alle Änderungen des Dateisystems in ein Journal ab bevor sie wirklich geschrieben werden. Ein solches Journal produziert weitere Schreibzugriffe. Um die Schreibzugriffe zu reduzieren kann man ältere Dateisysteme verwenden, wie zum Beispiel ext2.

Als nächstes können einige Einstellungen in der Datei /etc/fstab vorgenommen werden. Die erste Einstellung, die unmittelbar nach der Installation durchgeführt werden kann, ist die Option noatime für die SSD zu aktivieren. Für gewöhnlich speichert Linux die letzte Zugriffszeit einer Datei. Mit der Option noatime deaktiviert man diese Funktion und spart dadurch wiederum Schreibzugriffe. Eine entsprechende Zeile könnte folgendermaßen aussehen:

UUID=2147e92a-6f70-4deb-ab68-ae96c55d1f4c /               ext2    noatime,errors=remount-ro 0       1

Eine weitere Änderung, die man in der /etc/fstab durchführen kann, ist das Auslagern von bestimmten Verzeichnissen in ein tmpfs. Bei der Verwendung von tmpfs wird ein Verzeichnis in den Arbeitsspeicher ausgelagert. Dateien, die in dieses Verzeichnis geschrieben werden gehen daher bei einem Neustart verloren. Der Vorteil ist jedoch, dass die Dateien nie auf die Festplatte geschrieben werden. Für meine Installation habe ich mich entschieden die Verzeichnisse /tmp, /var/log und /var/tmp in ein tmpfs auszulagern. Die entsprechenden Zeilen sehen so aus:

# mount temp as tmpfs
tmpfs /tmp tmpfs defaults,noatime,nodiratime,mode=1777   0  0

# mount several /var directories as tmpfs
tmpfs /var/log tmpfs defaults,noatime,nodiratime,mode=0755  0  0
tmpfs /var/tmp tmpfs defaults,noatime,nodiratime,mode=1777  0  0

Dabei ist zu beachten, dass einige Anwendungen etwas beleidigt reagieren, wenn ihre Unterverzeichnisse im Verzeichnis /var/log nicht vorhanden sind. Um Probleme zu umgehen kann man eine kleine Schleife in die Datei /etc/rc.local vor der Anweisung exit 0 einbauen, welche die entsprechenden Verzeichnisse erstellt:

for dir in apparmor apt news cups dist-upgrade fsck gdm installer samba
unattended-upgrades
do
 if [ ! -e /var/log/$dir ]
 then
 mkdir /var/log/$dir
 fi
done

Die letzte Einstellung die ich vorgenommen habe ist den I/O Sheduler der Festplatte zu ändern. Ein I/O Sheduler ist dazu da die Festplattenzugriffe zu optimieren. Bei normalen Festplatten wird dabei besonderes Augenmerk auf die Optimierung der Schreiblesekopfbewegungen gelegt. Weil SSDs keine Schreibleseköpfe besitzen ist dieses Verhalten jedoch unnötig. Daher kann man einen anderen I/O Sheduler verwenden, der diese zusätzliche Arbeit nicht durchführt. Ein Sheduler der einfach nicht optimiert ist noop. Um diesen Sheduler zu verwenden muss eine weiter Zeile in /etc/rc.local eingetragen werden:

echo noop > /sys/block/sda/queue/scheduler

sda sollte dabei natürlich durch die entsprechende Gerätedatei des jeweiligen Systems ersetzt werden.

Diese Einstellungen sollten die SSD etwas länger am Leben halten und den Zugriff optimieren. Hier ein hdparm Test meiner SSD:

:~$ sudo hdparm -t /dev/sda
[sudo] password for carsten: 

/dev/sda:
 Timing buffered disk reads:  486 MB in  3.01 seconds = 161.65 MB/sec

Dabei ist zu beachten, dass mein Notebook leider nur SATA 1 unterstützt. Mit SATA 2 sollte noch mehr drin sein. Zum Vergleich hier der selbe Test mit der neuen 500GB HDD:

:~$ sudo hdparm -t /dev/sdb

/dev/sdb:
 Timing buffered disk reads:  200 MB in  3.02 seconds =  66.19 MB/sec

Durchaus ein kleiner Unterschied zu verzeichnen 😉

2 Replies to “Ubuntu 9.10 SSD Optimierung”

  1. Es gibt nicht Grundlos 2 tmp-Verzeichnisse (/tmp, /var/tmp).

    /var/tmp ist für temporäre Dateien gedacht die auch einen Neustart überstehen sollten.
    /var/tmp in ein tmpfs zu stecken halte ich daher für suboptimal.

Leave a Reply