Ext4

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 8 de mayo de 2022; las comprobaciones requieren 2 ediciones .

ext4
Desarrollador Mingming Cao, Andreas Dilger, Alex Zhuravlev (Tomas), Dave Kleikamp, ​​Theodore Ts'o, Eric Sandeen, Sam Naghshineh y otros
sistema de archivos Cuarto sistema de archivos extendido
Día de entrega Versión estable:
21 de octubre de 2008
Versión de prueba:
10 de octubre de 2006 ( Linux 2.6.28, 2.6.19)
etiqueta de volumen 0x83 ( MBR )
EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 ( GPT )
Estructura
Contenido de la carpeta Lista enlazada , árbol B [1]
Colocación de archivos Mapa de bits / Extensiones
Malos sectores mesa
Restricciones
Tamaño máximo de archivo 16 tebibytes (tamaño de clúster 4 kibibytes )
Máximo de archivos 4 mil millones (especificado durante la creación del sistema de archivos )
Longitud máxima del nombre de archivo 255 bytes
Tamaño de volumen máximo 1 exbibyte (anteriormente limitado a 16 tebibytes debido a las limitaciones de la versión de e2fsprogs < 1.43, problema resuelto en versiones anteriores)
Caracteres válidos en los títulos todos los bytes excepto NULL y '/'
Capacidades
Propiedades modificación (mtime), modificación de atributo (ctime), acceso (atime), eliminación (dtime), creación (crtime)
Rango de fechas 14 de diciembre de 1901 - 25 de abril de 2514
Precisión de almacenamiento de fecha Segundo nano
Flujos de metadatos No
Atributos extensions, 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
Derechos de acceso POSIX
Compresión de fondo No
Cifrado de fondo No
SO compatible Linux , Windows ( IFS )

ext4 ( en inglés  , cuarto sistema de archivos extendido, ext4fs ) es un sistema de archivos de diario utilizado principalmente en sistemas operativos con un kernel de Linux , creado en base a ext3 en 2006.

Cambios importantes en ext4 en comparación con ext3:

Historia

La primera implementación experimental fue lanzada por Andrew Morton el 10 de octubre de 2006 como un parche para los kernels de Linux versión 2.6.19 [2] .

Características

En comparación con ext3, ext4 tiene más espacio de direcciones y un manejo de datos más rápido.

Sistema de direccionamiento

El sistema de direccionamiento se basa en extensiones .  En ext3, los datos se abordaban de la manera tradicional: bloque por bloque y, por lo tanto, el sistema enfrentaba restricciones significativas a medida que crecía el tamaño de los archivos. Las extensiones permiten abordar una gran cantidad ( hasta 128 MB ) de bloques contiguos con un solo descriptor; Se pueden colocar hasta cuatro punteros de extensión directamente en un inodo , suficiente para archivos de tamaño pequeño a mediano.

Se utilizan números de bloque de 48 bits, con un tamaño de bloque de 4 KB , esto permite direccionar hasta un exbibyte (2 48 ( 4 KB ) = 2 48 (2 2 ) (2 10 ) B = 2 60 B = 1 EB ) .

Bloques y fragmentación

La asignación de bloques en grupos ( asignación de bloques múltiples ) le permite reducir el nivel de fragmentación del sistema de archivos: el sistema almacena información no solo sobre la ubicación de los bloques libres, sino también sobre la cantidad de bloques libres ubicados uno tras otro, por lo que cuando Al asignar espacio, el sistema encuentra un fragmento en el que los datos se pueden escribir sin fragmentación.

La desfragmentación sin desmontar ( desfragmentación en línea ) es compatible con la utilidad e4defrag , suministrada como parte del paquete e2fsprogs desde 2011 [3] .

Grabación grupal de bloques

