Información útil sobre los discos duros

VELOCIDAD EN DISCOS

Últimamente el mercado nos está inundando con informaciones sobre discos: ATA 66, ATA 100, 7200 revoluciones, discos SCSI a 10.000 revoluciones LVD y lo ultimo, los discos SCSI a 15.000 rev.
Vamos a intentar centrar el tema de los accesos a disco, como lo realizan los sistemas operativos normalmente, y cual es el disco ideal para cada sistema. No vamos a tratar en este artículo sobre las características de RAID, etc. que quedarán fiera de este ámbito y que merecen un estudio mas detallado en algún artículo posterior. El tema básico de este articulo, es a nivel elemental y como tal debe tomarse.

– Existen básicamente dos tipos de discos IDE y SCSI. Las controladoras IDE son las que normalmente encontramos integradas en la placa madre y son las de uso más normal en los ambientes domésticos. Las controladoras SCSI, son controladoras profesionales, orientadas normalmente al ámbito profesional, y los discos y tecnologías SCSI son las punteras. Los discos salen en tecnología SCSI y uno o dos años más tarde, se implementan en tecnología IDE. Es decir, los SCSI llevan un par de años de diferencia en avance tecnológico siempre con respecto a los IDE.

DISCOS IDE

Discos IDE. Son los orientados normalmente al consumo domestico. Existen dos técnicas de acceso a estos discos. Son los modos PIO y los modos DMA.

– Modos PIO.

En los discos antiguos, el acceso a disco se hacia mediante técnicas PIO (Program Input/Output). Estos tipos de acceso, implican mucho trabajo a la CPU (constantemente interrogando a los puertos de comunicaciones con el disco), y poca velocidad de transferencia, ya que lo máximo que podía traerse la CPU es de dos en dos bytes del disco por cada operación PIO. Los modos PIO son de PIO 1 a PIO 4, siendo el más rápido este ultimo.

– Modos DMA.

Evidentemente el modo anterior queda obsoleto desde el momento en que las tecnologías de las placas madre y de los buses de las placas madre, permiten la técnica del bus mastering. Esta técnica consiste en que el dispositivo puede tomar el control del bus desconectando del bus a la CPU y durante esa fracción de tiempo hacer llegar datos a la memoria del ordenador de una manera masiva. En ese momento el procesador está inoperativo, pero la velocidad de transferencia conseguida por la electrónica del disco y de la controladora supera con creces la parada de la CPU.

En los modos DMA, rápidamente se implementó el modo UDMA-2 o UDMA 33, siendo teóricamente el ancho de banda de 33 MegaBytes por segundo. Este modo está soportado perfectamente por todos los sistemas Windows, es automatico en Windows 2000 y manual en los Windows 9X o Windows ME, siendo necesario activar el casillero de acceso a DMA en el disco en el Administrador de Dispositivos de Windows.

Posteriormente ha surgido la tecnología UDMA-4. (o 66 MegaBytes). Estos discos son compatibles UDMA-2 por lo que funcionarán en las controladoras de disco antiguas. Pero para sacar realmente su rendimiento, es necesario utilizar controladoras y BIOS que soporten este modo, y además utilizar un cable IDE especial de 80 hilos.

Igualmente, este cable debe estar correctamente conectado a la placa madre, es decir el conector de color azul, debe ir a la placa madre y los otros dos conectores a los dos discos o dispositivos IDE que puede utilizar cada canal. Se pueden mezclar dispositivos, es decir, podemos tener un disco UDMA 4 y otro UDMA 2 en el mismo canal sin problemas.

Esta es la conexión física, pero pasemos ahora al sistema operativo. El sistema operativo debe soportarlo, y para ello hay dos componentes del sistema operativo en sí que intervienen en ello: el controlador de bus mastering inherente al propio sistema operativo debe ser capaz de activar el modo de transferencia de 66 MegaBytes. Igualmente, el fabricante de la controladora IDE, debe darnos un controlador de disco duro que sea capaz de manejar este modo de transferencia. Pasemos ahora a ver en detalle estos dos componentes.

Empecemos por el fácil: el controlador de disco duro que nos da el fabricante. Con este componente, normalmente no hay ningún problema. La mayoría de fabricantes nos suministran dicho controlador.

