2010 31. Jan

Alignment von Partitionen auf SSDs ohne Datenverlust und Neuinstallation ändern

Und wieder ein Thema aus dem Dunstkreis “Solid State Disk”. Diesmal geht es um das sog. Re-Alignment der Partitionen auf SSDs bzw. darum, wie man das Alignment bestehender Partitionen ändern kann, ohne dass die Daten verloren gehen oder man das OS neu installieren muss.

Partitions-Alignment – wozu?

Die “alten” Festplatten speichern Daten auf Magnetscheiben mit konzentrischen Spuren. Diese Spuren sind in (physikalische) Sektoren aufgeteilt. Alle Betriebssysteme bzw. Treiber “denken” noch in dieser Sektoren-Logik der Festplatten. SSDs speichern Daten aber völlig anders, werden aber trotzdem mit Hilfe der alten “Sektoren-Logik” angesprochen. Wen es interssiert: bei AnandTech gibt es einen hervorragenden Artikel, der die technische Funktionsweise von SSDs sehr gut veranschaulicht.

Beim “Alignment” geht es darum, den “Anfang” einer Partition auf einer SSD so auszurichten, dass der erste logische Sektor der ersten Partition genau mit einer physikalischen Speicherzelle (Page) auf der SSD übereinstimmt. Wenn das NICHT der Fall ist, dann passiert beim Schreiben auf die SSD Folgendes: Windows adressiert einen Sektor, der dann aber dummerweise über eine Page-Grenze der SSD hinweggeht. Also muss die SSD statt EINEM jetzt ZWEI Blöcke erst löschen und dann wieder beschreiben. Und das kostet eben Performance beim Schreiben, nämlich ca. 50%. Zusätzlich wird die Lebensdauer der SSD verkürzt, weil jede Speicherzelle ja nur eine begrenzte Anzahl von Schreiboperationen aushält, bevor sie ausfällt (bei MLC-SSDs sind das je Speicherzelle ca. 10.000 Schreiboperationen).

Wer seine SSD mit einer frischen Installation von Windows Vista oder Windows 7 versorgt hat, der muss sich keine Gedanken machen: beide Installationsprogramme sorgen automatisch dafür, dass das Alignment der Partitionen passend ist. Windows XP-Installationen allerdings richten bei der Installation ihre Partitionen NICHT korrekt aus und auch wenn man eine Vista- oder 7-Installation per Imaging-Software (z.B. Acronis TrueImage) gesichert hat und wieder zurückspielt, geht meistens das Alignment verloren, weil die Imaging-Softwares in den aktuellen Versionen das korrekte Alignment offenbar noch nicht berücksichtigen.

Alignment überprüfen

Um festzustellen, ob die Partitionen auf der SSD korrekt angeordnet sind, gibt es drei Möglichkeiten:

  1. Die einfachste Möglichkeit: Man lädt sich das Programm “AS SSD Benchmark” und startet es. Oben links in der Ecke steht eine Zahl mit der Angabe ‘KB’ dahinter. Diese Zahl ist entweder grün mit dem Zusatz ‘OK’ oder rot mit dem Zusatz ‘BAD’. Ratet einfach, wann das Alignment der ausgewählten Partition passend ist und wann nicht…
  2. Nutzung des Windows-Befehls diskpart
    Vista: START > Ausführen > ‘diskpart’;
    Win7: START > Programme > Zubehör > Eingabeaufforderung > ‘diskpart’

    Dort gebt ihr zuerst das Kommando ‘list disk‘ ein, es erscheint eine Übersicht mit allen Festplatten im System.
    Danach gebt ihr ‘select disk N’ ein, wobei ihr N mit der Nummer der SSD ersetzt.
    Jetzt kommt ‘list partition‘, dieses Kommando listet alle Partitionen auf der SSD auf. In der Spalte “offset” steht eine Zahl (in KB). Diese muss durch 4 Teilbar sein, dann ist alles in Ordnung, die Partition ist also korrekt ausgerichtet.

  3. Nutzung des SSD Alignment Calculators. Um die Werte zu ermitteln, die man dort eingeben muss, einfach jeweils auf “how to get” klicken, dann erscheint eine Anleitung :)

Alignment einer SSD-Partition ohne Datenverlust

Die allermeisten Anleitungen da draussen bewirken, dass man seine SSD komplett “plattmachen” muss und dann eine Neuinstallation fällig wird (1, 2). Nach längerem Suchen und Lesen habe ich aber eine Möglichkeit gefunden, eine SSD-Partition in kurzer Zeit und ohne Datenverlust, also ohne Neuinstallation, korrekt anzuordnen.

