# XFS

XFS es un sistema de archivos de 64 bits con registro de bitácora o journaling de alto rendimiento creado por SGI (antiguamente Silicon Graphics Inc.) para su implementación de UNIX llamada IRIX. En mayo de 2000, SGI liberó XFS bajo una licencia de código abierto.
XFS se incorporó a Linux a partir de la versión 2.4.25, cuando Marcelo Tosatti (responsable de la rama 2.4) lo consideró lo suficientemente estable para incorporarlo en la rama principal de desarrollo del núcleo. Los programas de instalación de las distribuciones de SuSE, Gentoo, Mandriva, Slackware, Fedora Core, Ubuntu y Debian ofrecen XFS como un sistema de archivos más. En FreeBSD el soporte para solo-lectura de XFS se añadió a partir de diciembre de 2005 y en junio de 2006 un soporte experimental de escritura fue incorporado a FreeBSD-7.0-CURRENT y luego eliminado en FreeBSD 10.0

## Historia

XFS es el más antiguo de los sistema de archivos con journaling disponible para la plataforma UNIX, tiene un código maduro, estable y bien depurado. Su desarrollo lo comenzó en 1993 en la compañía Silicon Graphics Inc., y apareció por primera vez en el IRIX 5.3 en 1994. El sistema de archivos fue liberado bajo la GNU General Public License en mayo de 2000 y posteriormente portado a GNU/Linux, apareciendo por primera vez en una distribución entre 2001 y 2002.

## Características
### Capacidad

XFS soporta un sistema de archivos de hasta 8 exabytes, aunque esto puede variar dependiendo de los límites impuestos por el sistema operativo. En sistemas GNU/Linux de 32 bits, el límite es 16 terabytes.

### Registro de bitácora (journaling)

XFS provee soporte para llevar un registro (journaling), donde los cambios al sistema de archivos primero son escritos a un diario o journal antes de que se actualicen los datos del disco. El journal es un buffer circular de bloques del disco que no son parte del sistema de archivos. En XFS el registro (journal) contiene entradas 'lógicas' que describen a un alto nivel las operaciones que se están realizando, al contrario de otros sistemas de archivo con un registro (journal) 'físico', que guardan una copia de los bloques modificados durante cada transacción. Las actualizaciones del registro (journal) se realizan asincrónicamente para evitar una bajada en el rendimiento. En el caso de una caída repentina del sistema, las operaciones inmediatamente anteriores a la caída pueden ser terminadas, garantizando así la consistencia del sistema. La recuperación se realiza automáticamente a la hora del montaje del sistema de archivos y la velocidad de recuperación es independiente del tamaño del sistema de archivos. Incluso si alguna información que fuese modificada inmediatamente antes de la caída del sistema no fuese escrita al disco, XFS se encarga de borrar todos los bloques de datos sin escribir, eliminando así cualquier compromiso de seguridad.

### 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 los directorios pueden crear grupos de asignación. Cada grupo gestiona sus inodos y su espacio libre de forma independiente, proporcionando escalabilidad y paralelismo — múltiples hilos pueden realizar operaciones de E/S simultáneamente en el mismo sistema de archivos.

### LVM

Es posible aumentar la capacidad de sistemas de ficheros XFS: xfsgrowfs es ideal para particiones LVM

### Actualidad

La distribución comercial de linux Red Hat Enterprise Linux incorporó en su versión 7 XFS como su sistema de archivos por defecto, destacando su capacidad de manejar una partición de hasta 500 terabytes.
La versión de OpenSUSE "Leap" 42.1, liberada el 4 de noviembre de 2015, propone por defecto este sistema de archivos para algunos puntos de montaje como /home.
CentOS 7.2, versión liberada el 19 de noviembre de 2015, propone el uso de XFS para sus puntos de montaje "/home" y "/" al igual que lo hace Red Hat.

## Otras páginas de interés

* ext2
* ext3
* ext4
* JFS
* ReiserFS
* Reiser4
* Btrfs