Hetzner - DokuWiki
Partition Alignment
| |
Languages: |
Deutsch |
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 Volumes führt eine fehlerhafte Ausrichtung von Partitionen zu verminderter Performance.
Bei der Installation von Betriebssystemen über den Hetzner Robot oder unter Verwendung von installimage im Hetzner Rescue-System wird die Ausrichtung automatisch korrekt vorgenommen.
Bei eigenständigen Installation via Remote Console oder via VNC (z.B. CentOS 5.X) muß die Ausrichtung selbst vorgenommen werden. Als Faustregel gilt, daß je neuer das zu installierende Betriebsystem, desto höher die Wahrscheinlichkeit, daß die Partitionen vom Installationsprogramm korrekt ausgerichtet werden.
Das Aligment kann durch folgende Befehle überprüft werden:
sfdisk -uS -l fdisk -u -l /dev/sdX
Der Startsektor jeder Partition sollte mindestens durch 8 (8 * 512 Byte = 4KiB), im Optimalfall durch 2048 (2048 * 512 Byte = 1 MiB) teilbar sein.
Inhaltsverzeichnis |
Hintergrund: Partitionierung
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
Korrekte Partitionierung
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.
Linux
fdisk (ältere Versionen)
Bei älteren fdisk Versionen können Sie manuell über die Paramater -S und -H ein Alignment erreichen. Bezüglich der konkreten Number of Sectors per Track (S) und Number of Head (H) Zahlen finden sich unterschiedliche Empfehlungen. Mit -S 32 -H 64 sind die Partitionen auf 1 MiB aligned (32 Sektoren pro Track * 64 Heads * 512 Byte = 1.048.576 Byte = 1 MiB). Beim Erstellen der ersten Partition beginnen Sie dabei bei Zylinder 2. Ohne spezielle Parameter kommt es zu einem Misalignment durch fdisk.
fdisk im Hetzner Rescue-System
Die im Hetzner Rescue-System enthaltene fdisk Version nutzt ein 1MiB Alignment sofern der DOS-Kompatibilitätsmodus deaktiviert wird.
Die Empfehlung bei neueren fdisk Versionen lautet:
- verwenden Sie fdisk von util-linux-ng >= 2.17.2
- beachten Sie Warnungen von fdisk
- deaktivieren Sie den DOS-compatible mode (-c Option)
- verwenden Sie Sektoren als Display Units (-u Option)
- verwenden Sie +size{M,G} um das Ende einer Partition anzugeben
Beispiel fehlerhaftes Alignment
Das folgende Beispiel zeigt ein fehlerhaftes Alignment nach einer VNC-Installation von CentOS 5.6:
[root@static ~]# fdisk -v fdisk (util-linux 2.13-pre7) [root@static ~]# fdisk -u /dev/hda Die Anzahl der Zylinder für diese Platte ist auf 10443 gesetzt. Daran ist nichts verkehrt, aber das ist größer als 1024 und kann in bestimmten Konfigurationen Probleme hervorrufen mit: 1) Software, die zum Bootzeitpunkt läuft (z. B. ältere LILO-Versionen) 2) Boot- und Partitionierungssoftware anderer Betriebssysteme (z. B. DOS FDISK, OS/2 FDISK) Befehl (m für Hilfe): p Platte /dev/hda: 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/hda1 * 63 208844 104391 83 Linux /dev/hda2 208845 167766794 83778975 8e Linux LVM
Beispiel korrektes Alignment
root@rescue ~ # fdisk -c -u /dev/sda Command (m for help): p Disk /dev/sda: 1500.3 GB, 1500301910016 bytes 255 heads, 63 sectors/track, 182401 cylinders, total 2930277168 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disk identifier: 0x0004dc67 Device Boot Start End Blocks Id System /dev/sda1 2048 4196351 2097152 fd Linux raid autodetect /dev/sda2 4196352 5244927 524288 fd Linux raid autodetect /dev/sda3 5244928 1465149167 729952120 fd Linux raid autodetect
LVM und Software-RAID
Obwohl auch hier auf ein korrektes Alignment geachtet werden muß, ist dies in der Regel nicht explizit notwendig, da mindestens 64 KiB große Blöck verwendet werden. Neuere Version enthalten Patches, die zusätzlich ein Alignment auf 1 MiB-Grenzen vornehmen.
Windows
Alle Windows Versionen ab Windows Vista führen automatisch ein Alignment auf MiB-Grenzen bei allen Datenträgern größer als 4 GiB durch.
Ältere Versionen wie Windows XP benötigen ein manuelles Alignment.
