# Festplattengeometrie

Unter der Geometrie einer Festplatte versteht man die Aufteilung der Festplatte in Zylinder, Spuren und Sektoren.

## Prinzip

Die Daten auf Festplatten (und auch Disketten) werden in kleine Abschnitte – Datenblöcke oder Sektoren – unterteilt, die eine konstante Größe haben (meist 512 Bytes = 2$^9$ Bytes oder ein Vielfaches, etwa 4.096 Bytes = 2$^{12}$ Bytes). Dazu werden die Seiten aller Scheiben einer Festplatte durchnummeriert. Während Disketten maximal zwei Seiten aufweisen, eine Vorder- und eine Rückseite, haben Festplatten fast immer mehr als eine Platte mit jeweils zwei Seiten („Plattenstapel“, siehe Physischer Aufbau einer Festplatte). Jede Seite hat einen eigenen Schreib-/Lesekopf, daher spricht man von der Anzahl der Köpfe: zwei pro Scheibe. Die Oberflächen wiederum werden in konzentrische kreisförmige Spuren und diese in die Anzahl der Sektoren pro Spur unterteilt. Die jeweiligen einzelnen Spuren (eines jeweiligen Kreisdurchmessers) aller Plattenoberflächen des Plattenstapels werden zu einem Zylinder zusammengefasst.
Dadurch entsteht ein Koordinatensystem, mit dessen Hilfe man jeden Datenblock durch seine Kopf-, Zylinder- und Sektornummer identifizieren kann. Dabei entspricht
* die Kopfnummer der Höhe
* die Zylindernummer dem Radius
* die Sektornummer dem Winkel
eines Objekts in einem Zylinderkoordinatensystem.
Die Motivation für diese Definition rührt daher, dass sämtliche Köpfe im gleichen radialen Abstand auf dem Aktuator fixiert sind und alle Spuren eines Zylinders (über alle Platten) zu einem bestimmten Zeitpunkt unter den Köpfen stehen und somit gleichzeitig ansprechbar sind.
Da die Spuren mit steigendem Radius auch entsprechend länger werden, werden sie ggf. dementsprechend in mehr Blöcke unterteilt, siehe Zone Bit Recording. (Dadurch wird die Aufzeichnungsdichte der Spuren angeglichen – und somit „vergeudeter“ Platz auf den äußeren Spuren vermieden.) Bei Disketten ist dieses Verfahren meistens nicht üblich.
Um die Verwaltung der Datenblöcke nicht zu komplex werden zu lassen, werden in der Regel mehrere benachbarte Spuren zu Zonen zusammengefasst. Jede Zone ist in eine gewisse Anzahl Sektoren unterteilt, die von äußeren Zonen zu inneren Zonen fällt. (Normalerweise beginnt man die Zählung der Zylinder bzw. Zonen am äußeren Rand.)
Die konkrete Verteilung der Blöcke auf die Oberflächen, Zonen, Zylinder und Sektoren wird als Geometrie der Festplatte (bzw. Diskette) bezeichnet.

## Cylinder, Head, Sector

Um nun einen physikalischen Datenblock auf diese Weise zu adressieren, benötigt man drei Werte, auch CHS-Werte genannt: Cylinder, Head (Kopf) und Sector. Bei den ersten Festplatten um 1970 waren die einzelnen Platten austauschbar, hatten nach späteren Maßstäben eine einfache Geometrie und eine geringe Datendichte. Die Firmware des Computers oder das Betriebssystem hatte sich um die Verwaltung des zur Verfügung stehenden Speicherplatzes zu kümmern und sollte die Zugriffe entsprechend dieser Geometrie optimieren. Doch Festplatten wurden immer kompakter, die Datendichte höher und die Geometrie komplexer.
Mitte der 1980er Jahre wurde daher eine neue Schnittstelle für Festplatten entwickelt: Im Auftrag von Compaq entwickelte Western Digital ab 1984 eine Integrated Drive Electronics (kurz IDE) getaufte Schnittstelle, die einen internen Controller zur Kommunikation zwischen Betriebssystem und Festplatte vorsah. Diese Schnittstelle wurde 1989 durch die ATA-Spezifikation „ATA-1“ zum Industriestandard. Fortan kümmerte sich die Firmware des Festplattencontrollers als interne Logik um die Optimierung der Schreib- und Lesezugriffe.
Die vom Controller in Richtung PC kommunizierte Geometrie war ab da nicht mehr unbedingt mit einer realen Geometrie der Platten identisch, doch weiterhin kompatibel zur Firmware des Computers (dem BIOS beim IBM PC) und zu den Betriebssystemen.
Die bei IDE (bzw. ATA) verwendete CHS-Adressierung sieht maximal vor:
* 65.536 = 2$^{16}$ Zylinder (0–65.535)
* 16 = 2$^4$ Köpfe (0–15) pro Zylinder, d. h. 8 Scheiben pro Zylinder
* 255 = 2$^8$-1 Sektoren pro Spur (1–255).
Daraus ergab sich in Kombination mit der o. g. Blockgröße von 512 Bytes eine maximale Speicherkapazität von 136.902.082.560 $\approx 2^{37}$ Bytes oder 137 GB (dezimal, als SI-Einheit immer als Vielfaches von 1.000 bzw. 10$^n$) bzw. in den früher gebräuchlichen Angaben 128 GiB (binär, als IEC-Einheit in Zweierpotenzen 2$^n$). Diese wurde 2001 mit Speicherkapazitäten von 160 GiB und mehr bei Festplatten gebrochen.

