Inhaltsverzeichnis

Festplatten

Allgemeine Infos zu Festplatten.

SSD

Infos zu SSD Festplatten

Alignment

Bei der Partitionierung bringt ein korrektes Ausrichten („Alignment“) der Partitionen respektive der Dateisysteme deutliche Performance-Vorteile. Diese Maßnahme bringt den mit Abstand größten Geschwindigkeitszuwachs und sollte in jedem Falle durchgeführt werden.

Ein nicht optimales Partitionsalignment kann dazu führen, dass sich ein 4.096 Byte großer Dateisystem-Block über zwei 4.096 Byte große SSD-Pages erstreckt. Achtet man beim Partitionieren auf diese Besonderheiten, kann man Performance-Engpässe sehr einfach vermeiden.

Wichtig für das korrekte Alignment des Dateisystems ist die korrekte Ausrichtung aller Partitionen einschließlich der logischen. Bei der erweiterten Partition ist es hingegen unerheblich, ob diese korrekt ausgerichtet wird, da diese nur als Rahmen für beliebig viele logische Partitionen oder Laufwerke dient.

Die Installationsprogramme richten seit „Maverick Meerkat“ neu angelegte Partitionen automatisch an den für SSD wichtigen Mebibyte-Grenzen (MiB) aus. Auch aktuelle Versionen von gparted und fdisk/gdisk arbeiten nach diesem Schema.

Prüfung

Überprüfen mit z.B. parted

parted /dev/sda align-check opt

Die Ausgabe sollte sein:

Partitionsnummer? 1                                                       
1 aligned

oder per fdisk

fdisk -l -u /dev/sda

Hier sollte die Ausgabe so sein:

isk /dev/sda: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000d8343

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048    20973567    10485760   83  Linux
/dev/sda2        20973568   312581807   145804120   83  Linux

Der Installer hat dabei die Partitionen auf 1 MiB (Mebibyte) ausgerichtet. Dies erkennt man daran, dass die Nummer des Start-Sektors der jeweiligen Partition durch 2048 teilbar ist (2048 Sektoren multipliziert mit 512 Byte pro Sektor = 1.048.576 Bytes = 1 Mebibyte, abgekürzt 1 MiB).

(Quelle: https://wiki.ubuntuusers.de/SSD/Alignment)

Alignment berechen

quelle: http://www.helsic.de/?p=1592

parted – optimal Partition Alignment

Wenn bei dem Erstellen einer GPT-Partition mit parted, wie z.B. hier beschrieben, folgender Hinweis auftaucht
Warning: The resulting partition is not properly aligned for best performance.
dann sollte die Partitionierung erneut erfolgen – diesmal mit Parametern, die “properly aligned” sind.

Die einfache Variante für eine Partition, die die größtmögliche Festplattenkapazität nutzen läßt, ist folgende:

(parted) mkpart primary xfs 1 -1

Beispiel:
knecht ~ # parted /dev/sdb
Warning: Could not determine physical sector size for /dev/sdb.
Using the logical sector size (512).
GNU Parted 2.3
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted)
(parted) print
Error: /dev/sdb: unrecognised disk label
(parted) mklabel gpt
(parted) mkpart primary xfs 1 -1
(parted) unit s
(parted) print
Model: AMCC 9690SA-4I DISK (scsi)
Disk /dev/sdb: 35155869696s
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
1 2048s 35155867647s 35155865600s primary

Dies lässt sich auch manuell ausrechnen:

(parted) unit s
(parted) print free
Model: AMCC 9690SA-4I DISK (scsi)
Disk /dev/sdb: 35155869696s
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
34s 35155869662s 35155869629s Free Space
Maximal verfügbare Sektoren, MaxSectors: 35155869629

Begin bei Sektor 2048 (1MiB).

Ende berechnen:
MaxSectors – 2048 = AvaibleSectors
35155869629-2048 = 35155867581

Ein vielfaches von 2048 ist optimal:
AvaibleSectors / 2048 = MaxCountCyl
35155867581 / 2048 = 17165950,967285156

MaxCountCyl * 2048 = SizeInSectors
17165950 * 2048 = 35155865600

35155865600 + 2048 = 35155867648

Davon einen abziehen, da der erste Sektor schon mitzählt: 35155867648 -1 —> 35155867647

(parted) mkpart primary
File system type? [ext2]? xfs
Start? 2048
End? 35155867647
(parted) print
Model: AMCC 9690SA-4I DISK (scsi)
Disk /dev/sdb: 35155869696s
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
1 2048s 35155867647s 35155865600s primary
(parted)

