Sistemas de archivos de Linux: qué son y cómo funcionan

En nuestra guía anterior te contamos cómo se organiza el sistema de archivos de Linux, jerárquicamente.

Explicamos toda la estructura de directorios, por qué algunos directorios tienen nombres particulares y su uso que, en algunos casos, se ha modificado con el tiempo.

Sin embargo, en esta guía sobre los sistemas de archivos de Linux, mostraremos aquellos que son los más sistemas de archivos conocidos y utilizados analizando aspectos como sus orígenes, fortalezas, debilidades y mejoras progresivas.

En las dos últimas secciones encontrarás, respectivamente, una tabla compacta que resume las características de cada uno y los mejores casos en los que se utiliza cada sistema de archivos.

NB: de esta guía hemos excluido intencionadamente los sistemas de archivos distribuidos y el sistema de archivos ReiserFS, hasta la fecha prácticamente abandonado.

Índice

Guía de sistemas de archivos de Linux

Ext2

Esta es la Sistema de archivos Linux por excelencia que hoy tiene la venerable edad de 23 años y se sigue utilizando en algunos casos.

Creado en 1993 por Rémy Card, fue desarrollado para remediar las limitaciones del sistema de archivos original (desarrollado por el propio Card específicamente para Linux, como una evolución a su vez de Minix). Se estableció oficialmente como sustituto de ext tras ganar una acalorada batalla contra su “rival” xiafs.

Dependiendo del tamaño del bloque de escritura, en un sistema de archivos ext2 es posible escribir archivos de hasta 2 TB; el mismo sistema de archivos puede tener un tamaño máximo de 32 TB y albergar hasta 31998 directorios – un total de 32000 si se calcula también el directorio actual (punto) y el directorio raíz (punto punto).

Ext2 no tiene un mecanismo para evitar errores de escritura – que en breve descubriremos que tiene el nombre de diario.

Ext3

Ext3 nació unos 8 años después de ext2 gracias al ingenio de Stephen Tweedie y se introdujo en los sistemas operativos basados en GNU/Linux a partir del kernel 2.4.15. Un sistema de archivos en Ext2 puede ser convertido a Ext3 sin pérdida de datos (a menos que haya errores imprevistos).

Las características siguen siendo bastante similares a las de Ext2: escritura de archivos de hasta 2 TB cada uno y sistemas de archivos de hasta 32 TB de tamaño en los que se alojan hasta 31998 directorios.

Ext3 mejora a su predecesor en términos de asignación de bloques, evitando así el riesgo de problemas debidos a los múltiples movimientos de los discos mecánicos. buscando el bloque perdido”.

El gran cambio respecto a su predecesor es el nuevo mecanismo de prevención de errores de escritura de datos dijo diario: En términos sencillos, una parte del disco se reserva para escribir continuamente los cambios en cada archivo, de modo que la consistencia del sistema de archivos se mantiene incluso en caso de errores de escritura accidentales (como un fallo de alimentación).

Para ser precisos, Ext3 ofrece tres tipos de registro en el diario:

  • Ordenado (modo por defecto): guarda sólo los metadatos en el área de registro, que se actualiza después de escribir el contenido en el disco. Representa un buen compromiso entre seguridad y rendimiento.
  • Diario: guarda tanto los metadatos de los archivos modificados como el contenido real en el área de registro; esta es la mejor configuración para la seguridad.
  • La devolución de la escritura: Guarda en el área de registro sólo los metadatos, actualizados (según el sistema) antes o después de la escritura real del contenido en el disco. Es el mejor en términos de rendimiento.

Ext4

Ext4 salió a la luz en 2008, desarrollado por Andrew Morton, Alex Tomas y varios otros expertos en la materia, y se introdujo en los sistemas basados en GNU/Linux a partir del kernel 2.6.19.

Un sistema de archivos en Ext3 puede ser convertido a Ext4 sin pérdida de datos (salvo errores imprevistos).

