Partition Alignment

Partition Alignment Linux

Unter Partition Alignment versteht man das richtige Ausrichten von Partitionen an den physikalisch Sektorgrenzen eines Datenträgers (z.B. Festplatte, SSD, RAID-Volume). Ein korrektes Partition Alignment gewährleistet eine optimale Performance bei Datenzugriffen. Speziell bei SSDs (mit internen Page-Größen von beispielsweise 4.096 oder 8.192 Bytes), Festplatten mit 4 KiB (4.096 Bytes) Sektoren und RAID Volumens führt eine fehlerhafte Ausrichtung von Partitionen zu verminderter Performance.

Traditionell arbeiten Festplatten mit einer physischen Sektorgröße von 512 Byte. Die erste Partition beginnt dabei im letzten Sektor der ersten Spur mit der (logischen) Blockadresse 63. Die Größe eines solchen (logischen) Sektors beträgt ebenfalls 512 Byte. Da logische und die physikalische Sektorgröße gleich sind, gibt es keinerlei Probleme. Neuere Festplatten im sogenannten Advanced Format arbeiten intern mit einer physischen Sektorgröße von 4.096 Byte (4 KiB). Nach außen emulieren sie aber weiter eine Sektorgröße von 512 Byte (Advanced Formate 512e). Auch SSDs arbeiten mit einer Pagegröße von 4 KiB beziehungsweise 8 KiB. Bei diesen Festplatten bzw. SSDs ist die „klassische“ Partitionierung beginnend ab LBA-Adresse 63 nicht mehr zu empfehlen.

Aktuelle Dateisysteme wie zum Beispiel ext4 oder ntfs nutzen eine Blockgröße von 4 KiB. Die 4 KiB Dateisystem-Blöcke passen nun nicht direkt in die 4 KiB Sektoren der Festplatte bzw. 4 KiB / 8 KiB Pages der SSDs. Beim Schreiben eines einzelnen 4 KiB Dateisystem-Blockes müssen dann zwei 4 KiB Sektoren bzw. Pages verändert werden. Erschwerend kommt dabei hinzu, dass die jeweiligen 512 Byte Blöcke erhalten bleiben müssen – es kommt damit zu einem Read/Modify/Write. Die Folge ist eine deutlich verminderte Performance.

Fehlerhaftes Alignment

Part_alignment_wrong

Richtiges Alignment

Um dieses Problem zu vermeiden empfiehlt sich ein Alignment auf 1 MiB – damit ist man auf lange Sicht auf der sicheren Seite. Mit der aktuellen Adressierung in 512 Byte großen logischen Sektoren entspricht das 2048 Sektoren.

Part_alignment_right

Überprüfen des Partition Alignment

Alignment Check mit parted

[stextbox id=“bash“]parted /dev/sda align-check opt 1[/stextbox]
Falsches Alignment [stextbox id=“warning“]1 not aligned[/stextbox]
Richtiges Alignment
[stextbox id=“info“]1 aligned[/stextbox]

Alignment Check mit fdisk

[stextbox id=“bash“]fdisk -l -u /dev/sda[/stextbox]
Falsches Alignment
[stextbox id=“warning“]Platte /dev/sda: 85.8 GByte, 85899345920 Byte
255 heads, 63 sectors/track, 10443 cylinders, zusammen 167772160 Sektoren
Einheiten = Sektoren von 1 × 512 = 512 Bytes

Gerät  boot.     Anfang        Ende     Blöcke   Id  System
/dev/sda1   *          63      208844      104391   83  Linux
/dev/sda2          208845   167766794    83778975   8e  Linux LVM[/stextbox]
Richtiges Alignment
[stextbox id=“info“]Disk /dev/sda: 1999.3 GB, 1999296790528 bytes
255 heads, 63 sectors/track, 243067 cylinders, total 3904876544 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: 0x0004f115

Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     9764863     4881408   83  Linux
/dev/sda2         9764864  3904876543  1947555840   83  Linux
[/stextbox]

Auch ein netter Artikel dazu Aligning IO on a hard disk RAID – the Theory

1 Kommentar zu „Partition Alignment

  1. Guter Artikel, Alex! Das Disk-Alignement wird selbst von vielen erfahrenen Sysadmins ignoriert, da das Thema dort meist unbekannt ist. Ich aligne auch meist bei 1 MiB, damit macht man meist alles richtig.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

*