Löschen / Wipen

SSD

Quelle: https://wiki.ubuntuusers.de/SSD/Secure-Erase/
Da SSD-Speichercontroller eigenständig zu speichernde Daten auf unterschiedliche Speicherblöcke verteilen, muss beim Wipen anders vorgegangen werden als mit magnetischen Datenträgern.
Diese ließen sich bislang einfach überschreiben. DBAN war dazu recht beliebt.
Bei einer SSD würde DBAN grundsätzlich Speicherblöcke überschreiben, es wäre aber nicht sichergestellt, dass zusammenhängende Speicherblöcke überschrieben oder einfach nur freie Speicherblöcke beschrieben würden. Das Überschreiben der gesamten SSD würde sie auch nur unnötig belasten bzw. altern lassen.
Namhafte Hersteller bieten für ihre SSDs eigene Software zum Löschen an.
Solche Software weißt die SSD über den ATA-Befehl „Secure Erase“ an, ihre Speicherblöcke zu leeren. Das kann auch mit Linux gemacht werden.
Mit „Secure Erase“ setzt man die SSD in den Werkszustand zurück. Unter Umständen wird die SSD wieder so schnell wie zu Anfang.

Vorbereitungen

Die SSD muss direkt am SATA-Controller und nicht per Adapter angeschlossen sein.
Sie darf nicht gemountet, gesperrt oder sich im „Freeze-Mode“ befinden.
Zum Prüfen des „Freeze-Mode“ die Informationen der SSD auslesen.

hdparm -I /dev/sd<BUCHSTABE_DES_GERÄTES>

In der Ausgabe sieht man oben die Angaben zum Hersteller und das Model, unten sieht man die Stati zur Sicherheit und ob die SSD sich im „Freeze-Mode“ befindet.

...
Security: 
		supported
	not	enabled
	not	locked
	not	frozen
	not	expired: security count
		supported: enhanced erase
...

„enabled“, „locked“ und „frozen“ sollten wie oben zu sehen, nicht gesetzt und „enhanced erase“ sollte unterstützt sein.

Wenn die SSD sich im „Freeze-Mode“ befindet, kann der Suspend-Mode oder das erneute Verbinden der SSD helfen:

Wenn kein „Freeze-Mode“ gesetzt ist, muss noch die Sicherheit aktiviert sein, dazu setzt man ein Festplatten-Passwort.

hdparm --user-master u --security-set-pass <PASSWORD> /dev/sd<BUCHSTABE_DES_GERÄTES>

Jetzt wieder per Befehl hdparm -I … prüfen.
Der Status „enabled“ solte jetzt nicht mehr auf „not enabled“ stehen.

SSD Löschen

Wenn alle Vorbereitungen erfüllt sind, darf man den PC nicht neu starten, sonst fängt man von vorne an, da „Freeze-Mode“ und die Sicherheit zurückgesetzt werden.
Die SSD nun mit folgendem Befehl löschen, also in den Werkszustand versetzen.

time hdparm --user-master u --security-erase <PASSWORD> /dev/sd<BUCHSTABE_DES_GERÄTES>

Das Löschen von SSDs ist recht schnell, im Gegensatz zu herkömmlichen magnetischen Datenträgern.
Wenn man erneut mit hdparm -I … prüft sollte die Sicherheit wieder deaktiviert sein.

herkömmliche Festplatten

Mit dd lassen sich auch Geräte vollkommen löschen (Low-Level-Format).

Mit Nullen überschreiben

dd if=/dev/zero of=<PFAD_ZU_GERÄT>

Mit Zufallszahlen überschreiben

dd if=/dev/random of=<PFAD_ZU_GERÄT>

oder

dd if=/dev/urandom of=<PFAD_ZU_GERÄT>

Partition vergrößern

Vergrößert man eine Festplatte (z.b. in einer virtuellen Umgebung), muss diese Änderung im Betriebssystem bekannt gemacht und danach die Partition erweitert werden.
Ein Reboot lässt das Betriebssystem automatisch nach Äderungen der Hardware suchen. Möchte man keinen Reboot dafür durchführen, sucht man manuell nach Änderungen der Festplatten.

echo 1 > /sys/class/block/<GERÄTENAME>/device/rescan

Danach sollte man im Syslog Einträge sehen wie, „<GERÄTENAME>: detected capacity change from ##### to #####“

Nun kann man die Partition erweitern mit parted oder mit growpart.

Zuletzt noch das Dateisystem erweitern und fertig.

resize2fs -p /dev/<GERÄTENAME_MIT_PARTITIONSNUMMER>