Journaling Filesystems en Linux

Escrito el 3 Marzo, 2001 – 12:35 | por storm | 2.971 lecturas

Esperar un fsck en un server, puede agotar tu paciencia. Por suerte, existe un nuevo tipo de filesystems y pronto estará disponible para tu Linux.
Los journaling filesystems, usan un archivo especial (cuyo contenido no se cachea) llamado log o journal. Cada vez que el filesystem es modificado, se agrega al log un registro describiendo la modificacion. Un proceso analiza esos registros, escribe el filesystem y marca esa modificacion como "completada".
Si la maquina se cuelga, el proceso se corre al reiniciar y simplemente termina de hacer las modificaciones descriptas en el log al filesystem. Las transacciones incompletas en el log, son descartadas. Asi, se mantiene la consistencia interna del filesystem.

Esto simplifica enormemente el checkeo del filesystem. Un checkeo de
consistencia completo, nunca es necesario (al contrario de ext2fs o los filesystems tradicionales) y recuperar el filesystem despues de un reboot es, una tarea de segundos.

Opciones:

Hoy, existen por lo menos, 4 grandes participantes en el campo de los Journaling Filesystems bajo Linux.
Todos estan en diferentes niveles de desarollo, y algunos hasta estan listos para usar en sistemas de produccion:

ReiserFS de Hans Reiser
XFS/Linux de SGI
JFS de IBM
ext3fs

Todos ofrecen distintas ventajas. Una comparacion tecnica esta disponible en el numero 55 de Linux Gazette.

ReiserFS

ReiserFS es algo completamente nuevo comparado con los filesystems de Unix
tradicionales, que suelen estar estructurados en bloques. ReiserFS sera
incluido en la proxima Red Hat 7.1 y ya
viene con SuSE Linux 7.0.

Hans Reiser dice acerca del filesystem que diseño: "En mi modelo, guardo el contenido y los nombres de los archivos en un arbol balanceado ("balanced tree"). Los archivos pequeños, directorios, inodes, y los ultimos bytes de grandes archivos, son almacenados mas eficientemente gracias a que los bloques no tienen que estar estrictamente alineados y la eliminacion de inodes de espacio prefijado".
El resultado, es que las operaciones comunes de un filesystem, como la resolucion del nombre y el acceso a los archivos estan optimizados, comparados con otros filesystems tradicionales.
Tambien hay optimizaciones para manejar archivos pequeños, reduciendo la perdida de espacio por fragmentacion.

ReiserFS no es todavia, un verdadero Journaling Filesystem (pero esta en desarrollo). En cambio, utiliza una "preserve list" para tener un registro de las modificaciones del arbol. Esto reduce el riesgo de inconsistencias en caso de un cuelgue y provee una rapida recuperacion al reiniciar el sistema.

Aparte de ofrecer un rapido proceso de recuperacion y un sistema eficiente para almacenar grandes numeros de archivos pequeños, los desarolladores, tienen como meta, ofrecer funciones para almacenar objetos mucho mas pequeños de los que normalmente se almacenan en archivos. Tambien, tienen planes para incluir funciones que permitan acceder a archivos especificando sus atributos en vez de su ubicacion.

ReiserFS fue el primero de estos nuevos filesystems que fue incluido en la distribucion standard del kernel de Linux, por lo que esta aventajado en formar su comunidad de usuarios.

XFS/Linux

Cuando SGI necesito un filesystem escalable y de alta performance, para reemplazar EFS en 1990, desarrollo XFS, para manejar las enormes demandas de espacio en disco y ancho de banda con la intencion de usarlo en edicion de video y grandes bases de datos. Esto incluia un recuperamiento extremadamente rapido en caso de crash, soporte para filesystems enormes, directorios con grandes numeros de archivos y performance aceptable al manejar grandes y pequeños ficheros.
Ahora SGI aporta esta tecnologia a la comunidad Open Source y esta finalizando el port a linux.

Tecnicamente, XFS se basa en el uso de B+ trees (similares a los arboles balanceados en ReiserFS) para reemplazar la estructura linear de un filesystem convencional.
Los B+ trees proveen una manera eficiente de indexar el contenido de los directorios, el espacio libre y los metadatos del filesystem. Esto garantiza un rapido listado de los contenidos de un directorio y acceso a los archivos. La ubicacion de bloques del disco a los inodos, es dinamica: esto significa que no necesitas crear un filesystem con bloques pequeños para tu servidor de mail, el filesystem lo hace automaticamente por vos. XFS es un filesystem de 64bits, lo que permite, la creacion de archivos de varios millones de terabytes cifra muchas veces superior a la maxima en un sistema de 32bits. Este sistema, tambien tiene la ventaja de poder adjuntar metadatos a los archivos.

