Los desarrolladores del proyecto Fedora tienen la intención de cambiar las versiones actualizables atómicamente del sistema operativo por defecto al sistema de archivos Composefs. Si la propuesta es aprobada por el comité FESCo (Fedora Engineering Steering Committee), que se encarga del aspecto técnico del desarrollo de Fedora, Composefs comenzará a utilizarse en las construcciones de Fedora Silverblue (GNOME), Fedora Kinoite (KDE), Fedora CoreOS, Fedora IoT, Fedora Sway Atomic y Fedora Budgie Atomic.
Este cambio permitirá utilizar en estas construcciones una partición raíz que funcione en modo de solo lectura, así como emplear más adelante herramientas de verificación de integridad en la partición del sistema que permitan detectar problemas durante la operación. Las particiones /etc y /var seguirán montándose con capacidad de escritura.
Actualmente, el funcionamiento se organiza mediante el montaje de la partición /usr en modo de solo lectura, mientras que la partición raíz se monta en un modo que permite la escritura, y se prohíben las modificaciones a nivel de permisos («chattr +i /»). La verificación de integridad se realiza durante la actualización de la partición, lo que impide detectar daños y cambios realizados durante la operación sin iniciar una verificación completa de todos los datos con el comando «ostree fsck».
El sistema de archivos Composefs se implementa como una capa sobre los sistemas de archivos OverlayFS y EROFS ya presentes en el núcleo, y está optimizado para el almacenamiento eficiente conjunto del contenido de varias imágenes de disco montadas. La funcionalidad de EROFS (Extendable Read-Only File System) cumple con los requisitos de Composefs a partir de la versión 5.15 del núcleo de Linux, y OverlayFS a partir del núcleo 6.5. Composefs permite la creación de sistemas de archivos multicapa en los que se superponen árboles arbitrarios de sistemas de archivos en modo de solo lectura sobre los sistemas de archivos estándar de Linux, que actúan como capa base.
A diferencia de otros sistemas de archivos similares existentes, Composefs se distingue por su soporte para el almacenamiento conjunto del contenido de diferentes imágenes de disco y la presencia de funciones para la verificación de la autenticidad de los datos leídos. Composefs utiliza un modelo de almacenamiento basado en la dirección del contenido, donde el identificador primario no es el nombre del archivo, sino el hash del contenido del archivo. Este modelo garantiza la deduplicación y permite almacenar solo una copia de los archivos idénticos que aparecen en diferentes particiones montadas.
Las imágenes del sistema suelen contener numerosos archivos de plantilla y en el caso de aplicar Composefs, cada uno de estos archivos será compartido por todas las imágenes montadas, sin necesidad de trucos como el uso de enlaces duros. De este modo, los archivos comunes no solo se almacenan como una única copia en el disco, sino que también se gestionan con una única entrada en la caché de páginas, lo que permite ahorrar tanto espacio en disco como en memoria RAM.
Para ahorrar espacio en disco, los datos y metadatos en Composefs están separados y durante el montaje se especifica por separado un índice binario que contiene todos los metadatos del sistema de archivos, nombres de archivos, permisos y otra información. Los índices de metadatos se crean para cada imagen del sistema de archivos y se almacenan en un archivo separado en formato EROFS (en modo loopback se monta una imagen EROFS, donde solo están presentes los metadatos). Los archivos de todas las imágenes montadas se almacenan en un directorio base común en un sistema de archivos normal (ext4, xfs, btrfs) y se vinculan a la imagen mediante el atributo extendido rusted.overlay.redirect, sobre la base del cual OverlayFS encuentra los archivos necesarios por el hash de contenido.
Para verificar el contenido de archivos individuales y de toda la imagen en condiciones de almacenamiento compartido, se aplica el mecanismo fs-verity, que al acceder a los archivos comprueba la coincidencia entre los hashes especificados en el índice binario y el contenido real; si un atacante realiza un cambio en un archivo en el directorio base o los datos se dañan debido a un fallo, dicha verificación revelará la discrepancia.
Fuente: opennet.ru