En comparación con su predecesor, y teniendo en cuenta el tremendo cambio tecnológico que se produjo entre 2001 y 2008, elimina las limitaciones de espacio de Ext3 en su mayor parte, llevando la tamaño máximo de un solo archivo a 16 TB, el tamaño máximo de un sistema de archivos en tanto como 1 EB (= 1 exabyte, o 1024 petabytes, es decir algo más de 1 millón de terabytes.) y eliminar totalmente el límite al número de directorio en el sistema de archivos.

También Ext4 soporta journaling en todos los modos anteriores, el diario que, sin embargo, puede desactivarse a petición del usuario (en cuyo caso se restablecerá el sistema de archivos).

El gran cambio respecto a Ext3 esta vez está en términos de rendimiento: características como el preasignación de archivos (si se solicita, el espacio se asigna “antes” de que se cree un archivo para garantizar la contigüidad física de los bloques ocupados), asignación de bloques múltiples (es decir, la asignación de varios grupos de bloques simultáneamente), y la asignación escalonada (asignación diferida, los bloques se asignan sólo cuando se escriben en el disco, para reducir la fragmentación).

Además, el sumas de comprobación de datos en el área de registro (para una mejor comprobación de la integridad), la capacidad de “saltar” el análisis de los bloques asignados durante la inspección del disco (acelerando todo el procedimiento), el mejora de las marcas de tiempo que ahora se calculan en el rango de los nanosegundos y más.

BTRFS

BTRFS nació en 2008, poco después de ext4 (con una primera versión pública al año siguiente) para compensar las deficiencias del sistema de archivos anterior en configuraciones de servidores fuertemente centradas en el almacenamiento, especialmente en la gestión de arrays (RAID) y para sistemas con una escalabilidad indispensable en términos de almacenamiento (por ejemplo, un servidor en la nube).

A día de hoy, BTRFS sigue en desarrollo y se afirma que es. inestable, aunque ya es un sistema de archivos muy potente.

Es un sistema de archivos de 64 bits con un límite de tamaño de 16 EB (en sistemas operativos de 32 bits el límite baja a 8 EB), capaz de alojar archivos de hasta 16 EB de tamaño -sujeto a las limitaciones del sistema.

Exactamente como se esperaba, BTRFS es un sistema de archivos copia en escritura: para algún tipo de ahorro de E/S, los archivos abiertos por varios procesos al mismo tiempo son copiado en diferentes lugares del disco (para garantizar la coherencia) sólo si realmente se modifica y no si se abre para leer.

Precisamente gracias a la copia en escritura, BTRFS puede aprovechar algunas características avanzadas que son indispensables para una buena gestión de matrices multidisco configuradas en RAID: equilibrio de carga (carga de recursos) integradoLa funcionalidad de auto-reparación En múltiples escenarios, Añadir y eliminar dispositivos de caché a los sistemas de archivos montados, funcionalidad de aumentar y disminuir el tamaño en el sistema de archivos montado, comprobación del sistema de archivos (desde el desmontaje), así como conversión in situ de ext3/ext4 con el capacidad de mantener el formato original.

BTRFS es totalmente compatible con las operaciones de clonación de archivos y la creación de instantáneas de sólo lectura; permite la recuperación de archivos en caso de desastre a través de una herramienta integrada (btrfs-restore), en caso de un sistema de archivos ilegible.

En cuanto al registro en el diario, su funcionamiento también está diseñado para responder bien a las configuraciones de los servidores: el área de registro en el diario puede extenderse a varios discos y clonarse en caso de matrices.

También es gracias al registro inteligente en el diario que las funciones de reparación automática son eficaces: por defecto, los datos registrados en el diario se escriben en el disco cada 30 segundos. evitando incoherencias y pérdidas de datos accidentales.

BTRFS es extremadamente estable (aunque incompleto) y adecuado para quienes exigen consistencia en los datos; realmente marca la diferencia cuando se gestionan matrices completas y/o racks de discos; por lo demás, en términos de rendimiento, está muy cerca de ext4.

