You are on page 1of 7

09/11/2011

Cmo optimizar los sistemas de archiv

Cmo optimizar los sistemas de archivos ext3 y ext4. Introduccin.


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 en formato Ext3 o Ext4, hay ajustes que pueden mejorar el desempeo de manera significativa.

Acerca de Ext3.
Ext3 (third extended filesystem o tercer sistema de archivos extendido) se diferencia de ext2 en que trabaja con registro por diario (journaling), y porque utiliza un rbol binario balanceado (rbol AVL, creado por los matemticos rusos Georgii Adelson-Velskii, y Yevgeniy Landis), y tambin por incorporar el mtodo Orlov de asignacin para bloques de disco (el mismo que se gestiona a travs de los mandatos lsattr, y chattr). Adems ext3 permite ser montado, y utilizado, como si fuera ext2, y actualizar desde ext2 hacia ext3 sin necesidad de formatear la particin y, por tanto, sin perder los datos almacenados en sta. Es el sistema de archivos predeterminado en CentOS 5 y Red Hat Enterprise Linux 5.

Acerca de Ext4.
Ext4 (fourth extended filesystem, o cuarto sistema de archivos extendido) es un sistema de archivos con registro por diario, publicado por por Andrew Morton el 10 de octubre de 2006, como una mejora compatible con el formato Ext3. El 25 de diciembre de 2008 se public la versin 2.6.28 del ncleo de Linux, la cual elimin la etiqueta experimental de cdigo de Ext4. Las mejoras respecto de Ext3 incluyen, entre otras cosas, el soporte de volmenes de hasta 1024 PiB, soporte aadido de extents (conjunto de bloques fsicos contiguos), menor uso de recursos de sistema, mejoras sustanciales en la velocidad de lectura, y escritura, y verificacin ms rpida con fsck. Es el sistema de archivos predeterminado en CentOS 6 y Red Hat Enterprise Linux 6.

Acerca del registro por diario (journaling).


El registro por diario (journaling) es un mecanismo por el cual un sistema de archivos implementa transacciones. Consiste en un registro en el que se almacena la informacin necesaria para restablecer los datos daados por una transaccin en caso de que sta falle, como puede ocurrir durante una interrupcin de energa.

Procedimientos
Para determinar que dispositivos corresponden a las particiones en el disco duro, se utiliza el mandato df. Ejemplo:

[root@servidor ~]# df S.archivos Bloques de 1K Usado /dev/hda2 19283024 17279260 /dev/sda1 77749 21905 /dev/sdb1 17496684 10618980 /dev/hda5 54158844 41284544 /dev/sda2 15352348 4874232 tmpfs 777732 0

Dispon Uso% Montado en 1207584 94% / 51830 30% /boot 5988912 64% /home 11223624 79% /var/ftp 9698164 34% /home/rpmbuild 777732 0% /dev/shm

Una vez determinados que dispositivos corresponden a las diferentes particiones, pueden aplicarse varios mtodos de optimizacin.

Utilizando el mandato e2fsck.


El mandato e2fsck se utiliza regularmente para revisar, y reparar, particiones con formato ext2, y ext3. Incluye la opcin -D que alcancelibre.org//como-optimizar-ext3 1/7

09/11/2011 e2fsck se utiliza regularmente para revisar, y reparar, sistemas de archiv ext2, y ext3. Incluye la opcin -D que Cmo optimizar los particiones con formato El mandato realiza la optimizacin de directorios en el sistema de archivos. La optimizacin de todos los directorios de una particin consiste en volver a posicionar (reindexing) los directorios, cuando el sistema de archivos incluye soporte para tal, o volviendo a acomodar, y comprimiendo directorios. La opcin -D se debe utilizar junto con la opcin -f para forzar la verificacin de la particin del disco duro.