El segundo componente, ya no nos lo puede suministrar el fabricante: la posibilidad de bus mastering en modo 66 MB. Este componente es inherente al sistema operativo, por lo cual vamos a describir que sistemas operativos de Microsoft lo soportan o no.

Empecemos primero a ver el soporte que Microsoft en general da a los chipset y controladoras de la placa madre: Microsoft únicamente da soporte a los chipset Intel. No da soporte en nativo a los chipset VIA hasta el momento. Lo empezará a dar en el siguiente sistema operativo: WindowsXP.

Por tanto, no es posible la activación del modo UDMA 66 con chipset VIA, ni tan siquiera con los drivers de VIA.

Con respecto al soporte actual en los chipset Intel, Microsoft únicamente da soporte a ellos en modo UDMA 66 en Windows 2000. Además para que este soporte quede activado, es necesario modificar una clave en el registro, según está documentado en: http://support.microsoft.com/support/kb/articles/q247/9/51.asp

Fijémonos que este es el único articulo de Microsoft que habla de la UDMA 66 en sus sistemas operativos. De ello podemos deducir perfectamente que es en el único caso en que da soporte ya que de otra manera estaría totalmente documentado y ampliamente anunciado.

Como conclusión podemos afirmar que:
– Únicamente existe soporte para UDMA 66 en W2000 y para chipset Intel.
– No existe soporte para otros tipos de chipset, ya que aunque los fabricantes nos den el driver, Microsoft todavía no ha sacado ningún Service Pack que active esta transferencia a nivel del sistema operativo.

La tecnología ha seguido avanzando y en la actualidad ya existen discos ATA 100 o UDMA-5. Estos discos, igualmente necesitan que la controladora hardware lo soporte, y necesitan que el sistema operativo y los controladores de disco duro también lo soporten.

Con respecto al sistema operativo, Microsoft ha anunciado soporte a UDMA 100 en el siguiente Service Pack (SP2) de W2000. No existe ningún anuncio sobre los sistemas Windows 9X y Windows ME, e igualmente el soporte en W2000, no está especificado si es para chipset Intel únicamente.

VELOCIDAD DE TRANSFERENCIA

A pesar de los comentarios anteriores, podemos observar que la velocidad de los discos actuales IDE es superior y aparentemente existe una inconsistencia con las matizaciones dadas anteriormente. Veamos que no es así.

Anticipemos que los discos actuales, tienen normalmente una mayor velocidad de rotación. Han pasado en los discos IDE de 5400 revoluciones a 7200. Igualmente, tienen una mayor capacidad, lo que da una mayor «densidad» de grabación por pista.

Esto ultimo, implica, que se tarda menos tiempo en leer una vuelta completa (una pista), y además que se leen mas datos (al ser mayor la densidad). Por tanto, lo normal, y mientras no se sature el bus de datos, es que apreciemos sensiblemente un aumento de velocidad.

PARAMETROS IMPORTANTES DE UN DISCO

A pesar que nunca hayamos desmontado un disco para ver su interior, podemos suponer que estos constan de un plato (o varis platos) giratorios y una cabeza de lectura que se mueve transversal al disco y se posición en cualquier parte de él.

Efectivamente, esta imagen intuitiva es la correcta. En la actualidad, los discos duros constan de un solo plato con dos superficies magnéticas, la superior y la inferior, y consta de dos cabezas, una para cada superficie.

La geometría real del disco, es entonces de dos cabezas. Esto choca muchas veces con la idea que tenemos de los discos (idea que se transmite desde los antiguos discos de muchos platos), e incluso con la idea que los fabricantes nos transmiten al hablarnos de 8400 cilindros, 16 cabezas y 63 sectores (por ejemplo).

Bien, esta última, es la geometría que el disco «aparenta» tener y es la que transmite al sistema operativo. Evidentemente no puede ser cierta, ya que si tuviese 16 cabezas, indica que tendría 8 platos……. Y en los discos actuales, no «caben» 8 platos.

Aunque el sistema operativo, se refiera a esa geometría: es decir, le indica al disco: lee del cilindro 1417, cabeza 14, sector 50.

En ese momento, la electrónica integrada en el propio disco, se encarga de traducir esas direcciones por las direcciones reales en el disco de acuerdo con su geometría real.

Este mecanismo se conoce como traslación lógica de bloques. Es lo que muchas veces denominamos LBA (Logical Block Address) al referenciarlo en la BIOS de la maquina.