F2FS

F2FS es el más joven en nuestro análisis: creado por Samsung y lanzado por primera vez en 2013, está diseñado específicamente para el Gestión de la memoria NAND que se encuentran en los dispositivos de nueva generación.

Sólo parcialmente implementado, F2FS soporta una funcionalidad mínima pero extremadamente útil: el desfragmentación sobre la marcha (integrado en los mecanismos de asignación), modo de recuperación de datos tanto rollback como rollforward (gracias al diario) y operaciones de verificación del sistema de archivos, cuando el sistema de archivos está desmontado, sin que haya forma de solucionarlo.

En la lista de cosas que hacer por Samsung En primer lugar aparece la capacidad de fijar la consistencia del sistema de archivos, las operaciones atómicas (es decir, las operaciones múltiples que deben realizarse sin interrupción), los controladores de Windows y el cambio de tamaño.

Cómo esperar el F2FS soporta el comando TRIM y actúa sobre el sistema de archivos con dos algoritmos diferentes: uno codicioso – es decir, con una estrategia de eliminación decidida según las necesidades del momento – para la gestión de las “emergencias”, y una en cambio optimizado en términos de rendimiento para manejar el limpiezas programadas.

F2FS es compatible con registro en el diario a través de un punto de control, es decir, después de analizar los metadatos presentes en el área dedicada a intervalos de tiempo bien definidos: al montar, F2FS intenta restaurar el último punto de control válido, lo que lo hace potencialmente más “expuesto” a inconsistencias generadas por errores accidentales.

Alcanza el máximo rendimiento en dispositivos de estado sólido, con los que se comporta de forma excelente. Es casi inútil en los dispositivos mecánicos.

JFS

El pequeño JFS fue creado por primera vez en 1990 por IBM, sin embargo la versión dedicado a Linux es en realidad JFS2 – nacido en 1999, al que prácticamente todo el mundo se refiere como JFS.

Este sistema de archivos parece estar diseñado específicamente para pequeños servidores construidos en máquinas heredadas, y a pesar de su venerable edad, hace su trabajo muy bienEs capaz de ofrecer buenas prestaciones incluso en un hardware bastante limitado, gracias a algunos compromisos alcanzados durante la fase de desarrollo.

En el momento de la creación del sistema de archivos, el disco se divide en grupos de asignación en el que están agrupación de archivos relacionados “por lógica”, mientras que los datos no catalogados se dispersan por el sistema de archivos para mejorar la fragmentación.

La fuerza de JFS es precisamente eso: un grupo de asignación sólo puede tener un archivo abierto para escribir a la vez, después de lo cual se bloquea, y este es el único archivo al que se le “permite” crecer en tamaño.

Este tipo de enfoque hace que JFS sea útil en el caso de pequeños servidores domésticos creados a partir de las “cenizas” de máquinas que han caído en desuso, especialmente para todas aquellas aplicaciones que necesitan escrituras en disco sincrónicas para evitar errores.

Hay que tener en cuenta que en el caso de servidores con archivo, un buen enfoque es yuxtaponer JFS con otros sistemas de archivos ya que, debido a la extraña implementación del diario no prioritario, los metadatos podrían “traducirse” en contenido en momentos variables – con la posibilidad de ver posponer la escritura a espacios de tiempo indefinidos. y generar inconsistencias irreparables en caso de fallo del hardware.

XFS

XFS fue creado originalmente en 1993 por Silicon Graphics, pero no se integró en el núcleo de Linux hasta 2001 y ahora se utiliza como sistema de archivos por defecto en varias distribuciones. XFS es un sistema de archivos de 64 bits y tiene un tamaño máximo de 8 EB. Sin embargo, para los sistemas operativos de 64 bits, el límite se reduce drásticamente a 16 TB.

Es básicamente el sistema de archivos más complejo de nuestro análisis.

