2.9.2 Rendimiento de los discos duros // Diseño, insertar la imagen del titiritero pero cambiar el computador por un disco duro La buena distribución de los archivos dentro de los discos duros es un factor de importancia dentro del proceso de hacer a nuestro sistema operacional más eficiente. Pero los elementos que se deben tener en cuenta para esta distribución son más de uno. Analicemos el tema. En primer lugar se debe tener en cuenta que los discos, si hay varios en un sistema, están conectados a diferentes controladores. Todos conectados crean la batería de discos del sistema y como todo lo que se conecta en cadena su rendimiento global es la suma de los rendimientos de cada uno de sus elementos por lo que es importante que los controladores y los discos conectados tengan velocidades de acceso eficientes. Un disco duro normal ofrece un acceso a los datos entre 1.5 y 3 megabytes por segundo. Un disco conectado a un controlador scsi ofrece accesos hasta de 5 megabytes por segundo y un controlador scsi II llega hasta duplicar esta velocidad de acceso. En resumen una buena combinación de controladores y discos es el primer elemento que se debe considerar para garantizar un buen rendimiento en los discos duros. La distribución de los archivos, que es una decisión posterior a la instalación de los discos y de los controladores, es otro tema de gran importancia. En la medida en que los archivos estén distribuidos en discos diferentes, se asegura un mejor rendimiento. Un especial énfasis se debe hacer en que ojalá el sistema operacional esté colocado en disco diferente a los de los archivos de las aplicaciones. Esto obedece al hecho que los archivos y programas del sistema operacional están en permanente movimiento y naturalmente que las cabezas de lectura y escritura del disco en donde este reside están sometidas a movimientos aleatorios de gran intensidad. Si además de este trabajo deben acceder los registros de los archivos de datos de las aplicaciones, la baja del rendimiento del sistema sería un hecho. Pero además de esto se debe planear muy cuidadosamente la ubicación real de los archivos dentro de los discos. En este sentido los elementos que se deben tener en cuenta son: Mantener un nivel bajo de fragmentación de los discos. La fragmentación se genera en la medida en que las aplicaciones van borrando datos y creando nuevos y, por lo tanto, los espacios libres dentro del disco se van extendiendo a través de la superficie del dispositivo creando la necesidad de que las cabezas de los discos se tengan que extender cada vez más en accesos separados el uno del otro. La solución es mantener procesos de fragmentación. Diseñar la creación de archivos secuenciales dentro de los discos. Es decir, que la secuencia lógica de los datos concuerde, lo más posible, con la secuencia física dentro del disco. Y por último, tratar que los archivos de alta frecuencia de acceso estén lo más cercano del centro físico de los discos, de tal manera que las extensiones de movimiento de las cabezas sea las menores posibles. Un movimiento de una cabeza de un disco se denomina seek. Uso del espacio dentro de un disco Tal vez lo primero que uno se pregunta cuando se trate de monitorear el uso del espacio en disco es cuánto espacio libre tenemos. Para ello existe el comando df. Veamos un ejemplo de él: # df S.ficheros Bloques de 1K Usado Dispon Uso% Montado en /dev/hdc2 19840924 7590412 11226372 41% / /dev/shm 225340 0 225340 0% /dev/shm /dev/hda8 8617836 7938484 241584 98% /media/rh9 /dev/hdc1 20161172 12526372 6610660 66% /media/fedora3 Lo que nos dice este comando de la partición /dev/hdc2, por ejemplo, es que contiene en total 19840924 bytes de los cuales se usan 7590412 y se tienen 11226372 libres por lo cual se está utilizando el 41% del disco y que está colocado en el sistema de archivos /. El comando tiene muchos parámetros con los cuales se puede ejecutar, como se puede investigar en el manual de Linux: man df. Existen, sin embargo, algunos parámetros importantes como -i para ver cómo está el disco desde el punto de vista de inodos. El concepto de los inodos tiene que ver con la manera como el disco es presentado a la aplicación que está usando un archivo. El sistema maneja tres elementos para esto que son: la Tabla de descripción de archivos del usuario, la Tabla de los archivos y la Tabla de los inodos. La Tabla de descripción de archivos del usuario contiene los nombres de los archivos que están abiertos en un momento dado. Ella tiene por cada archivo un apuntador a la Tabla de archivos la cual apunta a los sitios en donde se van a llevar a cabo los subsiguientes procesos de lectura o escritura así como el manejo de la información referente a los permisos que el usuario tiene sobre esos archivos. La Tabla de los inodos contiene información sobre el usuario y los grupos que pueden acceder a un archivo, el tipo de archivo, los permisos de acceso, fechas de los accesos anteriores, número de encadenamientos de un archivo, tabla de contenido de los sitios físicos del disco en donde están los registros de los archivos, controlando por grupos de bytes llamados bloques que usualmente son múltiplos de 512 bytes y tamaño del archivo. Un archivo puede estar distribuido dentro de muchos bloques no contiguos de un disco duro. La tabla de inodos es la encargada de mantener esta información al día. Pues bien. El comando df -i nos proporciona información sobre cómo es que un archivo está conformado desde el punto de vista de los inodos. Veamos un ejemplo: # df -i S.ficheros /dev/hdc2 /dev/shm /dev/hda8 /dev/hdc1 Nodos-i NUsados NLibres NUso% Montado en 5124480 291144 4833336 6% / 56335 1 56334 1% /dev/shm 1095584 360572 735012 33% /media/rh9 2562240 501599 2060641 20% /media/fedora3 El listado nos muestra que la partición /dev/hdc2, por ejemplo, usa 5124480 inodos de los cuales está usando 291144 que es el 6% del total y tiene libres 4833336. La partición está montada en /. El comando du provee información sobre el espacio usado por los diferentes archivos o directorios. Por ejemplo para conocer cuánto espacio en Kbytes usa el archivo /etc/passwd se usa así: # du /etc/passwd 8 /etc/passwd Así mismo se le puede solicitar que nos de el espacio usado por todos los archivos del directorio /etc: du /etc mostrará a cada archivo con el espacio usado.