stringtranslate.com

ext3

ext3 , o tercer sistema de archivos extendido , es un sistema de archivos con registro que se utiliza habitualmente en el núcleo de Linux . Solía ​​ser el sistema de archivos predeterminado para muchas distribuciones populares de Linux . Stephen Tweedie reveló por primera vez que estaba trabajando en la extensión de ext2 en Journaling the Linux ext2fs Filesystem en un artículo de 1998, y más tarde en una publicación en la lista de correo del núcleo en febrero de 1999. El sistema de archivos se fusionó con el núcleo principal de Linux en noviembre de 2001 a partir de la versión 2.4.15. [3] [4] [5] Su principal ventaja sobre ext2 es el registro en diario , que mejora la confiabilidad y elimina la necesidad de verificar el sistema de archivos después de un apagado incorrecto. Su sucesor es ext4 . [6]

Ventajas

El rendimiento (velocidad) de ext3 es menos atractivo que los sistemas de archivos Linux de la competencia, como ext4, JFS , ReiserFS y XFS , pero ext3 tiene una ventaja significativa, ya que permite actualizaciones en el lugar desde ext2 sin tener que hacer copias de seguridad y restaurar datos. Los puntos de referencia sugieren que ext3 también utiliza menos potencia de CPU que ReiserFS y XFS. [7] [8] También se considera más seguro que los otros sistemas de archivos Linux, debido a su relativa simplicidad y una base de pruebas más amplia. [9] [10]

ext3 agrega las siguientes características a ext2:

Sin estas características, cualquier sistema de archivos ext3 es también un sistema de archivos ext2 válido. Esta situación ha permitido que utilidades de mantenimiento de sistemas de archivos probadas y maduras para mantener y reparar sistemas de archivos ext2 también se puedan usar con ext3 sin realizar cambios importantes. Los sistemas de archivos ext2 y ext3 comparten el mismo conjunto estándar de utilidades, e2fsprogs , que incluye una herramienta fsck . La estrecha relación también hace que la conversión entre los dos sistemas de archivos (tanto hacia delante como hacia atrás, hacia ext2) sea sencilla.

Ext3 carece de características de sistema de archivos "modernas", como la asignación dinámica de inodos y extensiones . Esta situación puede ser a veces una desventaja, pero para la capacidad de recuperación es una ventaja significativa. Los metadatos del sistema de archivos están todos en ubicaciones fijas y bien conocidas, y las estructuras de datos tienen cierta redundancia. En caso de corrupción significativa de datos, ext2 o ext3 pueden ser recuperables, mientras que un sistema de archivos basado en árboles puede no serlo.

Límites de tamaño

El número máximo de bloques para ext3 es 2 32 . El tamaño de un bloque puede variar, lo que afecta el número máximo de archivos y el tamaño máximo del sistema de archivos: [12]

  1. ^ En Linux, el tamaño de bloque de 8 KiB solo está disponible en arquitecturas que permiten páginas de 8 KiB , como Alpha .

Niveles de registro diario

Hay tres niveles de registro disponibles en la implementación de Linux de ext3:

Revista (riesgo más bajo)
Tanto los metadatos como el contenido de los archivos se escriben en el diario antes de enviarse al sistema de archivos principal. Debido a que el diario es relativamente continuo en el disco, esto puede mejorar el rendimiento, si el diario tiene suficiente espacio. En otros casos, el rendimiento empeora, porque los datos deben escribirse dos veces: una en el diario y otra en la parte principal del sistema de archivos. [13]
Ordenado (riesgo medio)
Sólo los metadatos se registran en el diario; el contenido de los archivos no, pero se garantiza que el contenido de los archivos se escribe en el disco antes de que los metadatos asociados se marquen como confirmados en el diario. Esta es la opción predeterminada en muchas distribuciones de Linux. Si hay un corte de energía o un pánico del kernel mientras se escribe o se agrega un archivo, el diario indicará que el nuevo archivo o los datos agregados no se han "confirmado", por lo que se eliminarán mediante el proceso de limpieza. (Por lo tanto, los archivos agregados y los nuevos tienen el mismo nivel de protección de integridad que el nivel "registrado en el diario"). Sin embargo, los archivos que se sobrescriben pueden corromperse porque la versión original del archivo no se almacena. Por lo tanto, es posible terminar con un archivo en un estado intermedio entre el nuevo y el antiguo, sin suficiente información para restaurar uno u otro (los nuevos datos nunca llegaron al disco por completo y los antiguos no se almacenan en ningún lugar). Peor aún, el estado intermedio puede intercalar datos antiguos y nuevos, porque el orden de escritura se deja en manos del hardware del disco. [13] [14]
Escritura diferida (riesgo más alto)
Solo se registran los metadatos, no el contenido de los archivos. El contenido puede escribirse antes o después de que se actualice el diario. Como resultado, los archivos modificados justo antes de una falla pueden resultar dañados. Por ejemplo, un archivo al que se le agrega un anexo puede estar marcado en el diario como más grande de lo que es en realidad, lo que genera basura al final. También pueden aparecer versiones anteriores de archivos inesperadamente después de una recuperación del diario. La falta de sincronización entre los datos y el diario es más rápida en muchos casos. JFS utiliza este nivel de registro en el diario, pero garantiza que cualquier "basura" debida a datos no escritos se elimine en cero al reiniciar. XFS también utiliza esta forma de registro en el diario.

