18 de junio de 2012

El renacer de XFS

La vida de XFS da para muchas curiosidades. La publicación de su código con licencia GPL y port fue uno de los hitos fundamentales de la historia de Linux, uno de esos cambios cruciales que permitieron a Linux empezar a ser tomado muy en serio. XFS puede considerarse como el mejor sistema de archivos hasta la aparición de ZFS.

Sin embargo, la relación entre XFS y la comunidad linuxera han tenido varios altibajos. Nunca fue capaz de reemplazar a los Ext como sistema de archivos por defecto, tal y como cabría esperar en un principio. Su uso en los instaladores siempre estuvo considerado como algo alternativo, no ya respecto a la familia Ext sino incluso respecto a Reiserfs. A este confinamiento a un papel secundario contribuía mucho, en mi opinión, la falta de apoyo de un comunidad muy importante, la del kernel.

Y es que durante mucho tiempo, SGI intentaba mantener sincronizadas las bases de código de Linux e Irix, lo cual impedía una transición completa y hacía que XFS fuese un "ciudadano incómodo" que no se integraba muy bien con Linux. Estos problemas han sido solucionados poco a poco hasta quedar bien resueltos, pero el otro gran problema era que si bien XFS era muy bueno "con archivos grandes", como se solía decir, no lo era para otras cosas.

En concreto, XFS era verdaderamente malo con cualquier uso extensivo de metadatos. Pero malo, malo. Ext4 puede ser 20-50 veces más rápido en operaciones con metadatos, una descompresión de un .tar que en Ext4 toma 3 ó 4 segundos, en XFS tarda 60, según palabras de los desarrolladores de XFS. Y si bien mucha gente utilizó XFS para su ordenador de escritorio creyendo (erróneamente) que era más rápido, la gente del kernel no se dejaba engañar, ni tampoco los mantenedores de las distribuciones.

Para entender por qué XFS era tan lento, hay que recordar algo que se ha repetido aquí varias veces: al igual que hay navegadores lentos y rápidos para ejecutar el mismo código javascript, en un sistema de archivos lo fundamental es su implementación, mucho más que su formato de disco. El código de Ext3 y 4 tienen una optimización que permite unir varias transacciones que estén en memoria antes de ser escritas a disco en una sola, de modo que son registradas en el journal y posteriormente al disco simultáneamente. Al descomprimir un .tar se crean miles de archivos, cada uno de los cuales es internamente una transacción, y Ext4 las unifica de modo que se convierte en una sola.

XFS no tenía esa clase de optimizaciones, pero finalmente la han implementado. Y además, unas cuantas mejoras más de escalabilidad y rendimiento, todo ello sin haber modificado el formato del disco (que sigue siendo excelente). El resultado de todo este trabajo sitúa a XFS en un lugar muy interesante: un sistema de archivos de mejor diseño que Ext4, un código de igual o mejor calidad, un rendimiento igual o superior en cualquier situación (muy superior, cuando hablamos de muchos discos y CPUs), igual de bien integrado con el resto del kernel que Ext4, y tan bien mantenido como Ext4 (Red Hat ha contratado a varios desarrolladores históricos de XFS)...la conclusión obvia parece ser: ¿para qué seguir usando Ext4?

Esa es la atrevida propuesta que hace un desarrollador de XFS en este vídeo (que es la motivación de este post), y que viene a resumirse en que el futuro de los sistemas de archivos en Linux será usar Btrfs por defecto, y XFS para quien necesite rendimiento y escalabilidad extra. Esta última distinción, que indica una discapacidad de Btrfs, puede sorprender, pero tiene algo de cierto: XFS no duplica los metadatos por defecto, ni los comprime, ni provoca fragmentación masivama debido a copy-on-write, lo cual le permite ser más escalable en situaciones extremas, y por tanto le permite tener un futuro sólido en grandes servidores, a pesar de no ser un sistema de archivos "de última generación". Además, están planeando un cambio de formato de disco en el cual piensan incluir checksums de metadatos, añadir información extra para facilitar la tarea del fsck, e implementar la capacidad de hacer un "scrubbing" online; es decir, intentarán implementar algunas de las ventajas de Btrfs, todo ello con vistas a seguir siendo un buen sistema de archivos en el futuro, algo que Ext4 no podrá hacer con facilidad.

Mi veredicto personal es que probablemente tiene razón, y que a medida que Btrfs reemplace a Ext4 como sistema de archivos por defecto, XFS lo acabará superando también como sistema de archivos alternativo.

4 comentarios:

  1. Anónimo10:27 p. m.

    A mí me parece que el papel más injusto de segundón le ha tocado a JFS. Una pena, pues entre los sistemas de archivos convencionales es mi favorito: rápido casi en cualquier situación, ligero, puede crecer estando montado y nunca me ha dado ningún disgusto!

    ResponderEliminar
  2. Anónimo11:52 a. m.

    ¿Pero Btrfs ya es estable para uso de escritorio? Es decir, si mañana me piden instalar un Debian para uso diario, ¿me aconsejaría que formatease el disco en Btrfs?

    ResponderEliminar
  3. Pues la verdad es que dan ganas de probarlo, a ver que tal, porque de aquí a que Btrfs esté optimizado...

    ResponderEliminar
  4. Anónimo8:48 p. m.

    Yo no me animaría a usar btrfs todavía, al menos para el uso cotidiano de escritorio ni mucho menos en servidores en producción. Que yo sepa, todavía no se considera "estable" para ello. Tal es así, que la gente de Fedora no está del todo segura si lo va a poder declarar "estable" para entornos de producción, en su próxima versión. Sólo lo usaría en un equipo destinado a pruebas.

    Saludos!.

    ResponderEliminar