Sistema de archivos de Linux: XFS

Los sistemas de archivos se utilizan para controlar cómo se escribe la información en el disco, para controlar el acceso a esta información y para almacenar información y metadatos sobre los archivos. Los sistemas de archivos se revisan continuamente para proporcionar más funcionalidad y se vuelven más eficientes cada vez.

Sistema de archivos de Linux: XFS

Contenido

  1. ¿Qué es el sistema de archivos XFS?
  2. Estructura del sistema de archivos XFS
  3. Superbloque
  4. Información sobre bloques libres
  5. Información sobre nodos de información libres y asignados
  6. Árboles B+
  7. Características de la arquitectura
  8. Sistema de archivos de 64 bits
  9. Asignación retrasada.
  10. Cambio de tamaño "sobre la marcha" (solo expandir).
  11. La desfragmentación en tiempo real se realiza con estas herramientas:
  12. Crear y redimensionar en XFS
  13. Montando XFS
  14. Redimensionar XFS
  15. Ventajas de XFS
  16. Comprobando el grado de fragmentación en XFS
  17. Registro de diario de XFS
  18. Comparación del rendimiento de XFS con otros sistemas de archivos.
  19. Desventajas del sistema de archivos XFS
  20. Accediendo a particiones XFS desde Windows
  21. Instalación de XFS en una unidad SSD
  22. Beneficios de usar XFS en SSD
  23. Desventajas de usar XFS en un SSD

¿Qué es el sistema de archivos XFS?

XFS es un sistema de archivos de registro de alto rendimiento y altamente escalable con todos los beneficios de los sistemas de archivos modernos, como el registro de metadatos para una recuperación rápida. Aún así, admite la agrupación de flujos de E/S, lo que mejora significativamente el rendimiento de lectura y escritura. Pero solo funciona para archivos grandes. También puede aumentar el tamaño del sistema de archivos o realizar la desfragmentación incluso si está montado.

XFS se considera un sistema de archivos extendido. Es un sistema de archivos de alto rendimiento con registros de 64 bits. El soporte para XFS se incluyó en el kernel de Linux alrededor de 2002. XFS admite un tamaño máximo de sistema de archivos de 8 exabytes para el sistema de archivos de 64 bits.

Pero XFS tiene algunas limitaciones. Por ejemplo, la partición de este sistema de archivos no se puede reducir y hay un bajo rendimiento al trabajar con grandes cantidades de archivos. RHEL 7.0 utiliza XFS como sistema de archivos predeterminado.

Estructura del sistema de archivos XFS

Todo el sistema de archivos XFS se divide en los llamados Grupos de Asignación, el análogo de los Grupos de Bloques en Ext2FS.

El tamaño/cantidad y otra descripción de los Grupos de Asignación se encuentra en el superbloque, y el superbloque está al principio de cada uno de los Grupos de Selección (es decir, es lo mismo que en Ext2FS), así que vayamos directamente a la descripción de su estructura.

Al menos los primeros 0x800 bytes (2048 bytes, 2 Kb) de cada Grupo de Asignación tienen el mismo formato. Y el Grupo de Asignación cero (tienes que leer todo desde cero) (y con él el superbloque cero) se encuentra justo al principio del dispositivo. Aquí hay una diferencia importante con respecto al número absoluto de otros sistemas de archivos: cuando se diseñó el sistema de archivos XFS para la plataforma IRIX, los desarrolladores ni siquiera pensaron en ningún cargador de arranque al principio del disco, por lo que no tiene sentido intentar instalar el cargador en una partición XFS.

El Grupo de Asignación se divide en otras cuatro estructuras:

  • Superbloque
  • Información sobre bloques libres
  • Información sobre nodos de información dedicados y libres
  • Bloques dedicados para la extensión de B-tree

Superbloque

El Superbloque se encuentra al principio del Grupo de Asignación. Puede encontrar la definición de la estructura struct xfs_sb que lo describe en el archivo

/usr/include/xfs/xfs_sb.h

