SSDs gibt es nun schon eine ganze Weile. Ich musste meinen guten alten Desktop leider ersetzen durch einen neueren da das Motherboard intermittierend Probleme machte. Das neue System hat nun auch eine 120GB SSD und ich brauchte eine Weile um herauszufinden, was ich unter Linux konfigurieren muss um die SSD möglichst lange benutzen zu können. SSDs liefern Daten sehr schnell beim Lesen. Schreiben dauert länger und leider ist die Zahl der Schreibvorgänge beschrängt. Somit sollte man die Schreibzugriffe auf eine SSD soweit wie möglich reduzieren. Auf den folgenden Seiten beschreibe ich im Detail welche Änderungen ich an meiner LInuxkonfiguration gemacht habe um das zu erreichen.
Zuerst formatierte ich die Platte mit einer Partition und reservierte ein wenig Plattenplatz (overprovisioning). Danach installierte ich das gesamte Betriebssystem auf der SSD und verschob einige Verzeichnisse auf meine Platte. Filesysteme, auf die viel geschrieben wird, verlagerte ich ain den Hauptspeicher (mein neues System hat 8GB Hauptspeicher). Danach musste die /etc/fstab und ein paar Systemeinstellungen angepasst werden sowie ein paar Firefoxeinstellungen. Die Swappartition habe ich nicht auf die SSD gelegt.
SSD Formatierung
Es wird allgemein empfohlen nur 90% der SSD zu benutzen und 10% freizulassen.
Partitionen die auf Platte verschoben werden sollten
Das gesamte root Filesystem sollte auf ssd gelegt werden. Die Frage ist ob das home Verzeichnis auf Platte zu legen ist. Ich habe das getan. Allerdings habe ich Unterverzeichnisse auf denen häufig geschrieben wird (z.B. downloads oder VMware Images) auf Platte gelegt.
Partitionen die in tmpfs (RAM) verlagert wurden
/tmp, /var/spool, /vartmp und /var/log wurden in RAM verlagert. Mit /var/log gibt es dann einen Nachteil: Die Logs überleben keinen Reboot. Wenn es irgendwelche Probleme gibt die das System einfrieren lassen muss dieses Verzeichnis auf eine Platte gelegt werden.
Meine fstab hat folgende Einträge für tmpfs
tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0
tmpfs /var/spool tmpfs defaults,noatime,mode=1777 0 0
tmpfs /var/tmp tmpfs defaults,noatime,mode=1777 0 0
tmpfs /var/log tmpfs defaults,noatime,mode=1777 0 0
Änderungen in /etc/fstab
noatime in /etc/fstab verhindert den "access time stamp" zu schreiben, den das Betriebssystem pro Datei schreibt, wenn auf die Datei zugefgriffen wurde. Eine SSD sollte "noatime" haben. Also sieht meine /etc/fstab Zeile für meine SSD wie folgt aus:
UUID=cc4a6c12-5ec6-4243-993f-8dcbbf15da71 / ext4 noatime,commit=600,errors=remount-ro 0 1
System Konfigurationsänderungen
trim sollte benutzt werden um eine gute Performance der SSD zu erhalten. Zusätzlich sollte der Scheduler für die SSD eine andere Strategie benutzen. Ich habe dazu die folgenden Zeilen in meine /etc/rc.local (Anmerkung: Mein SSD ist /dev/sda) aufgenommen:
# ssd trim
fstrim -v /
# ssd scheduler
echo "deadline" > /sys/block/sda/queue/scheduler
# Modification for SSD which creates log files on /var/log
for dir in apparmor apt cups dist-upgrade fsck gdm installer samba unattended-upgrades; do
if [ ! -e /var/log/$dir ] ; then
mkdir /var/log/$dir
fi
done
Firefox Konfigurationsänderungen
In about:config habe ich folgende Einstellungen geändert:
1. browser.cache.disk.enable set to false
2. browser.cache.memory.enable set to true
3. New browser.cache.memory.capacity set to -1
Monitor SSD Benutzung
Auf diesem Link gibt es weiter Details wie man die SDD Benutzung überprüfen kann. Ebenfalls helfen atop oder iostats. Ein weiterer hilfreicher Befehl ist
pidstat -dl 20
References
A good ssd/hdd partition scheme
How to maximize ssd performance with Linux
Solid State Drive (SSD): optimize it for Ubuntu 14.04, Linux Mint and Debian
SSD Optimization - Debian Wiki
Investigate disk writes further to find out which process writes to my SSD
SSD owners: Set Firefox to memory cache instead of disk
SSD: how to optimize your Solid State Drive for Linux Mint and Ubuntu

