Les développeurs du projet Fedora prévoient de basculer par défaut les éditions atomiquement mises à jour de la distribution sur le système de fichiers Composefs. Si la proposition est approuvée par le comité FESCo (Fedora Engineering Steering Committee), responsable de la partie technique du développement de la distribution Fedora, Composefs commencera à être utilisé dans les builds Fedora Silverblue (GNOME), Fedora Kinoite (KDE), Fedora CoreOS, Fedora IoT, Fedora Sway Atomic et Fedora Budgie Atomic.
Ce changement permettra d'utiliser dans ces builds une partition racine fonctionnant en mode lecture seule, ainsi qu'à terme d'utiliser des outils de vérification d'intégrité pour la partition système, permettant de détecter les problèmes survenant durant le fonctionnement. Les partitions /etc et /var continueront à être montées avec possibilité d'écriture.
Actuellement, le fonctionnement est organisé via le montage de la partition /usr en mode lecture seule, bien que la partition racine soit montée en mode qui permet l'écriture, et les modifications soient interdites au niveau des droits d'accès (« chattr +i / »). La vérification de l'intégrité est effectuée lors de la mise à jour de la partition, ce qui ne permet pas de détecter les dommages et les modifications effectuées pendant l'opération sans initier une vérification complète de toutes les données par la commande « ostree fsck ».
Le système de fichiers Composefs est implémenté comme une couche supplémentaire au-dessus des systèmes de fichiers OverlayFS et EROFS déjà présents dans le noyau, et optimisé pour un stockage efficace du contenu de plusieurs images de disque montées. La fonctionnalité EROFS (Extendable Read-Only File System) répond aux exigences de Composefs à partir de la version 5.15 du noyau Linux, tandis qu'OverlayFS à partir du noyau 6.5. Composefs permet de créer des systèmes de fichiers multicouches, où des arbres de systèmes de fichiers en mode lecture seule sont superposés sur des systèmes de fichiers Linux standard, qui font office de couche inférieure.
Par rapport aux systèmes de fichiers similaires existants, Composefs se distingue par sa prise en charge du stockage partagé de contenus de différentes images de disque et la présence de fonctions de vérification de l'authenticité des données lues. Dans Composefs, un modèle de stockage basé sur le contenu est utilisé, dans lequel l'identifiant principal n'est pas le nom du fichier, mais le hachage du contenu du fichier. Ce modèle garantit la déduplication et permet de stocker une seule copie de fichiers identiques apparaissant dans différentes partitions montées.
Les images système contiennent généralement de nombreux fichiers types et, en utilisant Composefs, chacun de ces fichiers sera partagé par toutes les images montées, sans avoir recours à des astuces comme le passage par des liens durs. Ainsi, les fichiers communs sont non seulement stockés en une seule copie sur le disque, mais ils ne nécessitent qu'une seule entrée dans le cache des pages, permettant d'économiser à la fois de l'espace disque et de la mémoire vive.
Pour économiser de l'espace disque, les données et les métadonnées dans Composefs sont séparées et, lors du montage, un index binaire est spécifié, qui contient toutes les métadonnées du système de fichiers, les noms de fichiers, les droits d'accès et d'autres informations. Des index de métadonnées sont créés pour chaque image FS et stockés dans un fichier séparé au format EROFS (l'image EROFS, qui contient uniquement les métadonnées, est montée en mode loopback). Les fichiers de toutes les images montées sont conservés dans un répertoire de base commun dans un système de fichiers ordinaire (ext4, xfs, btrfs) et sont liés à l'image via l'attribut étendu rusted.overlay.redirect, sur la base duquel OverlayFS trouve les fichiers nécessaires par le hash du contenu.
Pour vérifier le contenu de fichiers individuels et de l'image entière dans un environnement de stockage partagé, le mécanisme fs-verity est utilisé, qui vérifie, lors de l'accès aux fichiers, la correspondance entre les hashes spécifiés dans l'index binaire et le contenu réel - si un attaquant modifie un fichier dans le répertoire de base ou si les données sont corrompues à cause d'une panne, cette vérification détectera des divergences.
Source : opennet.ru