XFS tiene muy buen soporte para maquinas con multiples procesadores. La
operacion usando multiples threads es una de las metas del proyecto y ha sido
probado en sistemas IRIX con gran cantidad de procesadores.

El port a Linux sigue en desarrollo y algunas de sus capacidades no estan terminadas: No se puede montar un filesystem usando loop sin tener problemas, y el API para manejar datos no esta completo en su version Linux.
Pero a pesar de todos estos inconvenientes, XFS es una interesante alternativa en Linux. Yo vengo usandolo hace varios meses y estoy muy contento con su desempeño, que es al menos, tan rapido como ext2fs.
Ahora que es posible bajar una version instalable directamente desde CD, sera mucho mas facil disfrutar de los beneficios de este filesystem.
Las herramientas a disposicion del usuario para crear, mantener y redimensionar el filesystem, son mas funcionales que las de ReiserFS.

Entonces: porque cambiar a XFS/Linux si ReiserFS vendra incluido en las nuevas distribuciones de Linux?. Principalmente, por la robustez y madurez de este sistema: XFS esta siendo usado en sistemas IRIX desde 1994 y fue usado en todo tipo de aplicaciones de importancia critica. Esta, es una tecnologia probada, y ReiserFS y ext3fs son relativamente nuevos y no ofrecen nuevas funcionalidades.

JFS

JFS de IBM es un journaling filesystem usado en sus servers. Fue diseñado con la idea de conseguir "servidores de alto rendimiento y servidores de archivos de alta performance, asociados a e-business", segun el sitio de IBM. Segun se ve en la documentacion y el codigo fuente, va a pasar un tiempo antes de que el port a Linux este finalizado y incluido en la distribucion standard del kernel.
JFS utiliza un metodo interesante para organizar los bloques vacios, estructurandolos en un arbol y usa una tecnica especial para agrupar bloques logicos vacios.
El port a Linux de JFS es un proyecto interesante y cuando este completo, beneficiara a la comunidad linux. Sin embargo, esta mucho mas lejos de ser usable en produccion que sos competidores.

ext3fs

ext3fs es una alternativa para aquellos que no quieren cambiar su filesystem pero necesitan caracteristicas de journaling. Esta distribuido como un patch al kernel y provee completa compatibilidad con sus antecesores. Tambien permite la conversion de una particion de ext2fs a ext3fs sin reformatearla y una reconversion a ext2fs si se desea.
Pero usar un addon a ext2fs tiene la desventaja de que ninguna de las optimizaciones empleadas en otros filesystems esta disponible, por ejemplo no hay arboles balanceados, etc.

Mi opinion personal, es que ext3fs va dejar de usarse cuando esten disponibles journaling filesystems mas poderosos. Un conjunto de sitios exitosos como RPMFind usa este filesystem.

Conclusion:

Con el creciente tamaño de los discos rigidos, los journaling filesystems se estan volviendo mas importantes para un creciente numero de usuarios. Si alguna vez esperaste un checkeo completo de un disco de 80gb, sabes de que estoy hablando.
Inclusive, si no planeas rebootear tu sistema seguido, los Journaling Filesystems pueden ahorrarte un monton de tiempo y problemas si tenes problemas de hardware o corriente electrica. Con el gran numero de jugadores compitiendo por el standard en journaling filesystems bajo Linux, podemos decir que en los proximos meses veremos como el codigo de estos filesystems madura, son integrados en la distribucion standard del kernel y son agregados a las mayores distribuciones de Linux.

Tene en cuenta, que migrar a otro filesystem no es una tarea facil: Usualmente es necesario hacer un backup de tus datos, reformatear y traer los datos de vuelta del back up. Deberias evaluar bien todas las opciones antes de hacer el cambio.

Autor: Philipp Tomsich esta trabajando en su tesis en la Universidad de Tecnologia de Vienna y tiene una estrecha relacion con el SGI´s compiler and tools group.

Nota original: http://freshmeat.net/articles/view/212/

You must be logged in to post a comment.

Buscar: