stringtranslate.com

XFS

XFS es un sistema de archivos de registro de 64 bits de alto rendimiento creado por Silicon Graphics, Inc (SGI) en 1993. [7] Fue el sistema de archivos predeterminado en el sistema operativo IRIX de SGI a partir de su versión 5.3. XFS se adaptó al kernel de Linux en 2001; a junio de 2014, la mayoría de las distribuciones de Linux admiten XFS ; Red Hat Enterprise Linux lo utiliza como su sistema de archivos predeterminado.

XFS se destaca en la ejecución de operaciones de entrada/salida (E/S) paralelas debido a su diseño, que se basa en grupos de asignación (un tipo de subdivisión de los volúmenes físicos en los que se utiliza XFS, también abreviado como AG ). Debido a esto, XFS permite una escalabilidad extrema de los subprocesos de E/S, el ancho de banda del sistema de archivos y el tamaño de los archivos y del propio sistema de archivos cuando abarca varios dispositivos de almacenamiento físico. XFS garantiza la coherencia de los datos mediante el empleo de registros de metadatos y el soporte de barreras de escritura . La asignación de espacio se realiza a través de extensiones con estructuras de datos almacenadas en árboles B+ , lo que mejora el rendimiento general del sistema de archivos, especialmente al manejar archivos grandes. La asignación retrasada ayuda a prevenir la fragmentación del sistema de archivos; también se admite la desfragmentación en línea .

Historia

XFS de primera generación

Silicon Graphics comenzó a desarrollar XFS [8] (se suponía que "X" se completaría más adelante, pero nunca se hizo) en 1993 para su sistema operativo IRIX basado en UNIX System V. El sistema de archivos se publicó bajo la Licencia Pública General GNU (GPL) en mayo de 1999. [9]

XFS de segunda generación

Un equipo dirigido por Steve Lord en SGI portó XFS a Linux, [10] y el primer soporte por parte de una distribución Linux llegó en 2001. Este soporte gradualmente estuvo disponible en casi todas las distribuciones Linux. [ cita requerida ]

El soporte inicial para XFS en el núcleo Linux llegó a través de parches de SGI. Se fusionó con la línea principal del núcleo Linux para la serie 2.6, y se fusionó por separado en febrero de 2004 con la serie 2.4 en la versión 2.4.25, [11] haciendo que XFS esté disponible casi universalmente en los sistemas Linux. [12] Gentoo Linux se convirtió en la primera distribución Linux en introducir una opción para XFS como sistema de archivos predeterminado a mediados de 2002. [13]

FreeBSD agregó soporte de sólo lectura para XFS en diciembre de 2005, y en junio de 2006 introdujo soporte de escritura experimental. Sin embargo, esto fue pensado sólo como una ayuda en la migración desde Linux, no como un sistema de archivos "principal". FreeBSD 10 eliminó el soporte para XFS. [14]

En 2009, la versión 5.4 de la distribución Linux Red Hat Enterprise Linux (RHEL) de 64 bits contenía el soporte de kernel necesario para la creación y el uso de sistemas de archivos XFS, pero carecía de las herramientas de línea de comandos correspondientes. Las herramientas disponibles en CentOS podían funcionar para ese propósito, y Red Hat también las proporcionaba a los clientes de RHEL a pedido. [15] RHEL 6.0, lanzado en 2010, incluye soporte para XFS por una tarifa como parte del "complemento de sistema de archivos escalable" de Red Hat. [16] Oracle Linux 6, lanzado en 2011, también incluye una opción para usar XFS. [17]

RHEL 7.0, lanzado en junio de 2014, utiliza XFS como su sistema de archivos predeterminado, [18] incluido soporte para usar XFS para la /bootpartición, lo que anteriormente no era práctico debido a errores en el gestor de arranque GRUB . [19]

En agosto de 2016, el kernel de Linux 4.8 agregó una nueva característica, "mapeo inverso". Esta es la base para un gran conjunto de características planificadas: instantáneas , datos de copia en escritura (COW), deduplicación de datos , copias de referencia, depuración de datos y metadatos en línea , informes de alta precisión sobre pérdida de datos o sectores defectuosos y reconstrucción significativamente mejorada de sistemas de archivos dañados o corruptos. Este trabajo requirió cambios en el formato en disco de XFS. [20] [21]

XFS de tercera generación

XFS v4 está obsoleto. Las particiones deben formatearse con XFS v5.

El kernel de Linux 5.10, lanzado en diciembre de 2020, incluyó el nuevo formato en disco XFS v5. Esto fue un duro golpe, ya que el obsoleto XFS v4 no se puede convertir a XFS v5. Los datos de las particiones formateadas con XFS v4 deben respaldarse en otra partición o medio para restaurarlos después de formatear la partición anterior con XFS v5, lo que borra por completo todos los datos que contiene. El soporte para XFS v4 se eliminará del kernel de Linux en septiembre de 2030. [22]

XFS v5 introdujo "bigtime", para almacenar las marcas de tiempo de los inodos como un contador de nanosegundos de 64 bits en lugar del tradicional contador de segundos de 32 bits. Esto pospuso el problema anterior del año 2038 hasta el año 2486. [5] También introdujo sumas de comprobación de metadatos.

El Manual de Gentoo, el manual de instalación oficial de Gentoo Linux , recomienda XFS como el "sistema de archivos multiplataforma para todo uso" desde el 28 de junio de 2023, sucediendo a Ext4 . [23]

Características

Capacidad

XFS es un sistema de archivos de 64 bits [24] y admite un tamaño máximo de sistema de archivos de 8 exbibytes menos un byte (2 63  − 1 bytes), pero las limitaciones impuestas por el sistema operativo host pueden disminuir este límite. Los sistemas Linux de 32 bits limitan el tamaño tanto del archivo como del sistema de archivos a 16 tebibytes .

Diario

En la informática moderna, el registro en diario es una capacidad que garantiza la coherencia de los datos en el sistema de archivos, a pesar de cualquier corte de energía o falla del sistema que pueda ocurrir. XFS proporciona un registro en diario para los metadatos del sistema de archivos, donde las actualizaciones del sistema de archivos se escriben primero en un registro en serie antes de que se actualicen los bloques de disco reales. El registro es un búfer circular de bloques de disco que no se lee durante el funcionamiento normal del sistema de archivos.

El diario XFS se puede almacenar dentro de la sección de datos del sistema de archivos (como un registro interno) o en un dispositivo separado para minimizar la contención del disco.

En XFS, el diario contiene principalmente entradas que describen las partes de los bloques de disco modificadas por las operaciones del sistema de archivos. Las actualizaciones del diario se realizan de forma asincrónica para evitar una disminución en la velocidad de rendimiento.

En caso de un fallo del sistema, las operaciones del sistema de archivos que se produjeron inmediatamente antes del fallo se pueden volver a aplicar y completar según lo registrado en el diario, que es la forma en que los datos almacenados en los sistemas de archivos XFS se mantienen consistentes. La recuperación se realiza automáticamente la primera vez que se monta el sistema de archivos después del fallo. La velocidad de recuperación es independiente del tamaño del sistema de archivos, sino que depende de la cantidad de operaciones del sistema de archivos que se deben volver a aplicar.

Grupos de asignación

Los sistemas de archivos XFS están divididos internamente en grupos de asignación , que son regiones lineales de igual tamaño dentro del sistema de archivos. Los archivos y directorios pueden abarcar grupos de asignación. Cada grupo de asignación administra sus propios inodos y espacio libre por separado, lo que proporciona escalabilidad y paralelismo para que varios subprocesos y procesos puedan realizar operaciones de E/S en el mismo sistema de archivos simultáneamente.

Esta arquitectura ayuda a optimizar el rendimiento de E/S paralelas en sistemas con múltiples procesadores y/o núcleos, ya que las actualizaciones de metadatos también se pueden paralelizar. La partición interna que proporcionan los grupos de asignación puede ser especialmente beneficiosa cuando el sistema de archivos abarca varios dispositivos físicos, lo que permite un uso óptimo del rendimiento de los componentes de almacenamiento subyacentes.

Asignación por franjas

Si se va a crear un sistema de archivos XFS en una matriz RAID segmentada, se puede especificar una unidad segmentada cuando se crea el sistema de archivos. Esto maximiza el rendimiento al garantizar que las asignaciones de datos, las asignaciones de inodos y el registro interno (el diario) estén alineados con la unidad segmentada.

Asignación basada en la extensión

Los bloques utilizados en archivos almacenados en sistemas de archivos XFS se administran con extensiones de longitud variable , donde una extensión describe uno o más bloques contiguos. Esto puede acortar considerablemente la lista de bloques, en comparación con los sistemas de archivos que enumeran todos los bloques utilizados por un archivo de forma individual.

Los sistemas de archivos orientados a bloques gestionan la asignación de espacio con uno o más mapas de bits orientados a bloques; en XFS, estas estructuras se sustituyen por una estructura orientada a extensiones que consta de un par de árboles B+ para cada grupo de asignación del sistema de archivos. Uno de los árboles B+ está indexado por la longitud de las extensiones libres, mientras que el otro está indexado por el bloque inicial de las extensiones libres. Este esquema de indexación dual permite una asignación muy eficiente de extensiones libres para las operaciones del sistema de archivos.

Tamaños de bloques variables

El tamaño de bloque del sistema de archivos representa la unidad de asignación mínima. XFS permite crear sistemas de archivos con tamaños de bloque que van desde 512 bytes hasta 64 KB, lo que permite ajustar el sistema de archivos al grado de uso esperado. Cuando se esperan muchos archivos pequeños, un tamaño de bloque pequeño normalmente maximizaría la capacidad, pero para un sistema que trabaja principalmente con archivos grandes, un tamaño de bloque más grande puede proporcionar una ventaja en la eficiencia del rendimiento.

Asignación retrasada

XFS utiliza técnicas de evaluación diferida para la asignación de archivos. Cuando se escribe un archivo en la caché del búfer, en lugar de asignar extensiones para los datos, XFS simplemente reserva la cantidad adecuada de bloques del sistema de archivos para los datos almacenados en la memoria. La asignación de bloques real se produce solo cuando los datos se vacían finalmente en el disco. Esto mejora la posibilidad de que el archivo se escriba en un grupo contiguo de bloques, lo que reduce los problemas de fragmentación y aumenta el rendimiento.

Archivos dispersos

XFS proporciona un espacio de direcciones dispersas de 64 bits para cada archivo, lo que permite tanto tamaños de archivo muy grandes como "huecos" dentro de los archivos en los que no se asigna espacio en disco. Como el sistema de archivos utiliza un mapa de extensión para cada archivo, el tamaño del mapa de asignación de archivos se mantiene pequeño. Cuando el tamaño del mapa de asignación es demasiado grande para almacenarlo dentro del inodo, el mapa se mueve a un árbol B+ que permite un acceso rápido a los datos en cualquier parte del espacio de direcciones de 64 bits proporcionado para el archivo.

Atributos extendidos

XFS proporciona múltiples flujos de datos para archivos; esto es posible gracias a la implementación de atributos extendidos . Estos permiten el almacenamiento de una cantidad de pares de nombre/valor adjuntos a un archivo. Los nombres son cadenas de caracteres imprimibles terminadas en nulo que tienen una longitud de hasta 256 bytes, mientras que sus valores asociados pueden contener hasta 64  KB de datos binarios.

Se subdividen además en dos espacios de nombres: rooty user. Los atributos extendidos almacenados en el espacio de nombres raíz solo pueden ser modificados por el superusuario, mientras que los atributos en el espacio de nombres de usuario pueden ser modificados por cualquier usuario con permiso para escribir en el archivo.

