El direccionamiento de bloques lógicos ( LBA ) es un esquema común utilizado para especificar la ubicación de bloques de datos almacenados en dispositivos de almacenamiento informático , generalmente sistemas de almacenamiento secundario como discos duros . LBA es un esquema de direccionamiento lineal particularmente simple ; los bloques se localizan mediante un índice entero, siendo el primer bloque LBA 0, el segundo LBA 1, y así sucesivamente. [ 1 ]
El estándar IDE incluía LBA de 22 bits como opción, que se amplió a 28 bits con el lanzamiento de ATA-1 (1994) y a 48 bits con el lanzamiento de ATA-6 (2003), mientras que el tamaño de las entradas en las estructuras de datos en disco y en memoria que almacenan la dirección suele ser de 32 o 64 bits. La mayoría de las unidades de disco duro lanzadas después de 1996 implementan el direccionamiento lógico por bloques.
Descripción general
En el direccionamiento por bloques lógicos, solo se utiliza un número para direccionar los datos, y cada dirección base lineal describe un único bloque.
El esquema LBA reemplaza a los esquemas anteriores que exponían los detalles físicos del dispositivo de almacenamiento al software del sistema operativo. El principal de estos era el esquema cilindro-cabezal-sector (CHS), donde los bloques se direccionaban mediante una tupla que definía el cilindro, el cabezal y el sector en el que aparecían en el disco duro . CHS no se adaptaba bien a dispositivos distintos de los discos duros (como cintas y almacenamiento en red) y, por lo general, no se utilizaba para ellos. CHS se utilizó en las primeras unidades MFM y RLL , y tanto este como su sucesor, el cilindro-cabezal-sector extendido (ECHS), se utilizaron en las primeras unidades ATA . Sin embargo, las unidades de disco actuales utilizan la grabación de bits de zona , donde el número de sectores por pista depende del número de pista. Aunque la unidad de disco informará algunos valores CHS como sectores por pista (SPT) y cabezales por cilindro (HPC), estos tienen poco que ver con la geometría real de la unidad de disco.
LBA fue introducido por primera vez en 1981 por SASI , el precursor de SCSI , como una abstracción. Si bien el controlador de la unidad aún direcciona los bloques de datos mediante su dirección CHS, esta información generalmente no es utilizada por el controlador del dispositivo SCSI , el sistema operativo, el código del sistema de archivos ni ninguna aplicación (como bases de datos) que acceda al disco "en bruto". Las llamadas al sistema que requieren E/S a nivel de bloque pasan las definiciones LBA al controlador del dispositivo de almacenamiento; en casos sencillos (donde un volumen se asigna a una unidad física), esta LBA se pasa directamente al controlador de la unidad.
En los dispositivos RAID ( Redundible Array of Independent Disks ) y en las redes de área de almacenamiento (SAN), donde las unidades lógicas ( números de unidad lógica , LUN) se componen mediante virtualización y agregación de LUN, el direccionamiento LBA de cada disco individual debe ser traducido por una capa de software para proporcionar un direccionamiento LBA uniforme para todo el dispositivo de almacenamiento.
BIOS mejorado
El estándar IDE anterior de Western Digital introdujo LBA de 22 bits; en 1994, el estándar ATA-1 permitió direcciones de 28 bits tanto en modo LBA como CHS. El esquema CHS utilizaba 16 bits para el cilindro, 4 bits para el cabezal y 8 bits para el sector, numerando los sectores del 1 al 255. Esto significa que el número de cabezales reportado nunca supera los 16 (0–15), el número de sectores puede ser de 255 (1–255; aunque 63 suele ser el mayor) y el número de cilindros puede llegar a ser de 65 536 (0–65 535), lo que limita el tamaño del disco a 128 GiB (≈137,4 GB), suponiendo sectores de 512 bytes. Se puede acceder a estos valores mediante el comando ATA "Identificar dispositivo" ( ECh) a la unidad. [ 2 ] : 87
Sin embargo, la implementación de IBM BIOS definida en las rutinas de acceso al disco INT 13h utilizaba un esquema de 24 bits bastante diferente para el direccionamiento CHS, con 10 bits para cilindro, 8 bits para cabezal y 6 bits para sector, o 1024 cilindros, 256 cabezales y 63 sectores. [ 3 ] Esta implementación INT 13h era anterior al estándar ATA, ya que se introdujo cuando el IBM PC solo tenía almacenamiento en disquete , y cuando se introdujeron las unidades de disco duro en el IBM PC/XT , la interfaz INT 13h no se pudo rediseñar prácticamente debido a problemas de retrocompatibilidad . La superposición del mapeo CHS de ATA con el mapeo CHS de BIOS produjo el mínimo común denominador de 10:4:6 bits, o 1024 cilindros, 16 cabezales y 63 sectores, lo que dio el límite práctico de 1024×16×63 sectores y 528 MB (504 MiB ), suponiendo sectores de 512 bytes.
Para que la BIOS superara este límite y funcionara correctamente con discos duros de mayor capacidad, fue necesario implementar un esquema de traducción CHS en las rutinas de E/S de disco de la BIOS que convirtiera entre el CHS de 24 bits utilizado por INT 13h y la numeración CHS de 28 bits utilizada por ATA. Este esquema de traducción se denominó traducción de desplazamiento de bits o de gran tamaño . Este método reasignaba los cilindros y cabezales ATA de 16:4:8 bits al esquema de 10:8:6 bits utilizado por INT 13h, generando muchos más cabezales de unidad "virtuales" de los que reportaba el disco físico. Esto aumentó el límite práctico a 1024 × 256 × 63 sectores, o 8,4 GB (7,8 GiB ).
Para superar aún más esta limitación, se introdujeron las extensiones INT 13h con los Servicios de unidad de disco mejorados de la BIOS , que eliminaron las limitaciones prácticas en el tamaño del disco para los sistemas operativos que reconocen esta nueva interfaz, como el componente DOS 7.0 en Windows 95. Este subsistema de BIOS mejorado admite el direccionamiento LBA con el método LBA o el método asistido por LBA , que utiliza LBA nativo de 28 bits para direccionar discos ATA y realiza la conversión CHS según sea necesario.
El método normal o ninguno vuelve al modo CHS de 10:4:6 bits anterior, que no admite el direccionamiento de más de 528 MB.