## Logical Block Addressing

Bereits 1996 wurde mit der Spezifikation „ATA-2“ eine neue Adressierungsmethode eingeführt, die Datenblöcke fortlaufend durchnummeriert und über ihre Blocknummern adressiert: das Logical Block Addressing-Verfahren (kurz LBA). Dadurch muss sich das Betriebssystem nicht mehr um die physische Organisation der Blöcke auf dem Datenträger kümmern, die ohnedies nicht mehr der Realität entsprach und mit zu vielen Problemen behaftet war.
Anfangs war LBA mit 28 Bits (“LBA-28”; 2$^{28}$ ergibt 268.435.456 Blöcke) jedoch ebenfalls auf 137 GB (128 GiB, bei damals üblichen 512 Bytes je Block) begrenzt. Erst mit ATA/ATAPI-6 aus dem Jahr 2000 wurde die Logical Block-Adresse auf 48 Bits erhöht (“LBA-48”; 2$^{48}$ erlaubt bei 512 Bytes je Block 2$^{57}$ Bytes = 128 PiB, das sind 134 Millionen GiB) und machte somit weitere Blöcke adressierbar und damit auch größere Festplatten zur Gänze nutzbar. Ohne LBA-48 können nur die ersten 128 GiB genutzt werden.
Als Vorteil der ATA-Spezifikation zeigte sich die Verwendung eines Controllers, der den physischen Aufbau kaschiert und dadurch z. B. moderne Solid-State-Disks (SSDs) auch für elektronische Geräte nutzbar macht, die eigentlich nur mit Festplatten umgehen können. Überdies ermöglicht er Leistungsverbesserungen, die ohne Controller nicht möglich wären, z. B.
* die interne Verwaltung defekter Blöcke (Defektmanagement)
* S.M.A.R.T.
* das Wear leveling bei Flash-Speichern
* Garbage Collection und Over-Provisioning bei SSDs
* Acoustic Management bei Festplatten.
Die verwendeten Algorithmen gelten als Betriebsgeheimnis der einzelnen Hersteller.

## Kompatibilität
### Advanced Format: „4k“

CHS-Adressierung wird in aller Regel heute nicht mehr benutzt. Aus Gründen der Kompatibilität unterstützen Festplatten jedoch weiterhin beide Adressierungsverfahren. Um Kompatibilität mit bestehenden Systemen (Geräten, Betriebssystemen) zu erreichen, wird oft sogar eine logische 512-Byte-Blockgröße simuliert, die der Controller (die Firmware) der Festplatte in die physische Blockgröße von 4.096 Bytes (4 kB, kurz „4k“) „einpasst“. Wenn das System sich nicht nach der „4k-Blockgröße“ ausrichtet, was immer dann der Fall ist, wenn ein System das 4k-System nicht kennt, kommt es unweigerlich zu Performanceeinbußen. Bei älteren Geräten und Betriebssystemen kann jedoch durch manuelle Formatierung eine Speicherausrichtung (auf englisch “4k block size alignment”) erzielt werden. Moderne Betriebssysteme (seit ca. 2010) richten Partitionen und Dateisysteme automatisch auf ein Vielfaches von 4.096 Bytes aus, auch auf Festplatten mit 512-Byte-Blöcken. 4k-Blockgrößen werden von Festplattenherstellern auch “Advanced Format” bezeichnet, weil sich durch die gestiegene Blockgröße auch die Datendichte steigern lässt, was wiederum größere Festplattenkapazitäten ermöglicht.

### LBA

Die Abbildung der CHS-Adresse auf die entsprechende LBA-Adresse ist genormt, sodass ein Wechsel des Adressierungsverfahrens nicht zwingend eine Neuformatierung bedeutet und neue Festplatten kompatibel zu alten Computern und Betriebssystemen bleiben. Bei der CHS-Adressierung kann jedoch maximal auf die ersten 128 GiB (137 GB) zugegriffen werden und es kommt zu Problemen, wenn eine Partition über diese „Grenze“ hinweg definiert ist.
Beim Wechsel von LBA-48 (2$^{48}$ Bit) zu LBA-28 (2$^{28}$ Bit) besteht jedoch die Gefahr, Daten ungewollt zu überschreiben, wenn eine Partition über die 128-GiB-Grenze hinaus reicht und mittels LBA-28 angesprochen wird. Der Grund hierfür ist, dass jeder Block mit seiner Nummer adressiert wird; der nächste Block hat also die Nummer des Blocks davor +1. Bei einer Partition, die das 28-Bit-Limit übersteigt (was z. B. immer dann der Fall ist, wenn die Partitionierung einer >137 GB-Festplatte auf einem Gerät mit LBA-48-Unterstützung erfolgte), wird aus dem Block nach Blocknummer 268.435.455 (der größtmöglichen 28-Bit-Blocknummer) nicht Blocknummer 268.435.456, sondern Blocknummer 0. Dieser Effekt wird Ganzzahlüberlauf (oder englisch wrapping) genannt. Wird dann gerade eine Datei gelesen, so werden falsche Daten gelesen und es kommt im besten Fall zu einem einfachen Fehler in der die Daten lesenden Anwendung, der eine Fehlermeldung erzeugt. Wird jedoch gerade eine Datei geschrieben, so überschreibt das System irrtümlich die ersten Blöcke der Festplatte (meistens ist der Bootsektor als Block 0 davon betroffen) und zerstört somit wichtige Daten unwiederbringlich.