Bienvenido(a) a Alcance Libre 29/06/2022, 00:53
Creative Commons Reconocimiento-NoComercial-CompartirIgual 2.1
© 1999-2014 Joel Barrios Dueñas. Usted es libre de copiar, distribuir y comunicar públicamente la obra y hacer obras derivadas bajo las condiciones siguientes: a) Debe reconocer y citar al autor original. b) No puede utilizar esta obra para fines comerciales (incluyendo su publicación, a través de cualquier medio, por entidades con fines de lucro). c) Si altera o transforma esta obra o genera una obra derivada, sólo puede distribuir la obra generada bajo una licencia idéntica a ésta. Al reutilizar o distribuir la obra, tiene que dejar bien claro los términos de la licencia de esta obra. Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los derechos de autor. Los derechos derivados de usos legítimos u otras limitaciones no se ven afectados por lo anterior. Licencia completa en castellano. La información contenida en este documento y los derivados de éste se proporcionan tal cual son y los autores no asumirán responsabilidad alguna si el usuario o lector hace mal uso de éstos.
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 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 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 sin perder los datos almacenados en ésta. Es el sistema de archivos predeterminado en CentOS 5 y Red Hat™ Enterprise Linux 5.
Ext4 (fourth extended filesystem o cuarto sistema de archivos extendido) es un sistema de archivos con registro por diario, publicado por Andrew Morton como una mejora compatible con el formato Ext3 el 10 de octubre de 2006. El 25 de diciembre de 2008 se publicó la versión 2.6.28 del núcleo de Linux, la cual eliminó la etiqueta experimental de código de Ext4. Las mejoras respecto de Ext3 incluyen, entre otras cosas, el soporte de volúmenes de hasta 1024 PiB, soporte añadido de extents (conjunto de bloques físicos contiguos), menor uso de recursos de sistema, mejoras sustanciales en la velocidad de lectura y escritura y verificación más rápida con fsck. Es el sistema de archivos predeterminado en CentOS 6 y Red Hat™ Enterprise Linux 6.
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 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.
Ejecute df sin argumentos para determinar los dispositivos que corresponden a cada partición de la unidad de almacenamiento. Ejemplo:
[root@servidor ~]# df S.archivos Bloques de 1K Usado Dispon Uso% Montado en /dev/hda2 19283024 17279260 1207584 94% / /dev/sda1 77749 21905 51830 30% /boot /dev/sdb1 17496684 10618980 5988912 64% /home /dev/hda5 54158844 41284544 11223624 79% /var/ftp /dev/sda2 15352348 4874232 9698164 34% /home/rpmbuild tmpfs 777732 0 777732 0% /dev/shm |
Una vez determinados que dispositivos corresponden a las diferentes particiones, pueden aplicarse varios métodos de optimización.
Se trata de una herramienta que sirve de frente para fsck.ext2, fsck.ext3 y fsck.ext4 que realiza la detección automática del formato y realiza la verificación y reparación del sistema de archivos en formato ext2, ext3 y ext4.
La opción -D realiza la optimización de directorios en el sistema de archivos. Ésta 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 opción -D se debe utilizar junto con la opción -f para forzar la verificación de la partición.
Es indispensable que la partición esté desmontada para utilizar e2fsck. Para desmontar una partición es indispensable que ningún proceso haga uso de contenidos en ésta. Utilice lsof para determinar ésto.
En el siguiente ejemplo se desmontará y optimizará el hipotético dispositivo /dev/sda3 que hipotéticamente corresponde a /home:
umount /home |
La salida puede devolver algo similar a lo siguiente:
[root@m100 SPECS]# e2fsck -D -f /dev/sda3 |
Monte de nuevo la particiones optimizadas después de terminar el procedimiento.
mount /home |
En el caso de tratarse de particiones donde sea imposible desmontar por encontrarse en uso, reinicie el sistema con el disco de instalación en modo de rescate de CentOS, Fedora™, Red Hat™ Enterprise Linux, openSUSE™ y SuSE™ Linux Enterprise o bien utilice un Disco Vivo (LiveCD).
Los sistemas de archivos ext3 y ext4 permiten tres opciones que mejoran el desempeño del sistema de archivos. Todas se especifican en la columna de opciones de los dispositivos en el archivo /etc/fstab.
dispositivo punto de montaje formato opciones a b
|
De la descripción anterior, a define si la partición se verifica con cada inicio del sistema y b define la prioridad de montaje. Ejemplo del contenido del archivo /etc/fstab:
#
# /etc/fstab
# Created by anaconda on Mon Aug 22 14:39:31 2011
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=a3b3ebcd-e342-43fb-bc33-adf4d1e409ff / ext4 defaults 1 1
UUID=32932fc8-0e4f-4a68-80a0-28d873a15f87 /boot ext4 defaults 1 2
UUID=68ea9cb2-959a-4df1-8d3f-8e8554db4925 /home ext4 defaults 1 2
UUID=238e532b-250c-4a80-87a3-3aecc9715795 /tmp ext4 defaults 1 2
UUID=03df5f97-5c88-4883-97f1-5091940fa30e swap swap defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
|
Edite el archivo /etc/fstab:
vi /etc/fstab |
Estas opciones constituyen la forma más rápida y fácil de lograr mejoras en el desempeño. Impiden se actualice los tiempos de acceso de los inodos (nodos índice), los cuales realmente son poco utilizados por la mayoría de las aplicaciones.
Permiten un mejor desempeño en servidores de noticias, servidores de archivos, servidores FTP y servidores HTTP pues permite un más rápido acceso hacia el sistema de archivos. En computadoras portátiles permite reducir —de manera considerable— la cantidad de procesos de E/S o Entrada y Salida (I/O o Input/Output) de la unidad de almacenamiento. Equivale a utilizar chattr +A, pero aplicado a todos los datos de la partición. La opción nodiratime, que elimina los tiempos de acceso de los directorios, complementa a la opción noatime.
En el siguiente ejemplo se configurará la opción noatime para el volumen lógico correspondiente a /var/www en el archivo /etc/fstab.
/dev/mapper/lv_varwww /var/www ext4 defaults,noatime,nodiratime 1 2
|
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 y puede incrementarse para mejorar el desempeño, tomando en consideración 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. Sólo usarla 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 el volumen lógico correspondiente a /var/www en el archivo /etc/fstab.
/dev/mapper/lv_varwww /var/www ext4 defaults,noatime,nodiratime,commit=30 1 2
|
Nota: Debido a que se debe desmontar y volver a montar para aplicar los cambios, se requiere que la partición a optimizar esté sin utilizar, por lo cual se recomienda realizar los procedimiento desde un disco de rescate o bien iniciando el sistema en nivel de ejecución 1 (mono-usuario) o bien realizar las modificaciones y reiniciar el sistema.
Esta opción permite tres posibles valores:
Edite el archivo /etc/fstab:
vi /etc/fstab |
En el siguiente ejemplo hipotético se configurará en el archivo /etc/fstab el volumen lógico correspondiente a /var/www con la opción data con el valor writeback y el volumen lógico correspondiente a /var/lib con la opción data y el valor journal.
/dev/mapper/lv_varwww /var/www ext4 defaults,data=writeback 1 2
/dev/mapper/lv_varlib /var/lib ext4 defaults,data=journal 1 2
|
Si se utiliza CentOS 6, cualquier versión reciente de Fedora™ o Red Hat™ Enterprise Linux 6, el formato del registro por diario se actualiza automáticamente al reiniciar el sistema o bien tras desmontar y volver a montar el sistema de archivos que se haya modificado.
Si se utiliza CentOS 5 o Red Hat™ Enterprise Linux 5, es necesario convertir los registros por diario a su nuevo formato utilizando tune2fs. En el siguiente ejemplo se cambia el formato del registro por diario writeback al volumen lógico /dev/mapper/vg_01-LogVol0 que correspondería al directorio /var/www del ejemplo anterior:
tune2fs -o journal_data_writeback /dev/mapper/lv_varwww |
En el caso donde se desea cambiar el formato del registro por diario a journal, considerando el ejemplo descrito arriba, donde el volumen lógico /dev/mapper/lv_varlib corresponde al directorio /var/lib, se ejecutaría algo similar a lo siguiente:
tune2fs -o journal_data /dev/mapper/lv_varlib |
Para aplicar los cambios, sin correr el riesgo de reiniciar con errores de sintaxis en el archivo /etc/fstab que impedirían montar las particiones configuradas, asumiendo que el sistema está en el nivel de ejecución 1 (mono-usuario), ejecute umount para desmontar la partición a modificar y posteriormente mount para volver a montarla. Ejemplos:
umount /var/www |
Ejecute mount con 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 revertir el cambio y volver a utilizar el formato ordered, se edita nuevamente el archivo /etc/fstab:
vi /etc/fstab |
Y se elimina la opción data y su valor correspondiente del archivo /etc/fstab:
/dev/mapper/lv_varwww /var/www ext4 defaults 1 2
/dev/mapper/lv_varlib /var/lib ext4 defaults 1 2
|
Ejecute tune2fs con la opción -o y el valor journal_data_ordered y el volumen lógico o partición como argumento. En el siguiente ejemplo se regresa al formato ordered a los volúmenes lógicos de los ejemplos anteriores:
tune2fs -o journal_data_ordered /dev/mapper/lv_varwww tune2fs -o journal_data_ordered /dev/mapper/lv_varlib |
Para aplicar los cambios, sin correr el riesgo de reiniciar con errores de sintaxis en el archivo /etc/fstab que impedirían montar las particiones configuradas, asumiendo que el sistema está en el nivel de ejecución 1 (mono-usuario), ejecute umount utilizando como argumento el nombre del punto de montaje de la partición involucrada para desmontar ésta y posteriormente utilice mount para volver a montarla. Ejemplos:
umount /var/www |
En CentOS 6, versiones recientes de Fedora™ y 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 desempeño que Ext3. Si sólo se necesita hacer pruebas, es posible montar una partición Ext3 como si fuese Ext4, modificando el archivo /etc/fstab, aunque se carecerá de muchas de las mejoras de Ext4.
CentOS 5.5 y versiones posteriores incluyen el soporte necesario para convertir al formato Ext4 las particiones Ext3 preservando los datos originales en el sistema de archivos, con la única restricción de que jamás se deberá convertir a Ext4 las particiones que correspondan /boot y / debido a que en CentOS 5 y Red Hat™ Enterprise Linux 5 el gestor de arranque carece de soporte para iniciar desde particiones Ext4.
Es muy importante realizar un respaldo de información relevante antes de proceder, por si acaso algo saliese mal.. Si se utiliza CentOS 5 o Red Hat™ Enterprise Linux 5, jamás se deben convertir a Ext4 las particiones que correspondan a /boot y /.
En CentOS 5 o Red Hat™ Enterprise Linux 5, para poder utilizar el formato Ext4 en cualquier otra partición, 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— sólo será necesario editar el archivo /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 archivo /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 ejecutar tune4fs con las opciones -O extents,uninit_bg,dir_index. En el siguiente ejemplo ejecuta tune4fs a la partición /dev/sda7, que correspondería a /tmp, para convertirla a Ext4.
umount /tmp |
Ejecute fsck.ext4 para verificar el sistema de archivos de la partición y así completar los cambios necesario. Ejecute fsck.ext4 con las opciones -fyD (forzar verificación, contestar si a todas las modificaciones necesarias y optimizar directorios).
fsck.ext4 -fyD /dev/sda7 |
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 o bien un disco de rescate. 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 utilizando tune2fs y carece de tune4fs. Por tanto, el intérprete de mandatos del modo de rescate del disco de instalación de CentOS 5.5 sólo permitirá verificar y reparar particiones Ext4 a través de fsck.ext4.
En el archivo /etc/fstab se reemplaza LABEL=/tmp por el nombre real del dispositivo y ext3 por ext4.
LABEL=/ / ext3 defaults 1 1
LABEL=/boot /boot ext3 defaults 1 2
/dev/sda7 /tmp ext4 defaults 1 2
LABEL=SWAP-hda3 swap swap defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
|
Ext4 utiliza UUID (Universally Unique Identifier o Identificador Universalmente Único) en lugar de etiquetas. El UUID se puede determinar ejecutando blkid del siguiente modo:
blkid /dev/sda7 |
Lo cual devolvería algo similar a lo siguiente:
/dev/sda7: LABEL="/tmp" UUID="238e532b-250c-4a80-87a3-3aecc9715795" TYPE="ext4"
|
Con esta información, el archivo /etc/fstab quedaría del siguiente modo:
LABEL=/ / ext4 defaults 1 1
LABEL=/bot /boot ext4 defaults 1 2
LABEL=/home /home ext4 defaults 1 2
UUID=238e532b-250c-4a80-87a3-3aecc9715795 /tmp ext4 defaults 1 2
LABEL=SWAP-sda3 swap swap defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
|
Monte de nuevo la partición.
mount /tmp |
Ext3 utiliza una cartografía de mapas de bits. Ext4 se caracteriza por el uso de extents. Para completar el procedimiento, hay que migrar los archivos y directorios de la partición para que utilicen extents. Los archivos se pueden ir migrando con las subsecuentes escrituras en disco, pero mucho del contenido estático —como binarios y bibliotecas compartidas— pueden pasar meses antes de poder ser convertidos.
Una forma de convertir todo de una vez consiste en ejecutar chattr para añadir el atributo de extents a todos los archivos y directorios de una partición en particular.
find /tmp -xdev -type f -print0 | xargs -0 chattr +e |
Desmonte de nuevo la partición.
umount /tmp |
Con la finalidad de prevenir cualquier problema, vuelva a verificar la partición.
fsck.ext4 -fyD /dev/sda7 |
Para finalizar el procedimiento, monte de nuevo la partición.
mount /tmp |
Este procedimiento aplica exclusivamente a las particiones con formato Ext4. El formato Ext3 carece de soporte para funcionar sin registro por diario.
Eliminar el registro por diario implica perder la tecnología lo 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. Sólo se recomienda eliminar el registro por diario en los casos donde se dispone de un sistema operativo estable, un buen respaldo de energía —equipos portátiles y ultra-portátiles— y se tienen particiones asignadas a directorios donde la información es poco relevante —como /tmp, /var/tmp o /var/cache. Este procedimiento está totalmente contraindicado en servidores o bien 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, sólo 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 relevante antes de proceder, por si acaso algo saliese mal..
Asumiendo que se dispone de una partición /dev/sda7, que en el ejemplo corresponde a /tmp, que fue previamente convertida a Ext4, utilizando el método descrito en este mismo documento o bien que ya tiene formato Ext4, se debe desmontar la partición:
umount /tmp |
Para eliminar el registro por diario de la partición /dev/sda7 en CentOS 5 o Red Hat™ Enterprise Linux 5, se requiere ejecutar tune4fs, de la siguiente forma:
tune4fs -O ^has_journal /dev/sda7 |
Para eliminar el registro por diario de la partición /dev/sda7 en CentOS 6 o Red Hat™ Enterprise Linux 6, se requiere ejecutar tune2fs, de la siguiente forma:
tune2fs -O ^has_journal /dev/sda7 |
El símbolo ^ (acento circunflejo) significa que se elimina una opción. En este caso la opción eliminada fue has_journal, que es las responsable del registro por diario.
Sin importar la versión de sistema operativo, se requiere realizar varias modificaciones al sistema de archivos a través de ejecutar fsck con las opciones -pDf para reparar automáticamente lo que sea necesario y que prescinda de interacción humana, optimizar re-ordenando directorios y forzar verificación.
fsck.ext4 -pDf /dev/sda7 |
Eliminar el registro por diario de una partición ext4 hace que irremediablemente sea imposible leer el UUID de la partición, por lo cual invariablemente hay que editar el archivo /etc/fstab y establecer el nombre real del dispositivo en lugar del UUID:
LABEL=/ / ext3 defaults 1 1
LABEL=/boot /boot ext3 defaults 1 2
/dev/sda7 /tmp ext4 defaults 1 2
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
LABEL=SWAP-hda3 swap swap defaults 0 0
|
El procedimiento concluye una vez modificado el archivo /etc/fstab. Vuelva a montar la partición para verificar que todo funcione correctamente.
mount /tmp |
La mejoría será apenas perceptible, pero brindará el máximo rendimiento posible para el sistema de archivos Ext4, superando incluso el desempeño en cuanto a velocidad de Ext2.
En un equipo con una partición /tmp con registro por diario y la misma partición /tmp sin registro por diario, la escritura de 1 GB de información demoró lo siguiente:
/tmp con registro por diario |
real 0m9.796s |
/tmp sin registro por diario |
real 0m8.978s |
La diferencia puede ser muy poca pero sí significativa.
En el dado caso que se quiera volver a utilizar el registro por diario, sólo basta con volver a iniciar con el disco vivo, abrir una terminal y ejecutar lo siguiente.
su -l |
Última Edición: 10/06/2014, 17:14| Hits: 70,408