Hace poco se dio a conocer la noticia de que Alexander Larsson, el creador de Flatpak en Red Hat, ha publicado una vista previa de los parches que implementan el sistema de archivos ComposeFS para el kernel de Linux.
El sistema de archivos propuesto se asemeja a Squashfs y también es adecuado para montar imágenes de solo lectura. Las diferencias se reducen a la capacidad de ComposeFS para compartir de manera eficiente el contenido de varias imágenes de disco montadas y la compatibilidad con la autenticación de datos legibles.
Como áreas de aplicación en las que ComposeFS puede tener demanda, se denominan el montaje de imágenes de contenedores y el uso de un repositorio OSTree similar a Git. Esto permite compartir archivos de contenido entre imágenes, incluso si los metadatos (como las marcas de tiempo o la propiedad del archivo) varían entre las imágenes.
ComposeFS utiliza un modelo de almacenamiento de direccionamiento basado en contenido, es decir, el identificador principal no es el nombre del archivo, sino un hash del contenido del archivo. Este modelo proporciona deduplicación y permite almacenar solo una copia de los mismos archivos que se encuentran en diferentes particiones montadas.
En esencia, composefs es una forma de construir y usar imágenes de solo lectura que se usan de manera similar a cómo usaría, por ejemplo, bucle invertido imágenes de squashfs. Además de este composefs tiene dos nuevos fundamentales caracteristicas. Primero, permite compartir datos de archivos (tanto en disco como en caché de página) entre imágenes, y en segundo lugar tiene dm-verity como validación en lectura.
Por ejemplo, las imágenes de contenedores contienen muchos archivos comunes del sistema y con Composefs, cada uno de estos archivos será compartido por todas las imágenes montadas, sin el uso de trucos como el reenvío con enlaces físicos.
Al mismo tiempo, los archivos compartidos no solo se almacenan como una sola copia en el disco, sino que también se administran mediante una entrada en la memoria caché de la página, lo que permite guardar tanto el disco como la RAM.
Composefs también admite la validación fs-verity de los archivos de contenido. Al usar esto, el resumen de los archivos de contenido se almacena en la imagen y composefs validará que el archivo de contenido que usa tenga un resumen fs-verity habilitado para coincidencias. Esto significa que el contenido de respaldo no se puede cambiar de ninguna manera (por error o por malicia) sin que esto se detecte cuando se usa el archivo.
También puede usar fs-verity en el propio archivo de imagen y pasar el resumen esperado de fs-verity como una opción de montaje, que composefs validará. En este caso, tenemos plena confianza tanto en los datos como en los metadatos del archivo montado. Esto resuelve una debilidad que tiene fs-verity cuando se usa solo, ya que solo puede verificar datos de archivos, no metadatos.
Para ahorrar espacio en disco, los datos y los metadatos se separan en imágenes montadas. Cuando esté montado, especifique:
- Un índice binario que contiene todos los metadatos del sistema de archivos, nombres de archivos, permisos y otra información, excepto el contenido real de los archivos.
- El directorio base donde se almacena el contenido de todos los archivos de imagen montados. Los archivos se almacenan en relación con el hash de su contenido.
- Se crea un índice binario para cada imagen de FS y el directorio base es el mismo para todas las imágenes. Para verificar el contenido de los archivos individuales y la imagen completa en condiciones de almacenamiento compartido, se puede utilizar el mecanismo fs-verity, que, al acceder a los archivos, verifica que los valores hash especificados en el índice binario se correspondan con el contenido real (es decir, si un atacante hace un cambio en un archivo en el directorio base o los datos se dañan como resultado de una falla, dicha reconciliación revelará una discrepancia).
Finalmente si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.