Ir al contenido
Menú principal
Menú principal
mover a la barra lateral
ocultar
Navegación
Página principal
Cambios recientes
Página aleatoria
Ayuda sobre MediaWiki
Buscar
Buscar
español
Apariencia
Crear una cuenta
Acceder
Herramientas personales
No has accedido
Discusión
Contribuciones
Crear una cuenta
Acceder
Edición de «
Ext4
»
Página
Discusión
español
Leer
Editar
Editar código
Ver historial
Herramientas
Herramientas
mover a la barra lateral
ocultar
Acciones
Leer
Editar
Editar código
Ver historial
General
Lo que enlaza aquí
Cambios relacionados
Información de la página
Apariencia
mover a la barra lateral
ocultar
Advertencia:
no has iniciado sesión. Tu dirección IP se hará pública si haces cualquier edición. Si
inicias sesión
o
creas una cuenta
, tus ediciones se atribuirán a tu nombre de usuario, además de otros beneficios.
Comprobación antispam. ¡
No
rellenes esto!
{{Título en minúscula}} {{Infobox filesystem | name = ext4 | full_name = Fourth extended file system | developer = Mingming Cao, Dave Kleikamp, Alex Tomas, [[Andrew Morton (computer programmer)|Andrew Morton]], y otros | introduction_os = [[Linux (núcleo)|Linux]] 2.6.19 | introduction_date = 10 de octubre de 2006 | partition_id = 0x83 ([[Master Boot Record|MBR]]) <br /> EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 (GPT) | directory_struct = Tabla, Árbol | file_struct = bitmap (espacio libre en mapa de bits), tabla (metadatos) | bad_blocks_struct = Tabla | max_volume_size = 1024 [[pebibyte|PiB]] = 1 [[exbibyte|EiB]] | max_file_size = 16 [[tebibyte|TiB]] (usando bloques de 4k ) | filename_character_set = Todos los bytes excepto NULL y '/' | OS = [[Linux]] | max_filename_size = 255 bytes | max_files_no = 4 mil millones (4x10⁹) (especificado en el tiempo de creación del sistema de archivos) | dates_recorded = modificación (mtime), modificación de atributo (ctime), acceso (atime), borrado (dtime), creación (crtime) | date_range = 14 de diciembre de 1901 - 10 de mayo de 2446 | forks_streams = No | attributes = 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 | file_system_permissions = [[POSIX]] | compression = No | encryption = Sí, desde núcleo Linux 4.1 (junio de 2015) }} '''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 (programador de software)|Andrew Morton]], como una mejora compatible de [[ext3]]. El 25 de diciembre de 2008 se publicó el [[Linux (núcleo)|núcleo 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 [[pebibyte|PiB]]. * Soporte añadido de ''[[Ext4#Extents|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]]<ref>{{cita web |título=Migrating to Ext4 |url=http://www.ibm.com/developerworks/linux/library/l-ext4/ |fechaacceso=14 de diciembre de 2008 |urlarchivo=https://web.archive.org/web/20081201104450/http://www.ibm.com/developerworks/linux/library/l-ext4/ |fechaarchivo=1 de diciembre de 2008 }}</ref> y ficheros de tamaño de hasta 16 [[tebibyte|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 de un sistema de ficheros|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.<ref>{{enlace roto|1={{cita web |título=Ext4 overview |url=https://ols2006.108.redhat.com/2007/Reprints/mathur-Reprint.pdf |fechaacceso=15 de enero de 2008 }} |2=https://ols2006.108.redhat.com/2007/Reprints/mathur-Reprint.pdf |bot=InternetArchiveBot }}</ref> === 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.<ref name="Ext4 Howto">[https://ext4.wiki.kernel.org/index.php/Ext4_Howto Ext4 Howto]</ref> El uso de extents está fijado por defecto desde la versión del núcleo 2.6.23. Anteriormente, esta opción requería ser activada explícitamente (por ejemplo <code>mount /dev/sda1 /mnt/point -t ext4dev -o extents</code>). === 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 núcleo 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 de un sistema de ficheros|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]] un directorio tenía limitado el número de subdirectorios a 32000. Este límite en un mismo directorio 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 [[checksum]]s 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").<ref>{{Cita publicación |url=http://www.cs.wisc.edu/wind/Publications/iron-sosp05.pdf |title=IRON File Systems |author=Vijayan Prabhakaran, ''et al'' |publisher=CS Dept, University of Wisconsin |format=PDF}}</ref> === 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 dispone de una herramienta que permite [[Desfragmentación|desfragmentar]] ficheros individuales o sistemas de ficheros enteros sin desmontar el disco.<ref>http://kernelnewbies.org/Ext4#head-38e6ac2b5f58f10989d72386e6f9cc2ef7217fb0</ref> [[Archivo:Tabla ext3 ext4.png|thumb|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 núcleo 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 núcleo 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á [[timestamp]]s medidos en nanosegundos. Ésta función está actualmente implementada en la versión 2.6.23 del núcleo. 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]]. == Opciones de montaje == === Por defecto === {| class="wikitable sortable" style="width: auto; text-align: left; font-size: auto; table-layout: fixed;" ! Opción ! Características |- |data=ordered | Todo los datos son forzados fuera del sistema de archivos principal antes de enlazarlos con los metadatos del journal |- |commit=nrsec | Se le puede decir a ext3 que sincronize todos los datos y metadatos cada "nrsec" segundos. El valor por defecto son 5 segundos. Esto quiere decir que si hay una caída de energía, se perderán, como mucho 5 segundos de trabajo (el sistema de ficheros no se verá dañado gracias al journaling). Este valor por defecto (o cualquiera inferior) repercutirá en el rendimiento, pero es adecuado para proteger los datos. Mientras mayor sea el número mejor será el rendimiento del sistema. Ponerlo a 0 tendrá el mismo efecto que el valor por defecto. |- |barrier=<0|1(*)> |Activa / desactiva el uso de barreras en el código jbd. Barrier= 0 Lo desactiva, Barrier = 1 lo activa. También requiere un IO que soporte barreras, y si el jbd coge un error en la escritura en una barrera, se desactivara con una advertencia... |- |orlov |Esta opción activa el nuevo sistema Orlov de asignación de bloques de disco duro. |- |bsddf |Hace que el comando "df" funcione como en sistemas BSD. |- |data_err=ignore |Tan sólo muestra un mensaje de error si ha ocurrido un error en el buffer de un fichero en modo "ordenado" |- |nogrpid/sysvgroups |Les da a los objetos el mismo ID de grupo que a su creador. |- |bh/nobh |Ext3 relaciona los buffer heads a páginas de datos y a * Información del mapeo de la caché. * Linka páginas en transacciones para asegurar el orden. ** La opción "bh" fuerza al sistema a usar buffer heads. ** La opción "nobh" trata de evitar asociar buffer heads (disponible sólo para el modo "writeback"). |- |delalloc |Aplaza la escritura de bloques hasta que se esté en el tiempo de escritura. |} === No por defecto === {| class="wikitable sortable" style="width: auto; text-align: left; font-size: auto; table-layout: fixed;" ! Opción ! Características |- | ro | Permitir sólo lectura |- | journal_checksum | Sumas de comprobación de los ficheros para mejorar su fiabilidad. |- | journal_async_commit | Añadir asíncronamente las sumas de comprobación de los ficheros. |- | journal=update | Actualiza el «journal» del sistema de ficheros de ext3 al formato actual. |- | journal_dev=devnum | Cuando cambian los valores mínimos y/o máximos del journal de dispositivos externos, esta opción le permite al usuario especificar la nueva localización del «journal». El dispositivo «journal» es identificado por sus nuevos números mínimos y máximos codificados en «devnum». |- | noload | No carga el «journal» al montar la unidad. |- | data=journal | Todos los datos son introducidos en el «journal» antes de empezar a escribir en el sistema de ficheros principal. |- | data=writeback | No se guarda el orden de los datos, los datos pueden ser escritos en el sistema de ficheros principal después de que sus metadatos hayan sido introducidos en el «journal». |- | oldalloc | Esta opción deshabilita el sistema «Orlov» de asignación de bloques de disco duro. |- | user_xattr | Habilita los «Atributos Extendidos de Usuario». También se debe tener habilitada la opción de atributos extendidos habilitadas en el núcleo (CONFIG_EXT3_FS_XATTR). |- | nouser_xattr. | Deshabilita los «Atributos Extendidos de Usuario». |- | acl | Habilita el soporte a la «Lista de Acceso de Control» POSIX. También se tendrá que tener habilitado el soporte ACL en el núcleo (CONFIG_EXT3_FS_POSIX_ACL) |- | noacl | Deshabilita el soporte a la «Lista de Acceso de Control» POSIX. |- | reservation | Reserva de inodos |- | noreservation | No reserva de inodos |- | minixdf | Hace que «df» actúe como en sistemas Minix. |- | debug | La información acerca de la depuración de programas se envía al registro del sistema (syslog). |- | errors=remount-ro | Cuando se encuentra un error, el ordenador monta el sistema como sólo lectura, «read-only». |- | errors=continue | Cuando se encuentra un error, el ordenador continúa trabajando. |- | errors=panic | Cuando se encuentra un error, el ordenador pasa a estado «panic», deteniendo el sistema. |- | data_err=abort | Aborta el «journal» si ocurre un error en el buffer de un fichero en modo «ordenado». |- | grpid/bsdgroups | Le da a los objetos la misma ID de grupo que a su creador. |- | resgid=n | El ID de grupo que deberán usar los bloques reservados. |- | resuid=n | El ID del usuario que deberán usar los bloques reservados. |- | sb=n | Usa superbloques alternativos en la posición «n». |- | quota | |- | noquota | |- | grquota | |- | usrquota | |- | stripe=n | Número de bloques del sistema de archivos que el mballoc (asignador multibloque) intentara usar para la asignación de tamaño y la alineación. Para sistemas RAID 5 o 6 debe ser el número de discos de datos. |- | max_batch_time=usec | |- | min_batch_time=usec |- | journal_ioprio=prio | La prioridad de I/O (desde 0 a 7, donde 0 es la máxima prioridad) que será usada por las operaciones de entrada y salida proporcionadas por «kjournald2» durante una operación de subida. Por defecto está a 3. |} == Referencias == {{listaref}} == Véase también == * [[Extended file system|ext]] * [[ext2]] * [[ext3]] * [[Btrfs]] * [[Sistema de archivos]] {{Control de autoridades}} [[Categoría:Sistemas de archivos]] [[Categoría:Sistemas de archivos de Linux]] [[Categoría:Acrónimos de informática]]
Resumen:
Al guardar los cambios aceptas los
términos de uso
y liberas de forma irrevocable tu contribución conforme a los términos de las licencias
licencia CC BY-SA 4.0
y
GFDL
. Aceptas igualmente que un hipervínculo o URL es atribución suficiente conforme a la licencia Creative Commons.
Cancelar
Ayuda de edición
(se abre en una ventana nueva)
Buscar
Buscar
Edición de «
Ext4
»
Añadir idiomas
Añadir tema