Los atributos extendidos se pueden adjuntar a cualquier tipo de inodo XFS, incluidos enlaces simbólicos, nodos de dispositivos, directorios, etc. La attrutilidad se puede utilizar para manipular atributos extendidos desde la línea de comandos, y las utilidades xfsdumpy xfsrestoreson conscientes de los atributos extendidos y realizarán copias de seguridad y restaurarán su contenido. Muchos otros sistemas de copia de seguridad no admiten el trabajo con atributos extendidos.

E/S directa

Para las aplicaciones que requieren un alto rendimiento en el disco, XFS proporciona una implementación de E/S directa que permite que las operaciones de E/S no almacenadas en caché se apliquen directamente al espacio de usuario. Los datos se transfieren entre el búfer de la aplicación y el disco mediante DMA , lo que permite el acceso a todo el ancho de banda de E/S de los dispositivos de disco subyacentes.

Instantáneas

XFS todavía no [25] proporciona soporte directo para instantáneas, ya que actualmente espera que el administrador de volúmenes implemente el proceso de instantáneas. Tomar una instantánea de un sistema de archivos XFS implica detener temporalmente la E/S al sistema de archivos mediante la xfs_freezeutilidad, hacer que el administrador de volúmenes realice la instantánea real y luego reanudar la E/S para continuar con las operaciones normales. Luego, la instantánea se puede montar como de solo lectura para fines de copia de seguridad.

Las versiones de XFS en IRIX incorporaban un administrador de volúmenes integrado llamado XLV. Este administrador de volúmenes no se ha adaptado a Linux y, en cambio, XFS funciona con LVM estándar en sistemas Linux.

En los núcleos Linux más recientes, la xfs_freezefuncionalidad se implementa en la capa VFS y se ejecuta automáticamente cuando se invoca la funcionalidad de instantáneas del administrador de volúmenes. Esto alguna vez fue una ventaja valiosa ya que el sistema de archivos ext3 no se podía suspender [26] y el administrador de volúmenes no podía crear una instantánea "activa" consistente para respaldar una base de datos muy ocupada. [27] Afortunadamente, este ya no es el caso. Desde Linux 2.6.29, los sistemas de archivos ext3, ext4 , GFS2 y JFS también tienen la función de congelamiento. [28]

Desfragmentación en línea

Aunque la naturaleza basada en extensión de XFS y la estrategia de asignación retrasada que utiliza mejoran significativamente la resistencia del sistema de archivos a los problemas de fragmentación, XFS proporciona una utilidad de desfragmentaciónxfs_fsr del sistema de archivos ( , abreviatura de reorganizador del sistema de archivos XFS) que puede desfragmentar los archivos en un sistema de archivos XFS montado y activo. [29]

Crecimiento en línea

XFS ofrece la xfs_growfsutilidad para realizar la expansión en línea de los sistemas de archivos XFS. Los sistemas de archivos XFS pueden ampliarse siempre que haya espacio sin asignar en el dispositivo que contiene el sistema de archivos. Esta función se utiliza normalmente junto con la gestión de volúmenes, ya que de lo contrario será necesario ampliar la partición que contiene el sistema de archivos por separado.

Funciones exclusivas de IRIX

DMAPI

XFS implementó la interfaz DMAPI para soportar la gestión de almacenamiento jerárquico en IRIX. A partir de octubre de 2010, la implementación de Linux de XFS admitía los metadatos en disco necesarios para la implementación de DMAPI, pero se informó que el soporte del kernel no era utilizable. Durante algún tiempo, SGI albergó un árbol de kernel que incluía los ganchos DMAPI, pero este soporte no se ha mantenido adecuadamente, aunque los desarrolladores del kernel han declarado su intención de actualizar este soporte. [30]

E/S de velocidad garantizada

