# Logical Block Addressing

Der Begriff Logische Blockadressierung (LBA) oder englisch Logical Block Addressing bezeichnet eine Adressierungsmethode bei ATA-Festplatten.

## Grundlagen

Die Blöcke der Festplatte werden im Gegensatz zur dreidimensionalen CHS-Adressierung (kurz für englisch Cylinder/Head/Sector) komplett unabhängig von der Festplattengeometrie adressiert. Dabei werden beim LBA-Verfahren die Blöcke einfach gezählt, beginnend mit Null. Jeder LBA-Block entspricht einem einzelnen Sektor der CHS-Adressierung.

### ATA/ATAPI/ACS

Bei LBA wird zwischen Adressen mit 28 und 48 Bit unterschieden:
* Eine 28 Bit lange LBA-Adresse ermöglicht die Adressierung von 268.435.456 Blöcken. Bei der üblichen Block- und Sektorgröße von 512 Byte = $2^{9}$ Byte entspricht das 128 GiB = $2^{7}\cdot 2^{30}$ Byte.
* Als Erweiterung wird mit ATA-6 eine 48-Bit-Adressierung (48-Bit-LBA oder auch Big-LBA) eingeführt, mit der 281.474.976.710.656 Blöcke (also 128 PiB = $2^{7}\cdot 2^{50}$ Byte) adressiert werden können. 48-Bit-LBA kommt bei Festplatten mit Kapazitäten von mehr als 128 GiB zum Einsatz, sofern das BIOS ebenfalls 48-Bit-LBA unterstützt.

### SCSI

Im Zusammenhang mit der Größe des CDB (Command Descriptor Block) wird auch von 32-Bit-LBA und 64-Bit-LBA (Long-LBA) gesprochen. Dies beruht auf der Tatsache, dass im 10 Byte langen CDB nur 4 Byte (32 Bit) für die LBA-Adresse vorgesehen sind. Somit können maximal 2$^{32}$ = 4.294.967.296 Blöcke und mit einer Block-/Sektorgröße von 512 Byte maximal 2 TiB = $2^{1}\cdot 2^{40}$ Byte adressiert werden. Eine weitere Einschränkung hinsichtlich 32 Bit langer LBA-Adressen und der daraus resultierenden 2-TiB-Grenze ist im Aufbau der Partitionstabelle des MBR begründet.
Mit der Erweiterung der CDB-Länge auf 16 bzw. 32 Byte sind 8 Byte (64 Bit) für die LBA-Adresse vorgesehen.

## Unterstützung in Betriebssystemen

Aktuelle Betriebssysteme (z. B. BSD, Linux, macOS, Windows) benötigen keine zusätzlichen Anpassungen, um 48-Bit-LBA zu ermöglichen.

### Situation bei älteren Betriebssystemen

Bei der Verwendung von älteren Windows-Versionen kann es Probleme geben, da 48-Bit-LBA bis vor Version Windows XP (Service Pack 1) nicht standardmäßig genutzt wird. In der ursprünglichen Version von Windows XP (ohne Service Pack) muss es manuell aktiviert werden. Selbiges gilt für Windows 2000: Hier ist neben der manuellen Aktivierung mindestens Service Pack 3 erforderlich.
Für Windows 9x gibt es seitens Microsoft keine 48-Bit-LBA-Unterstützung, es sind jedoch verschiedene freie oder kostenpflichtige Lösungen von Privatpersonen oder Firmen für Windows 98 und Windows Me entwickelt worden, beispielsweise der Intel Harddisk Accelerator für Mainboards mit Intel-Chipsatz.
Bei der Nutzung von Festplatten mit mehr als 128 GiB an Systemen ohne 48-Bit-LBA-Unterstützung besteht die Gefahr, dass ein Umbruch auf den Anfang der Platte erfolgt (Ganzzahlüberlauf, englisch wrapping) und dort der Master Boot Record (MBR) und die erste Partition überschrieben werden, was Datenverlust zur Folge hat (siehe Festplattengeometrie).
Bei Windows 2000 wie auch bei der ursprünglichen Version von Windows XP (ohne Service Pack) muss in der Windows-Registrierungsdatenbank der Schlüssel EnableBigLba (vom Typ REG_DWORD, zu finden unter HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Atapi\Parameters\) aktiviert werden – entweder manuell eingetragen und auf 1 setzen, oder durch das Ausführen eines Tools wie EnableBigLba.exe, das diesen Eintrag vornimmt. Windows-Versionen ab XP mit Service Pack 1 ignorieren diesen Schlüssel und aktivieren die Unterstützung immer.
Bei der Installation von Windows XP kann es zur Fehlermeldung „Fehler beim Laden des Betriebssystems“ kommen, nachdem die Installationsroutine die Installation auf die Festplatte kopiert hat und bevor sie vor dem eigentlichen Installationsvorgang den Computer neu startet. Dies kann auftreten, wenn das BIOS Probleme mit 48-Bit-LBA hat.
Seit Windows Server 2003 Service Pack 1 und Windows XP 64-Bit Edition unterstützt Microsoft auch Long-LBA.