La asignación retrasada de bloques ( asignación retrasada ) proporciona una escritura directa en el dispositivo de bloques solo cuando es necesario (por ejemplo, durante las llamadas para sincronizar (), pero no con cada llamada para escribir (), lo que le permite escribir bloques no uno a la vez tiempo, pero en grupos, lo que a su vez minimiza la fragmentación y acelera el proceso de asignación de bloques. Por otro lado, existe un mayor riesgo de pérdida de datos en caso de un corte repentino de energía.

Cambios de inodo

Reservar varios inodos al crear un directorio ( eng.  directory inodes reserve ) le permite usar primero los inodos reservados, y solo si no queda ninguno, se realiza el procedimiento habitual para asignar inodos. Se aumentó el tamaño del inodo predeterminado de 128 (ext3) a 256 bytes, lo que permitió implementar sellos de tiempo con precisión de nanosegundos ( sellos de tiempo de nanosegundos  ) y ampliar su rango (en ext3, el límite de fecha es el 18 de enero de 2038, y en ext4 - 25 de abril de 2514 años), agregue un campo de versión de inodo y admita atributos de inodo extendidos. El número de versión de un inodo puede aumentar cada vez que se cambia, en particular si el sistema de archivos está montado con [K. 1] : lo utilizan los daemons NFS versión 4 del sistema de archivos de red (NFSv4) para realizar un seguimiento de los cambios en los archivos.iversion

El almacenamiento de atributos extendidos (EA) en inode , como listas de control de acceso ( ACL ), atributos de SELinux y otros, en una estructura de inodo mejora el rendimiento al eliminar las búsquedas de atributos en otros lugares .  Los atributos para los que no hay suficiente espacio en la estructura del inodo se almacenan en un bloque separado de 4 KB .

Diario y otras funciones

Para las entradas de diario, se implementa el cálculo de sumas de verificación ( en inglés  journal checksumming ), lo que le permite encontrar rápidamente y, en algunos casos, corregir errores del sistema después de una falla.

La preasignación persistente , a diferencia de ext2 y ext3 (donde los programas tenían que escribir cero bytes en el archivo), se implementa como una llamada al sistema fallocate() separada que asigna bloques para el archivo y establece el indicador "lleno con cero bytes" para ellos. Al leer de un archivo, el programa recibirá cero bytes (al igual que cuando lee un archivo disperso ). Al escribir en un archivo, se borrará el indicador "lleno con cero bytes". A diferencia de los archivos dispersos, escribir en un archivo disperso nunca fallará debido a la falta de espacio libre.

Soporte en sistemas operativos

Ext4 ha sido compatible con el kernel de Linux desde la versión 2.6.20. Existen programas y controladores para trabajar con ext4 en Windows : Ext2read (en modo de solo lectura), Ext2Fsd, Paragon ExtFS para Windows.

Muchas distribuciones de Linux usan ext4 como sistema de archivos predeterminado:

  • Ubuntu : desde 9.04 disponible para selección a pedido del usuario, desde 9.10 - por defecto;
  • Debian : desde 6.0: disponible para selección, desde 7.0 - usado por defecto;
  • Fedora  : a partir de 9 está disponible para la selección, de 11 a 32 es el valor predeterminado.
  • OpenSUSE : predeterminado desde 11.2;
  • Mandriva Linux : a partir de la versión 2010 se utiliza por defecto;
  • Red Hat Enterprise Linux : desde la versión 6, por defecto [4] ;
  • PCLinuxOS : predeterminado desde 2010.

El sistema de archivos ext4 ha estado disponible para Android desde la versión 2.3 [5] [6] .

Comentarios

  1. mount -t ext4 /dev/sda2 /mnt/ -o rw,iversion

Notas

  1. Árbol B hash . Consultado el 20 de marzo de 2010. Archivado desde el original el 18 de julio de 2019.
  2. Anuncio oficial de Andrew Morton sobre la inclusión de compatibilidad con ext4  (ing.) ( txt )  (enlace muerto) . Archivado desde el original el 7 de agosto de 2008.
  3. Incluir herramienta de desfragmentación ext4 . Consultado el 26 de agosto de 2014. Archivado desde el original el 27 de agosto de 2014.
  4. 3.1. Soporte para el cuarto sistema de archivos extendido (ext4)  // Notas de la versión 6.0: Notas de la versión para Red Hat Enterprise Linux 6: [ ing. ]  : [ arq. 3 de junio de 2012 ]. — Sombrero rojo, 2010.
  5. Ts'o, Theodore . Android usará ext4 a partir de Gingerbread , Thoughts by Ted  (12 de diciembre de 2010). Archivado desde el original el 15 de diciembre de 2010. Consultado el 20 de diciembre de 2010.
  6. Aspectos destacados de la plataforma Android 2.3  (inglés)  (enlace no disponible) . Desarrolladores de Android (6 de diciembre de 2010). Fecha de acceso: 7 de diciembre de 2010. Archivado desde el original el 21 de enero de 2012.

Enlaces

  • Ext4 (y Ext2/Ext3) Wiki  (inglés) ( wiki )  (enlace no disponible) . kernel.org . Consultado el 29 de mayo de 2010. Archivado desde el original el 19 de mayo de 2012.
  • Proyecto de desarrollo Ext4  (inglés)  (enlace no disponible) . bullopensource.org . - Página de proyecto para el desarrollo del sistema de archivos ext4 (desde 2009 esta página ya no se mantiene) . Fecha de acceso: 29 de mayo de 2010. Archivado desde el original el 21 de enero de 2012.
  • ext4 ( wiki )  (enlace no disponible) . xgu.ru._ _ - una descripción detallada de las ventajas de ext4 en comparación con ext3. Fecha de acceso: 29 de mayo de 2010. Archivado desde el original el 21 de enero de 2012.
  • "Entrevista sobre el estado del soporte de ext4 en Fedora 9" (enlace roto) . linux.org.ru (12 de marzo de 2008). - noticias y discusión sobre ENT . Fecha de acceso: 29 de mayo de 2010. Archivado desde el original el 21 de enero de 2012. 
  • Rodrigo Smith. "IBM: Transición a ext4" (enlace no disponible) . IBM DeveloperWorks (20 de noviembre de 2008). - Preparación para el último sistema de archivos para Linux. Fecha de acceso: 29 de mayo de 2010. Archivado desde el original el 21 de enero de 2012. 
  • Jeremy Andrews. "ext4 2.6.25 Merge Planes" (enlace descendente) (22 de enero de 2008). Fecha de acceso: 29 de mayo de 2010. Archivado desde el original el 21 de enero de 2012. 
  • Jonathan Corbet. "A better ext4" (enlace no disponible) (23 de enero de 2008). Fecha de acceso: 29 de mayo de 2010. Archivado desde el original el 21 de enero de 2012. 
  • Theodore Ts'o. "planes de fusión ext4 para 2.6.25" (enlace descendente) (21 de enero de 2008). Fecha de acceso: 29 de mayo de 2010. Archivado desde el original el 21 de enero de 2012. 
  • Jonathan Corbet. "¿Tiempo para ext4?" (enlace no disponible) (12 de junio de 2006). Fecha de acceso: 29 de mayo de 2010. Archivado desde el original el 21 de enero de 2012. 
  • Ext4: La próxima generación de Ext2/3
  • Features/Ext4 ( wiki )  (enlace no disponible) . Proyecto Fedora . Fecha de acceso: 29 de mayo de 2010. Archivado desde el original el 21 de enero de 2012.
  • Jonathan Corbet. "Linux Weather Forecast/filesystems" (enlace descendente) (26 de enero de 2009). - una descripción general de muchos sistemas de archivos nuevos en Linux, incluido ext4 y pronósticos de lo que les espera. Fecha de acceso: 29 de mayo de 2010. Archivado desde el original el 15 de abril de 2009. 
  • Avantika Mathur, Mingming Cao, Andreas Dilger. "ext4: la próxima generación del sistema de archivos ext3" (enlace descendente) . Publicado originalmente en "login: The USENIX Magazine", 32, #3 (Berkeley, CA: USENIX Association, 2007) (2007). — una explicación muy detallada de cada nueva característica de ext4. Fecha de acceso: 29 de mayo de 2010. Archivado desde el original el 21 de enero de 2012. 
  • Primeros benchmarks del sistema de archivos ext4 (enlace no disponible) . linuxinsight.com (21 de octubre de 2006). - Probando las características de ext4 . Fecha de acceso: 29 de mayo de 2010. Archivado desde el original el 21 de enero de 2012.