El sistema de E/S de velocidad garantizada XFS proporciona una API que permite a las aplicaciones reservar ancho de banda para el sistema de archivos. XFS calcula dinámicamente el rendimiento disponible de los dispositivos de almacenamiento subyacentes y reserva ancho de banda suficiente para cumplir con el rendimiento solicitado durante un tiempo especificado. Esta es una característica exclusiva del sistema de archivos XFS. Las velocidades garantizadas pueden ser "duras" o "suaves", lo que representa un equilibrio entre confiabilidad y rendimiento; sin embargo, XFS solo permitirá garantías "duras" si el subsistema de almacenamiento subyacente las admite. Esta función se utiliza principalmente para aplicaciones en tiempo real, como la transmisión de video.

La E/S de velocidad garantizada solo era compatible con IRIX y requería hardware especial para ese propósito. [31]

Desventajas

Desventajas históricas

Véase también

Referencias

  1. ^ "disco fGPT - ArchWiki".
  2. ^ "¿Cuál es el número máximo de inodos en los sistemas de archivos de Linux?". 2014-06-17.
  3. ^ "Estructura del sistema de archivos XFS 2.ª edición, revisión 1" (PDF) . pág. 25. Archivado desde el original (PDF) el 31 de octubre de 2017.
  4. ^ "ondisk_inode.asciidoc\XFS_Filesystem_Structure\design - xfs/xfs-documentation.git - Árbol de documentación de XFS AsciiDoc". git.kernel.org .
  5. ^ por Darrick J. Wong (10 de agosto de 2020). "xfs: ampliar las marcas de tiempo para tratar con y2038".
  6. ^ "Duperemove". GitHub . Archivado desde el original el 6 de marzo de 2016 . Consultado el 21 de agosto de 2016 .
  7. ^ "xFS: La extensión de EFS - "x" significa "por determinar" (pero el nombre se mantuvo)". XFS.org . Archivado desde el original el 14 de julio de 2014.
  8. ^ Smith, Roderick W. (2007). Linux Administrator Street Smarts: A Real World Guide to Linux Certification Skills. Serie Street Smarts. John Wiley & Sons. pág. 204. ISBN 9780470116746. Archivado desde el original el 21 de agosto de 2016. Consultado el 21 de marzo de 2016. Silicon Graphics (SGI) creó su sistema de archivos de extensión (XFS) para su sistema operativo IRIX y [...] posteriormente donó el código a Linux.
  9. ^ "SGI hace que XFS sea de código abierto". slashdot.org . 1999-05-19 . Consultado el 2023-04-12 .
  10. ^ "Portar XFS a Linux". Olstrans.SourceForge.net . 2000-07-21. Archivado desde el original el 2013-02-25 . Consultado el 2013-04-29 .
  11. ^ "Registro de cambios del kernel de Linux 2.4.25". kernel.org . 2004-02-18. Archivado desde el original el 2014-08-19 . Consultado el 2014-08-14 .
  12. ^ Daniel Robbins (1 de enero de 2002). «Hilos comunes: Guía avanzada del implementador de sistemas de archivos, Parte 9, Introducción a XFS». Developer Works . IBM. Archivado desde el original el 4 de septiembre de 2015 . Consultado el 6 de noviembre de 2011 .
  13. ^ Daniel Robbins (1 de abril de 2002). "Hilos comunes: Guía avanzada del implementador del sistema de archivos, Parte 10, Implementación de XFS". Developer Works . IBM. Archivado desde el original el 24 de diciembre de 2011 . Consultado el 6 de noviembre de 2011 .
  14. ^ "¿FreeBSD 10 ha abandonado el soporte para XFS?". Lists.freebsd.org . 2013-10-27. Archivado desde el original el 2014-03-30 . Consultado el 2014-03-30 .
  15. ^ "Falta el error 521173 -xfsprogs en RHEL-5.4". RedHat.com . 24 de mayo de 2010. Archivado desde el original el 10 de julio de 2012 . Consultado el 6 de noviembre de 2011 .
  16. ^ "Complemento del sistema de archivos escalable de Red Hat Enterprise Linux". RedHat.com . Archivado desde el original el 29 de mayo de 2014. Consultado el 22 de mayo de 2014 .
  17. ^ "Oracle Linux 6 Release Notes". Oracle Corporation. Febrero de 2011. Archivado desde el original el 28 de marzo de 2012. Consultado el 7 de abril de 2013. Oracle Linux 6 incluye muchas características nuevas, entre ellas [...] XFS [:] Oracle Linux 6 incluye XFS como un sistema de archivos opcional.
  18. ^ "Red Hat presenta Red Hat Enterprise Linux 7, que redefine el sistema operativo empresarial". Red Hat . 2014-06-10. Archivado desde el original el 2014-06-13 . Consultado el 2014-06-10 .
  19. ^ "Bug 250843 -grub-install se bloquea en xfs". Redhat.com . 4 de mayo de 2009. Archivado desde el original el 10 de julio de 2012 . Consultado el 6 de noviembre de 2011 .
  20. ^ "kernel/git/torvalds/linux.git - Árbol de código fuente del kernel de Linux". git.kernel.org .
  21. ^ "Linux_4.8 - Linux Kernel Newbies". Archivado desde el original el 19 de octubre de 2018. Consultado el 19 de octubre de 2018 .
  22. ^ https://www.haiku-os.org/docs/develop/file_systems/xfs.html
  23. ^ "Diferencia entre las revisiones de "Manual:Partes/Instalación/Discos" - Wiki de Gentoo". wiki.gentoo.org . Consultado el 25 de abril de 2024 .
  24. ^ "Descripción general de XFS". Silicon Graphics International Corp. 2 de julio de 2013. Archivado desde el original el 6 de junio de 2013. Consultado el 2 de julio de 2013 .
  25. ^ "XFS: ¿Allí y de regreso... y allí otra vez? [LWN.net]". lwn.net . Archivado desde el original el 2016-10-27 . Consultado el 2016-10-27 .
  26. ^ "Cómo congelar el sistema de archivos ext3". www.linuxquestions.org . Archivado desde el original el 28 de abril de 2011 . Consultado el 24 de agosto de 2011 .
  27. ^ "Instantáneas de LVM: ¿cómo utilizarlas?". www.linuxquestions.org . Archivado desde el original el 17 de enero de 2011. Consultado el 17 de abril de 2010 .
  28. ^ "kernel/git/torvalds/linux.git - Árbol de código fuente del kernel de Linux". git.kernel.org .
  29. ^ Bitubique.com Archivado el 1 de abril de 2009 en Wayback Machine .
  30. ^ Christoph Hellwig (3 de octubre de 2010). «Re: Linux y DMAPI». Lista de correo XFS (Mailing list). SGI. Archivado desde el original el 27 de septiembre de 2011. Consultado el 6 de noviembre de 2011 .
  31. ^ Dave Chinner (30 de julio de 2012). "Re: Re: realtime section bugs still around". Lista de correo XFS (Mailing list). SGI. Archivado desde el original el 14 de abril de 2014 . Consultado el 13 de abril de 2014 .
  32. ^ XFS.org Archivado el 5 de enero de 2009 en Wayback Machine , Preguntas frecuentes
  33. ^ Eric Sandeen (18 de enero de 2002). "Re: ¿Reducir el tamaño de un sistema de archivos XFS? (LVM)". Lista de correo XFS (Lista de correo). SGI. Archivado desde el original el 3 de febrero de 2016.
  34. ^ "Acerca de los diarios XFS externos". oracle.com . Consultado el 16 de noviembre de 2022 .
  35. ^ Chinner, Dave (23 de diciembre de 2010). "Mejora del rendimiento de los metadatos mediante la reducción de la sobrecarga del diario". Wiki de XFS.org . Archivado desde el original el 6 de octubre de 2011. Consultado el 6 de noviembre de 2011 .
  36. ^ Chinner, Dave (24 de mayo de 2010). "Re: PATCH 0/12 xfs: delayed logging V6". Mensaje de la lista de correo de XFS (lista de correo). Archivado desde el original el 5 de diciembre de 2011 . Consultado el 6 de noviembre de 2011 .

Lectura adicional

Enlaces externos