Puede citar este archivo como lo haría normalmente en estos casos, pero no es conveniente describir la estructura en este caso porque los nombres de tipo como xfs_drfsbno_t no dicen nada sobre su tamaño.

Por lo tanto, es mejor registrar las estructuras en un formato que sea más conveniente para usted.

Utilizaremos 5 campos para describir la estructura:

  • Desplazamiento desde el inicio de la estructura (en sistema numérico hexadecimal)
  • Tamaño del campo en bits
  • Nombre del elemento en la estructura
  • Algunos valores típicos (que se toman después de formatear alguna imagen de prueba)
  • Comentario

Información sobre bloques libres

La información sobre los bloques libres del Grupo de Asignación se encuentra en él en un desplazamiento de 0x0200.

La definición de la estructura xfs_agf se encuentra en el archivo /usr/include/xfs/xfs_ag.h.

Se decidió almacenar la lista de bloques libres no en un mapa de bits, sino en un árbol B con elementos «Bloque inicial del fragmento de bloques libres»/»Tamaño del fragmento», y no en un solo árbol B, sino en dos duplicados: un elemento se ordena por el número del bloque inicial del fragmento, y el segundo por el tamaño de estos fragmentos de espacio libre.

Esto permite encontrar rápidamente un grupo de bloques libres del tamaño más adecuado.

Información sobre nodos de información libres y asignados

Al igual que los bloques libres, los nodos de información libres y dedicados de los Grupos de Asignación se describen en la estructura xfs_agi (consulte también /usr/include/xfs/xfs_ag.h para su definición) en un desplazamiento de 0x400.

Los nodos de información se asignan en grupos de 64 piezas. La información sobre la ocupación/liberación de los nodos de información de este grupo se almacena en el mismo mapa de bits (número de 64 bits).

Pero como cada grupo siguiente de nodos de información no necesariamente se encuentra detrás del anterior, esta información aún debe almacenarse en el árbol B.

Este esquema le permite eliminar la limitación en el número de nodos de información típica de muchos otros sistemas de archivos. En XFS, el mensaje «No hay suficiente espacio» es inconfundible, no puede significar «se ha desbordado la tabla de nodos de información» al crear un archivo.

Árboles B+

XFS utiliza árboles B+ en todas partes. Se utilizan para indexar paquetes de inodos, listas de extensiones libres, elementos de directorio y registros de tarjetas de archivo.

Los árboles B+ de XFS tienen una estructura bastante tradicional: en los nodos internos, solo se almacenan las claves y los punteros a los descendientes, y las hojas contienen las claves y los datos.

Dado que hay varios tipos de árboles en XFS, el código general maneja solo los encabezados de bloque estándar (xfs_btree.h).

Después del encabezado, hay matrices de datos. Para los nodos internos, estos son:

  • Dos listas: claves y punteros a descendientes que crecen en el medio. Para las hojas, es una matriz de registros ordenados en orden ascendente.
  • El formato de clave y los registros, respectivamente, son determinados por el tipo de árbol.

Características de la arquitectura

Como se mencionó anteriormente, XFS consta de secciones de datos (que contienen metadatos y pueden contener registros), un registro y una sección en tiempo real.

La sección de datos se divide en grupos iguales de bloques (grupos de asignación), cuyo número determina el nivel de paralelismo en la asignación de espacio; cada grupo contiene un superbloque, gestión de espacio libre del grupo, tabla de inodos (creada a petición).

El tamaño de bloque en Linux es de 4 KB. La asignación de espacio se realiza por extensiones (hasta 8 GB).

Anteriormente, XFS no era adecuado para almacenar una gran cantidad de archivos pequeños (como un servidor de correo) ya que era lento para manejar metadatos, pero está mejorando gradualmente. Por ejemplo:

  • los archivos abiertos durante un apagado repentino de la computadora se llenarán con ceros (solucionado);
  • creación y expansión instantánea del sistema de archivos sin sobrecarga (ext4 tiene un 1,5%, es decir, 269 GB para 16 TB) y aproximadamente la misma sobrecarga que ext4 para el almacenamiento de archivos (0,07% menos para un conjunto de 10 TB de 10 millones de archivos);
  • números de inodo de 64 bits para un sistema de archivos con tamaño de 2T o más, no todos los programas de 32 bits sobrevivirán (solucionado);