También XFS es un sistema de archivos diseñado principalmente para el uso de servidores, pero esta vez la escalabilidad -a diferencia de lo que ocurre con BTRFS- está pensada en términos de recursos de procesamiento: gracias a la división en grupos de asignacióncada uno de los cuales gestiona una determinada cantidad de inodos ocupados y de espacio libre, los procesos de múltiples hilos son capaces de realizar operaciones simultáneas, uno para cada grupo de asignación.

Esto lo hace ideal en configuraciones que deben soportar aplicaciones de servidor onerosas o “colonias” enteras de máquinas virtuales, así como ordenadores diseñados para ejecutar programas intensivos de lectura y escritura de disco.

La gestión de las incoherencias en el sistema de archivos mediante el registro en el diario y las barreras de escritura es cualitativamente a la par con (aunque estructuralmente diferente) que el de BTRFS, aunque tiene una ligera carencia de rendimiento cuando se trata de RAID o de la presencia de archivos de gran tamaño (por lo que XFS no es adecuado para su uso en servidores de almacenamiento).

Las barreras de escritura son directivas precisas para escribir la caché en el disco a velocidades de tiempo predefinidas que se consideran óptimas para una buena prevención de inconsistencias, sin embargo esto puede ser molesto para algunos discos conectados en RAID. La función de barreras de escritura está activada por defecto (pero puede desactivarse al crear el sistema de archivos).

Otras características de XFS centradas en el rendimiento son las siguientesasignación escalonada para la reducción de la fragmentación, el Espacios de direcciones de 64 bits para la localización rápida de archivos “con agujeros”, elE/S directa y el calcular previamente el ancho de Bands necesario para ciertos propósitos, una característica que es genial para las aplicaciones en tiempo real pero que requiere un hardware específico.

XFS no tiene capacidades de instantáneas no bloqueantes, sólo se puede redimensionar el sistema de archivos arriba pero no disminuya el tamaño sin pérdida de datos, lo que hace que extremadamente inadecuado para su uso en discos virtuales.

Cuadros resumen

Para simplificar aún más la discusión, hemos creado tablas resumen que contienen las principales características de cada sistema de archivos.

Las dos tablas comparan respectivamente los sistemas de archivos ext2, ext3 y ext4 y los sistemas de archivos ext4, BTRFS, F2FS, JFS y XFS.

Resumiendo…

Dejando de lado ext2 y ext3, que ya no se utilizan, es posible encontrar para casi todos los sistemas de archivos enumerados una aplicación práctica. Así que:

  • ext4 es un sistema de archivos de exigencia media, con un 100% de funcionalidad implementada y de propósito general, ideal para PCs domésticos con un uso medio;
  • BTRFS es el sistema de archivos ideal para almacenar servidores (domésticos o empresariales) gracias a sus avanzadas funciones de pooling, snapping, spanning y journaling, que garantizan ante todo la coherencia de los datos.
  • F2FS es el sistema de archivos que podría encontrar, en un futuro bastante cercano, un campo bastante fértil en los teléfono móvils, tablets y smartwatches. Es especialmente adecuado para su uso en memorias NAND y también en microplacas, teniendo en cuenta, sin embargo, que es un sistema de archivos incompleto y no puede garantizar la consistencia en caso de eventos inesperados (como un corte de energía);
  • JFS es un sistema de archivos especialmente adecuado para máquinas con capacidades modestas, sin configuraciones especiales de multidiscos y con una gran necesidad de estabilidad. Es óptimo para los pequeños servidores domésticos que alojan un servidor web o una base de datos.
  • XFS es un sistema de archivos adecuado para sistemas polivalentes y escalables por hardware que necesitan tanto un acceso rápido a los datos como operaciones de E/S de programas multihilo. En pocas palabras, XFS es el sistema de archivos ideal para grandes servidores operativos (y no de almacenamiento) o para Configuraciones de juego en Linux. Impecable manejo de inconsistencias, aunque puede resultar aberrante en su desempeño en algunos casos.