En los tres modos, se garantiza que la estructura interna del sistema de archivos sea coherente incluso después de una falla. En cualquier caso, solo se verá afectado el contenido de datos de los archivos o directorios que se estaban modificando cuando el sistema falló; el resto permanecerá intacto después de la recuperación.

Desventajas

Funcionalidad

Debido a que ext3 pretende ser compatible con versiones anteriores de ext2, muchas de las estructuras en disco son similares a las de ext2. En consecuencia, ext3 carece de características recientes, como extensiones , asignación dinámica de inodos y subasignación de bloques. [15] Un directorio puede tener como máximo 31998 subdirectorios , porque un inodo puede tener como máximo 32000 enlaces (cada subdirectorio directo aumenta el contador de enlaces de inodo de su carpeta principal en la referencia ".."). [16]

En ext3, como en la mayoría de los sistemas de archivos Linux actuales, no se debe utilizar la herramienta del sistema " fsck " mientras el sistema de archivos esté montado para escritura. [6] Intentar comprobar un sistema de archivos que ya está montado en modo de lectura/escritura detectará (muy probablemente) inconsistencias en los metadatos del sistema de archivos. Cuando los metadatos del sistema de archivos están cambiando y fsck aplica los cambios en un intento de llevar los metadatos "inconsistentes" a un estado "consistente", el intento de "arreglar" las inconsistencias dañará el sistema de archivos.

Desfragmentación

No existe una herramienta de desfragmentación de ext3 en línea que funcione a nivel del sistema de archivos. Existe un desfragmentador de ext2 fuera de línea, e2defrag. Sin embargo, e2defragpuede destruir datos, dependiendo de los bits de función activados en el sistema de archivos; no sabe cómo manejar muchas de las características más nuevas de ext3. [17]

Existen herramientas de desfragmentación del espacio de usuario, como Shake [18] y defrag. [19] [20] Shake funciona asignando espacio para todo el archivo en una sola operación, lo que generalmente hará que el asignador encuentre espacio en disco contiguo. Si hay archivos que se utilizan al mismo tiempo, Shake intentará escribirlos uno al lado del otro. Defrag funciona copiando cada archivo sobre sí mismo. Sin embargo, esta estrategia funciona solo si el sistema de archivos tiene suficiente espacio libre. No existe una verdadera herramienta de desfragmentación para ext3. [21]

Sin embargo, como indica la Guía del administrador del sistema Linux, "los sistemas de archivos Linux modernos mantienen la fragmentación al mínimo al mantener todos los bloques de un archivo juntos, incluso si no se pueden almacenar en sectores consecutivos. Algunos sistemas de archivos, como ext3, asignan efectivamente el bloque libre que está más cerca de otros bloques en un archivo. Por lo tanto, no es necesario preocuparse por la fragmentación en un sistema Linux". [22]

Si bien ext3 es resistente a la fragmentación de archivos, puede fragmentarse con el tiempo o por patrones de uso específicos, como escribir lentamente archivos grandes. [23] [24] En consecuencia, ext4 (el sucesor de ext3) tiene una utilidad de desfragmentación del sistema de archivos en línea e4defrag [25] y actualmente admite extensiones (regiones de archivos contiguas).

Recuperar

ext3 no admite la recuperación de archivos eliminados. El controlador ext3 elimina archivos de forma activa borrando los inodos de archivo [26] por razones de seguridad ante fallas.

Todavía existen varias técnicas [27] y algunos programas gratuitos [28] y propietarios [29] para recuperar archivos eliminados o perdidos mediante el análisis del diario del sistema de archivos; sin embargo, no garantizan ninguna recuperación de archivos específica.

Compresión

e3compr [30] es un parche no oficial para ext3 que realiza compresión transparente . Es un puerto directo de e2compr y aún necesita más desarrollo. Se compila y arranca bien con kernels originales [ cita requerida ] , pero el registro en diario aún no está implementado.