Para optimizar una particin en formato ext3, es indispensable que sta est desmontada. Para poder desmontar una particin es indispensable que el sistema funcione sin procesos haciendo uso de contenidos en dicha particin. Puede utilizarse el mandato lsof para determinar sto, y as definir que es lo que se debe detener momentneamente. Si el sistema funciona sin procesos haciendo uso de contenidos en la particin, se puede seguir el procedimiento ejemplificado a continuacin con el dispositivo /dev/sda3 que en este particular ejemplo corresponde a la particin para /home:

umount /home e2fsck -f -D /dev/sda3

La salida puede devolver algo similar a lo siguiente:

[root@m100 SPECS]# e2fsck -D -f /dev/sda3 e2fsck 1.39 (29-May-2006) Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 3A: Optimizing directories Pass 4: Checking reference counts Pass 5: Checking group summary information /home: ***** FILE SYSTEM WAS MODIFIED ***** /home: 13/5244736 files (7.7% non-contiguous), 208319/5243214 blocks

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 instalacin 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 archivo /etc/fstab. Opcin noatime (eliminar tiempos de acceso). Es la forma ms rpida, y fcil, de lograr mejoras en el desempeo. Esta opcin impide se actualice los tiempos de acceso de los inodos (nodos ndice), los cuales realmente son poco utilizados por la mayora de los usuarios. Esto permite mejor desempeo en servidores de noticias y HTTP pues permite un ms rpido acceso hacia el sistema de archivos. Es particularmente til en computadoras porttiles 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 particin. En el siguiente ejemplo, se configurar la opcin noatime para la particin /var/www en el archivo /etc/fstab de un servidor HTTP.

LABEL=/var/www

/var/www

ext3

defaults,noatime

1 2

Opcin commit (consignacin de cambios).


alcancelibre.org//como-optimizar-ext3 2/7

09/11/2011

Cmo optimizar los sistemas de archiv

Esta opcin controla el tiempo que se utilizar entra cada operacin sincronizacin (sync) de datos y metadatos en una particin. El tiempo predeterminado es de 5 segundos. Puede incrementarse ligeramente para mejorar el desempeo, tomando en cuenta que si se especfica demasiado tiempo, y ocurre una interrupcin de energa antes de hacer una operacin de sincronizacin (sync), se perdern los datos ms recientes con los que se haya trabajado. Esta opcin slo se recomienda si se dispone de un sistema de respaldo de energa confiable. En el siguiente ejemplo, se configurar la opcin commit con el valor equivalente a 8 segundos para la particin /var/www en el archivo /etc/fstab de un servidor HTTP.

LABEL=/var/www

/var/www

ext3

defaults,commit=8

1 2

