# Ext3

ext3 (third extended filesystem o "tercer sistema de archivos extendido") es un sistema de archivos con registro por diario (journaling). Fue el sistema de archivos más usado en distribuciones Linux, aunque en la actualidad ha sido remplazado por su sucesor, ext4.
La principal diferencia con ext2 es el registro por diario. Un sistema de archivos ext3 puede ser montado y usado como un sistema de archivos ext2. Otra diferencia importante es que ext3 utiliza una variante de árbol b, el árbol HTree e incorpora el asignador de bloques de disco Orlov.

## Ventajas

Aunque su velocidad y escalabilidad es menor que sus competidores, como JFS, ReiserFS o XFS, tiene la ventaja de permitir actualizar de ext2 a ext3 sin perder los datos almacenados ni tener que formatear el disco. Tiene un menor consumo de CPU y está considerado más seguro que otros sistemas de ficheros en Linux dada su relativa sencillez y su mayor tiempo en uso.
El sistema de archivo ext3 agrega a ext2 lo siguiente:
* Registro por diario.
* Índices en árbol para directorios que ocupan múltiples bloques.
* Crecimiento lineal.

### Límites de tamaño

Ext3 tiene dos límites de tamaño distintos. Uno para archivos y otro para el tamaño del sistema de archivos entero. El límite del tamaño del sistema de archivos es de 2$^{32}$ bloques
| Tamaño del bloque | Tamaño máximo de los archivos | Tamaño máximo del sistema de ficheros |
| 1 KiB | 16 GiB | 2 TiB |
| 2 KiB | 256 GiB | 8 TiB |
| 4 KiB | 2 TiB | 16 TiB |
| 8 KiB | 2 TiB | 32 TiB |
* ↑ 8 KiB el tamaño del bloque solo está disponible en arquitecturas que permitan 8 KiB, como Alpha.

### Niveles del journaling

Hay tres niveles posibles de journaling (registro por diario)

#### Diario (riesgo bajo)

    Los metadatos y los ficheros de contenido son copiados al diario antes de ser llevados al sistema de archivos principal. Como el diario está en el disco continuamente puede mejorar el rendimiento en ciertas ocasiones. En otras ocasiones el rendimiento es peor porque los datos deben ser escritos dos veces, una al diario y otra a la parte principal del sistema de archivos.

#### Pedido (riesgo medio)

    Solo los metadatos son registrados en el diario, los contenidos no, pero está asegurado que el contenido del archivo es escrito en el disco antes de que el metadato asociado se marque como transcrito en el diario. Es el sistema por defecto en la mayoría de las distribuciones de Linux. Si hay un bajón de tensión o kernel Panic cuando el fichero se está escribiendo o está empezando, el diario indicará que el nuevo archivo o el intento no ha sido pasado, por lo que será purgado por el proceso de limpiado.

#### Reescritura (riesgo alto)

    Solo los metadatos son registrados en el diario, el contenido de los archivos no. Los contenidos pueden estar escritos antes o después de que el diario se actualice. Como resultado, los archivos modificados correctamente antes de una ruptura pueden volverse corruptos. Por ejemplo, un archivo pendiente de ser marcado en el diario como mayor de lo que actualmente es, convirtiendo en basura al final de la comprobación. Las versiones antiguas de los archivos pueden aparecer inesperadamente después de una recuperación de diario. La carencia de sincronización entre los datos y el diario es rápidamente subsanada en muchos casos. JFS usa este nivel de journaling, pero se asegura de que cualquier basura es borrada al reiniciar

## Desventajas
### Funcionalidad

Como ext3 está hecho para ser compatible con ext2, la mayoría de las estructuras del sistema de archivos son similares a las del ext2. Por ello, ext3 carece de muchas características de los diseños más recientes como las extensiones, la localización dinámica de los inodos, y la sublocalización de los bloques. Hay un límite de 31998 subdirectorios por cada directorio, que se derivan de su límite de 32000 enlaces por inodo. Ext3, como la mayoría de los sistemas de archivos actuales de Linux, no puede ser chequeado por el fsck mientras el sistema de archivos está montado para la escritura. Si se intenta chequear un sistema de ficheros que está montado puede detectar falsos errores donde los datos no han sido volcados al disco todavía, y corromper el sistema de archivos al intentar arreglar esos errores.

### Fragmentación

