|
|
Cómo optimizar el sistema de ficheros ext3.Autor: Joel Barrios DueñasCorreo electrónico: darkshram en gmail punto com Sitio de Red: http://www.alcancelibre.org/ Jabber ID: darkshram@jabber.org Creative Commons Reconocimiento-NoComercial-CompartirIgual 2.1
Introducción.Cuando se trabaja con servidores y estaciones de trabajo con instalaciones de Ubuntu, CentOS, Red Hat o Fedora y se busca optimizar el uso del disco duro de sistemas de archivos Ext3, hay ajustes que pueden mejorar el desempeño significativamente. Acerca de Ext3.ext3 (third extended filesystem o tercer sistema de ficheros extendido) es el sistema de ficheros más utilizado por las distribuciones de GNU/Linux y. Se diferencia de ext2 en que trabaja con registro por diario (journaling) y porque utiliza un árbol binario balanceado (árbol AVL, creado por los matemáticos rusos Georgii Adelson-Velskii y Yevgeniy Landis) y también por incorporar el método Orlov de asignación para bloques de disco (el mismo que se gestiona a través de los mandatos lsattr y chattr). Además ext3 permite ser montado y utilizado como si fuera ext2 y actualizar desde ext2 hacia ext3 sin necesidad de formatear la partición y, por tanto, sin perder los datos almacenados en ésta. Acerca del registro por diario (journaling).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. ProcedimientosPara determinar que dispositivos corresponden a las particiones en el disco duro, se utiliza el mandato df. Ejemplo:
Una vez determinados que dispositivos corresponden a las diferentes particiones, pueden aplicarse varios métodos de optimización. Utilizando el mandato e2fsck.El mandato e2fsck se utiliza regularmente para revisar y reparar particiones con formato ext2 y ext3. Incluye la opción -D que realiza la optimización de directorios en el sistema de ficheros. La optimización de todos los directorios de una partición consiste en volver a posicionar (reindexing) los directorios, cuando el sistema de ficheros incluye soporte para tal, o volviendo a acomodar y comprimiendo directorios. La opción -D se debe utilizar junto con la opción -f para forzar la verificación de la partición del disco duro. Para optimizar una partición en formato ext3, es indispensable que ésta esté desmontada. Para poder desmontar una partición es indispensable que el sistema funcione sin procesos haciendo uso de contenidos en dicha partición. Puede utilizarse el mandato lsof para determinar esto y así definir que es lo que se debe detener momentáneamente. Si el sistema funciona sin procesos haciendo uso de contenidos en la partición, se puede seguir el procedimiento ejemplificado a continuación con el dispositivo /dev/sda3 que en este particular ejemplo corresponde a la partición para /home:
La salida puede devolver algo similar a lo siguiente:
Una vez terminado el procedimiento, se pueden volver a montar las particiones optimizadas. En el caso de tratarse de particiones que sea imposible desmontar por encontrarse en uso, puede utilizarse el disco de instalación de CentOS, Fedora o Red Hat en modo de rescate (boot: linux rescue), o un Disco Vivo (LiveCD), en el caso de Ubuntu, y desmontando las particiones que se quiera optimizar antes de utilizar el mandato e2fsck -f -D. Opciones de montado.Los sistemas de archivos ext3 permiten tres opciones que particularmente son útiles. Todas se especifican en la columna de opciones de los dispositivos en el fichero /etc/fstab. 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 servidores de noticias y HTTP 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á la opción noatime para la partición /var/www en el fichero /etc/fstab de un servidor HTTP.
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 8 segundos para la partición /var/www en el fichero /etc/fstab de un servidor HTTP.
Opción data (datos).Nota: Debido a que se debe desmontar y volver a montar, las modificaciones de esta opción requieren que la partición esté sin utilizar. Por lo cual se recomienda realizar este procedimiento desde un disco de rescate o bien iniciando el sistema en nivel de ejecución 1 (monousuario). Esta opción permite tres posibles valores:
En el siguiente ejemplo se configurará en el fichero /etc/fstab de un servidor HTTP y base de datos la partición /var/www con la opción data con el valor writeback y la partición /var/lib con la opción data y el valor journal:
Antes de desmontar y volver a montar o reiniciar el sistema, hay que convertir los registros de diarios a writeback o bien journal, dependiendo el caso. 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 partición LABEL=/var/www:
En el caso donde se desea cambiar al modo journal el registro por diario de la partición LABEL=/var/lib, se utiliza lo siguiente:
Para revertir el cambio y volver a utilizar el modo ordered, se puede utilizar el mandato tune2fs con la opción -o journal_data. Para aplicar los cambios, sin correr el riesgo de reiniciar con errores de sintaxis en el fichero /etc/fstab que impedirían montar las particiones configuradas, se puede utilizar el mandato umount para desmontar la partición a modificar, y posteriormente el mandato mount para volver a desmontarlas. Ejemplos:
Utilizar el mandato mount cn la opción -o remount siempre devolverá un error de opción incorrecta. Esta es la razón por la cual se desmontan y montan las particiones para cambiar el tipo de registro por diario de las particiones. Si lo anterior devuelve el símbolo de sistema sin errores, significa que las opciones se aplicaron correctamente y que el sistema puede ser reiniciado con toda seguridad en el momento que se considere apropiado. Para regresar todo a como estaba originalmente, se edita el fichero /etc/fstab y se quitando las opciones data=valor previamente configuradas:
Se desmontan las particiones:
Y con el mandato tune2fs se define nuevamente el formato ordered:
Y finalmente se vuelven a montar las particiones:
Si lo anterior devuelve el símbolo de sistema sin errores, significa que las opciones fueron revertidas y aplicadas correctamente y que el sistema puede ser reiniciado con toda seguridad en el momento que se considere apropiado. Convirtiendo particiones de Ext3 a Ext4 en CentOS 5.Ext4 ha demostrado ser un sistema de ficheros con mucho mejor desempeño que su predecesor, Ext3. Si uno solo necesita hacer pruebas, es posible montar una partición Ext3 como Ext4 modificando el fichero /etc/fstab, pero carecerá de muchas funciones propias de Ext4. Instalando los paquetes correspondientes, CentOS 5.5 en adelante incluye el soporte necesario para convertir a Ext4 las particiones Ext3, preservando los datos originales en el sistema de ficheros, con la única restricción de que jamás se debe convertir a Ext4 las particiones que correspondan /boot y /, debido a que la versión de Grub de CentOS 5 carece de soporte para iniciar desde particiones Ext4. Es muy importante realizar un respaldo de información importante antes de proceder, por si acaso algo saliese mal.. Nuevamente, jamás se deben convertir a Ext4 las particiones que correspondan a /boot o / para poder utilizar el formato Ext4 en cualquier partición, se requiere que el sistema tenga instalado el paquete e4fsprogs:
Este paquete incluye las herramientas necesarias para gestionar particiones Ext4, como son e4fsck, e4label, mke4fs, mkfs.ext4 y dumpe4fs, entre otras herramientas. A partir de este punto, y con el objetivo de realizar pruebas, solo será necesario editar el fichero /etc/fstab y modificar la configuración de cualquier partición (excepto las que correspondan a /boot y /) y cambiar ext3 por ext4. Hasta aquí, es posible revertir el cambio volviendo a editar el fichero /etc/fstab y volviendo a definir ext3 como formato de la partición modificada. Para convertir una partición por completo a Ext4, lo cual haría que de modo irreversible jamás se pueda volver a montar como Ext3, debe desmontarse primero la partición a convertir y posteriormente utilizar el mandato tune4fs con las opciones -O extents,uninit_bg,dir_index. En el siguiente ejemplo se aplica el mandato tune4fs a la partición /dev/hda3, que correspondería a /home, para convertirla a Ext4.
Si esta operación se hace desde un disco vivo de Fedora 13 en adelante, se utiliza en su lugar el mandato tune2fs. Lo anterior solo requiere utilizar el mandato fsck.ext4 para verificar la partición y realizar los cambios necesarios en el sistema de ficheros. El mandato fsck.ext4 debe utilizarse con las opciones -fyD (forzar verificación, contestar si a todas las modificaciones necesarias y optimizar directorios).
Si la partición está en uso, como sería el caso de las correspondientes a /usr y/o /var, será necesario hacer lo anterior desde un disco vivo de Fedora, versión 13 en adelante. El modo de rescate del disco de instalación de CentOS, versión 5.5 en adelante, incluye también soporte básico para Ext4, aunque carece de soporte para convertir particiones de Ext3 a Ext4 a través del mandato tune2fs, y carece de mandato tune4fs. Por tanto, el intérprete de mandatos del modo de rescate del disco de instalación de CentOS 5.5 solo permitirá verificar y reparar particiones Ext4 a través del mandato fsck.ext4. Eliminando el registro por diario (journal) de Ext4.Advertencias.Este procedimiento aplica exclusivamente a las particiones con formato Ext4. El formato Ext3 carece de soporte para funcionar sin registro por diario. Antes de comenzar, es importante aclarar que eliminar por completo el registro por diario implica perder una importante función que garantiza la integridad de los datos de una partición en caso de una interrupción de energía o una falla general del sistema. Solo se recomienda eliminar el registro por diario en los casos donde se dispone de un buen respaldo de energía (ultra-portátiles, por ejemplo), un sistema operativo estable y/o se tienen particiones asignadas a directorios donde la información es poco relevante (como /tmp, /var/tmp o /var/cache). Este procedimiento está absolutamente contraindicado en servidores o donde se requiera una garantía absoluta de integridad de datos. Hay que considerar además que la mejoría obtenida puede ser apenas perceptible y muy probablemente solo amerite eliminar el registro por diario en particiones en unidades de estado sólido (SSD). Es importante también realizar un respaldo de información importante antes de proceder, por si acaso algo saliese mal.. Procedimientos.Suponiendo que se dispone de una partición /dev/hda3, correspondiente en el ejemplo a /home, convertida a Ext4 utilizando el método descrito en este mismo documento, se debe desmontar la partición:
Para eliminar el registro por diario de la partición /dev/hda3, se requiere ejecutar el mandato tune4fs de la siguiente forma:
El símbolo ^ significa que se elimina una opción, en este caso la opción has_journal. Si esta operación se hace desde un disco vivo de Fedora 13 en adelante, se utiliza en su lugar el mandato tune2fs. Lo anterior requiere utilizar inmediatamente después el mandato fsck con las opciones -pDf (reparar automáticamente lo que sea necesario, optimizar re-ordenando directorios y forzar verificación) a fin de realizar correcciones importantes e indispensables en el sistema de ficheros.
Para completar el procedimiento, hay que editar el fichero /etc/fstab y cambiar el nombre del dispositivo de la partición que se ha modificado por el nombre del dispositivo real (/dev/XXXX). Por lo general, cuando se trata de particiones ordinarias, la instalación del sistema asigna de modo predeterminado los nombres de dispositivo como etiquetas (LABEL=/home).
Hecho lo anterior, se habrá completado el procedimiento. Basta con volver a montar la partición para verificar que todo funcione correctamente. La mejoría será apenas perceptible, pero brindará el máximo rendimiento posible para el sistema de ficheros Ext4, superando incluso el desempeño en cuanto a velocidad de Ext2. En un equipo con una partición /home con registro por diario y otra partición /tmp sin registro por diario, la escritura de 1 GB de información demoró lo siguiente:
Como pude verse, la diferencia es muy poca, pero significativa. En el dado caso que se quiera volver a utilizar el registro por diario, solo basta con volver a iniciar con el disco vivo, abrir una terminal y ejecutar lo siguiente.
|
Comentarios Recientes