SSDs unter Linux [hier: Ubuntu 10.10, Vertex 2]

UbuntuLogo

Hi,

als totaler SSD Anfänger, wollte ich die zusammengesuchten Infos weitergeben, wie man eine SSD unter Linux am besten benutzt:

Erst mal ein paar Vorinfos: Kernels ab 2.6.33 können automatisch “trimmen”, davor muss man die Wiper.sh nehmen.

Ich nutze Ubuntu 10.10 (2.6.35), daher brauche ich das nicht.

Partitionen Erzeugen:

Erstmal ist es noch wichtig, die Partitionen “aligned” zu erzeugen, dazu nimmt man am besten eine Linux Live CD/DVD (z.b. Ubuntu 10.10) und erzeugt die Partitionen mit sudo fdisk -uc /dev/sdx. (Wie man fdisk bedient steht tausendfach in Google). Danach immer als Anfagssektor die Vorgabe nehmen und als Endesektor Angaben wie +10G nutzen, dann stimmt alles.

Kommen wir zur Konfiguration:

Folgende Konfiguration nutze ich (und würde ich weiterempfehlen):

/etc/fstab  (Nur die Partitionen auf der SSD):

UUID=yyyyy /               ext4    noatime,discard,errors=remount-ro 0       1
UUID=xxxxx /home           ext4    defaults,noatime,discard        0       2

discard sorgt dafür, dass automatisches “trimmen” (ATA TRIM) funktioniert, noatime sorgt für eine Verringerung der Schreibzugriffe, da die Accesstime nicht mehr geschrieben wird. (ohne noatime wird jedes Mal, wenn auf eine Datei zugegriffen wird, die Zugriffszeit festgehalten).

Scheduler ändern:

Abschließend kann man noch den Scheduler anpassen, da der Scheduler für HDDs bei SSD eher für Nachteile sorgt. Problem: Hat man aber HDDs und SSDs im System, so wird es kniffliger, da man den Elevator entweder für alle, oder für die Devicenamen sda,sdb setzen kann. Aber sda,sdb, usw. können sich auch mal ändern, deswegen ist das eine schlechte Lösung. (bei mir switchen diese sogar sehr oft, da je nach Boot mal die eine, mal die andere Platte/SSD sich schneller zurück meldet.)

Dafür hat egalus im Thinkpad-forum.de ein Skript gepostet:

!/bin/bash
#
# this script finds all ssds name SSD_NAME (taken from
# /sys/block/sd?/device/model) which can be found in DISK_DEVICES
# warning, there might be blanks at the end of the modelname - they all
# seem to be exactly 16 characters long, so add spaces or check with
# echo "x$(cat /sys/block/sda/device/model )x" which results in a string
# xDEVICENAMEx and can contain spaces like here: xXLR8_PL120AB    x

# define the devices that are disk devices
DISK_DEVICES="sda sdb sdc"

# enter the name of your ssd - we will use exactly this name to match any
# DISK_DEVICE against this string!
SSD_NAME="XLR8_PL120AB    "

# the next lines generate two lists, one contains device names for SSDs and
# the other for non SSDs (called HDDs)
SSD_DEVICES=""
HDD_DEVICES=""
for dev in $DISK_DEVICES; do
        if [ "x$( cat /sys/block/${dev}/device/model 2>/dev/null)x" = "x${SSD_NAME}x" ];
                then SSD_DEVICES="$SSD_DEVICES $dev"
                else HDD_DEVICES="$HDD_DEVICES $dev"
        fi
done

# and here are the results of the check
#echo hdds: $HDD_DEVICES
#echo ssds: $SSD_DEVICES

# set scheduler deadline for SSDs
for dev in $SSD_DEVICES; do
        echo deadline > /sys/block/${dev}/queue/scheduler
        #echo setting deadline scheduler for $dev
done

Bevor man es benutzen kann, muss man aber erst mit

cat /sys/block/sda/device/model
cat /sys/block/sdb/device/model
usw.

durchsehen wie die SSD im System heißt. Hat man den Namen, kopiert man ihn und füllt bis auf 15 Stellen mit Leerzeichen auf.
(meine heißt z.B. “OCZ-VERTEX2 ” (ohne “”))
Diesen Namen trägt man anstelle von “XLR8_PL120AB ” (die “” da lassen) in die Zeile ein.

Nun speichert man das Skript irgendwo und macht dort chmod +x <dateiname>.

Danach trägt man es inkl. Pfad in /etc/rc.local ein.

Jetzt wird der Scheduler der SSD nach jedem Start automatisch gesetzt.

Prüfen kann man dies, in dem man

cat /sys/block/sda/queue/scheduler
cat /sys/block/sdb/queue/scheduler
usw. macht.

Bei HDDs sollte nun [cfq] kommen, bei SSDs [deadline].

Falls es nicht klappt, kann man die Drei auskommentierten Echo-Zeilen wieder einkommentieren und das Skript als Root von Hand aufrufen und die Ausgabe mal ansehen.(# entfernen vor den Echo-Zeilen.)

Jetzt gibt es noch ein Problem: Wohin mit dem Swap? Auf die HDD – Langsam, aber ohne Abnutzung, oder auf die SSD – Schnell, aber eventuelle Abnutzung.

Dazu komme ich später!

Abschließend noch ein paar Links zum Thema:

https://wiki.archlinux.org/index.php/SSD#Swap_Space_on_SSD

https://wiki.ubuntu.com/MagicFab/SSDchecklist

http://randomtechoutburst.blogspot.com/2010/03/4k-alignment-for-disks-important.html

Noch eine Anmerkung am Ende: Es lohnt kaum, EXT4 ohne Journaling zu nutzen, da die Nachteile überwiegen. Wie der Artikel im Archwiki zeigt, sind die Schreibzugriffe eher geringfügig größer. Daher sollte man es auch bei SSDs anlassen, da man sich so im Falle eines Stromausfalles keine Partitionen zerschießt. (beispielsweise!)

Hoffe das hat irgendjemand geholfen ;)

Comments (0)

› No comments yet.

Leave a Reply

Allowed Tags - You may use these HTML tags and attributes in your comment.

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Pingbacks (0)

› No pingbacks yet.