Opcin data (datos). Nota: Debido a que se debe desmontar, y volver a montar, las modificaciones de esta opcin requieren que la particin est sin utilizar. Por lo cual se recomienda realizar este procedimiento desde un disco de rescate o bien iniciando el sistema en nivel de ejecucin 1 (monousuario). Esta opcin permite tres posibles valores: ordered: Es el valor predeterminado. Escribe los datos asociados a los metadatos primero en el sistema de archivos antes de hacerlo en el registro por diario. Si la prioridad es garantizar la integridad de datos o bien se carece de un sistema de respaldo de energa confiable, es la opcin que debe utilizarse. journal: Es lo opuesto a ordered. Obliga a escribir primero los datos en el registro por diario, y luego en el sistema de archivos, por lo cual utiliza un registro por diario ms grande, y el cual, por lo tanto, demora ms tiempo en recuperarse en caso de una falla del sistema o interrupcin de energa. ste es, evidentemente, el mtodo ms lento en la mayora de los casos, salvo que se realicen operaciones de lectura, y escritura, al mismo tiempo, como ocurre con las bases de datos. writeback: Hace que el sistema de archivos 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 archivos. Este mtodo es el ms rpido porque slo los metadatos se almacenan en el registro por diario, pero puede hacer que se muestren datos viejos despus de una falla del sistema o interrupcin de energa. Slo se recomienda si se dispone de un sistema de respaldo de energa confiable, o bien si en la particin configurada con este formato de registro por diario hay cambios poco frecuentes en los datos (como el caso de /boot, /, /usr, /opt, /usr/local, y, en algunos, escenarios para /var/www), o bien particiones para temporales o caches (como /tmp, /var/tmp, y /var/cache. Poco recomendado para particiones donde hay cambios frecuentes en los datos almacenados, como ocurre con /home o /var, /var/lib o /var/spool. En el siguiente ejemplo se configurar en el archivo /etc/fstab de un servidor HTTP, y bases de datos, la particin /var/www con la opcin data con el valor writeback, y la particin /var/lib, con la opcin data, y el valor journal:

LABEL=/var/www LABEL=/var/lib

/var/www /var/lib

ext3 ext3

defaults,data=writeback defaults,data=journal

1 2 1 2

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 particin LABEL=/var/www:

tune2fs -o journal_data_writeback LABEL=/var/www

En el caso donde se desea cambiar al modo journal el registro por diario de la particin LABEL=/var/lib, se utiliza lo siguiente:

tune2fs -o journal_data LABEL=/var/lib

Para revertir el cambio, y volver a utilizar el modo ordered, se puede utilizar el mandato tune2fs con la opcin -o journal_data. alcancelibre.org//como-optimizar-ext3

3/7

09/11/2011 Cmo optimizar los sistemas de archiv Para revertir el cambio, y volver a utilizar el modo ordered, se puede utilizar el mandato tune2fs con la opcin -o journal_data.

Para aplicar los cambios, sin correr el riesgo de reiniciar con errores de sintaxis en el archivo /etc/fstab que impediran montar las particiones configuradas, se puede utilizar el mandato umount para desmontar la particin a modificar, y posteriormente el mandato mount para volver a desmontarlas. Ejemplos: umount /var/www umount /var/lib mount /var/www mount /var/lib

Utilizar el mandato mount con la opcin -o remount siempre devolver un error de opcin incorrecta. Esta es la razn 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 smbolo 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 archivo /etc/fstab, y se elimina la opcin data=valor, de la particin ivolucrada:

LABEL=/var/www LABEL=/var/lib

/var/www /var/lib

ext3 ext3

defaults defaults

1 2 1 2

Se desmontan las particiones:

umount /var/lib umount /var/www

Y con el mandato tune2fs se define nuevamente el formato ordered:

tune2fs -o journal_data_ordered LABEL=/var/lib tune2fs -o journal_data_ordered LABEL=/var/www

Y finalmente se vuelven a montar las particiones:

mount /var/lib mount /var/www

Si lo anterior devuelve el smbolo 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 6 o Red Hat Enterprise Linux 6, el formato predeterminado en las particiones es Ext4, por lo cual es innecesario convertir de Ext3 a Ext4. Ext4 ha demostrado ser un sistema de archivos con mucho mejor desempeo que su predecesor, Ext3. Si uno slo necesita hacer pruebas, es posible montar una particin Ext3 como Ext4 modificando el archivo /etc/fstab, pero carecer de muchas funciones propias de Ext4. Instalando los paquetes correspondientes, CentOS 5.5, y versiones posteriores, incluye el soporte necesario para convertir al formato Ext4 las particiones Ext3, preservando los datos originales en el sistema de archivos, con la nica restriccin de que
alcancelibre.org//como-optimizar-ext3 4/7

09/11/2011 Cmo optimizar los sistemas de archiv jams se deber convertir a Ext4 las particiones que correspondan /boot y /, debido a que en CentOS 5, y Red Hat Enterprise Linux 5 la versin de Grub, el gestor de arranque, carece de soporte para iniciar desde particiones Ext4.

Es muy importante realizar un respaldo de informacin importante antes de proceder, por si acaso algo saliese mal.. Nuevamente, si se utiliza CentOS 5 o Red Hat Enterprise Linux 5, jams se deben convertir a Ext4 las particiones que correspondan a /boot o /. En CentOS 5 o Red Hat Enterprise Linux 5, para poder utilizar el formato Ext4 en cualquier otra particin, se requiere que el sistema tenga instalado el paquete e4fsprogs:

yum -y install 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, slo ser necesario editar el archivo /etc/fstab, y modificar la configuracin de cualquier particin (excepto las que correspondan a /boot, y /), y cambiar ext3 por ext4. Hasta aqu, es posible revertir el cambio volviendo a editar el archivo /etc/fstab, y volviendo a definir ext3 como formato de la particin modificada. Para convertir una particin por completo a Ext4, lo cual hara que de modo irreversible jams se pueda volver a montar como Ext3, debe desmontarse primero la particin 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 particin /dev/sda7, que correspondera a /tmp, para convertirla a Ext4.

umount /tmp tune4fs -O extents,uninit_bg,dir_index /dev/sda7

Lo anterior slo requiere utilizar en seguida el mandato fsck.ext4 para verificar la particin, y completar as los cambios necesarios en el sistema de archivos. El mandato fsck.ext4 debe utilizarse con las opciones -fyD (forzar verificacin, contestar si a todas las modificaciones necesarias, y optimizar directorios).

fsck.ext4 -fyD /dev/sda7

Si la particin est en uso, como sera el caso de las correspondientes a /usr y/o /var, ser necesario hacer lo anterior desde un disco vivo de Fedora, versin 13 en adelante. El modo de rescate del disco de instalacin de CentOS, versin 5.5 en adelante, incluye tambin soporte bsico para Ext4, aunque carece de soporte para convertir particiones de Ext3 a Ext4 a travs del mandato tune2fs, y carece de mandato tune4fs. Por tanto, el intrprete de mandatos del modo de rescate del disco de instalacin de CentOS 5.5 slo permitir verificar, y reparar, particiones Ext4 a travs del mandato fsck.ext4. En el archivo /etc/fstab se reemplaza LABEL=/tmp por el nombre real del dispositivo, y ext3 por ext4.

LABEL=/ LABEL=/boot /dev/sda7 tmpfs devpts sysfs proc LABEL=SWAP-hda3

/ /boot /tmp /dev/shm /dev/pts /sys /proc swap

ext3 ext3 ext4 tmpfs devpts sysfs proc swap

defaults defaults defaults defaults gid=5,mode=620 defaults defaults defaults

1 1 1 0 0 0 0 0

1 2 2 0 0 0 0 0

Un punto importante a considerar es que Ext4 utiliza UUID (Universally Unique Identifier, o Identificador Universalmente nico) en lugar de etiquetas. El UUID se puede determinar utilizando el mandato blkid del siguiente modo:
alcancelibre.org//como-optimizar-ext3 5/7

09/11/2011

Cmo optimizar los sistemas de archiv

blkid /dev/sda7

Lo cual devolvera algo similar a lo siguiente:

/dev/sda7: LABEL="/tmp" UUID="238e532b-250c-4a80-87a3-3aecc9715795" TYPE="ext4"

Con esta informacin, el archivo /etc/fstab quedara del siguiente modo:

LABEL=/ / LABEL=/boot /boot UUID=238e532b-250c-4a80-87a3-3aecc9715795 tmpfs /dev/shm devpts /dev/pts sysfs /sys proc /proc LABEL=SWAP-hda3 swap

ext3 ext3 /tmp tmpfs devpts sysfs proc swap

defaults 1 1 defaults 1 2 ext4 defaults defaults 0 0 gid=5,mode=620 0 0 defaults 0 0 defaults 0 0 defaults 0 0

1 2

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 funcin que garantiza la integridad de los datos de una particin en caso de una interrupcin de energa o una falla general del sistema. Slo se recomienda eliminar el registro por diario en los casos donde se dispone de un buen respaldo de energa (ultra-porttiles, por ejemplo), un sistema operativo estable y/o se tienen particiones asignadas a directorios donde la informacin es poco relevante (como /tmp, /var/tmp o /var/cache). Este procedimiento est absolutamente contraindicado en servidores o donde se requiera una garanta absoluta de integridad de datos. Hay que considerar adems que la mejora obtenida puede ser apenas perceptible, y, muy probablemente, slo amerite eliminar el registro por diario en particiones en unidades de estado slido (SSD). Es importante tambin realizar un respaldo de informacin importante antes de proceder, por si acaso algo saliese mal.. Procedimientos. Asumiendo que se dispone de una particin /dev/sda7, que en el ejemplo corresponde a /tmp, que fue previamente convertida a Ext4, utilizando el mtodo descrito en este mismo documento, o formateada en Ext4, se debe desmontar la particin:

umount /tmp

Para eliminar el registro por diario de la particin /dev/sda7 en CentOS 5 o Red Hat Enterprise Linux 5, se requiere ejecutar el mandato tune4fs, de la siguiente forma:

tune4fs -O ^has_journal /dev/sda7

Para eliminar el registro por diario de la particin /dev/sda7 en CentOS 6 o Red Hat Enterprise Linux 6, se requiere ejecutar el mandato tune2fs, de la siguiente forma:

tune2fs -O ^has_journal /dev/sda7 alcancelibre.org//como-optimizar-ext3

6/7

09/11/2011

Cmo optimizar los sistemas de archiv tune2fs -O ^has_journal /dev/sda7

El smbolo ^ (acento circunflejo) significa que se elimina una opcin. En este caso la opcin eliminada fue has_journal, que es las responsable del registro por diario. sin importar la versin de sistema operativo, o anterior requiere utilizar en seguida el mandato fsck, con las opciones -pDf (reparar automticamente lo que sea necesario, y que prescinda de interaccin humana, optimizar re-ordenando directorios, y forzar verificacin) a fin de realizar correcciones importantes e indispensables en el sistema de archivos.

fsck.ext4 -pDf /dev/sda7

Eliminar el registro por diario de una particin ext4 hace que irremediablemente se pierda el UUID, por lo cual invariablemente hay que editar el archivo /etc/fstab, y establecer el nombre real del dispositivo en lugar del UUID:

LABEL=/ LABEL=/boot /dev/sda7 tmpfs devpts sysfs proc LABEL=SWAP-hda3

/ /boot /tmp /dev/shm /dev/pts /sys /proc swap

ext3 ext3 ext4 tmpfs devpts sysfs proc swap

defaults defaults defaults defaults gid=5,mode=620 defaults defaults defaults

1 1 1 0 0 0 0 0

1 2 2 0 0 0 0 0

Hecho lo anterior, se habr completado el procedimiento. Basta con volver a montar la particin para verificar que todo funcione correctamente. La mejora ser apenas perceptible, pero brindar el mximo rendimiento posible para el sistema de archivos Ext4, superando incluso el desempeo en cuanto a velocidad de Ext2. En un equipo con una particin /tmp con registro por diario, y la misma particin /tmp, sin registro por diario, la escritura de 1 GB de informacin demor lo siguiente:

/tmp con registro por diario

real user sys

0m9.796s 0m0.444s 0m4.441s

/tmp sin registro por diario

real user sys

0m8.978s 0m0.487s 0m3.811s

Como pude verse, la diferencia es muy poca, pero significativa. En el dado caso que se quiera volver a utilizar el registro por diario, slo basta con volver a iniciar con el disco vivo, abrir una terminal, y ejecutar lo siguiente.

su -l umount /home tune2fs -O has_journal /dev/sda7 fsck -pDf /dev/sda7 mount /home ltima Edicin 19/10/2011, 08:44|12,570 Accesos

alcancelibre.org//como-optimizar-ext3

7/7

You might also like