Ext4

ext4
Desarrollador Mingming Cao, Dave Kleikamp, Alex Tomas, Andrew Morton, y otros
Nombre completo Fourth extended file system
Sistemas operativos compatibles Linux
Introducción 10 de octubre de 2006 ( Linux 2.6.19)
Identificador de la partición 0x83 ( MBR)
EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 (GPT)
Estructuras
Contenido del directorio Tabla, Árbol
Localización de archivo bitmap (espacio libre), table (metadatos)
Bloques malos Tabla
Límites
Máxima dimensión de archivo 16 TiB (usando bloques de 4k )
Máximo número de archivos 4 mil millones (4x10⁹) (especificado en el tiempo de creación del sistema de archivos)
Tamaño máximo del nombre de archivo 256 bytes
Tamaño máximo del volumen 1024 PiB = 1 EiB
Caracteres permitidos en nombres de archivo Todos los bytes excepto NULL y '/'
Características
Fechas registradas modificación (mtime), modificación de atributo (ctime), acceso (atime), borrado (dtime), creación (crtime)
Rango de fecha 14 de diciembre de 1901 - 25 de abril de 2514
Bifurcaciones No
Atributos extents, noextents, mballoc, nomballoc, delalloc, nodelalloc, data=journal, data=ordered, data=writeback, commit=nrsec, orlov, oldalloc, user_xattr, nouser_xattr, acl, noacl, bsddf, minixdf, bh, nobh, journal_dev
Permisos de acceso a archivos POSIX
Compresión transparente No
Cifrado transparente No
[ editar datos en Wikidata]

ext4 (fourth extended filesystem o «cuarto sistema de archivos extendido») es un sistema de archivos transaccional (en inglés journaling), anunciado el 10 de octubre de 2006 por Andrew Morton, como una mejora compatible de ext3. El 25 de diciembre de 2008 se publicó el kernel Linux 2.6.28, que elimina ya la etiqueta de "experimental" de código de ext4.

Las principales mejoras son:

  • Soporte de volúmenes de hasta 1024 PiB.
  • Soporte añadido de extent.
  • Menor uso del CPU.
  • Mejoras en la velocidad de lectura y escritura.

Mejoras

Sistema de archivos de gran tamaño

El sistema de archivos ext4 es capaz de trabajar con volúmenes de gran tamaño, hasta 1 exbibyte[1] y ficheros de tamaño de hasta 16 TiB.

Extents

Los extents han sido introducidos para reemplazar al tradicional esquema de bloques usado por los sistemas de archivos ext2/3. Un extent es un conjunto de bloques físicos contiguos, mejorando el rendimiento al trabajar con ficheros de gran tamaño y reduciendo la fragmentación. Un extent simple en ext4 es capaz de mapear hasta 128 MiB de espacio contiguo con un tamaño de bloque igual a 4 KiB.[2]

Compatibilidad hacia adelante y hacia atrás

Cualquier sistema ext3 existente puede ser montado como ext4 sin necesidad de cambios en el formato del disco. También es posible actualizar un sistema de archivos ext3 para conseguir las ventajas del ext4 ejecutando un par de comandos. Esto significa que se puede mejorar el rendimiento, los límites de almacenamiento y las características de sistemas de archivos ext3 sin reformatear y/o reinstalar el sistema operativo. Si se requiere de las ventajas de ext4 en un sistema de producción, se puede actualizar el sistema de archivos. El procedimiento es seguro y no existe riesgo para los datos (aunque siempre es recomendado hacer un respaldo de la información crítica). Ext4 usará la nueva estructura de datos sólo para la información nueva. La estructura antigua será conservada sin modificación y será posible leerla y/o modificarla cuando sea necesario. Esto significa que si se convierte un sistema de archivos a ext4 no se podrá regresar a ext3 de nuevo.[3]

El uso de extents está fijado por defecto desde la versión del kernel 2.6.23. Anteriormente, esta opción requería ser activada explícitamente (por ejemplo mount /dev/sda1 /mnt/point -t ext4dev -o extents).

Asignación persistente de espacio en el disco

