El direccionamiento de bloques lógicos ( LBA ) es un esquema común que se utiliza para especificar la ubicación de los bloques de datos almacenados en dispositivos de almacenamiento de computadora , generalmente sistemas de almacenamiento secundario , como unidades de disco duro . LBA es un esquema de direccionamiento lineal particularmente simple ; los bloques se ubican mediante un índice entero, siendo el primer bloque LBA 0, el segundo LBA 1, y así sucesivamente.
El estándar IDE incluía LBA de 22 bits como opción, que se amplió aún más 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 el disco y en la memoria que contienen la dirección suelen ser de 32 o 64 bits. La mayoría de las unidades de disco duro lanzadas después de 1996 implementan direccionamiento de bloques lógicos.
Descripción general
En el direccionamiento de bloques lógicos, solo se usa un número para direccionar datos y cada dirección de base lineal describe un solo bloque.
El esquema LBA reemplaza los esquemas anteriores que exponían los detalles físicos del dispositivo de almacenamiento al software del sistema operativo. El principal de ellos fue el esquema de sector de culata de cilindro (CHS), en el que los bloques se direccionaban mediante una tupla que definía el cilindro, la culata y el sector en el que aparecían en el disco duro . CHS no se asignó bien a dispositivos que no fueran discos duros (como cintas y almacenamiento en red) y, por lo general, no se usó para ellos. CHS se utilizó en los primeros accionamientos MFM y RLL , y tanto él como su sucesor, el sector de culata extendida (ECHS), se utilizaron en los primeros accionamientos 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 de CHS como sectores por pista (SPT) y cabezas por cilindro (HPC), tienen poco que ver con la verdadera geometría de la unidad de disco.
LBA se introdujo por primera vez en SCSI como una abstracción. Si bien el controlador de la unidad aún trata los bloques de datos por su dirección CHS, esta información generalmente no es utilizada por el controlador de dispositivo SCSI, el sistema operativo, el código del sistema de archivos o cualquier aplicación (como bases de datos) que acceden al disco "sin procesar". Las llamadas al sistema que requieren E / S a nivel de bloque pasan las definiciones de LBA al controlador del dispositivo de almacenamiento; para casos simples (donde un volumen se asigna a una unidad física), este LBA se pasa directamente al controlador de la unidad.
En una matriz redundante de dispositivos de discos independientes (RAID) y redes de área de almacenamiento (SAN) y donde las unidades lógicas ( números de unidad lógica , LUN) se componen a través de la virtualización y agregación de LUN, el direccionamiento LBA de disco individual debe traducirse por una capa de software para proporcionar direccionamiento LBA uniforme para todo el dispositivo de almacenamiento.
BIOS mejorada
El estándar IDE anterior de Western Digital introdujo LBA de 22 bits; en 1994, el estándar ATA-1 permitía direcciones de 28 bits en los modos LBA y CHS. El esquema CHS usó 16 bits para cilindro, 4 bits para cabeza y 8 bits para sector, contando sectores de 1 a 255. Esto significa que el número de cabezas informado nunca excede 16 (0-15), el número de sectores puede ser 255 ( 1–255; aunque 63 es a menudo el más grande utilizado) y el número de cilindros puede ser tan grande como 65,536 (0–65535), limitando el tamaño del disco a 128 GiB (≈137,4 GB), asumiendo sectores de 512 bytes. Se puede acceder a estos valores emitiendo el comando ATA "Identificar dispositivo" ( EC
h) en el variador. [1] : 87
Sin embargo, la implementación de IBM BIOS definida en las rutinas de acceso al disco INT 13h utilizó un esquema de 24 bits bastante diferente para el direccionamiento CHS, con 10 bits para el cilindro, 8 bits para la cabeza y 6 bits para el sector, o 1024 cilindros, 256 cabezas, y 63 sectores. [2] Esta implementación INT 13h fue anterior al estándar ATA, ya que se introdujo cuando la PC IBM solo tenía almacenamiento en disquete , y cuando se introdujeron las unidades de disco duro en la IBM PC / XT , la interfaz INT 13h no podía ser prácticamente rediseñado debido a problemas de compatibilidad con versiones anteriores . La superposición de la asignación de ATA CHS con la asignación de BIOS CHS produjo el mínimo común denominador de 10: 4: 6 bits, o 1024 cilindros, 16 cabezas y 63 sectores, lo que dio el límite práctico de 1024 × 16 × 63 sectores y 528 MB (504 MiB ), asumiendo sectores de 512 bytes.
Para que la BIOS supere este límite y funcione con éxito con discos duros más grandes, se tuvo que implementar un esquema de traducción de CHS en las rutinas de E / S del disco del BIOS que convertiría entre CHS de 24 bits utilizado por INT 13h y CHS de 28 bits. numeración utilizada por ATA. El esquema de traducción se denominó traducción grande o de desplazamiento de bits . Este método reasignaría 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" que el disco físico informado. 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 este límite, se introdujeron las extensiones INT 13h con los servicios de unidad de disco mejorados de BIOS , que eliminaron los límites prácticos en el tamaño del disco para los sistemas operativos que conocen esta nueva interfaz, como el componente DOS 7.0 en Windows 95 . Este subsistema BIOS mejorado admite el direccionamiento LBA con 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 direccionamiento de más de 528 MB.
Hasta el lanzamiento del estándar ATA-2 en 1996, había un puñado de discos duros grandes que no admitían el direccionamiento LBA, por lo que solo se podían usar métodos grandes o normales . Sin embargo, el uso del método grande también introdujo problemas de portabilidad, ya que diferentes BIOS a menudo usaban métodos de traducción diferentes e incompatibles, y los discos duros particionados en una computadora con una BIOS de un proveedor en particular a menudo no se podían leer en una computadora con una marca diferente de BIOS. . La solución fue utilizar software de conversión como OnTrack Disk Manager , Micro House EZ-Drive / EZ-BIOS, etc., que se instaló en el cargador del sistema operativo del disco y reemplazó las rutinas INT 13h en el momento del arranque con un código personalizado. Este software también podría permitir el soporte de extensiones LBA e INT 13h para computadoras más antiguas con BIOS que no cumplen con LBA.
Traducción asistida por LBA
Cuando el BIOS está configurado para usar un disco en modo de traducción asistida por LBA, el BIOS accede al hardware usando 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 trasladada depende del tamaño total del disco, como se muestra en la siguiente tabla. [3]
Tamaño del disco | Sectores / pista | Jefes | Cilindros |
---|---|---|---|
1 | 63 | dieciséis | X ÷ (63 × 16 × 512) |
504 MiB | 63 | 32 | X ÷ (63 × 32 × 512) |
1008 MiB | 63 | 64 | X ÷ (63 × 64 × 512) |
2016 MiB | 63 | 128 | X ÷ (63 × 128 × 512) |
4032 MiB | 63 | 255 | X ÷ (63 × 255 × 512) |
LBA48
El esquema actual de LBA de 48 bits se introdujo en 2003 con el estándar ATA-6 , [4] elevando el límite de direccionamiento a 2 48 × 512 bytes, que es exactamente 128 PiB o aproximadamente 144 PB . Las computadoras actuales compatibles con PC admiten Extensiones INT 13h, que utilizan 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 utilizan los subsistemas BIOS , excepto en el momento de la carga de arranque. . Sin embargo, la tabla de particiones de Master Boot Record (MBR) de estilo común de DOS solo admite particiones de disco de hasta 2 TiB de tamaño. Para particiones más grandes, esto debe reemplazarse por otro esquema, por ejemplo, la tabla de particiones GUID (GPT), que tiene el mismo límite de 64 bits que las extensiones INT 13h actuales.
Conversión CHS
Valor de LBA | Tupla CHS |
---|---|
0 | 0, 0, 1 |
1 | 0, 0, 2 |
2 | 0, 0, 3 |
62 | 0, 0, 63 |
63 | 0, 1, 1 |
945 | 0, 15, 1 |
1007 | 0, 15, 63 |
1008 | 1, 0, 1 |
1070 | 1, 0, 63 |
1071 | 1, 1, 1 |
1133 | 1, 1, 63 |
1134 | 1, 2, 1 |
2015 | 1, 15, 63 |
2016 | 2, 0, 1 |
16,127 | 15, 15, 63 |
16,128 | 16, 0, 1 |
32,255 | 31, 15, 63 |
32,256 | 32, 0, 1 |
16,450,559 | 16319, 15, 63 |
16,514,063 | 16382, 15, 63 |
En el esquema de direccionamiento LBA, los sectores se numeran como índices enteros; cuando se asigna a las tuplas de CHS (sector de culata de cilindro ) , la numeración de 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 hasta el segundo cabezal, mientras permanece dentro del primer cilindro. Una vez que se agotan todas las cabezas dentro del primer cilindro, la numeración continúa desde el segundo cilindro, etc. Por lo tanto, cuanto más bajo es el valor LBA, más cerca está el sector físico del primer cilindro del disco duro (es decir, el más externo [5] ) del disco duro .
Las tuplas CHS se pueden asignar a la dirección LBA con la siguiente fórmula: [6] [7]
- LBA = ( C × HPC + H ) × SPT + (S - 1)
dónde
- C , H y S son el número de cilindro, el número de cabezal 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 (informado por unidad de disco, normalmente 16 para LBA de 28 bits)
- SPT es el número máximo de sectores por pista (informado por unidad de disco, generalmente 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 = ( mod SPT de LBA ) + 1
Según las especificaciones de la ATA, "Si el contenido de 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". [1] : 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 BIOS incluyen la familia Solaris , DOS y Windows NT, donde NTLDR ( NT , 2000 , XP , Server 2003 ) o WINLOAD ( Vista , Server 2008 , Windows 7 y Server 2008 R2 ) usan arranque maestro registrar qué direcciones del disco usando CHS; Las versiones x86-64 e Itanium de Windows pueden particionar la unidad con la tabla de particiones GUID que usa direccionamiento LBA.
Algunos sistemas operativos no requieren ninguna traducción porque no utilizan la geometría informada por BIOS en sus cargadores de arranque . Entre estos sistemas operativos se encuentran BSD , Linux , macOS , OS / 2 y ReactOS .
Ver también
- Bloque (almacenamiento de datos)
- Sector de culata de cilindro (CHS)
- Formateo de disco
- Partición de disco
- Almacenamiento de disco
Notas
- ^ Aunque el direccionamiento CHS definitivamente usa 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, cilindros contando de 0 a 1023, cabezas de 0 a 254 y sectores de 1 a 63.
Referencias
- ^ a b "Tecnología de la información - AT adjunto con interfaz de paquete - 5 (ATA / ATAPI-5)" (PDF) . www.t13.org . 29 de febrero de 2000. Archivado desde el original (PDF) el 6 de agosto de 2020 . Consultado el 15 de diciembre de 2020 .
- ^ "KB224526: Windows NT 4.0 admite un máximo de partición del sistema de 7,8 GB" . Support.microsoft.com. 2007-02-23 . Consultado el 30 de julio de 2013 .
- ^ Steunebrink, enero. "Limitaciones del disco duro IDE de BIOS" . Archivado desde el original el 6 de octubre de 2013 . Consultado el 6 de octubre de 2013 .
- ^ "Tecnología de la información - Adjunto AT con interfaz de paquete - 6 (ATA / ATAPI-6)" (PDF) . www.t13.org . 26 de febrero de 2002. Archivado desde el original (PDF) el 6 de agosto de 2020 . Consultado el 15 de diciembre de 2020 .
- ^ "Conceptos básicos de la unidad de disco duro" . active-undelete.com . Consultado el 10 de febrero de 2015 .
Los números de pista comienzan en 0 y la pista 0 es la pista más externa del disco. La pista con el número más alto está al lado del eje.
- ^ "Large Disk HOWTO, Sección 3. Acceso al disco" . tldp.org . 2004-11-08 . 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
- LBA explicado
- 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 barreras del tamaño del disco duro
- Actualización y reparación de PC , por Scott Mueller. Páginas 524–531.
- AT Adjunto 8 - Conjunto de comandos ATA / ATAPI (ATA8-ACS)