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:
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] .
En comparación con ext3, ext4 tiene más espacio de direcciones y un manejo de datos más rápido.
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 ) .
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 bloquesLa 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 inodoReservar 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 funcionesPara 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.
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:
El sistema de archivos ext4 ha estado disponible para Android desde la versión 2.3 [5] [6] .
Sistemas de archivos ( lista , comparación ) | |||||||
---|---|---|---|---|---|---|---|
Disco |
| ||||||
Distribuido (red) | |||||||
Especial |
|