El sistema de archivos ext4 permite la reserva de espacio en disco para un fichero. Hasta ahora la metodología consistía en rellenar el fichero en el disco con ceros en el momento de su creación. Esta técnica no es ya necesaria con ext4, ya que una nueva llamada del sistema "preallocate()" ha sido añadida al kernel Linux para uso de los sistemas de archivos que permitan esta función. El espacio reservado para estos ficheros quedará garantizado y con mucha probabilidad será contiguo. Esta función tiene útiles aplicaciones en streaming y bases de datos.

Asignación retrasada de espacio en el disco

Ext4 hace uso de una técnica de mejora de rendimiento llamada Allocate-on-flush, también conocida como reserva de memoria retrasada. Consiste en retrasar la reserva de bloques de memoria hasta que la información esté a punto de ser escrita en el disco, a diferencia de otros sistemas de archivos, los cuales reservan los bloques necesarios antes de ese paso. Esto mejora el rendimiento y reduce la fragmentación al mejorar las decisiones de reserva de memoria basada en el tamaño real del fichero.

Límite de 32000 subdirectorios superado

En ext3 el nivel de profundidad en subdirectorios permitido estaba limitado a 32000. Este límite ha sido aumentado a 64000 en ext4, permitiendo incluso ir más allá de este límite (haciendo uso de "dir_nlink"). Para permitir un rendimiento continuo, dada la posibilidad de directorios mucho más grandes, htree está activado por defecto en ext4. Esta función está implementada desde la versión 2.6.23. htree está también disponible en ext3 cuando la función dir_index está activada.

Journal checksumming

ext4 usa checksums en el registro para mejorar la fiabilidad, puesto que el journal es uno de los ficheros más utilizados en el disco. Esta función tiene un efecto colateral beneficioso: permite de forma segura evitar una lectura/escritura de disco durante el proceso de registro en el journal, mejorando el rendimiento ligeramente. La técnica del journal checksumming está inspirada en la investigación de la Universidad de Wisconsin en sistemas de archivos IRON (Sección 6, bajo el nombre "checksums de transacciones").[4]

Desfragmentación en línea

Incluso haciendo uso de diversas técnicas para evitar la fragmentación, un sistema de larga duración tiende a fragmentarse con el tiempo. Ext4 dispondrá de una herramienta que permite desfragmentar ficheros individuales o sistemas de ficheros enteros sin desmontar el disco.[5]

comparativa entre ext3 y ext4.

Comprobación del sistema de ficheros más rápido

En ext4, los grupos de bloques no asignados y secciones de la tabla de inodos están marcados como tales. Esto permite a e2fsck saltárselos completamente en las comprobaciones y en gran medida reduce el tiempo requerido para comprobar un sistema de archivos del tamaño para el que ext4 está preparado. Esta función está implementada desde la versión 2.6.24 del kernel Linux.

Asignador multibloque

Ext4 asigna múltiples bloques para un fichero en una sola operación, lo cual reduce la fragmentación al intentar elegir bloques contiguos en el disco. El asignador multibloque está activo cuando se usa 0_DIRECT o si la asignación retrasada está activa. Esto permite al fichero tener diversos bloques "sucios" solicitados para escritura al mismo tiempo, a diferencia del actual mecanismo del kernel de solicitud de envío de cada bloque al sistema de archivos de manera separada para su asignación.

Timestamps mejorados

Puesto que los ordenadores se tornan en general cada vez más rápidos y que Linux está pasando a ser cada vez más usado en aplicaciones críticas, la granularidad de los timestamps basados en segundos se está volviendo insuficiente. Para resolver esto, ext4 tendrá timestamps medidos en nanosegundos. Ésta función está actualmente implementada en la versión 2.6.23 del kernel. Adicionalmente se han añadido 2 bits del timestamp extendido a los bits más significativos del campo de segundos de los timestamps para retrasar casi 500 años el problema del año 2038.

Other Languages
العربية: إكس تي 4
català: Ext4
čeština: Ext4
Deutsch: Ext4
English: Ext4
Esperanto: Ext4
eesti: Ext4
euskara: Ext4
français: Ext4
עברית: Ext4
italiano: Ext4
日本語: Ext4
한국어: Ext4
Nederlands: Ext4
norsk bokmål: Ext4
polski: Ext4
português: Ext4
română: Ext4
русский: Ext4
slovenčina: Ext4
svenska: Ext4
Türkçe: Ext4
українська: Ext4
中文: Ext4