BootlogFS (o el enigma de los sistemas de archivos)

hal.jpg

Hace cerca de un mes y medio ocurrió algo terrible. De la nada, una mujer desapareció de la faz de la tierra. Su nombre era Nina, y semanas después se descubrió que había sido brutalmente asesinada.

Pero la catástrofe no termina ahí.

Resulta que ella era la mujer de Hans Reiser, el creador de uno de los mejores sistemas de archivo del mundo linuxero: ReiserFS. Ahora, el problema -que nadie se esperaba- es que toda la evidencia apuntaba hacia él, razón por la cual no pasó mucho tiempo antes de que se lo llevaran preso por sospecha.

Esto desató una extensa polémica (y por cierto, varias bromas también) sobre el futuro de Reiser (tanto de Hans como del sistema de archivos). Que si es culpable o no, y que si su empresa, NameSys, seguirá mejorando y desarrollando la nueva versión de ReiserFS. Y como uno más uno es igual a tres, entre toda la maraña terminamos sabiendo que SUSE dejaría de usar Reiser por defecto en la distribución.

Pero ojo, aclarémoslo de una: la decisión de SUSE no tiene nada que ver con el arresto de Hans (ya veremos por qué). Lo importante es que toda esta tragedia terminó destapando la discusión acerca del presente y el futuro de los sistemas de archivo en Linux. Una discusión siempre importante, aunque por momentos opacada entre tanta lucha Ubuntu vs SUSE, GNOME vs KDE, Debian vs Mozilla, OSI vs FSF, y claro, Bush vs El Mundo.

Resumen Resumido™: además de ReiserFS, en Linux tenemos Ext2, Ext3, XFS, JFS e incluso algunos más. Tú lo has dicho: todo un enigma. ¿De qué sirven los sistemas de archivos? ¿Cuál es mejor? ¿Por qué uno más uno es igual a tres? ¿Está Hans solo?

Claro que se vienen pruebas de velocidad más adelante. Pero por ahora partamos por donde se debe.

El sistema de archivos es la manera en que un sistema operativo organiza, administra y mantiene la jerarquía de archivos en los dispositivos de almacenamiento (discos duros, pendrives, etc). Como ya sabrán, existen distintos tipos de sistemas de archivos, cada uno con sus métodos propios para ordenar, leer y escribir archivos.

Ahora, para que las aplicaciones puedan funcionar con uno u otro, los SO's implementan una capa por encima, que permite brindar una funcionalidad común a todos: en el caso del pingüino, el Sistema de Archivos Virtual (VFS). Dentro de él, los sistemas de archivos se dividen en tres categorías primarias.

  1. Los basados en discos, que incluyen a ext2fs, ReiserFS, XFS, ext3fs, UFS, iso9660, etc.
  2. Los basados en red, como NFS, Coda y SMB.
  3. Los especiales, como /proc, ramfs, y devfs.

Como verán, el VFS de Linux no sólo es complejo sino además extensible, ya que no se limita sólo a discos duros internos. Es capaz de mapear estructuras remotas de archivos y "hacerles creer" a las aplicaciones que éstas están dentro del tarro (hay muchas implementaciones de esto, como incluso un GmailFS y hasta un FlickrFS!).

Pero bueno, la primera categoría es la que nos importa. Dentro de ella hay sistemas de archivos con journaling y otros sin. Journaling significa, básicamente, registro de transacciones, o sea permite que un sistema de archivos tenga noción de los cambios que ha sufrido, los movimientos de un lado hacia otro, etcétera. Permiten, por ejemplo, que después de un apagón brusco no pierdas toda la información. Éstos son los sistemas de archivo modernos (los inteligentes, digamos), y los que nos interesan para el caso.

Bueno ya, suficiente término críptico. Mejor vamos con la comparación.

Ext3 (Extended File System)

Es la evolución del Ext2, el sistema de archivos por defecto de Linux, al que le agregaron soporte para Journaling. A diferencia de otros, permite des-borrar datos del disco (que no es lo mismo que sacar del Basurero). Además es compatible hacia atrás (un kernel que no soporta Ext3 puede montar la partición como Ext2).