Falta de soporte para instantáneas

A diferencia de varios sistemas de archivos modernos, ext3 no tiene soporte nativo para instantáneas , la capacidad de capturar rápidamente el estado del sistema de archivos en momentos arbitrarios. En su lugar, se basa en instantáneas a nivel de volumen que ocupan menos espacio y que proporciona el LVM de Linux . El sistema de archivos Next3 es una versión modificada de ext3 que ofrece soporte para instantáneas, pero conserva la compatibilidad con el formato en disco ext3. [31]

No hay suma de comprobación en el diario

ext3 no realiza la suma de comprobación al escribir en el diario. En un dispositivo de almacenamiento con caché adicional, si barrier=1 no está habilitado como una opción de montaje (en /etc/fstab ), y si el hardware está realizando un almacenamiento en caché de escritura fuera de orden, se corre el riesgo de una corrupción grave del sistema de archivos durante una falla. [32] [33] [34] Esto se debe a que los dispositivos de almacenamiento con cachés de escritura informan al sistema que los datos se han escrito por completo, incluso si se escribieron en el caché (volátil).

Si las escrituras en el disco duro se realizan fuera de orden (debido a que los discos duros modernos almacenan las escrituras en caché para amortizar las velocidades de escritura), es probable que se escriba un bloque de confirmación de una transacción antes de que se escriban los otros bloques relevantes. Si se produce un corte de energía o una falla irrecuperable antes de que se escriban los otros bloques, será necesario reiniciar el sistema. Al reiniciar, el sistema de archivos reproducirá el registro de forma normal y reproducirá los "ganadores" (transacciones con un bloque de confirmación, incluida la transacción no válida anterior, que resultó estar etiquetada con un bloque de confirmación válido). La escritura en el disco inacabada anterior continuará, pero utilizando datos de diario corruptos. El sistema de archivos sobrescribirá por error los datos normales con datos corruptos mientras reproduce el diario. Si se hubieran utilizado sumas de comprobación, donde los bloques de la transacción del "ganador falso" se etiquetaran con una suma de comprobación mutua, el sistema de archivos podría haberlo sabido mejor y no haber reproducido los datos corruptos en el disco. Se ha añadido la suma de comprobación del diario a ext4. [35]

Los sistemas de archivos que pasan por la interfaz del asignador de dispositivos (incluidas las implementaciones de RAID y LVM de software) pueden no admitir barreras y emitirán una advertencia si se utiliza esa opción de montaje. [36] [37] También hay algunos discos que no implementan correctamente la extensión de vaciado de caché de escritura necesaria para que funcionen las barreras, lo que provoca una advertencia similar. [38] En estas situaciones, donde las barreras no son compatibles o prácticas, es posible realizar un orden de escritura confiable desactivando la caché de escritura del disco y utilizando la data=journalopción de montaje. [32] Puede ser necesario desactivar la caché de escritura del disco incluso cuando hay barreras disponibles.

Las aplicaciones como las bases de datos esperan una llamada a fsync() para vaciar las escrituras pendientes en el disco, y la implementación de la barrera no siempre borra la caché de escritura de la unidad en respuesta a esa llamada. [39] También hay un problema potencial con la implementación de la barrera relacionado con el manejo de errores durante eventos, como una falla de la unidad. [40] También se sabe que a veces algunas tecnologías de virtualización no reenvían correctamente los comandos fsync o flush a los dispositivos subyacentes (archivos, volúmenes, disco) desde un sistema operativo invitado. [41] De manera similar, algunos discos duros o controladores implementan el vaciado de caché de manera incorrecta o no lo implementan en absoluto, pero aún así anuncian que es compatible y no devuelven ningún error cuando se usa. [42] Hay tantas formas de manejar fsync y el manejo de caché de escritura de manera incorrecta, que es más seguro asumir que el vaciado de caché no funciona a menos que se pruebe explícitamente, independientemente de cuán confiables se crea que sean los componentes individuales.

Extinción casi inmediata debido a la limitación de la marca de fecha

Ext3 almacena las fechas como tiempo Unix utilizando cuatro bytes en el encabezado del archivo. 32 bits no dan suficiente alcance para continuar procesando archivos más allá del 18 de enero de 2038: el problema del año 2038. [ 43]

ext4

Dependencia del tiempo de fsck en el recuento de inodos (ext3 vs. ext4)