Factores de velocidad

Independientemente de la introducción anterior y que nos ha desviado un poco del tema, intentemos imaginar cuales son los parámetros de velocidad de un disco.

Evidentemente uno de ellos, es la velocidad de la electrónica del propio disco y la posible velocidad de transmisión a través del cable.

Pero podemos intuir que estas velocidades son infinitamente superiores a los verdaderos cuellos de botella: los componentes no electrónicos; es decir: los componentes mecánicos.

Seek y Average

La pregunta es: ¿Qué movimiento debe hacer la mecánica para leer un determinado sector de un disco?.

Sabemos que el disco está girando. Por tanto, una vez que la electrónica ha calculado en donde está el sector a leer o escribir, debe mover lateralmente la cabeza de lectura hasta el cilindro en donde está el sector a buscar. Este movimiento se denomina Seek (posicionamiento).

Una vez que la cabeza está situada en dicho cilindro, y debido a que el disco está girando, únicamente debe esperar a que el sector que busca pase por debajo de dicha cabeza en cuyo momento lo leerá.

Evidentemente, una vez posicionada la cabeza, el sector a buscar puede estar en cualquier lugar del cilindro.

En el peor de los casos, el sector puede que justo acabe de pasar por la cabeza lectora, en cuyo caso hay que esperar a que el disco gire una vuelta completa para que vuelva a pasar debajo de la cabeza lectora.

O bien, podemos estar en el mejor de los casos, es decir, que el sector que queramos leer vaya a pasar justo en ese momento debajo de la cabeza lectora. Y puede que esté en cualquier otra posición.

Estadísticamente, lo que tardará de media (average) en pasar, será media revolución del disco.

Bien, acabamos de ver los dos números maravillosos que aparecen muchas veces (y confusamente) en la documentación de los fabricantes:Seek y Average.

Uno de los valores, el Average, depende únicamente de la velocidad de giro del disco. Cuanto mayor sea la velocidad de giro, mas rápidamente encontrará un sector una vez que la cabeza lectora se haya posicionado (Seek) en el correspondiente cilindro.

Las velocidades actuales para los discos IDE de ultima generación son de 7200 rpm. Esto quiere decir:

7200 rev. Por minuto = 7200 / 60 = 120 rev. Por segundo.

Por tanto, en dar una vuelta completa tarda 1 /120 segundos = 0,00833 segundos. Es decir 8,33 milisegundos. Su average será la mitad: 4,16 milisegundos.

Como podemos suponer, este dato es «fijo» y no depende del fabricante ni de su calidad. Depende únicamente de la velocidad de rotación.

– Recordemos que los discos SCSI actuales, están en 15000 rpm. Es decir suaverage será la mitad, por tanto: el doble de rápidos con respecto a este parámetro.

Donde realmente encontramos la calidad de fabricación está en el Seek. En el posicionamiento de cabeza. Ese suele ser el dato que figura en las características de los fabricantes y muchas veces añade un punto de confusión, debido a que algunos de ellos, lo denominan también ‘average’.

Los discos normales en la actualidad, dan un Seek entre 8 y 10 milisegundos. Los discos buenos, bajan este dato a 6, 5 o incluso 4 milisegundos (poquísimos fabricantes dan estos tiempos. En la actualidad únicamente Seagate con su disco Cheetah). Aquí, en combinación con la velocidad de rotación, es donde verdaderamente se ven las prestaciones de un disco.

– No debemos llevarnos a engaño, la velocidad de transferencia a través del bus (ATA 66, 33, etc…) nunca, o casi nunca, en un cuello de botella.

Únicamente puede ser cuello de botella la velocidad de transmisión del bus, en el caso de lectura secuencial de un archivo. En este caso, una vez que la cabeza se ha posicionado, lee secuencialmente, y por tanto, sin movimiento de translación los datos. Por tanto, en este caso, únicamente influye la velocidad de rotación. Si la velocidad de rotación es capaz de suministrar datos a mayor velocidad de lo que el bus puede transmitirlos, evidentemente estaremos perdiendo prestaciones del disco. En la actualidad, a 7200 revoluciones, un disco de alta densidad (30 gigas), está en el límite de ATA 33. Es decir, en lectura secuencial es capaz la mecánica de leer unos 35 megas por segundo. Por tanto, si este disco estuviese funcionando en una controladora ATA 33 normal, únicamente perderíamos unos 2 megas por segundo.