Hasta el lanzamiento del estándar ATA-2 en 1996, existían algunos discos duros de gran capacidad que no admitían el direccionamiento LBA, por lo que solo se podían utilizar los métodos de direccionamiento LBA o LBA . Sin embargo, el uso de estos métodos también generaba problemas de portabilidad, ya que las distintas BIOS solían emplear métodos de traducción diferentes e incompatibles, y los discos duros particionados en un ordenador con una BIOS de un fabricante específico a menudo no podían leerse en un ordenador con una BIOS de otro fabricante. La solución consistía en utilizar software de conversión, como OnTrack Disk Manager , Micro House EZ-Drive/EZ-BIOS, etc., que se instalaba en el cargador del sistema operativo del disco y reemplazaba las rutinas INT 13h durante el arranque con código personalizado. Este software también permitía habilitar la compatibilidad con LBA y las extensiones INT 13h para ordenadores antiguos con BIOS que no cumplían con el estándar LBA.
Traducción asistida por LBA
Cuando la BIOS está configurada para usar un disco en modo de traducción asistida por LBA, la BIOS accede al hardware mediante el modo LBA, pero también presenta una geometría CHS traducida a través de la interfaz INT 13h. El número de cilindros, cabezales y sectores en la geometría traducida depende del tamaño total del disco, como se muestra en la siguiente tabla. [ 4 ]
LBA48
El esquema LBA de 48 bits actual se introdujo en 2002 con el estándar ATA-6 , [ 5 ] elevando el límite de direccionamiento a 2 48 × 512 bytes, que es exactamente 128 PiB o aproximadamente 144 PB . Las computadoras compatibles con PC actuales admiten extensiones INT 13h, que usan estructuras de 64 bits para el direccionamiento LBA y deberían abarcar cualquier extensión futura del direccionamiento LBA, aunque los sistemas operativos modernos implementan acceso directo al disco y no usan los subsistemas BIOS , excepto en el momento de la carga de arranque . Los discos particionados con MBR usan direccionamiento de bloque lógico LBA de 32 bits para manejar el número total de sectores físicos o lógicos, es decir, pueden manejar un máximo total de 4,294,967,296 sectores (2^32). Esto significa que tradicionalmente se podía almacenar un límite máximo de datos de 2 tebibytes por disco duro, ya que estos tienen un tamaño de sector físico y lógico de 512 bytes. Este límite puede superarse hasta 16 TiB con un sector físico y lógico de 4096 bytes. [ 6 ]
Conversión CHS
En el esquema de direccionamiento LBA, los sectores se numeran como índices enteros; al asignarlos a tuplas CHS ( cilindro-cabezal-sector ) , la numeración LBA comienza con el primer cilindro, el primer cabezal y el primer sector de la pista. Una vez que se agota la pista, la numeración continúa con el segundo cabezal, permaneciendo dentro del primer cilindro. Una vez que se agotan todos los cabezales dentro del primer cilindro, la numeración continúa desde el segundo cilindro, y así sucesivamente. Por lo tanto, cuanto menor sea el valor LBA, más cerca estará el sector físico del primer cilindro del disco duro (es decir, el más externo [ 7 ] ).
Las tuplas CHS se pueden asignar a la dirección LBA con la siguiente fórmula: [ 8 ] [ 9 ]
- LBA = ( C × HPC + H ) × SPT + (S − 1)
dónde
- C , H y S son el número de cilindro, el número de culata y el número de sector.
- LBA es la dirección del bloque lógico
- HPC es el número máximo de cabezales por cilindro (indicado por la unidad de disco, normalmente 16 para LBA de 28 bits).
- SPT es el número máximo de sectores por pista (indicado por la unidad de disco, normalmente 63 para LBA de 28 bits).
Las direcciones LBA se pueden asignar a tuplas CHS con la siguiente fórmula ("mod" es la operación de módulo , es decir, el resto , y "÷" es la división entera , es decir, el cociente de la división donde se descarta cualquier parte fraccionaria):
- C = LBA ÷ ( HPC × SPT )
- H = ( LBA ÷ SPT ) mod HPC
- S = ( LBA mod SPT ) + 1
Según las especificaciones ATA, "Si el contenido de las palabras (61:60) es mayor o igual a 16.514.064, entonces el contenido de la palabra 1 [el número de cilindros lógicos] será igual a 16.383." [ 2 ] : 20 Por lo tanto, para LBA 16450559, una unidad ATA puede responder con la tupla CHS (16319, 15, 63), y el número de cilindros en este esquema debe ser mucho mayor que 1024 permitido por INT 13h. [ a ]
dependencias del sistema operativo
Los sistemas operativos que son sensibles a la geometría de la unidad informada por la BIOS incluyen Solaris , DOS y la familia Windows NT, donde NTLDR ( NT , 2000 , XP , Server 2003 ) o BOOTMGR ( Vista , Server 2008 , Windows 7 y Server 2008 R2 ) usan el registro de arranque maestro que direcciona el disco usando CHS; las versiones x86-64 e Itanium de Windows pueden particionar la unidad con la tabla de particiones GUID que usa el direccionamiento LBA.
Algunos sistemas operativos no requieren ninguna traducción porque no utilizan la geometría reportada por la BIOS en sus cargadores de arranque . Entre estos sistemas operativos se encuentran BSD , Linux , macOS , OS/2 y ReactOS .
Véase también
Notas
- ↑ Aunque el direccionamiento CHS definitivamente utiliza el concepto matemático de tupla , también puede considerarse un ejemplo del esquema general llamado base mixta al considerar que sus cilindros, cabezas y sectores tienen diferentes bases numéricas; por ejemplo, los cilindros cuentan de 0 a 1023, las cabezas de 0 a 254 y los sectores de 1 a 63.
Referencias
- ↑ "¿Qué es el direccionamiento de bloques lógicos (LBA)? | Definición de TechTarget" . WhatIs . Consultado el 22 de marzo de 2025 .
- 1 2 "Tecnología de la información - Conexión AT con interfaz de paquetes - 5 (ATA/ATAPI-5)" (PDF) . www.t13.org . 29 de febrero de 2000. Archivado del original (PDF) el 6 de agosto de 2020. Recuperado el 15 de diciembre de 2020 .
- ↑ "KB224526: Windows NT 4.0 admite una partición del sistema de hasta 7,8 GB" . Support.microsoft.com. 23 de febrero de 2007. Consultado el 30 de julio de 2013 .
- ↑ Steunebrink, enero. "Las limitaciones del disco duro IDE del BIOS" . Consultado el 6 de octubre de 2013 .
{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace ) - ↑ "Tecnología de la información - Conexión AT con interfaz de paquetes - 6 (ATA/ATAPI-6)" (PDF) . www.t13.org . 26 de febrero de 2002. Archivado del original (PDF) el 6 de agosto de 2020. Consultado el 15 de diciembre de 2020 .
- ↑ "Chips puente USB a SATA y unidades de +2 TB" . Consultado el 26 de enero de 2025 .
- ↑ "Conceptos básicos de discos duros" . active-undelete.com . Consultado el 10 de febrero de 2015. La
numeración de las pistas comienza en 0, y la pista 0 es la más externa del disco. La pista con el número más alto está junto al eje.
- ↑ "Cómo usar discos grandes, Sección 3. Acceso al disco" . tldp.org . 8 de noviembre de 2004. Consultado el 10 de febrero de 2015 .
- ↑ "Las fórmulas de conversión de CHS a LBA" . pcrepairclass.tripod.com . Consultado el 26 de agosto de 2014 .
Enlaces externos
- Explicación de LBAs ( Archivado el 25/02/2021 en Wayback Machine)
- Formato LBA y CHS, mapeo LBA
- Tutorial de traducción de CHS a LBA
- Artículo de Microsoft sobre el límite de 7,8 GB en NT 4.0
- Limitaciones y obstáculos del tamaño del disco duro. Archivado el 25/02/2021 en Wayback Machine.
- Actualización y reparación de ordenadores , por Scott Mueller. Páginas 524–531.
- Anexo AT 8 - Conjunto de comandos ATA/ATAPI (ATA8-ACS)
- Dispositivos de almacenamiento informático
- SCSI
- Adjunto AT
- BIOS