XFS es un sistema de archivos de registro por diario de 64 bits de alto rendimiento creado por Silicon Graphics, Inc (SGI) en 1993. [8] Era el sistema de archivos predeterminado en el sistema operativo IRIX de SGI a partir de su versión 5.3. XFS fue portado al kernel de Linux en 2001; A partir de junio de 2014, XFS es compatible con la mayoría de las distribuciones de Linux , algunas de las cuales lo utilizan como sistema de archivos predeterminado.
Desarrollador (es) | |
---|---|
Nombre completo | XFS |
Introducido | 1994 IRIX 5.3 | con
Identificador de partición | 0x83: sistema de archivos Linux ( registro de arranque maestro ) 0FC63DAF-8483-4772-8E79-3D69D8477DE4: sistema de archivos Linux ( tabla de particiones GUID ) [1] |
Estructuras | |
Contenidos del directorio | Árboles B + |
Asignación de archivos | Árboles B + |
Limites | |
Max. tamaño del volumen | 8 exbibytes - 1 byte |
Max. tamaño del archivo | 8 exbibytes - 1 byte |
Max. Número de archivos | 2 64 [2] |
Max. longitud del nombre de archivo | 255 bytes |
Caracteres permitidos en nombres de archivo | Todos excepto NULL y "/" |
Características | |
Fechas registradas | atime, mtime, ctime, [3] versión 5: crtime [4] |
Rango de fechas | 13 de diciembre de 1901-2 de julio de 2486 [5] |
Resolución de fecha | 1 ns |
Atributos | sí |
Permisos del sistema de archivos | sí |
Compresión transparente | No |
Cifrado transparente | No (proporcionado a nivel de dispositivo de bloque) |
Deduplicación de datos | Experimental, solo Linux [6] |
Otro | |
Apoyados sistemas operativos |
XFS sobresale en la ejecución de operaciones de entrada / salida (E / S) en paralelo 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 usa XFS, también abreviado a 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 al abarcar varios dispositivos de almacenamiento físico. XFS asegura la coherencia de los datos mediante el empleo de metadatos en diario y el apoyo a las barreras de escritura . La asignación de espacio se realiza a través de extensiones con estructuras de datos almacenadas en árboles B + , mejorando el rendimiento general del sistema de archivos, especialmente cuando se manejan 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 . Una característica exclusiva de XFS es la asignación previa de ancho de banda de E / S a una velocidad predeterminada; esto es adecuado para muchas aplicaciones en tiempo real. Sin embargo, esta función solo se admitía en IRIX y solo con hardware especializado.
Historia
Silicon Graphics comenzó el desarrollo de XFS [9] (la 'X' debía completarse más tarde, pero nunca lo fue) en 1993.
El sistema de archivos fue lanzado bajo la Licencia Pública General GNU (GPL) en mayo de 2000. Un equipo liderado por Steve Lord en SGI lo portó a Linux, [10] y el primer soporte de una distribución de Linux llegó en 2001. Este soporte estuvo disponible gradualmente. en casi todas las distribuciones de Linux. [ cita requerida ]
El soporte inicial para XFS en el kernel de Linux llegó a través de parches de SGI. Se fusionó con la línea principal del kernel de Linux para la serie 2.6, y se fusionó por separado en febrero de 2004 en la serie 2.4 en la versión 2.4.25, [11] haciendo que XFS esté casi universalmente disponible en los sistemas Linux. [12] Gentoo Linux se convirtió en la primera distribución de 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 solo como una ayuda en la migración desde Linux, no como un sistema de archivos "principal". FreeBSD 10 eliminó el soporte para XFS. [7]
En 2009, la versión 5.4 de la distribución de Linux de Red Hat Enterprise Linux (RHEL) de 64 bits contenía el soporte del 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 de CentOS podrían funcionar para ese propósito, y Red Hat también las proporcionó a los clientes de RHEL a pedido. [14] RHEL 6.0, lanzado en 2010, incluye soporte XFS por una tarifa como parte del "complemento de sistema de archivos escalable" de Red Hat. [15] Oracle Linux 6, lanzado en 2011, también incluye una opción para usar XFS. [dieciséis]
RHEL 7.0, lanzado en junio de 2014, usa XFS como su sistema de archivos predeterminado, [17] incluido el soporte para usar XFS para la partición / boot , que anteriormente no era práctico debido a errores en el cargador de arranque GRUB . [18]
El kernel de Linux 4.8 en agosto de 2016 agregó una nueva característica, "mapeo inverso". Esta es la base para un gran conjunto de funciones planificadas: instantáneas , datos de copia en escritura (COW), deduplicación de datos , copias de enlace de referencia, depuración de metadatos y datos en línea , informes altamente precisos de 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. [19] [20]
El kernel de Linux 5.10, lanzado en diciembre de 2020, introdujo "bigtime", para almacenar marcas de tiempo de inodos como un contador de nanosegundos de 64 bits en lugar del tradicional contador de segundos de 32 bits. Esto pospone el problema anterior del año 2038 hasta el año 2486. [5]
Características
Capacidad
XFS es un sistema de archivos de 64 bits [21] 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 reducir este límite. Los sistemas Linux de 32 bits limitan el tamaño del archivo y del sistema de archivos a 16 tebibytes .
Llevar un 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 los cortes de energía o fallas del sistema que puedan ocurrir. XFS proporciona un diario para los metadatos del sistema de archivos, donde las actualizaciones del sistema de archivos se escriben primero en un diario en serie antes de que se actualicen los bloques de disco reales. El diario es un búfer circular de bloques de disco que no se lee en 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 modificados 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 del rendimiento.
En el caso de una falla del sistema, las operaciones del sistema de archivos que ocurrieron inmediatamente antes de la falla se pueden volver a aplicar y completar según se registra en el diario, que es la forma en que los datos almacenados en los sistemas de archivos XFS permanecen consistentes. La recuperación se realiza automáticamente la primera vez que se monta el sistema de archivos después del bloqueo. 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 vuelvan a aplicar.
Grupos de asignación
Los sistemas de archivos XFS están particionados 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 múltiples 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 en paralelo 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 proporcionada por 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 rayada
Si se va a crear un sistema de archivos XFS en una matriz RAID rayada , se puede especificar una unidad rayada 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 de banda.
Asignación basada en 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 individualmente.
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 reemplazan con una estructura orientada a la extensión 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 la asignación altamente eficiente de extensiones libres para las operaciones del sistema de archivos.
Tamaños de bloque variables
El tamaño del 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 oscilan entre 512 bytes y 64 KB, lo que permite ajustar el sistema de archivos para el 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 se ocupa principalmente de archivos grandes, un tamaño de bloque más grande puede proporcionar una ventaja de eficiencia de 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 memoria caché del búfer, en lugar de asignar extensiones para los datos, XFS simplemente reserva el número apropiado de bloques del sistema de archivos para los datos almacenados en la memoria. La asignación de bloques real ocurre solo cuando los datos finalmente se vacían 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 lugar 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 varios pares de nombre / valor adjuntos a un archivo. Los nombres son cadenas de caracteres imprimibles terminadas en nulo que tienen hasta 256 bytes de longitud, mientras que sus valores asociados pueden contener hasta 64 KB de datos binarios.
Además, se subdividen en dos espacios de nombres: root
y 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 attr
utilidad se puede utilizar para manipular atributos extendidos desde la línea de comandos, y las utilidades xfsdump
y xfsrestore
son conscientes de los atributos extendidos y y restaurar su contenido. La mayoría de los otros sistemas de respaldo 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 al ancho de banda de E / S completo de los dispositivos de disco subyacentes.
E / S de tasa garantizada
El sistema de E / S de velocidad garantizada XFS proporciona una API que permite que las aplicaciones reserven ancho de banda para el sistema de archivos. XFS calcula dinámicamente el rendimiento disponible de los dispositivos de almacenamiento subyacentes y reservará ancho de banda suficiente para cumplir con el rendimiento solicitado durante un tiempo específico. Esta es una característica exclusiva del sistema de archivos XFS. Las tasas garantizadas pueden ser "duras" o "blandas", lo que representa un compromiso entre confiabilidad y desempeño; sin embargo, XFS solo permitirá garantías "estrictas" 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 tasa garantizada solo era compatible con IRIX y requería hardware especial para ese propósito. [22]
DMAPI
XFS implementó la interfaz DMAPI para admitir la administración de almacenamiento jerárquico en IRIX. En octubre de 2010, la implementación de Linux de XFS admitía los metadatos en disco requeridos para la implementación de DMAPI, pero se informó que el soporte del kernel no se podía utilizar. Durante algún tiempo, SGI alojó un árbol del kernel que incluía los ganchos DMAPI, pero este soporte no se ha mantenido adecuadamente, aunque los desarrolladores del kernel han manifestado la intención de actualizar este soporte. [23]
Instantáneas
XFS aún no [24] proporciona soporte directo para instantáneas, ya que actualmente espera que el administrador de volumen 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 usando la xfs_freeze
utilidad, hacer que el administrador de volumen realice la instantánea real y luego reanudar la E / S para continuar con las operaciones normales. La instantánea se puede montar en modo de solo lectura con fines de copia de seguridad.
Las versiones de XFS en IRIX incorporaron un administrador de volumen integrado llamado XLV. Este administrador de volumen no se ha adaptado a Linux y, en su lugar, XFS funciona con LVM estándar en los sistemas Linux.
En los kernels recientes de Linux, la xfs_freeze
funcionalidad se implementa en la capa VFS y se ejecuta automáticamente cuando se invoca la funcionalidad de instantáneas de Volume Manager. Esto fue una vez una ventaja valiosa ya que el sistema de archivos ext3 no se podía suspender [25] y el administrador de volumen no podía crear una instantánea "activa" consistente para hacer una copia de seguridad de una base de datos muy ocupada. [26] 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 congelación. [27]
Desfragmentación en línea
Aunque la naturaleza basada en la extensión de XFS y la estrategia de asignación retrasada que utiliza mejora significativamente la resistencia del sistema de archivos a los problemas de fragmentación, XFS proporciona una utilidad de desfragmentación del sistema de archivos ( xfs_fsr
abreviatura de reorganizador del sistema de archivos XFS) que puede desfragmentar los archivos en un XFS activo y montado. sistema de archivos. [28]
Cambio de tamaño en línea
XFS proporciona la xfs_growfs
utilidad para realizar cambios de tamaño en línea de los sistemas de archivos XFS. Los sistemas de archivos XFS pueden crecer siempre que quede espacio sin asignar en el dispositivo que contiene el sistema de archivos. Esta característica se usa típicamente junto con la administración de volumen, ya que de lo contrario la partición que contiene el sistema de archivos deberá ampliarse por separado. Las particiones XFS no pueden (a partir de noviembre de 2020[actualizar]) se reduzca en su lugar, [29] aunque se han discutido varias posibles soluciones. [30]
Desventajas
- Las operaciones de metadatos en XFS fueron más lentas en comparación con los sistemas de archivos de registro por diario implementados más tarde y diseñados para trabajar con registros mucho más grandes, lo que resultó, por ejemplo, en un rendimiento más lento con operaciones como la eliminación de grandes cantidades de archivos. Sin embargo, se dice que una nueva función XFS implementada por John Nelson y llamada registro retrasado , disponible desde la versión 2.6.39 de la línea principal del kernel de Linux, resuelve esto; [31] Las pruebas comparativas de rendimiento realizadas por el desarrollador en 2010 revelaron niveles de rendimiento similares a ext4 en recuentos de subprocesos bajos y superiores en recuentos de subprocesos altos. [32]
- El diario no se puede deshabilitar. El inconveniente es que la vida útil del disco flash se reducirá
Ver también
- Comparación de sistemas de archivos
- CXFS
- Lista de sistemas de archivos
Referencias
- ^ https://wiki.archlinux.org/index.php/GPT_fdisk
- ^ "¿Cuál es el número máximo de inodos en los sistemas de archivos de Linux?" . 2014-06-17.
- ^ "Estructura del sistema de archivos XFS 2ª edición, revisión 1" (PDF) . pag. 25. Archivado desde el original (PDF) el 31 de octubre de 2017.
- ^ "ondisk_inode.asciidoc \ XFS_Filesystem_Structure \ design - xfs / xfs-documentation.git - Árbol de documentación XFS AsciiDoc" . git.kernel.org .
- ^ a b Darrick J. Wong (10 de agosto de 2020). "xfs: ampliar las marcas de tiempo para hacer frente a y2038" .
- ^ "Duperemove" . GitHub . Archivado desde el original el 6 de marzo de 2016 . Consultado el 21 de agosto de 2016 .
- ^ a b "¿FreeBSD 10 ha dejado de ser compatible con XFS?" . Lists.freebsd.org . 2013-10-27. Archivado desde el original el 30 de marzo de 2014 . Consultado el 30 de marzo de 2014 .
- ^ "xFS: la extensión de EFS -" x "para por determinar (pero el nombre atascado)" . XFS.org . Archivado desde el original el 14 de julio de 2014.
- ^ Smith, Roderick W. (2007). Street Smarts del administrador de Linux: una guía del mundo real para las habilidades de certificación de Linux . Serie Street Smart. John Wiley e hijos. pag. 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 Extents File System (XFS) para su sistema operativo IRIX y luego [...] donó el código a Linux.
- ^ "Portar XFS a Linux" . Olstrans.SourceForge.net . 2000-07-21. Archivado desde el original el 25 de febrero de 2013 . Consultado el 29 de abril de 2013 .
- ^ "Registro de cambios del kernel de Linux 2.4.25" . kernel.org . 2004-02-18. Archivado desde el original el 19 de agosto de 2014 . Consultado el 14 de agosto de 2014 .
- ^ Daniel Robbins (1 de enero de 2002). "Subprocesos comunes: guía avanzada del implementador del sistema de archivos, Parte 9, Introducción a XFS" . Trabajos de desarrollador . IBM. Archivado desde el original el 4 de septiembre de 2015 . Consultado el 6 de noviembre de 2011 .
- ^ Daniel Robbins (1 de abril de 2002). "Subprocesos comunes: guía avanzada del implementador del sistema de archivos, parte 10, implementación de XFS" . Trabajos de desarrollador . IBM. Archivado desde el original el 24 de diciembre de 2011 . Consultado el 6 de noviembre de 2011 .
- ^ "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 .
- ^ "Complemento de 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 .
- ^ "Notas de la versión de Oracle Linux 6" . 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, incluido [...] XFS [:] Oracle Linux 6 incluye XFS como un sistema de archivos opcional.
- ^ "Red Hat presenta Red Hat Enterprise Linux 7, redefiniendo el sistema operativo empresarial" . Red Hat . 2014-06-10. Archivado desde el original el 13 de junio de 2014 . Consultado el 10 de junio de 2014 .
- ^ "Error 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 .
- ^ "kernel / git / torvalds / linux.git - árbol de fuentes del kernel de Linux" . git.kernel.org .
- ^ "Linux_4.8 - principiantes del kernel de Linux" . Archivado desde el original el 19 de octubre de 2018 . Consultado el 19 de octubre de 2018 .
- ^ "Descripción general de XFS" . Silicon Graphics International Corp.2013-07-02. Archivado desde el original el 6 de junio de 2013 . Consultado el 2 de julio de 2013 .
- ^ John Nelson (30 de julio de 2012). "Re: Re: errores de la sección en tiempo real todavía alrededor" . Lista de correo XFS (lista de correo). SGI. Archivado desde el original el 14 de abril de 2014 . Consultado el 13 de abril de 2014 .
- ^ Christoph Hellwig (3 de octubre de 2010). "Re: Linux y DMAPI" . Lista de correo XFS (lista de correo). SGI. Archivado desde el original el 27 de septiembre de 2011 . Consultado el 6 de noviembre de 2011 .
- ^ "XFS: ida y vuelta ... ¿y otra vez? [LWN.net]" . lwn.net . Archivado desde el original el 27 de octubre de 2016 . Consultado el 27 de octubre de 2016 .
- ^ "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 .
- ^ "Instantáneas de LVM: ¿Cómo se utilizan?" . www.linuxquestions.org . Archivado desde el original el 17 de enero de 2011 . Consultado el 17 de abril de 2010 .
- ^ "kernel / git / torvalds / linux.git - árbol de fuentes del kernel de Linux" . git.kernel.org .
- ^ Bitubique.com Archivado el 1 de abril de 2009 en Wayback Machine.
- ^ XFS.org Archivado el 5 de enero de 2009 en Wayback Machine , Preguntas frecuentes
- ^ Eric Sandeen (18 de enero de 2002). "Re: ¿Reducir un sistema de archivos XFS? (LVM)" . Lista de correo XFS (lista de correo). SGI. Archivado desde el original el 3 de febrero de 2016.
- ^ Nelson, John (23 de diciembre de 2010). "Mejorar el rendimiento de los metadatos reduciendo 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 .
- ^ Nelson, John (24 de mayo de 2010). "Re: PATCH 0/12 xfs: registro retrasado V6" . Mensaje de la lista de correo XFS (lista de correo). Archivado desde el original el 5 de diciembre de 2011 . Consultado el 6 de noviembre de 2011 .
Otras lecturas
- Escalabilidad en el sistema de archivos XFS (primer documento XFS presentado en la Conferencia Técnica Anual de Usenix 1996)
- "XFS Filesystem Disk Structures 3rd Edition" (PDF) . Gráficos de silicio. Junio de 2017 . Consultado el 17 de septiembre de 2019 .
enlaces externos
- La wiki de XFS Linux , wiki de la comunidad actual
- XFS.org , antiguo wiki de la comunidad
- crossmeta.org , puerto comunitario de XFS en Windows