Bevor ihr das Folgende durchzieht, solltet ihr unbedingt ein Image eurer kompletten Festplatte oder wenigstens ein Backup eurer Daten machen. Ich übernehme keinerlei Verantwortung an Schäden von Hard- oder Software, die durch dieses Prozedere entstehen könnten.

Was ihr braucht, ist Folgendes: eine Boot-CD eure Betriebssystems (Vista oder Win7) und das Linux-basierte Open Source-Tool Gparted (die Live-CD).

  1. Ihr bootet euren Rechner mit der GParted-Live-CD. Im ersten Menü wählt ihr die Option “Boot to RAM”. Danach muss man noch ein paar Kleinigkeiten wegen Sprache und Tastatur-Layout angeben, aber das ist selbsterklärend.
  2. Auf der Gparted-Oberfläche verkleinert ihr die erste Partition so weit es geht, also z.B. auf 20 GB wenn 19 GB Daten drauf sind. Ich würde immer ein kleines bisschen mehr Platz lassen, als Daten auf der Partition liegen.
  3. Dann verschiebt ihr diese erste Partition ein wenig nach rechts, ein paar MB reichen aus, es müssen aber mehr als 2 MB sein! Wichtig: die Option “round off to cylinder boundary” muss deaktiviert sein!
  4. Jetzt verlasst ihr das Gparted-Tool, aber nicht die gesamte Oberfläche, sondern einfach nur das GParted-Fenster. Dann öffnet ihr das Terminal-Fenster von Debian. Hier gebt ihr Folgendes ein: zuerst den Befehl ‘parted’, danach ‘mkpart primary 63s 2047s‘.
    Dieses Kommando erzeugt eine primäre Partition, die von Sektor 63 bis 2047 reicht. Da ein Sektor 512 Bytes sind, ist diese Partition ca. 990KB groß. Der nächste freie Sektor ist demnach die 2048, also derjenige Sektor, an dem die Boot-Partition beginnen soll. (Der Platz VOR unserer Mini-Partition muss frei bleiben, weil sich dort Dinge wie der MBR und einige Programme verewigen.)
    Die Partition muss nicht zwingend bis Sektor 2047 gehen, die Hauptsache ist ja, dass die Boot-Partition bei einer Sektorzahl beginnt, die durch 8 teilbar ist bzw. ein Offset in Kilobytes (KB) aufweist, das durch 4 teilbar ist. Einige Leute wählen 64K, viele 128K. Windows 7, welches ja von Haus aus auf SSDs vorbereitet ist, beginnt die erste Partition bei Sektor 2048 bzw. bei 1.024 KB = 1 MB, also habe ich für mich beschlossen, dass ich es einfach auch so mache. :)
  5. Jetzt schließt ihr das Terminal-Fenster und startet wieder Gparted. Dort seht ihr jetzt die neue Mini-Partition (die man im Übrigen nicht mit NTFS oder FAT formatieren kann, weil zu klein!). Jetzt markiert ihr die vorhin verkleinerte und verschobene Boot-Partition und schiebt sie komplett an unsere Mini-Partition ran (also nach “links”). Wichtig: es muss wieder die Option “round off to cylinder boundary” deaktiviert sein!
  6. Jetzt beendet ihr Gparted, startet es noch einmal und löscht unsere Mini-Partition am Anfang.
  7. Danach wird einfach der Rechner neu gestartet. Es ist sehr wahrscheinlich, dass der MBR überschrieben wurde oder unbrauchbar geworden ist. Dann legt ihr einfach die Boot-CD eures Betriebssystems ein, bootet von dort und wählt die Option “Computer reparieren” aus. Den Rest erkennt das Tool von alleine und schreibt den MBR neu. Nach einem Neustart bootet euer OS ganz normal.

Volia, jetzt habt ihr eine korrekt angeordnete Boot-Partition. Solange die Partitionen “dahinter” genau am Ende der Boot-Partition ansetzen, sind auch sie automatisch korrekt angeordnet.

Update von SSD-Master aus den Kommentaren (11.02.2011):

“[...] GParted in der aktuellen Version richtet nun automatisch alle Partitionen an den MB-Grenzen aus. Das ist sogar voreingestellt (Option “Ausrichten an MiB”). Also einfach GParted starten, Partitionseigenschaften ansehen, ist das Offset nicht auf 2048 (=1 MB bei 512 Byte je Cluster), dann die Partition etwas nach rechts verschieben und wieder zurück. Dann passts! [...]“

Natürlich funktioniert die “alte” Vorgehensweise auch weiterhin. Den Link zu einer Anleitung mit GParted findet Ihr unter “Links” weiter unten.

Links