Разработчики проекта Fedora намерены перевести атомарно обновляемые редакции дистрибутива по умолчанию на файловую систему Composefs. В случае утверждения предложения комитетом FESCo (Fedora Engineering Steering Committee), отвечающим за техническую часть разработки дистрибутива Fedora, Composefs начнёт применяться в сборках Fedora Silverblue (GNOME), Fedora Kinoite (KDE), Fedora CoreOS, Fedora IoT, Fedora Sway Atomic и Fedora Budgie Atomic.
Изменение позволит использовать в данных сборках корневой раздел, работающий в режиме только для чтения, а также в дальнейшем задействовать для системного раздела средства верификации целостности, позволяющие выявлять возникающие проблемы во время работы. Разделы /etc и /var продолжат монтироваться с возможностью записи.
Сейчас работа организована через монтирование раздела /usr в режиме только для чтения, при том, что корневой раздел монтируется в режиме, допускающем запись, а внесение изменений запрещается на уровне прав доступа (“chattr +i /”). Проверка целостности осуществляется на этапе обновления раздела, что не позволяет выявлять повреждения и изменения, внесённые в процессе работы, без инициирования полной проверки всех данных командой “ostree fsck”.
Файловая система Composefs реализована в виде надстройки над уже присутствующими в ядре ФС OverlayFS и EROFS, и оптимизирована для эффективного совместного хранения содержимого нескольких примонтированных дисковых образов. Функциональность EROFS (Extendable Read-Only File System) отвечает требованиям Composefs начиная с версии ядра Linux 5.15, а OverlayFS – начиная с ядра 6.5. Composefs даёт возможность создавать многослойные ФС, в которых произвольные деревья ФС в режиме только для чтения накладываются поверх штатных ФС Linux, выступающих в качестве нижнего слоя.
От уже существующих похожих файловых систем, Composefs отличает поддержка совместного хранения содержимого разных дисковых образов и наличие функций для проверки подлинности читаемых данных. В Composefs применяется модель хранения с адресацией на основе содержимого, в которой первичным идентификатором является не имя файла, а хэш от содержимого файла. Подобная модель обеспечивает дедупликацию и позволяет хранить только одну копию одинаковых файлов, встречающихся в разных примонтированных разделах.
Системные образы обычно содержат множество типовых файлов и в случае применения Composefs каждый из этих файлов будет совместно использован всеми примонтированными образами, без задействования таких трюков, как проброс при помощи жёстких ссылок. При этом общие файлы не только хранятся в виде одной копии на диске, но и обходятся одной записью в страничном кэше, что даёт возможность экономить как дисковую, так и оперативную память.
Для экономии дисковой памяти данные и метаданные в Composefs разделены и при монтировании отдельно указывается бинарный индекс, в котором содержатся все метаданные файловой системы, имена файлов, права доступа и другие сведения. Индексы с метаданными создаются для каждого образа ФС и хранится в отдельном файле в формате EROFS (в loopback-режиме монтируется образ EROFS, в котором присутствуют только метаданные). Непосредственно файлы всех монтируемых образов хранятся в общем базовом каталоге в обычной ФС (ext4, xfs, btrfs) и связываются с образом при помощи расширенного атрибута rusted.overlay.redirect, на базе которого OverlayFS находит необходимые файлы по хэшу содержимого.
Для верификации содержимого отдельных файлов и всего образа в условиях общего хранения применяется механизм fs-verity, который при обращении к файлам проверяет соответствие указанных в бинарном индексе хэшей с фактическим содержимым – если злоумышленник внесёт изменение в файл в базовом каталоге или данные повредятся в результате сбоя, то подобная сверка выявит расхождение.