¿Cómo mejorar el desempeño del sistema de ficheros de cualquier distribución de GNU/Linux?

Con los recientes lanzamientos de Fedora, Ubuntu, Slackware y otras distribuciones, vinieron muchas mejoras en el rendimiento en general gracias a la inclusión de versiones más recientes del núcleo de Linux. Si se tiene interés en obtener el máximo rendimiento del sistema en cuanto al uso de disco duro, hay varios ajustes que pueden hacerse y que tendrán como resultado un aún mucho mejor rendimiento.

Utilizar menos memoria virtual (swap).

Este es el ajuste más simple y de menos riesgo para los más inexpertos.

De modo predeterminado, el núcleo de Linux utiliza un valor de 60 para vm.swapiness, y tiene la finalidad de permitir hacer pruebas a los desarrolladores del núcleo de Linux. Este valor corresponde a la frecuencia con la que las aplicaciones utiliza memoria virtual. Pueden establecerse valores entre 0 y 100, donde el valor más bajo establece que se utilice menos la memoria de intercambio, lo cual significa que se reclamará en su lugar el caché de la memoria.

Para la mayoría de los casos, conviene cambiar este valor por uno más bajo a fin de que el sistema utilice menos la memoria de intercambio y utilice más la memoria cache. Ésta es una clase de memoria RAM estática de acceso aleatorio (SRAM o Static Random Access Memory). Se sitúa entre la Unidad Central de Procesamiento (CPU) y la memoria RAM y se presenta de forma temporal y automática para el usuario proporcionado acceso rápido a los datos de uso más frecuente.

Lo más recomendable es cambiar el valor de vm.swappiness a 10, que resulta un valor más apropiado para un sistema de escritorio o una portátil. Para tal fin, se edita el fichero /etc/sysctl.conf, y se añade al final de éste:

vm.swappiness = 10

Con lo anterior, la siguiente vez que se inicie el sistema aplicará el cambio y se utilizará con menos frecuencia la memoria virtual. Para que el cambio surta efecto de inmediato, se ejecuta lo siguiente:

sysctl -w vm.swappiness=10

Si se asigna 0 (cero) como valor para vm.swappiness, se estará desactivando el uso de memoria virtual, lo cual es poco recomendado, salvo que se disponga de una buena cantidad de memoria física. Por lo general, el valor 0 para esta opción se utiliza solo en portátiles con unidades SSD, donde, de hecho, se busca realizar cuanto menos escritura como sea posible sobre las unidades de almacenamiento.

Opción noatime (no tiempos de acceso).

Es la forma más rápida y fácil de lograr mejoras en el desempeño. Esta opción impide se actualice los tiempos de acceso de los inodos (nodos índice), los cuales realmente son poco utilizados por la mayoría de los usuarios. Esto permite mejor desempeño en todos los sistemas pues permite un más rápido acceso hacia el sistema de ficheros. Es particularmente útil en computadoras portátiles pues reduce considerablemente la cantidad de procesos de E/S o Entrada y Salida (I/O o Input/Output) del disco duro. Equivale a utilizar chattr +A, pero aplicado a todos los datos de la partición.

En el siguiente ejemplo, se configurará las opciones noatime y nodiratime para las particiones / y /boot en el fichero /etc/fstab de una portátil.

UUID=ec969540-c17d-4320-98e9-ce6b87649829	/	ext3	defaults,noatime,nodiratime	1 1
UUID=eff0a698-a009-4ccd-a62e-a886170f59ec	/boot	ext4	defaults,noatime,nodiratime	1 2

Es muy importante comprobar que todo lo anterior se hizo correctamente, pues un simple error de dedo puede ocasionar el sistema sea incapaz de iniciar. Para comprobar que todo haya sido hecho correctamente, se puede utilizar el mandato mount con la opción -o mount sobre los puntos de montaje de ambas particiones.

mount -o remount /
mount -o remount /boot

Lo anterior debe devolver solo el símbolo de sistema. Cualquier mensaje significaría que hubo un error y que hay que corregirlo de inmediato.

Opción commit (consignación de cambios).

Esta opción controla el tiempo que se utilizará entra cada operación sincronización (sync) de datos y metadatos en una partición. El tiempo predeterminado es de 5 segundos. Puede incrementarse ligeramente para mejorar el desempeño, tomando en cuenta que si se específica demasiado tiempo y ocurre una interrupción de energía antes de hacer una operación de sincronización (sync), se perderán los datos más recientes con los que se haya trabajado. Esta opción solo se recomienda si se dispone de un sistema de respaldo de energía confiable.

En el siguiente ejemplo, se configurará la opción commit con el valor equivalente a 30 segundos para las particiones / y /boot en el fichero /etc/fstab de una portátil.

UUID=ec969540-c17d-4320-98e9-ce6b87649829	/	ext4	defaults,noatime,nodiratime,commit=30	1 1
UUID=eff0a698-a009-4ccd-a62e-a886170f59ec	/boot	ext4	defaults,noatime,nodiratime,commit=30	1 2

