|
Einführung
Solid State Disks (SSD) werden aktuell immer beliebter. Empfehlenswert sind aktuell die
Produkte mit Indilinx-, Samsung- und Intel-Controllern.
Es gibt jedoch ein paar Kleinigkeiten zu beachten:
Intern basieren diese Platten auf Flash-Speichern des MLC-Typs, da SLC-Speicherchips zu teuer sind.
Diese Speicher lassen sich nur ca. 10.000 Mal beschreiben.
Um eine möglichst gleichmäßige Abnutzung zu erzielen und einem frühen Ausfall zu begegnen,
wird ein sogenanntes Wear-Leveling genutzt. Die Details der dabei verwendeten Algorithmen
sind Firmengeheimnisse. Bekannt ist allerdings, dass die verwendeten Speicherchips eine
Seitengröße von 4 KByte haben.
Dies ist insofern ein Problem, als die Sektorengröße, welche die kleinste addressierbare Einheit bilden,
nur 512 Byte beträgt. Aufgrund von längst unzeitgemäßen Festlegungen werden außerdem
Festplatten immer noch logisch in Zylinder, Köpfe und Sektoren aufgeteilt.
Dabei werden meist 63 Sektoren verwendet, was zur Folge hat, dass die erste Partition
auf einer Festplatte normalerweise bei Sektor 63 beginnt. Bei NTFS und FAT ist die kleinste
addressierbare Einheit meist auch 4 KByte groß, so dass die Blöcke einer solchen Partition
physisch auf zwei Seiten im Flashspeicher der SSD verteilt sind.
Dadurch verdoppelt sich die Anzahl der Schreibzugriffe auf die SSD. Da zudem in den SSDs meist
mehrere Pages logisch zusammengefasst werden, wäre ein Alignment auf 128-KByte-Adressen (Vielfaches von 4 KByte)
optimal.
Windows
Windows 7 wurde daher so modifiziert, dass es den ersten Sektor einer Partition auf ein anderes
Alignment anpasst, z.B. wird der erste Sektor dabei auf die Nummer 2048 statt 63 gelegt.
Bei Windows 7 und Vista lässt sich mit dem Parameter "align=2048" ein spezifisches Aligment erzwingen,
wenn eine Partition neu angelegt wird.
Bei bestehenden NTFS-Partitionen ergeben sich aber diverse Probleme:
|
|
Es gibt kaum ein Partitionierungswerkzeug, mit dem man sektorgenau die Position einer
Partition festlegen kann.
| |
|
Diejenigen Werkzeuge, mit denen man Partitionen verschieben und kopieren kann,
beherrschen das noch weniger. Es ist dort auch praktisch unmöglich, Partitionen
von Platte zu Platte zu kopieren oder gar dabei die Größe zu verändern.
| |
|
Sicherungsprogramme wie TrueImage können ebenfalls nicht sektorgenau positionieren,
außerdem können sie nicht in eine bestehende Partition rücksichern (zumindest nicht, wenn
man davon booten will).
| |
|
Will man also z.B. eine bestehende, bootfähige NTFS-Partition von einer
alten Platte auf eine SSD kopieren, muss man so vorgehen:
|
|
Verkleinerung der alten Partition auf die Größe, die auf der Ziel-SSD zur Verfügung steht
(mit etwas Reserve) mit einem Tool wie Disk Director, Paragon Partition Manager o.ä.
| |
|
Start z.B. der System Rescue CD.
In der Root-Shell mit fdisk eine Partition anlegen, die korrekt ausgerichtet ist
(z.B. Startsektor = 2048). Dazu kann man mit dem Kommando "u" die Einheiten auf Sektoren
umschalten. Die Zielpartition sollte genausoviel Sektoren wie die Quellpartition erhalten.
Der Typ ist "7 (NTFS)", die Partition muss mit "a" aktiv gemacht werden.
| |
|
Kopieren der Quell-Partition auf die neu angelegte Partition der SSD mittels
"dd if=/dev/sdXY of=/dev/sdAB bs=409600".
| |
|
Ggf. Platte bootfähig machen mit den üblichen Windows-Werkzeugen
( z.B. mit der Vista Recovery Disc)
(Stichworte "BOOTREC /FIXMBR", "BOOTREC /FIXBOOT", "BOOTSECT /NB60 ALL".
| |
|
Leider funktionert das Booten aufgrund der 1:1-Kopie mittels "dd" trotzdem noch nicht:
Man muss mit einem Hexeditor ("hexedit") den ersten Sektor der Boot-Partition auf der
SSD korrigieren, weil im BPB der Eintrag "HiddenSectors" auf den ersten
Sektor verweisen muss - dort steht üblicherweise noch 63. Dieser Eintrag muss auf 2048 umgeändert werden.
| |
|
Linux
Unter Linux gibt es ebenfalls Schwierigkeiten, die Theodore Ts'o
hier beschreibt.
Besonders ärgerlich sind hier Dinge wie Swap (eine Swap-Partition hat immer einen 4096 Byte langen Header).
Man kann dabei nicht angeben, wo die Payload beginnen soll. Da das Aligment vorzugsweise 128 KByte
sein sollte, müsste man also eine Swap-Partition auf einer Adresse anlegen, die 128 KByte - 4 KByte
beträgt, also z.B. auf Sektor 248 beginnt.
Neben den im Artikel genannten Alignments für LVM-PVs, VGs, LVs und dem eigentlichen Dateisystem (z.B. ext3) müssen
eventuell auch noch LUKS-Header angepasst werden (mit "cryptsetup luksFormat --align-payload=256").
Leider hat auch ein entsprechender Anstoß bislang nicht dazu geführt, dass in den UTIL-LINUX-NG
ein besseres Standard-Alignment aufgenommen worden wäre.
Ähnliches gilt für die anderen Komponenten, wie die LVM2-Utilities oder cryptsetup.
Bis diese Änderungen dann in den großen Linux-Distributionen erscheinen, wird es sicher 2010 werden.
Warten auf TRIM-Support
Optimal ist neben dem richtigen Alignment unter Linux
ab 2.6.28 mit ext4 natürlich die
direkte Unterstützung des TRIM-Kommandos.
Aktuell wird das jedoch nicht einmal von allen SSDs selbst unterstützt, z.B. wartet man bei Samsung noch
vergeblich auf ein Firmware-Update-Tool. Für Intel- und Indilynx-basierte SSDs gibt es bereits Updates.
Allerdings bieten einige 3rd-Party-Hersteller von SSDs mit Samsung-Controller schon Flashtools an,
darunter Lenove, Mushkin und Corsair. Leider geht dort ein Firmware-Update mit einem kompletten
Datenverlust einher.
|
congenio | Projekte erfolgreich machen
| Wir sind gegen Softwarepatente! |