Sistema de archivos de 64 bits

La asignación de espacio se realiza mediante extensiones (extensión – puntero al inicio y número de bloques consecutivos). En las extensiones se asigna espacio para almacenar archivos y bloques libres. Los índices de árbol B se utilizan activamente para almacenar varios datos del sistema de archivos: para la lista de bloques con series de inodos, la lista de extensiones con contenido de archivos, directorios de archivos, listas de extensiones de bloques libres (los bloques libres se indexan tanto por tamaño de bloque como por ubicación). Sin embargo, el uso de índices de árbol B no es un dogma: un archivo o directorio pequeño puede colocarse directamente dentro del inodo.

Asignación retrasada.

Cuando se escribe un archivo, se asigna espacio en memoria, mientras que el disco solo asigna espacio cuando el archivo se escribe en él. De esta manera, se asigna de manera óptima el espacio en disco para el archivo, lo que reduce la fragmentación.

Cambio de tamaño «sobre la marcha» (solo expandir).

Colocando en varias áreas lineales (4 por defecto) los llamados «grupos de asignación» (aumenta el rendimiento al alinear la actividad de las solicitudes en diferentes discos en matrices RAID como «stripe», así como en el acceso asíncrono al sistema de archivos en un disco regular).

La desfragmentación en tiempo real se realiza con estas herramientas:

  • API de E/S en tiempo real (para aplicaciones de tiempo real duras o suaves, como la transmisión de video).
  • Interfaz (DMAPI) para admitir la gestión jerárquica de medios (HSM).
  • Herramientas de copia de seguridad y recuperación (xfsdump y xfsrestore).
  • Los «bloques de índice» de inode se asignan dinámicamente (cuando se necesitan), y los inode no utilizados se pueden liberar (liberando espacio de almacenamiento).
  • Pequeños «overheads» – el tamaño de las estructuras de datos de servicio. En el sistema de archivos XFS recién creado, se gasta aproximadamente un 0,54% en necesidades de servicio. Se logra mediante un pequeño número de encabezados para grupos (grupos de asignación) y la asignación dinámica de inode.

Crear y redimensionar en XFS

Supongamos que ya tienes una partición lista para crear un sistema de archivos. Si no es así, puedes crearla utilizando la utilidad Gparted o fdisk. Supongamos que la partición en la que deseas crear el sistema de archivos XFS es /dev/sda11, puedes hacerlo con la utilidad estándar mkfs. El comando es:

$ sudo mkfs.xfs /dev/sda11

Si ya existe un sistema de archivos en la partición especificada, debes utilizar la opción -f para sobrescribirlo:

$ sudo mkfs.xfs -f /dev/sda11

Durante la creación, la utilidad mostrará información actual sobre el sistema de archivos y la tabla de metadatos.

Montando XFS

Ahora necesitamos montar la partición que acabamos de crear. Puedes crear una carpeta separada para montarla o montar la partición en /mnt. Por ejemplo, podríamos crear la carpeta /mnt/db. Luego puedes montar la partición, al igual que todos los demás sistemas de archivos, con el comando mount:

$ sudo mkdir /mnt/da11
$ sudo mount /dev/sda11 /mnt/db
$ sudo mount | grep sda11

Ahora puedes escribir archivos en esta sección. La mayoría de las opciones del sistema de archivos se instalan utilizando mount. Veamos las opciones básicas de montaje específicas de XFS:

  • inode64 – si tienes un dispositivo de más de 2Tb, debes usar esta opción de montaje para mejorar el sistema de archivos;
  • nobarrier – XFS tiene una barrera de escritura de datos para que los datos importantes no se pierdan durante un reinicio inesperado. Si estás seguro de que tu hardware es completamente confiable, entonces la barrera debe desactivarse para mejorar el rendimiento;
  • logdev – te permite registrar el sistema de archivos en un archivo externo;
  • sunit – establece el tamaño de un bloque de datos para matrices RAID. El tamaño predeterminado es de 512 bytes;
  • norecovery – por defecto, cada vez que se monta el sistema de archivos, se comprueba y corrige si no se montó correctamente. Esta opción desactiva este procedimiento;
  • quota – habilita el soporte para cuotas de disco para usuarios.

