A finales del año pasado compartimos aquí en el blog información sobre un nuevo sistema de archivos en el cual se encontraba trabajando Alexander Larsson, el creador de Flatpak y ahora en esta ocasión se ha dado a conocer el lanzamiento de la primera versión estable del sistema de archivos ComposeFS.
ComposeFS es un “nuevo” sistema de archivos que está optimizado para compartir de manera eficiente el contenido de múltiples imágenes de disco montadas. En la práctica, ComposeFS puede resultar útil para montar imágenes de contenedores y alojar un repositorio OSTree similar a Git.
Artículo relacionado:
ComposeFS, un sistema de archivos del creador de Flatpak
Sobre ComposeFS
Al inicio del desarrollo de ComposeFS, su implementación fue pensada como un módulo separado del kernel de Linux, pero al paso del tiempo en el trabajo del desarrollo, Alexander Larsson menciona que se percato que el promover un nuevo FS en la estructura principal del kernel es mucho más complicado de lo que pensaba. Es por ello que los desarrolladores cambiaron de táctica y reelaboraron el proyecto en forma de un complemento sobre el FS OverlayFS y EROFS, los cuales ya están presentes en el kernel, cuya funcionalidad se superpone parcialmente con ComposeFS. Por lo tanto, el trabajo para integrar el soporte de ComposeFS en el kernel de Linux se ha reducido a promover parches en OverlayFS y EROFS que implementen las capacidades específicas requeridas para el FS.
Se menciona que la funcionalidad EROFS cumple con los requisitos de ComposeFS a partir de la versión 5.15 del kernel. Los cambios en OverlayFS se realizaron en varias etapas: en el kernel 6.5, se incluyó soporte para capas «solo de datos», que se usan solo para datos (separadas de los metadatos).
Los cambios restantes junto con la capacidad de almacenar hashes fs-verity en el atributo extendido overlay.verity (xattr), se adoptaron recientemente en la versión de prueba del kernel 6.6-rc1, lo que marca la inclusión de toda la funcionalidad necesaria para ejecutar Composefs en Linux.
Alexander Larsson, menciona que gracias a la adopción de todos los cambios necesarios en el kernel, permitió determinar y corregir el formato de imagen final de ComposeFS y con lo cual se pudo lanzar la primera versión estable del sistema de archivos, estabilizando el formato de almacenamiento y la biblioteca API/ABI.
Principales novedades en ComposeFS 1.0
Entre las diferencias funcionales de esta versión estable con respecto a los desarrollos anteriores, se menciona la introducción de optimizaciones que aumentan la eficiencia del formato de almacenamiento, ademas de que ahora se evita el uso de herramientas integradas en el subsistema del kernel fs-verity para verificar firmas digitales en favor de bibliotecas que trabajan en el espacio del usuario.
Otro de los aspectos destacados es la utilidad composefs-info para inspeccionar archivos de imagen de ComposeFS e identificar inconsistencias entre los metadatos y los datos almacenados por separado.
Ademas de ello, ahora para montar ComposeFS, se utilizan el módulo FUSE cargado en el espacio de usuario composefs-fuse y la utilidad mount.composefs, y se proporciona la utilidad mkcomposefs para crear el FS.
Para verificar el contenido de archivos individuales y la imagen completa en condiciones de almacenamiento compartido, se utiliza el mecanismo fs-verity que, al acceder a los archivos, verifica la correspondencia de los hashes especificados en el índice binario con el contenido real, si un atacante realiza un cambio en un archivo en el directorio base o los datos se dañan como resultado de una falla, dicha conciliación revelará una discrepancia.
Cabe mencionar que de los proyectos que ya utilizan ComposeFS, se encuentran Ostree y Container Storage Library. El repositorio tipo git de Ostree es totalmente compatible con ComposeFS, incluidas las capacidades de verificación de contenido, pero el código sigue marcado como experimental por ahora.
La biblioteca de almacenamiento de contenedores proporciona una implementación inicial de un backend que utiliza ComposeFS para almacenar imágenes de contenedores. Una vez completado, el backend se puede utilizar para utilizar ComposeFS para la deduplicación y la lucha contra la suplantación de imágenes administradas mediante Podman.
Finalmente si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.