Nuevamente, es muy importante comprobar que todo lo anterior se hizo correctamente, pues un simple error de dedo puede ocasionar el sistema sea incapaz de iniciar. Para comprobar que todo haya sido hecho correctamente, se puede utilizar el mandato mount con la opción -o mount sobre los puntos de montaje de ambas particiones.

mount -o remount /
mount -o remount /boot

Lo anterior debe devolver solo el símbolo de sistema. Cualquier mensaje significaría que hubo un error y que hay que corregirlo de inmediato.

Opción data (datos).

Esta es el ajuste más complicado y de mayor riesgo, sobretodo si se es descuidado al utilizar el teclado y se suele prestar poca atención a lo que se escribe con éste.

Antes de proceder, explicaré brevemente que el registro por diario (journaling) es un mecanismo por el cual un sistema de ficheros implementa transacciones. Consiste en un registro en el que se almacena la información necesaria para restablecer los datos dañados por una transacción en caso de que ésta falle, como puede ocurrir durante una interrupción de energía.

El formato del registro por diario se puede establecer a través de la opción data en el fichero /etc/fstab. Esta opción permite tres posibles valores:

  • ordered: Este es el valor predeterminado. Escribe primero los datos asociados a los metadatos en el sistema de ficheros y luego en el registro por diario. Sí es prioritario garantizar la integridad de datos o bien se carece de un sistema de respaldo de energía confiable, esta es la opción que debe utilizarse. Es decir, se debe dejar todo tal y como está.
  • writeback: Hace que el sistema de ficheros se comporte de manera similar a XFS. Sin preservar el ordenamiento al escribir en el disco, de modo que las consignaciones de cambios (commits) en el registro por diario puede ocurrir antes de la escritura en el sistema de ficheros. Este método es el más rápido porque solo los metadatos se almacenan en el registro por diario, pero puede hacer que se muestren datos viejos después de una falla del sistema o interrupción de energía. Solo se recomienda si se dispone de un sistema de respaldo de energía confiable.
  • journal: Es lo opuesto a ordered. Obliga a escribir primero los datos en el registro por diario y luego en el sistema de ficheros, por lo cual utiliza un registro por diario más grande, el cual, por lo tanto, demora más tiempo en recuperarse en caso de una falla del sistema o interrupción de energía. Este es evidentemente el método más lento en la mayoría de los casos, salvo que se realicen operaciones de lectura y escritura al mismo tiempo, como ocurre con las bases de datos.

De las tres posibles opciones, la que se recomienda, sí se quiere el máximo rendimiento de un sistema de ficheros ext3 o ext4, es la opción writeback. El único requisito es contar un un buen respaldo de energía, pues en caso de una interrupción súbita de energía o falla general del sistema, pudieran aparecer datos viejos luego de volver a iniciar el sistema.

En el siguiente ejemplo se configurará en el fichero /etc/fstab de una portátil las particiones / y /boot con la opción data con el valor writeback:

UUID=ec969540-c17d-4320-98e9-ce6b87649829	/	ext4	defaults,noatime,nodiratime,commit=30,data=writeback	1 1
UUID=eff0a698-a009-4ccd-a62e-a886170f59ec	/boot	ext4	defaults,noatime,nodiratime,commit=30,data=writeback	1 2

Antes de desmontar y volver a montar o reiniciar el sistema, hay que convertir los registros de diarios a writeback. Para tal fin se utiliza el mandato tune2fs del siguiente modo, en el caso donde se desea cambiar al modo writeback el registro por diario de la particiones /dev/sda1 (/boot) y /dev/sda2 (/):

tune2fs -o journal_data_writeback /dev/sda1
tune2fs -o journal_data_writeback /dev/sda2

Lo anterior es quizá la parte más importante de todo el procedimiento, y la que suele omitirse con mucha frecuencia en otros documentos disponibles en Internet. El cambio aplicará con el siguiente reinicio del sistema.

Para hacer las comprobaciones, es necesario desmontar y luego volver a montar una de las particiones. En este caso particular, solo la partición /boot puede ser desmontada, pues / está en uso. Cabe aclarar que con esta opción es imposible utilizar mount -o remount. Forzosamente debe desmontarse y volverse a montar la partición modificada para que surtan efecto los cambios.

umount /boot
mount /boot

Si lo anterior solo devolvió el símbolo de sistema, quiere decir que todo está correcto. Para que surtan efectos sobre la partición /, o bien cualquier otra que se haya configurado y que esté en uso, es necesario reiniciar el sistema.

Recomiendo extremar precauciones con este procedimiento en particular, y verificar todo lo que se haya modificado en el fichero /etc/fstab, pues un error de dedo, una letra de mas, una letra de menos, un espacio o algo mal escrito, dejarán el sistema inutilizable si se reinicia. Conviene tener a la mano un disco vivo o disco de rescate antes de proceder, a fin de poder hacer correcciones en caso de que surgiese algún problema.

Fuente

Dejar un comentario?

0 Comentarios.

Deje un comentario


NOTA - Puede usar estosHTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Translate »