Puedes usar cualquiera de estas opciones para configurar tu sistema de archivos

Una vez montado, puedes ver información sobre los metadatos del sistema de archivos:

$ sudo xfs_info /dev/sda11

Si deseas que esta partición se monte automáticamente, debes configurar xfs fstab para que se monte. Todo lo que tienes que hacer es agregar una línea:

$ sudo vi /etc/fstab/dev/sda11 /mnt/db xfs defaults 0 0

Redimensionar XFS

Puede redimensionar el sistema de archivos XFS sobre la marcha, justo cuando está montado. Primero, veamos el tamaño actual de la partición:

$ df -h

A continuación, se aumenta el tamaño de XFS en dos pasos. Hay una cosa sobre la expansión del tamaño en línea, debe aumentar el tamaño de la partición en la tabla de particiones, y la única forma de hacerlo sin desmontar es en LVM. En otras configuraciones, aún tendrá que desmontar. Primero, redimensione la partición usando Gparted, por ejemplo, y luego debe aumentar el tamaño del sistema de archivos. Puede hacerlo incluso si el sistema de archivos está montado. Ejecute el comando:

$ xfs_growfs /mnt/db

Para asegurarse de que todo funciona, verifique el tamaño del sistema de archivos nuevamente usando el comando:

$ df -h

Antes de expandir el tamaño del sistema de archivos, debe recordar que nunca puede comprimir el sistema de archivos.

Ventajas de XFS

XFS es un excelente sistema de archivos que muestra un rendimiento excepcional al trabajar con archivos grandes. Además de una operación rápida con archivos grandes y un redimensionamiento sobre la marcha, también es importante destacar la presencia de un desfragmentador incorporado y registro de metadatos para una recuperación rápida.

Para reorganizar la ubicación de los archivos (desfragmentación), se utiliza el comando xfs_fsr. Puede ser utilizado para toda la partición o para un archivo separado. Para realizar la desfragmentación, es necesario tener suficiente espacio libre en la partición para copiar cualquier archivo. Al final de la operación, cada archivo ocupará un solo fragmento.

Para desfragmentar toda la partición, se utiliza el siguiente comando:

xfs_fsr -v /dev/

La desfragmentación de un archivo individual se realiza mediante el siguiente comando:

xfs_fsr -v 

La opción -v muestra información adicional.

Comprobando el grado de fragmentación en XFS

Para obtener información sobre la fragmentación de la partición, se puede utilizar el siguiente comando:

xfs_db -r -c frag /dev/

La opción -r es necesaria para comprobar la partición que está actualmente montada y en uso. La opción -c frag es necesaria para mostrar directamente información sobre la fragmentación de la partición.

El resultado se muestra de la siguiente manera:

Sistema de archivos XFS

Registro de diario de XFS

Al igual que la mayoría de los sistemas de archivos modernos, XFS admite registro de diario de metadatos para una recuperación rápida en caso de un reinicio de emergencia. Al igual que ReiserFS, XFS utiliza registro lógico. De lo contrario, el registro no se realiza por bloques de archivos (como en ext3), sino en un formato de disco eficiente con solo los metadatos que se cambian. Para XFS, se recomienda especialmente el registro lógico. En hardware de alta gama (que suele ser para XFS), el registro de diario es el recurso más controvertido. El uso de registro lógico eficiente en el uso del espacio minimiza el consumo de recursos no productivos. Además, XFS permite que el diario se almacene en otro dispositivo de bloque (partición, disco «barato»). Esta función ahorra recursos costosos y «funciona» aún más para aumentar la velocidad de XFS.