Lo bueno: es estable, está muy difundido y tiene buen soporte. La mayoría de las distribuciones usan Ext3 por defecto, por las razones previas. Tiene, además, algo muy importante: proyección. Este año se presentó Ext4 en sociedad, que al parecer tiene un norte bien definido y promisorio (además de un equipo de desarrollo detrás).

Lo malo: no es tan rápido como Reiser ni XFS. Usa demasiado espacio para guardar los inodos (en almacenar 50,000 directorios vacíos ocupa 200MB!) O sea, para grandes servidores no es la mejor opción, pero puede serlo para un computador de escritorio.

ReiserFS (El del señor Hans)

Reiser, a diferencia de otros sistemas de archivo, depende de una estructura de árbol balanceada, a diferencia de los bloques tradicionales. Además, fue el primero de los "journaling" en ser incorporado al kernel de Linux (XFS llegó después). Reiser es conocido como "la bala" de los sistemas de archivos.

Lo bueno: como decía, es rápido, bien rápido. Aunque en un comienzo se decía que no era estable, después de muchos años de circo Reiser es todo lo contrario (de hecho, yo lo uso para / en todos mis tarros con Linux). Además, es eficiente en el uso del espacio (para esos mismos 50.000 directorios necesita sólo 200Kb, un 1% de lo que usa Ext3). Se dice que Reiser, además, es el que mejor trabaja con pequeños archivos, es decir, es ideal servidores web y cosas así.

Lo malo: Aunque dicen que el desarrollo continuará a pesar del asunto de Hans, otros dicen que no tiene futuro y está condenado a morir. Que la comunidad es cada vez menor, y que terminará siendo sólo como una fuente de investigación. Además de esto, al parecer se demora un poco más en montar que el resto (en el buen sentido de la palabra, por favor).

JFS (Journaling File System)

Fue desarrollado por IBM para servidores, y después liberado para la comunidad abierta. Es de 64 bits, por lo que soporta archivos bien grandes y particiones LFS. Es una de las adiciones más recientes en sistemas de archivo al mundo Linux, razón por la cual todavía no está muy difundido.

Lo bueno: Es rápido, es estable y es eficiente tanto con el espacio del disco como con el CPU (especialmente). Además es bien escalable.

Lo malo: Al parecer, no es tan bueno al trabajar con directorios con un gran número de archivos. Además, es un sistema de archivos que venimos conociendo hace poco (IBM lo liberó a la comunidad hace no mucho), por lo que no cuenta con el respaldo y la trayectoria que tiene el resto.

XFS

Al igual que el JFS, es de 64 bits, y fue desarrollado por SGI (Silicon Graphics) para sus servidores IRIX, y después liberado al público. La inforrmación también se organiza en árboles balanceados (B-Trees), parecido al sistema de Reiser.

Lo bueno: Es rápido y eficiente. Maneja muy bien los archivos grandes, y además hace un uso muy eficiente del espacio en el disco duro. Para graficarlo mejor: este es un sistemas de archivos diseñado para el alto rendimiento (piensen en SGI, o sea animación digital). XFS también permite almacenar datos arbitrarios a los archivos, que podría usarse para guardar atributos de seguridad avanzados (ACLs) o cualquier otra cosa.

Lo malo: Curiosamente, en algunas pruebas de velocidad bien específicas he visto que se cae (aunque son bien, bien pocas). A veces gasta un poco más de CPU que el resto. Lo otro: a pesar de todo lo bueno que tiene, XFS no goza de mucha publicidad. Hasta donde sé, ninguna distribución lo usa por defecto.



Pero ojo que el listado no termina aquí. En un tiempo más empezaremos a ver el Ext4 (cuando esté plenamente integrado con el kernel) y también está Reiser4, la evolución del ReiserFS. Aunque algunas distribuciones ya incluyen a este último, muchos lo descartan todavía por considerarlo inestable. Lo sea o no, la verdad (según Hans y compañía) es que Reiser4 es lejos, pero lejos, el más rápido de todos. De hecho ellos llevan un buen tiempo presionando para que las distribuciones lo adopten en reemplazo de ReiserFS.

Pero volvamos al presente. ¿Cuál es la conclusión?

