:: Identificarse o Registrarse :: :: Numero de miembros: 245.716 :: Registrados ayer: 531 :: On-line: 430 ::
![]() Informacion util sobre los discos duros VELOCIDAD EN DISCOS 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. |