Al igual que ReiserFS, XFS solo registra metadatos y no lo hace para los datos en sí. Esto significa que en XFS (como en ReiserFS), es posible perder los datos que se han cambiado antes de un reinicio de desastre. Sin embargo, el registro de XFS tiene dos propiedades que reducen las posibilidades de pérdida de datos en comparación con ReiserFS.

XFS tiene la garantía de que cualquier bloque «no registrado» se llena con ceros. Dado que los bloques con bytes cero en los archivos del sistema se ignoran, se elimina una brecha de seguridad.

El problema de pérdida de datos en XFS se minimiza por el hecho de que la operación de restablecimiento de modificaciones de metadatos que esperan ser procesadas en el disco en XFS es más frecuente que en ReiserFS, por ejemplo (especialmente con operaciones de E / S de alta intensidad). Como consecuencia, habrá menos pérdidas de XFS después de un fallo que en las mismas condiciones en ReiserFS. Tenga en cuenta que la escritura de metadatos más frecuente en sí misma no elimina el problema, sino que solo provoca el restablecimiento más frecuente de discos y datos.

Comparación del rendimiento de XFS con otros sistemas de archivos.

Hasta hace poco, la elección de un sistema de archivos para Linux era limitada. Aquellos que buscaban un alto rendimiento preferían ReiserFS, y aquellos que se preocupaban por la integridad de los datos preferían ext3. Con la llegada del soporte de XFS para Linux, la elección no era tan sencilla. La gran pregunta que surgió fue: ¿es ReiserFS el líder en rendimiento en todas las condiciones?

Recientemente, nuestros expertos han comparado el rendimiento de XFS, ReiserFS y ext3. Pero, en primer lugar, debe tenerse en cuenta que los resultados muestran solo la dinámica general de la dependencia del rendimiento del sistema de archivos en una carga de sistema de un solo procesador.

Las pruebas mostraron que XFS es un sistema de archivos muy rápido. XFS es un líder constante en pruebas con manipulación de archivos grandes. Este resultado es completamente predecible, ya que fue diseñado para este propósito. También se notaron operaciones de eliminación de archivos relativamente lentas. En este punto, perdió tanto con ReiserFS como con ext3.

En otras pruebas, el rendimiento de XFS fue cercano al de ReiserFS y siempre mejor que el de ext3. Una característica interesante de XFS es que no genera una actividad de disco excesiva. XFS intenta almacenar en caché la mayor cantidad de datos posible, y la «razón» para volver a establecer en el disco es llenar la memoria, no el intervalo de tiempo. Cuando se escriben datos en la unidad, no tienen un impacto significativo en otras operaciones de E/S. En contraste, en ext3 (modo «data=ordered»), los reinicios periódicos de datos en el disco causan problemas de interactividad y, en operaciones de E/S altas, incluso una sobrecarga del disco.

Desventajas del sistema de archivos XFS

Desafortunadamente, XFS también tiene desventajas significativas, entre las cuales se encuentran las siguientes:

  • Es imposible reducir el tamaño de un sistema de archivos existente. Si la partición en el disco está llena de XFS, no se puede cambiar su tamaño a uno más pequeño (es importante considerarlo al particionar el disco).
  • Recuperar archivos eliminados en XFS es un proceso muy complicado, por lo que actualmente solo existen algunos productos de software para este propósito, como «RS Partition Recovery».
  • Pérdida de datos posible durante la grabación en caso de fallo de energía, ya que una gran cantidad de búferes de datos se almacenan en la memoria, mientras que los metadatos se registran (en el disco) operativamente. Esto también es cierto para otros sistemas de archivos con registro de metadatos.
  • Creación y eliminación de directorios relativamente lentos (una desventaja que se puede reducir significativamente mediante la configuración adecuada del sistema de archivos).

Accediendo a particiones XFS desde Windows

