Direccionamiento de bloque lógico
El direccionamiento de bloque lógico, en inglés logical block addressing (LBA), es un método muy común usado para especificar la localización de los bloques de datos en los sistemas de almacenamiento, principalmente el almacenamiento secundario de una computadora. El término LBA puede referirse también a la «dirección del bloque» al que enlaza.
Los bloques lógicos en las computadoras modernas son normalmente de 512 o 1024 bytes cada uno.[1]
Funcionamiento
LBA es un método de direccionamiento particularmente simple. Los bloques son numerados según un índice, siendo el primer bloque: LBA 0, el segundo: LBA 1, y así sucesivamente.
Este método sucede a otros sistemas anteriores que exponían los detalles físicos de las unidades de almacenamiento al software directamente, con los riesgos que ello conlleva. El pionero de estos sistemas fue Cilindro-Cabezal-Sector (cylinder-head-sector o CHS), donde se les asignaba una dirección a cada bloque mediante una tupla que definía el cilindro, el cabezal y el sector en que se encontraba. Este sistema no funcionaba bien en dispositivos que no fueran discos duros, como las cintas magnéticas, por lo que no era muy usado en esos casos. El sistema CHS debutó en las unidades RLL y MFM. El CHS y su sucesor, el Extended Cylinder-Head-Sector (ECHS), fueron usados en las primeras unidades Integrated Drive Electronics (IDE).
SCSI introdujo LBA como una abstracción. Aunque el controlador de la unidad todavía utiliza CHS para acceder a los bloques, esta información no es usada por el driver, el sistema operativo o cualquier otra aplicación que acceda al disco a bajo nivel. En los casos en los que sea imprescindible que el software necesite acceso a nivel de bloque, se utilizan direcciones LBA pasadas al controlador de la unidad.
Para casos más complejos, como en las unidades RAID y SAN (Storage Area Network), la unidad traduce directamente las direcciones LBA del modelo que use la aplicación de software, al modelo usado por la unidad.
LBA, dispositivos ATA y BIOS mejorado
La primera especificación de la interfaz ATA heredó el esquema CHS del IBM-PC (1981) por motivos obvios de compatibilidad. Más exactamente, de la especificación de la INT 13h de la BIOS. Esto resultó ser un factor negativo debido al inexorable crecimiento de las unidades y la inevitable limitación CHS.
Originariamente, y hasta la actualidad (obsoleto), el sistema CHS trabajaba en 24 bits (3 bytes) y direccionaba utilizando una distribución de los bits curiosa. 10 para cilindros, 8 para cabezales y 6 para sectores (1024, 256, 63) mientras que la especificación ATA direccionaba en 28 bits, 16 para cilindros, 4 para cabezales y 8 para sectores (65 536, 16, 255). La unión CHS-ATA (PC IBM más disco ATA) estaba limitada a los valores más pequeños de esta unión. Así se podía obtener un máximo de (1024-16-63) limitando el direccionamiento a solamente 504 MiB de los 7,8 GiB que realmente ofrecía CHS y mucho más lejos de los 128 GiB de las unidades ATA. Más tarde, la aparición de las BIOS mejoradas propició la adaptación del sistema CHS, llamado large o enhanced CHS (ECHS) utilizando un algoritmo que adaptaba la geometría del disco ATA a CHS. Este dividía el número de cilindros del disco entre potencias de dos (2, 4, 8...) y multiplicaba los cabezales por el mismo factor. Si el resultado estaba dentro de los valores máximos de CHS, era utilizado por la BIOS para acceder al disco. Esto permitió que los discos ATA de menos de 7,8 GiB pudiesen ser direccionados en CHS. Así, los discos quedaban limitados a este valor de 7,875 GiB (1024 cilindros x 256 cabezales x 63 sectores x 512 bytes/sector).
El segundo estándar introdujo un modo de operación con LBA, que con el tiempo se ha convertido en el sistema más usado para comunicarse con unidades ATA y sus sucesores. El direccionamiento LBA en las unidades ATA puede ser de 28 bits o de 48 bits (introducido en ATA-6), lo que resulta en límites de 128 GiB (2^28 sectores x 512 bytes por sector) y 128 PiB (2^48 x 512 bytes por sector).
Los discos formateados en MBR pueden direccionar como límite mínimo 2 tebibytes si se realiza el formato de clústeres en el tamaño tradicional de 512 bytes (sistema 32 bits).
Cluster de 512
2^32x512= 2 TiB de límite
Sin embargo actualmente el tamaño mínimo de formato del cluster suele ser de 4 KiB para hacerlo coincidir con el espacio físico en el que ahora se fabrican los discos duros, resultando un espacio de límite mínimo de 16 tebibytes para los discos duros formateados en MBR.
Cluster de 4096
2^32x4096= 16 TiB de límite
En otros formatos de cluster en discos MBR se puede alcanzar los siguientes límites, por ejemplo:
Cluster de 65536
2^32x65536= 256 TiB de límite
Estas referencias son válidas al menos para los formatos tradicionales de Windows, tanto FAT32 cómo NTFS.
Además en el formato exFAT se puede formatear con un tamaño de 131072 bytes
Cluster de 131072 bytes
2^32x131072= 512 TiB de límite
Estos límites se pueden superar formateando en GPT que utiliza 64 bits (en vez de los 32 bits del MBR), llegando hasta los 9,4 ZiB.
Nota 1: No todos los sistemas operativos Windows son capaces de direccionar LBA 48 bits en discos duros MBR y superar el límite de 2 TiB. La característica fue implementada en la versión NT 5 (2000 SP2 - XP SP1 - 2003) . No habiendo estado inicialmente habilitado en las versiones posteriores de NT 6 (Vista - 7 - 8 - 8.1) hasta recibir las últimas actualizaciones, por lo que si se almacenaran datos en discos duros MBR con particiones mayores de 2 TiB en versiones anteriores o posteriores de Windows quedarían ilegibles para un NT 6 sin actualizar. Windows NT 10 recibió la capacidad desde el principio. Las distribuciones modernas de Linux pueden leer perfectamente discos duros mayores de 2 TiB formateados en MBR (desde el año 2008 aprox.)
Nota 2: el valor 63 de CHS (1024, 256, 63) se corresponde a la eliminación del sector cero, que no está permitido en CHS. Así, por ejemplo, del sector (126,255,63) pasamos al (127,0,1). De este modo no hay un máximo de 64 (2^6) sectores, sino 63 (2^6 - 1). También por esto el algoritmo de conversión a LBA termina con:
- ... + sector-1
Véase también
Referencias
- «Direccionamiento de bloque lógico». Consultado el 20 de agosto de 2019.