No hay herramienta de desfragmentación en línea para ext3 que funcione en nivel del sistema de archivos. Existe un desfragmentador offline para ext2, e2defrag, pero requiere que el sistema de archivos ext3 sea reconvertido a ext2 antes de iniciarse. Además, dependiendo de los bits encendidos en el sistema, e2defrag puede destruir datos. No sabe cómo tratar la mayoría de las nuevas características de ext3. Hay herramientas de usuario para desfragmentar como Shake y Defrag. Shake trabaja localizando para todo el archivo como una operación, lo que generalmente causa que el localizador encuentre espacio continuo en el disco. También intenta escribir archivos usados al mismo tiempo que otros. Defrag trabaja copiando cada archivo sobre sí mismo. De todas formas solo funcionan si el sistema de archivos esta razonablemente vacío. No existe una verdadera herramienta de desfragmentación para ext3. Como se viene diciendo, la guía de administración de Linux dice: "Los modernos sistemas de archivos de Linux mantienen la fragmentación al mínimo manteniendo los bloques de un archivo juntos, aunque no puedan ser guardados en sectores consecutivos. Algunos sistemas de archivos, como ext3, localizan efectivamente los bloques libres más cercanos a otros en el archivo. Por ello no es necesario preocuparse por la fragmentación en un sistema de Linux" Mientras ext3 es más resistente a la fragmentación que Fat, nada evita que los sistemas ext3 se puedan fragmentar con el tiempo. Consecuentemente el sucesor de ext3, ext4, incluye una utilidad de desfragmentación y soporte para extensiones (regiones contiguas del fichero).

### Compresión

El soporte para la compresión está disponible como un parche no oficial para ext3. Este parche es un porte directo de e2compr pero necesita un mayor desarrollo ya que todavía no implementa el journaling. El actual parche es llamado e3compr y puede ser bajado aquí:

### No hay comprobación en el diario

Ext3 no hace la suma de verificación cuando está escribiendo en el diario. Si barrier = 1 no está habilitado como una opción de montaje, y si el hardware está escribiendo fuera de orden, se corre el riesgo de una corrupción muy amplia del sistema de archivos en caso de que haya un fallo repentino del hardware.

## Ext3 en Windows

Aunque Windows no tiene un soporte nativo para ext2 ni ext3, pueden instalarse drivers para poder acceder a ese tipo de sistemas de archivos. Se puede instalar en todos los sistemas de windows con arquitectura x86.
Este driver hace que se puedan montar las particiones sin tener que usar programas aparte. Nos muestra el sistema de archivos como si fuese una partición más dentro de windows.
Para bajarse el driver: .
Otra opción es usar un programa para poder ver y copiar los archivos que hay en una partición con ext3 y ext2 pero no monta la partición. El programa es Explore2fs y nos permite:
* Lectura ext2
* Lectura ext3
* Arrastrar y soltar
* Soporte de disquetes de 1440 KiB
* LS120 Floppy Disk Support*
* Soporte de discos ZIP & Jazz
* Soporte de discos USB & CF
* Soporte de CDROM
* Exporta archivo como binario
* Exporta archivo como texto
* Exportar directorio
* Ver y ejecutar archivos
* Soporte para discos duros grandes
* Soporte para archivos grandes
* LVM2, detección de ReiserFS
* Soporte Unicode UTF8
Está disponible para las versiones de windows:
Página principal del programa

## Opciones de montaje
### Por defecto

| 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. |
| 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. |
| errors=remount-ro | Vuelve a montar el sistema de ficheros en modo de sólo lectura tras un error. |
| 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" |
| 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 a) Información del mapeo de la caché. b) 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"). |

### No por defecto

| Opción | - |
| journal=update | Actualiza el journal del sistema de ficheros de ext3 al formato actual. |
| journal=inum | Cuando ya existe un journal, esta opción es ignorada. En cualquier otro caso esta opción especifica el número de inodos que representarán el archivo journal del sistema de ficheros ext3 |
| 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. |
| barrier=1 | Esta opción habilita/deshabilita las barreras. Barrier=0 lo deshabilita y Barrier=1 lo habilita. Si Barrier=0 y el hardware tiene problemas escribiendo en la caché se corre el riesgo de que el sistema de ficheros se corrompa. |
| oldalloc | Esta opción deshabilita el sistema Orlovde asignación de bloques de disco duro. |
| user_xattr | Habilita los Atributos Extendidos de Usuario. También se tendrá que tener habilitada la opción de tener atributos extendidos en el kernel (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 kernel (CONFIG_EXT3_FS_POSIX_ACL) |
| noacl | Deshabilita el soporte a la Lista de Acceso de Control POSIX. |
| reservation |
| noreservation |
| minixdf | Hace que "df" actúe como en sistemas Minix. |
| check=none/nonecheck | No hace comprobaciones extra de los bitmaps al montar la unidad. |
| debug | Información extra sobre la depuración es enviada al registro del sistema (syslog). |
| errors=continue | Continua trabajando si se ha producido un error en el sistema de ficheros. |
| errors=panic | Para el ordenador si ocurre un error. |
| 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 | |

## Ext4

Existe una versión más reciente de este sistema de archivos llamada Ext4 que implementa un gran cantidad de nuevas características
Para hacerse una mejor idea de las diferencias con el sistema de archivos ext4 mirar la siguiente tabla