stringtranslate.com

Direccionamiento de bloques lógicos

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 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 el 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 contienen la dirección es típicamente de 32 o 64 bits. La mayoría de las unidades de disco duro lanzadas después de 1996 implementan el direccionamiento de bloques lógicos.

Descripción general

En el direccionamiento de bloques lógicos, solo se utiliza un número para direccionar los datos y cada dirección base lineal describe un solo 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 ellos era el esquema cilindro-cabeza-sector (CHS), donde los bloques se direccionaban por medio de una tupla que definía el cilindro, la cabeza y el sector en el que aparecían en el disco duro . CHS no se asignaba bien a dispositivos que no fueran discos duros (como cintas y almacenamiento en red), y generalmente no se usaba para ellos. CHS se usó en las primeras unidades MFM y RLL , y tanto este como su sucesor, el sector cilindro-cabeza-sector extendido (ECHS), se usaron en las primeras unidades ATA . Sin embargo, las unidades de disco actuales usan 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 cabezas por cilindro (HPC), 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 por su dirección CHS, esta información generalmente no es utilizada por el controlador del dispositivo SCSI, el SO, el código del sistema de archivos o cualquier aplicación (como bases de datos) que acceda al disco "sin procesar". Las llamadas del sistema que requieren E/S a nivel de bloque pasan definiciones LBA al controlador del dispositivo de almacenamiento; para casos simples (donde un volumen se asigna a una unidad física), esta LBA luego se pasa directamente al controlador de la unidad.

En dispositivos de matriz redundante 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, la dirección LBA de un disco individual debe ser traducida por una capa de software para proporcionar una dirección LBA uniforme para todo el dispositivo de almacenamiento.

BIOS mejorado

El estándar IDE anterior de Western Digital introdujo el 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 cilindro, 4 bits para cabezal y 8 bits para sector, contando los sectores de 1 a 255. Esto significa que el número informado de cabezales nunca supera los 16 (0-15), el número de sectores puede ser de 255 (1-255; aunque 63 es a menudo el mayor utilizado) y el número de cilindros puede ser tan grande como 65.536 (0-65535), lo que limita 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" ( ECh) a la unidad. [1] :  87

Sin embargo, la implementación del BIOS de IBM definida en las rutinas de acceso al disco INT 13h usaba 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. [2] Esta implementación de INT 13h había sido 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 compatibilidad con versiones anteriores . La superposición del mapeo ATA CHS con el mapeo BIOS CHS 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 ), asumiendo sectores de 512 bytes.

Para que el BIOS superara este límite y funcionara con éxito con discos duros más grandes, se tuvo que implementar un esquema de traducción CHS [ ¿cuándo? ] en las rutinas de E/S de disco del BIOS que convertiría entre el CHS de 24 bits utilizado por INT 13h y la numeración CHS de 28 bits utilizada por ATA. El esquema de traducción se denominó traducción grande o de desplazamiento de bits . Este método reasignaría 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" que los informados por el disco físico. Esto aumentó el límite práctico a 1024×256×63 sectores, u 8,4 GB (7,8  GiB ). 

Para superar aún más este límite, se introdujeron las extensiones INT 13h [ ¿cuándo? ] con los Servicios de unidad de disco mejorados del BIOS , que eliminaron los límites prácticos 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 mejorado del BIOS admite el direccionamiento LBA con el método LBA o 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.

Instalación de la versión OEM de EZ Drive de Western Digital , en un disquete de 3,5 pulgadas.

Hasta la publicación 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 utilizar métodos grandes o normales . Sin embargo, el uso del método grande también introdujo problemas de portabilidad, ya que las 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 de BIOS diferente. La solución fue utilizar software de conversión como OnTrack Disk Manager , Micro House EZ-Drive/EZ-BIOS, etc., que se instalaban en el cargador del sistema operativo del disco y reemplazaban las rutinas INT 13h en el momento del arranque con código personalizado. Este software también podía habilitar la compatibilidad con LBA e INT 13h Extensions para computadoras más antiguas con BIOS que no eran compatibles con LBA.

Traducción asistida por LBA

Cuando el BIOS está configurado para utilizar un disco en modo de traducción asistida por LBA, el 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. La cantidad de cilindros, cabezales y sectores en la geometría traducida depende del tamaño total del disco, como se muestra en la siguiente tabla. [3]

LBA48

El esquema LBA actual de 48 bits se introdujo en 2002 con el estándar ATA-6 [4] , elevando el límite de direccionamiento a 2 48  × 512 bytes, que son exactamente 128 PiB o aproximadamente 144 PB . Las computadoras compatibles con PC actuales 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 Master Boot Record (MBR) de estilo DOS común 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. Se sabe que Windows XP SP2 admite LBA48 (y está habilitado de forma predeterminada).   

Conversión de CHS

En el esquema de direccionamiento LBA, los sectores se numeran como índices enteros; cuando se asignan a tuplas CHS ( cylinder-head-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 hasta el segundo cabezal, mientras se permanece 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, etc. Por lo tanto, cuanto menor sea el valor LBA, más cerca está el sector físico del primer cilindro (es decir, el más externo [5] ) del disco duro.

Las tuplas CHS se pueden asignar a direcciones LBA con la siguiente fórmula: [6] [7]

LBA = ( C × HPC + H ) × SPT + (S − 1)

dónde

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 de enteros , 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 palabras (61:60) es mayor o igual a 16.514.064, entonces el contenido de la palabra 1 [la cantidad de cilindros lógicos] será igual a 16.383". [1] :  20 Por lo tanto, para LBA 16450559, una unidad ATA puede responder en realidad con la tupla CHS (16319, 15, 63), y la cantidad de cilindros en este esquema debe ser mucho mayor que 1024 permitidos por INT 13h. [a]

Dependencias del sistema operativo

Los sistemas operativos que son sensibles a la geometría de la unidad informada por el 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 ) utilizan el registro de arranque maestro que direcciona el disco mediante CHS; las versiones x86-64 e Itanium de Windows pueden particionar la unidad con la tabla de particiones GUID que utiliza direccionamiento LBA.

Algunos sistemas operativos no requieren ninguna traducción porque no utilizan la geometría informada 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

  1. ^ Aunque el direccionamiento CHS definitivamente utiliza el concepto matemático de tupla , también puede considerarse un ejemplo del esquema general llamado radix mixto al ver sus cilindros, cabezas y sectores como si tuvieran 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

  1. ^ ab "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 desde el original (PDF) el 6 de agosto de 2020 . Consultado el 15 de diciembre de 2020 .
  2. ^ "KB224526: Windows NT 4.0 admite una partición de sistema de 7,8 GB como máximo". Support.microsoft.com. 23 de febrero de 2007. Consultado el 30 de julio de 2013 .
  3. ^ Steunebrink, Jan. "Las limitaciones del disco duro IDE del BIOS". Archivado desde el original el 6 de octubre de 2013. Consultado el 6 de octubre de 2013 .
  4. ^ "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 desde el original (PDF) el 6 de agosto de 2020 . Consultado el 15 de diciembre de 2020 .
  5. ^ "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á junto al eje.
  6. ^ "Cómo utilizar discos grandes, sección 3. Acceso a discos". tldp.org . 2004-11-08 . Consultado el 2015-02-10 .
  7. ^ "Fórmulas de conversión de CHS a LBA". pcrepairclass.tripod.com . Consultado el 26 de agosto de 2014 .

Enlaces externos