Si tuviésemos más de un disco, y ambos estuviesen leyéndose «simultáneamente» y en ambos, la lectura fuese secuencial (totalmente improbable tal y como veremos a continuación), únicamente en este caso y para no saturar el bus, es cuando sería necesaria una controladora ATA 66.

Las ATA 100 carecen de sentido en la actualidad hasta que los discos no alcancen mayor densidad de grabación, o mayor velocidad de giro.

– Tiene más sentido en la actualidad los discos SCSI de velocidades de 160 MB/seg. Aunque estás velocidades, y por el mismo razonamiento anterior, no son alcanzables, recordemos que las controladoras SCSI llevan hasta 15 dispositivos. Por tanto, si que pueden existir cuellos de botella en la transmisión del bus, si este no tiene velocidades altas como por ejemplo 160 o las últimas a 320 MB/seg.

FUNCIONAMIENTO REAL

¿Cómo se lee un fichero?. Esta es la pregunta importante para entender el funcionamiento de un disco.

Vamos a estudiarlo en el sistema de archivos más simple que hay: el sistema FAT o FAT 32. Introduciremos un poco posteriormente el funcionamiento en el sistema NTFS.

Vamos a ceñirnos a un caso típico de un disco de 8 GB, formateado en FAT32. Recordemos que la estructura de un disco en FAT 32, consta de un directorio principal de tamaño fijo, por tanto limitado a un número máximo de archivos ya que un directorio o carpeta no es nada mas que un archivo.

Igualmente consta de dos tablas llamadas tablas FAT. Cada tabla, consta en el ejemplo de un disco de 8GB, en 1.048.000 elementos cada uno de 4 Bytes (FAT 32). Cada elemento de esta tabla referencia a un ‘cluster’ (agrupación de sectores) del disco. En un disco de 8GB, cada ‘cluster’ es de 8192 bytes (es decir, de 16 sectores de 512 bytes).

– Estas cifras pueden verse en el caso real de nuestro disco, si ejecutamos el comando: chkdsk.

¿Qué hemos querido decir con las cifras anteriores?. Bien, pues que el primer elemento de esa tabla de 1.048.000 elementos, ¡apunta¡ (o referencia) al primer cluster de datos, el segundo elemento, al segundo cluster de datos, y así sucesivamente. Evidentemente hay unos elementos reservados al principio de dicha tabla para referencias a los cluster ocupador por el directorio raiz del disco.

Imaginemos que definimos, que si un elemento de la tabal, contiene en binario una determinada marca (por ejemplo, el hexadecimal x’FFFFFFFF’, es decir, todo a ‘unos’ binarios), esto indica al sistema operativo que ese cluster del disco está libre.

Veamos ahora como se guarda un archivo:

– El sistema operativo calcula cuantos cluster va a ocupar. Para ello, divide el tamaño del archivo entre el tamaño del cluster, y al dato obtenido le redondea a la unidad superior.

Por ejemplo, si tenemos un archivo de 20.000 bytes, en nuestro ejemplo el cálculo realizado es 20000 / 8192 = 2,4414. Redondeado a la unidad superior es un 3. Por tanto nuestro archivo va a ocupar tres cluster en el disco.

– Una vez calculados el número de cluster a ocupar, el sistema operativo, lee la FAT, buscando un cluster libre. Es decir, lee cada elemento de la FAT hasta que encuentra la ‘marca’ x’FFFFFFFF’ citada anteriormente. Imaginemos que lo encuentra en el elemento 537 de la FAT. Esto le indica que el ‘cluster’ 537 del disco está libre.

– En ese cluster graba los primeros 8192 bytes del fichero, y marca el elemento 537 de la FAT con un cero (en binario).

– Como le queda todavía datos a grabar, vuelve a leer la FAT para localizar otro elemento con la marca x’FFFFFFFF’. Imaginemos que es el elemento numero 612. Por tanto, le indica que el cluster 612 del disco está libre. Ahora vá a ese cluster, y graba los siguiente 8192 bytes del fichero.

