Sistema de archivos ext4

GNU/Linux filesystem

El cuarto sistema de archivos extendido denominado ext4 (en inglés: fourth extended filesystem), es un sistema de archivos con bitácora (en inglés: Journaling)que fue concebida como una mejora compatible de ext3. Ext4 fue publicado como estable el 25 de diciembre de 2008 en la versión 2.6.28 del núcleo Linux y desde entonces se encuentra disponible para el uso en sistemas de producción.

Mejoras con respecto a ext3 y ext2

El sistema de archivos ext4 es una notable mejora sobre ext3 mucho mas de la que fue ext3 sobre ext2. La mayor mejora del sistema de archivos ext3 sobre ext2 fue añadir el soporte de jornaling (bitácoras). En cambio ext4 modifica importantes estructuras de datos del sistema de archivo tales como aquellas destinadas a almacenar los archivos de datos. El resultado es un sistema de archivos con un mejorado diseño, mejores características, rendimiento y confiabilidad.

Características principales

  • Soporte de volúmenes de hasta 1 exabyte (260 bytes) y archivos con tamaño hasta 16 terabytes.
  • Capacidad de reservar un área contigua para un archivo denominada "extents", la cual puede reducir y hasta eliminar completamente la fragmentación de archivos.
  • Menor uso del CPU.
  • Mejoras en la velocidad de lectura y escritura.

Opciones de configuración del núcleo Linux

Enable the block layer --->
     --- Enable the block layer
     [*]   Support for Large single files

File systems  --->
     <*> The Extended 4 (ext4) filesystem
     [*]   Enable ext4dev compatibility
     [*]   Ext4 extended attributes
     [*]     Ext4 POSIX Access Control Lists
     [*]     Ext4 Security Labels

Creando un nuevo sistema de archivos con ext4

Un nuevo sistema de archivos ext4 puede ser creado mediante el siguiente comando:

mkfs.ext4 /dev/device

Donde "device" representa el nombre del dispositivo por bloques donde se creará el sistema de archivos ext4

Convirtiendo un sistema de archivos ext3 existente a ext4

Para habilitar las características de ext4 en un sistema de archivos existente ext3, use el siguiente comando:

# tune2fs -O extents,uninit_bg,dir_index /dev/device

ATENCIÓN: una vez ejecutado este comando, el sistema de archivos ya no podrá ser montado como uno ext3.

Después de ejecutar este comando, debe correr fsck para arreglas alguna de las estructuras que tune2fs ha modificado:

# e2fsck -fD /dev/device

Debe tenerse en cuenta que para verificar el sistema de archivos de una partición correctamente, esta debe ser desmontada. Esto podría representar un problema si se trata de la partición raíz ("/"), en cuyo caso es recomendable configurar el archivo /etc/fstab de la siguiente manera y luego reiniciar el sistema para que la verificación se lleve a cabo automáticamente:

# < fs >      < mountpoint >  < type >  < opts >    < dump/pass >
/dev/device         /           ext4    relatime         0 1

Algunas consideraciones

Al habilitar la nueva característica extents los nuevos archivos seran creados con el formato extents, pero esto no convertirá a los archivos existentes para utilizar extents. Sin embargo los archivos no extents podrán ser leídos y escritos con transparencia por ext4.

No esta recomendado redimensionar el tamaño de los inodos utilizando reizer2fs con la versión e2fsprogs 1.41.0 o una posterior, ya que es conocido que esto puede corromper algunos sistemas de archivos.

Soporte ext4 en GRUB

Si la raíz del sistema ("/") es convertida a ext4, y se utiliza GRUB como cargador de arranque, deberá actualizarse GRUB a una versión que soporte ext4. Sin esta actualización el sistema podría iniciarse correctamente la primera vez, pero cuando el núcleo Linux sea actualizado, este no volverá a iniciarse.

GRUB cuenta con soporte para el sistema de archivos ext4 a partir de la versión 0.97.

En el portage de Gentoo existe grub-0.97-r9, el cual está con enmascarado débil. Para desenmascararlo debe ejecutar la siguiente sentencia desde un shell:

echo "=sys-boot/grub-0.97-r9 ~arch" >> /etc/portage/package.keywords

Donde "arch" representa alguna de las siguientes arquitecturas (según corresponda en su sistema):

alpha
amd64
hppa
ia64
ppc
ppc64
sparc
x86

Más información sobre ext4

Linux Kernel newbies: http://kernelnewbies.org/Ext4

Wikipedia: http://en.wikipedia.org/wiki/Ext4

Ext4 How-To: http://ext4.wiki.kernel.org/index.php/Ext4_Howto