Desafortunadamente, el sistema operativo Windows no tiene una utilidad incorporada para abrir sistemas de archivos que no sean NTFS o FAT. Por lo tanto, por ejemplo, para abrir una unidad flash, deberá utilizar software de terceros o instalar Linux en una máquina virtual. La segunda opción es menos conveniente, por lo que consideraremos la aplicación Linux File Systems for Windows de Paragon Software. Con este programa, puede ver, editar, copiar y eliminar los archivos en su partición XFS. La aplicación existe en dos versiones: de pago y gratuita. La versión gratuita le da al usuario 10 días para probar el programa.

También puede utilizar la aplicación XFS Explorer. También hay versiones gratuitas y de pago. En la versión gratuita, puede ver archivos de hasta 3 MB de tamaño. Si necesita trabajar con archivos grandes, deberá comprar la versión de pago.

Instalación de XFS en una unidad SSD

XFS puede trabajar con grandes cantidades de datos mejor que cualquier otro sistema de archivos, y lo hace de manera confiable. Es por eso que XFS puede ser una excelente opción para la instalación en unidades SSD. A medida que la informática moderna se vuelve más avanzada, los archivos de datos se vuelven cada vez más exigentes. Tiene sentido considerar la instalación de este sistema de archivos en una unidad SSD.

XFS, al igual que Ext4, es un sistema de archivos con registro de diario. Pero a diferencia de Extended 4, es imposible desactivar el registro de diario, por lo que puede poner una carga pesada en el disco. Sin embargo, XFS admite funciones SSD estándar e incluso desfragmentación.

Beneficios de usar XFS en SSD

  • XFS es conocido por su capacidad para manejar fácilmente grandes cantidades de datos. Al usar XFS en tu SSD, puedes asegurarte de que tus archivos estén seguros.
  • Las ventajas de rendimiento de XFS en SSD significan que puedes transferir y acceder a archivos y datos mucho más rápido que con otros sistemas de archivos.
  • XFS tiene una función de desfragmentación de SSD muy útil que ayudará a mantener tu unidad funcionando por mucho tiempo.

Desventajas de usar XFS en un SSD

  • XFS es un sistema de archivos con registro de diario, y esta función no se puede desactivar. La imposibilidad de desactivar el registro es algo que debe preocupar si le preocupa las restricciones de lectura/escritura del SSD.
  • Además, hay un mayor desgaste en el SSD al usar el sistema de archivos XFS. Por lo tanto, debe tomar una decisión aquí: trabajar más rápido con archivos grandes o prolongar la vida útil del SSD.
Deja un comentario

Artículos relacionados

Synology DSM VS TrueNAS: ¿cuál sistema operativo es el mejor para un NAS?
Synology DSM VS TrueNAS: ¿cuál sistema operativo es el mejor para un NAS?
El almacenamiento y acceso de datos son uno de los aspectos clave de la vida moderna, y la necesidad de un almacenamiento de datos confiable y eficiente aumenta cada año. Una solución popular en esta área son los dispositivos de … Continue reading
Recuperación de datos de máquinas virtuales VMWare vSphere ESXi
Recuperación de datos de máquinas virtuales VMWare vSphere ESXi
Puedes perder datos de Datastore debido a un error del usuario o a una falla del hipervisor. ¿Cómo recuperar los datos de una máquina virtual VMWare vSphere ESXi? A continuación, intentaremos explicar qué se debe hacer en caso de que … Continue reading
Recuperación de datos de Máquinas Virtuales Linux KVM
Recuperación de datos de Máquinas Virtuales Linux KVM
¿Cómo recuperar datos de máquinas virtuales Linux KVM? Si hay datos importantes almacenados dentro de la máquina, pero está más allá de la reparación, ¿cómo se puede acceder al contenido de su disco duro virtual? ¿Qué se debe hacer si … Continue reading
Usando enlaces simbólicos y duros en Windows
Usando enlaces simbólicos y duros en Windows
A continuación, analizaremos la noción de enlaces duros y simbólicos en Windows, le hablaremos sobre su propósito principal y las diferencias clave. También puede aprender cómo crear enlaces utilizando métodos estándar de Windows o software especializado rápidamente.
Online Chat with Recovery Software