Igualmente ahora, va a la FAT, y en 612, graba un cero. Hasta aquí, todo es igual que cuando ha grabado el primer cluster del fichero. Pero en este caso, además de lo anterior, el sistema ‘recuerda’ cual es el elemento de la FAT ultimo grabado (el 537), y en ese elemento, le pone ahora el número 612 (del cluster actual).

– Queda todavía por grabar un cluster. Bien, volvemos a repetir los cálculos: se vuelve a leer la FAT para localizar otro cluster libre (x’FFFFFFFF’). Imaginemos que es el elemento 1020.

– En ese cluster graba por fin los últimos 8192 bytes del fichero, y marca el elemento 1020 de la FAT con un cero (en binario). Ahora va al elemento anterior (el 612) y allí graba el número 1020.

– Por ultimo, guarda en el directorio raiz del disco el nombre de archivo, y además allí se guarda la fecha, el tamaño, y lo que es más importante: el número del primer elemento de la FAT que apunta al fichero guardado, es decir: 537.

Bien, después de toda esta historia, veamos como está ahora nuestro fichero en disco:

– A nivel del directorio principal, tenemos su nombre, y un número mágico: 537. Esto indica que el archivo empieza en el cluster 537. Igualmente, el elemento de la FAT 537, contiene el segundo número mágico: 612. Esto indica que el siguiente cluster del archivo es el cluster numero 612. Y además, el elemento de la FAT 612, contiene el siguiente número mágico: 1020. Esto indica que el tercer cluster del fichero está en el cluster 1020. Y precisamente, el elemento 1020 de la FAT, si repasamos la secuencia anterior de grabación, vemos que contiene un cero: esto indica que ya no queda nada más que hacer. Es decir, acabamos de leer los tres cluster del disco que contienen los datos de nuestro fichero.

Sencillo ¿no?……

– Lo anterior, nos debe hacer meditar en un tema muy importante. Cualquier cosa que hagamos para ller o grabar un fichero, en principio implica un montón de lecturas en el disco. Además como la FAT está al principio del disco, esto implicará que la cabeza lectora, tiene que pegar muchos saltos entre la FAT y el cluster de datos a leer para ir trayéndose poco a poco los datos a memoria. Y estos «saltos» de la cabeza, son saltos muy ‘caros’ en tiempos de proceso.

Es verdad que los sistemas operativos, intentan tener la FAT en memoria para ahorrar accesos a disco. Pero en nuestro caso, la FAT es de 1.048.000 elementos de 4 bytes, es decir, la FAT ocupa 4 Megas. Como hay dos FAT y el sistema cuando grabamos un archivo, utiliza las dos por motivos de seguridad (es decir, una de ellas, es backup de la otra), serían en total 8 Megas de memoria principal de nuestra maquina, utilizados únicamente para tener la FAT y por tanto ahorrar accesos a disco. Pensemos también, que en el caso de estar grabando un fichero, una vez modificada la FAT en memoria, el sistema la intentará grabar en disco rápidamente, ya que si se pierde la actualización de la FAT, es como si hubiésemos perdido el fichero.

Este consumo de memoria por intentar realizar los accesos lo más rápido posible, empieza a poder ser molesto cuando tenemos muchos discos o particiones. En mi caso, por ejemplo, tengo 12 discos (grandes, de hasta 75 GB) y las particiones necesarias hasta ocupar la letra Z:. Por tanto, el consumo de memoria real que el sistema operativo intenta tener para ahorrar los accesos a disco, aumenta de una manera brutal.

Por ello, cuantos mas discos o particiones tengamos y estemos trabajando con ellos, indicará que debemos tener más memoria física para poder ejecutar programas, o el bien, el rendimiento de la máquina decaerá en gran medida.

– Los archivos en particiones NTFS es un sistema de archivos especial que históricamente proviene del sistema de archivos nativo de la casa Digital. Recordemos que los desarrolladores de Digital, son los únicos desarrolladores en el mundo que tienen derecho a «sus» patentes de desarrollo. Por tanto, si un empleado de Digital se va de la Empresa, se va también con el derecho a usar sus conocimientos y sus patentes en otro sitio. Recordemos que para el desarrollo del primer NT, Billy Gates consiguió que unos de los ingenieros de Digital, dejase su empresa y fichase por Microsoft.

– Este sistema de archivos, mucho más robusto que el sistema FAT y que además permite definir ACL (listas de control de acceso, para seguridad), está basado en i-nodos y se sale del alcance del presente documento.