« Archives in December, 2010

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 ;)

Windows 7: Beim Setup konnte keine neue Systempartition erstellt…

Hi,

falls man beim Installieren auf den nervigen Fehler:

“Beim Setup konnte keine neue Systempartition erstellt oder eine
vorhandene Systempartition gefunden werden.”

trifft, hilft folgendes:

Windows 7  muss auf der HDD am ersten Port IMMER eine Partition haben, entweder die komplette Win 7  Partition, oder die 100 MB Partition.

Bei mir war es so, dass sich die IDE Festplatte immer vor alle Platten an den Sata Ports “schob” und voll war (komplett partitioniert in dem Fall) und Windows 7 somit dort keine 100 MB Boot-Partition erstellen kann. Dann kommt der obige Fehler.

Deaktiviert man nun den IDE Chipsatz im Bios, dann gelten die Sata Ports nach der Durchnummerierung (siehe Mainboard Handbuch). Auf Port 0 muss eine Partition sein. Ist die HDD an Port 0 das Installationsziel, so kann man sie vorher Partitionieren, dann benötigt Windows 7 keine 100 MB Bootpartition.

Will man aber Windows 7 auf eine zweite Festplatte an Port 1 beispielsweise, muss auf die HDD an Port 0 zwingend die 100 MB Partition oder der obige Fehler kommt und man kann Windows 7 dort nicht installieren.

Lösung: Festplatten so umstecken, dass die ZielHDD an Port 0 hängt und bei Bedarf IDE Chipsatz abschalten, dann spart man sich den Fehler und die 100 MB Bootpartition.

Anmerkung: Das ganze ist unabhängig von der Bootreihenfolge im Bios.!

Edit: Möglich, dass das Problem erst ab Versionen >= Windows 7 Professional auftritt.

Neues Gewinnspiel von Netbooknews.de!

Banner von Netbooknews.de

Es ist wieder so weit – netbooknews macht wieder ein richtig geiles Gewinnspiel!

Es gibt wieder richtig,richtig viel zu gewinnen, aber bevor ich das hier alles aufzähle,

klickt euch einfach durch auf NBN!