Uf, difícil. De partida, las pruebas de velocidad no siempre favorecen al mismo, aunque por lo general la pelea está entre ReiserFS y XFS. Les voy a dar un resumen de las comparaciones más importantes (eso sí, no todas son muy actuales).

Linux Gazzette:

Tres comparaciones que saqué al azar de entre las 36 que tenían. Esto definitivamente no es algo representativo (todo es relativo, como verán después):

reiser_xfs_ext3_benchmarks.jpg

Conclusión: "El mejor sistema de archivos journaling para elegir entre ellos sería: JFS, ReiserFS o XFS, dependiendo de tus necesidades y los tipos de archivo con que estás lidiando. Me sorprendió mucho ver lo lento que es Ext3 en general, considerando que la mayoría de las distribuciones la usan como su sistema de archivos por defecto."

Debian Administration:

  • To use the maximum of your partition capacity, choose ReiserFS, JFS or XFS.
  • For quick FS creation and mounting/unmounting, choose JFS or XFS.
  • For quick operations on large files, choose JFS or XFS. If you need to minimize CPU usage, prefer JFS.
  • For quick operations on large file tree, choose Ext3 or XFS.
  • Filesystems can be regrouped as (a) quick and more CPU-intensive (ReiserFS and XFS) or (b) slower but less CPU-intensive (ext3 and JFS).
Conclusión:"XFS parece ser el sistema de archivos más apropiado para instalar en un servidor para el hogar o una oficina pequeña. Usa la capacidad máxima del disco duro del servidor, es el más rápido para operaciones en archivos grandes (>500 MB), y hace una buena proporción entre uso de CPU y de tiempo para listar directorios grandes o para la búsqueda de archivos."

Bulma:

FSEscrituraLecturaBorrado
ReiserFS18.523.410.4
Ext2FS20.321.380.57
XFS16.3219.420.26
FAT3243.6527.981.59
Conclusión:"Me ha sorprendido la velocidad del XFS porque en la primera prueba que hice (un solo experimento) no parecia tan rápido. Para escritura, lectura y borrado de ficheros grandes (secuencialmente) parece que es el que corre más. Aunque el ReiserFS no lo hace nada mal, esperaba que le ganara al XFS. En esta prueba me ha llamado la atención otra cosa: todos excepto FAT32 tardan más en leer que en escribir."



Como verán, los resultados son absolutamente relativos y a veces favorecen a uno, a veces al otro. Por ejemplo, en esta prueba el triunfo de Reiser es arrollador frente a Ext3 y XFS. La verdad es que son tantas las variables que es muy difícil elegir a un ganador dentro de todos.

Personalmente, ahora estoy usando ReiserFS para /, Ext3 para /home y XFS en una partición para los documentos (películas, ISOs). La verdad me ha gustado bastante XFS, y probablemente cuando salga Edgy haré la prueba e lo instalaré en la partición raíz. Ahí podré ver mejor la diferencia.

Pero aún queda dando vueltas una pregunta. Si los mejores sistemas de archivo parecen ser XFS, Reiser y JFS, ¿entonces por qué todas las distros se van con Ext3? ¿Por qué SUSE no se cambia a XFS, por ejemplo?

Simple y corto: porque Ext3 está más difundido y hay más respaldo en la comunidad. ¿Y qué dicen ellos?

Su respuesta es que Reiser es un sistema de archivos "antiquísimo" (opinión que no comparto), y que es hora de cambiarse. Y que a la hora de cambiarse, deben hacerlo por uno que esté probado, pero sobre todo que tenga proyección (de acuerdo). Los tipos admiten que Ext3 es bastante lento a veces, sin embargo "están mejorándolo para hacerlo más rápido", y que no en mucho tiempo pasará a Reiser ya que el desarrollo de éste último está estancado.

Claro, eso es si pensamos que el único capaz de trabajar en Reiser es el propio Hans. Y creo que todos sabemos que en el mundo Open Source la cosa no funciona así.

Lo que sí es que este enigma sigue sin respuesta, así que por ahora nadie se lleva la Bendición Bootlog™. Pero esperemos que la respuesta del enigma del asesinato (el de verdad) no sea Hans. Porque Hans no está solo.

menciones

    comentarios