El 28 de junio de 2006, Theodore Ts'o , el principal desarrollador de ext3, [44] anunció una versión mejorada, llamada ext4. El 11 de octubre de 2008, los parches que marcan a ext4 como código estable se fusionaron en los repositorios de código fuente de Linux 2.6.28, marcando el final de la fase de desarrollo y recomendando su adopción. En 2008, Ts'o afirmó que aunque ext4 tiene características mejoradas como ser mucho más rápido que ext3, no es un gran avance, utiliza tecnología antigua y es una solución provisional; Ts'o cree que Btrfs es la mejor dirección, porque "ofrece mejoras en escalabilidad, confiabilidad y facilidad de administración". [45] Btrfs también tiene "varias de las mismas ideas de diseño que tenía reiser3 / 4 ". [46]

Véase también

Referencias

  1. ^ El número máximo de inodos (y, por lo tanto, el número máximo de archivos y directorios) se establece cuando se crea el sistema de archivos. Si V es el tamaño del volumen en bytes, entonces el número predeterminado de inodos viene dado por V /2 13 (o el número de bloques, lo que sea menor), y el mínimo por V /2 23 . El valor predeterminado se consideró suficiente para la mayoría de las aplicaciones. El número máximo de subdirectorios en un directorio está fijado en 32000.
  2. ^ "ReactOS 0.4.2 Released" (Lanzada la versión 0.4.2 de ReactOS). reactos.org . Consultado el 17 de agosto de 2016 .
  3. ^ Stephen C. Tweedie (mayo de 1998). "Journaling the Linux ext2fs Filesystem" (PDF) . Actas de la 4.ª LinuxExpo anual, Durham, Carolina del Norte . Consultado el 23 de junio de 2007 .
  4. ^ Stephen C. Tweedie (17 de febrero de 1999). "Re: fsync en archivos grandes". Lista de correo del kernel de Linux .
  5. ^ Rob Radez (23 de noviembre de 2001). «2.4.15-final». Lista de correo del kernel de Linux .
  6. ^ ab "Capítulo 6. El sistema de archivos Ext4 Red Hat Enterprise Linux 6".
  7. ^ Piszcz, Justin. "Evaluación comparativa de sistemas de archivos, parte II". Linux Gazette (122).
  8. ^ Ivers, Hans. «Comparación de sistemas de archivos (ext3, reiser, xfs, jfs) en Debian Etch». Archivado desde el original el 13 de septiembre de 2008. Consultado el 3 de noviembre de 2010 . {{cite journal}}: Requiere citar revista |journal=( ayuda )
  9. ^ Smith, Roderick W. (9 de octubre de 2003). "Introducción a los sistemas de archivos y archivos de Linux". Linux.com. Archivado desde el original el 30 de agosto de 2011.
  10. ^ Trageser, James (23 de abril de 2010). "¿Qué sistema de archivos Linux debería elegir para su PC? Ext2, Ext3, Ext4, ReiserFS (Reiser3), Reiser4, XFS, Btrfs".
  11. ^ Cao, Mingming. "Indexación de directorios". Características encontradas en Linux 2.6 . Archivado desde el original el 18 de julio de 2019. Consultado el 1 de abril de 2009 .
  12. ^ Matthew Wilcox. "Documentación/sistemas de archivos/ext2.txt". Documentación del código fuente del núcleo de Linux .
  13. ^ de Daniel Robbins (1 de diciembre de 2001). "Hilos comunes: Guía avanzada para implementadores de sistemas de archivos, parte 8". IBM developerWorks . Archivado desde el original el 13 de octubre de 2007.
  14. ^ observador curioso: Aceleración de los sistemas de archivos ext3. Evuraan.blogspot.com (9 de enero de 2007). Recuperado el 22 de junio de 2013.
  15. ^ Radez, Rob (2005). "Extensiones, asignación retrasada". Futuro de ext3 . Archivado desde el original el 8 de julio de 2008. Consultado el 30 de julio de 2008 .
  16. ^ Robert Nichols (3 de abril de 2007) Re: ¿Cuántos subdirectorios? Archivado el 6 de octubre de 2008 en Wayback Machine linux.derkeiler.com
  17. ^ Andreas Dilger. "Publicar en la lista de correo ext3-users". Publicación en la lista de correo ext3-users .
  18. ^ Shake. Vleu.net. Recuperado el 22 de junio de 2013.
  19. ^ Desfragmentación escrita en shell. Ck.kolivas.org (19 de agosto de 2012). Consultado el 22 de junio de 2013.
  20. ^ Desfragmentación escrita en Python. Bazaar.launchpad.net. Consultado el 22 de junio de 2013.
  21. ^ RE: búsqueda de un programa de desfragmentación/desplazamiento de archivos de ext3. Redhat.com (4 de marzo de 2005). Consultado el 22 de junio de 2013.
  22. ^ 5.10. Sistemas de archivos. Tldp.org (9 de noviembre de 2002). Recuperado el 22 de junio de 2013.
  23. ^ "#849 cerrado Mejora (arreglada) - preasignación para evitar la fragmentación". trac.transmissionbt.com . El sistema de archivos predeterminado de Ubuntu ("ext3") fragmentará archivos grandes (>1 GB) y de crecimiento lento (<1 MB/s)
  24. ^ Oliver Diedrich (27 de octubre de 2008). "Tuning the Linux file system Ext3". Encontramos áreas libres muy fragmentadas en un servidor IMAP de uso intensivo que almacena todos sus correos electrónicos en archivos individuales, aunque todavía quedaban disponibles más de 900 GB del espacio total en disco de 1,4 TB.
  25. ^ Ext4 – Linux Kernel Newbies. Kernelnewbies.org (19 de mayo de 2011). Consultado el 22 de junio de 2013.
  26. ^ Preguntas frecuentes sobre Linux ext3. Batleth.sapienti-sat.org. Consultado el 22 de junio de 2013.
  27. ^ CÓMO recuperar archivos eliminados en un sistema de archivos ext3 Archivado el 19 de septiembre de 2010 en Wayback Machine . Xs4all.nl (7 de febrero de 2008). Consultado el 22 de junio de 2013.
  28. ^ PhotoRec – Recuperación de archivos con licencia GPL. Cgsecurity.org. Recuperado el 22 de junio de 2013.
  29. ^ UFS Explorer Standard Recovery versión 4. Ufsexplorer.com. Consultado el 22 de junio de 2013.
  30. ^ e3compr – compresión ext3. Sourceforge.net. Recuperado el 22 de junio de 2013.
  31. ^ Jonathan Corbet. "El sistema de archivos Next3". LWN.
  32. ^ ab Re: Corrupción frecuente de metadatos con ext3 + apagado forzado Archivado el 28 de septiembre de 2007 en Wayback Machine . Archives.free.net.ph. Consultado el 22 de junio de 2013.
  33. ^ Re: Corrupción frecuente de metadatos con ext3 + apagado forzado Archivado el 28 de septiembre de 2007 en Wayback Machine . Archives.free.net.ph. Consultado el 22 de junio de 2013.
  34. ^ Red Hat Enterprise Linux, Capítulo 20. Barreras de escritura
  35. ^ ext4: Añadir la función de suma de comprobación de la revista. Article.gmane.org (2008-02-26). Consultado el 22 de junio de 2013.
  36. ^ Re: ¿Se admite o no la barrera de escritura sobre el mapeador de dispositivos? Archivado el 4 de mayo de 2009 en Wayback Machine . Oss.sgi.com. Recuperado el 22 de junio de 2013.
  37. ^ XFS y archivos con ceros Archivado el 30 de abril de 2008 en Wayback Machine . Madduck.net (11 de julio de 2008). Consultado el 22 de junio de 2013.
  38. ^ Sincronización de barreras. forums.opensuse.org (marzo de 2007)
  39. ^ Re: Propuesta para fsync() y fdatasync() "adecuados" y duraderos. Mail-archive.com (2008-02-26). Recuperado el 2013-06-22.
  40. ^ Barreras de E/S, a partir de la versión de kernel 2.6.31. Mjmwired.net. Consultado el 22 de junio de 2013.
  41. ^ Virtualización y modos de E/S = complejidad adicional. Mysqlperformanceblog.com (21 de marzo de 2011). Consultado el 22 de junio de 2013.
  42. ^ SSD, XFS, LVM, fsync, caché de escritura, barrera y transacciones perdidas. Mysqlperformanceblog.com (2009-03-02). Consultado el 2013-06-22.
  43. ^ Clark, Libby (19 de febrero de 2015). "10 puntos destacados del informe sobre el núcleo de Linux de Jon Corbet" . Consultado el 26 de enero de 2019 .
  44. ^ "Theodore Ts'o": Propuesta y plan para el desarrollo futuro de ext2/3. LKML. Consultado el 22 de junio de 2013.
  45. ^ Ryan Paul (13 de abril de 2009). "Los panelistas reflexionan sobre el núcleo en la Cumbre de colaboración de Linux". Ars Technica . Consultado el 22 de agosto de 2009 .
  46. ^ Theodore Ts'o (1 de agosto de 2008). "Re: reiser4 para 2.6.27-rc1". linux-kernel (Lista de correo) . Consultado el 31 de diciembre de 2010 .

Enlaces externos