Vývojáři projektu Fedora plánují přejít na souborový systém Composefs pro atomicky aktualizované verze distribuce jako výchozí. Pokud návrh schválí výbor FESCo (Fedora Engineering Steering Committee), který je odpovědný za technickou část vývoje distribuce Fedora, začne se Composefs používat ve verzích Fedora Silverblue (GNOME), Fedora Kinoite (KDE), Fedora CoreOS, Fedora IoT, Fedora Sway Atomic a Fedora Budgie Atomic.
Tato změna umožní použít v těchto verzích kořenový oddíl, který pracuje v režimu pouze pro čtení, a zároveň v budoucnu zapojit prostředky pro ověřování integrity pro systémový oddíl, které umožní odhalovat vzniklé problémy během provozu. Oddíly /etc a /var budou nadále připojovány s možností zápisu.
Nyní je práce organizována prostřednictvím připojení oddílu /usr v režimu pouze pro čtení, přičemž je kořenový oddíl připojen v režimu, který umožňuje zápis, a provádění změn je zakázáno na úrovni oprávnění ("chattr +i /"). Ověřování integrity se provádí během aktualizace oddílu, což neumožňuje odhalit poškození a změny provedené během provozu, aniž by byla zahájena úplná kontrola všech dat pomocí příkazu "ostree fsck".
Souborový systém Composefs je implementován jako nadstavba nad již existujícími souborovými systémy OverlayFS a EROFS v jádru, a je optimalizován pro efektivní sdílení obsahu několika připojených diskových obrazů. Funkčnost EROFS (Extendable Read-Only File System) splňuje požadavky Composefs od verze jádra Linux 5.15, a OverlayFS od jádra 6.5. Composefs umožňuje vytvářet vícevrstvé souborové systémy, kde lze struktury souborových systémů režimu pouze pro čtení překrýt nad standardními souborovými systémy Linux, které slouží jako spodní vrstvy.
Od již existujících podobných souborových systémů se Composefs odlišuje podporou sdíleného ukládání obsahu různých diskových obrazů a funkcemi pro ověřování integrity čitelných dat. V Composefs se používá model ukládání s adresací založenou na obsahu, kde primárním identifikátorem není název souboru, ale hash obsahu souboru. Takový model zajišťuje deduplikaci a umožňuje uchovávat pouze jednu kopii stejných souborů, které se nacházejí na různých připojených oddílech.
Systémové obrazy obvykle obsahují řadu standardních souborů a při použití Composefs bude každý z těchto souborů společně sdílen všemi připojenými obrazy, bez použití triků, jako jsou tvrdé odkazy. Při tom jsou sdílené soubory ukládány jako jedna kopie na disku a obsluhovány jedním záznamem v stránkovém cache, což umožňuje šetřit jak diskový, tak operační paměť.
Pro úsporu diskového místa jsou v Composefs data a metadata oddělena a při montáži se specifikuje binární index, který obsahuje všechna metadata souborového systému, názvy souborů, přístupová práva a další informace. Indexy s metadaty se vytvářejí pro každý obraz FS a ukládají se do samostatného souboru ve formátu EROFS (v loopback režimu se montuje obraz EROFS, který obsahuje pouze metadata). Soubor všech připojených obrazů se ukládá ve společném základním adresáři v obvyklém FS (ext4, xfs, btrfs) a propojují se s obrazem pomocí rozšířeného atributu rusted.overlay.redirect, na jehož základě OverlayFS nachází potřebné soubory podle hashe obsahu.
Pro ověřování obsahu jednotlivých souborů a celého obrazu v podmínkách sdíleného ukládání se používá mechanismus fs-verity, který při přístupu k souborům kontroluje shodu uvedených hashů v binárním indexu s aktuálním obsahem — pokud útočník opraví soubor v základním adresáři nebo dojde k poškození dat v důsledku chyby, tato kontrola odhalí nesrovnalosti.
Zdroj: opennet.ru
