Проект нацелен на обход ограничений, возникающих при использовании образов контейнеров в формате OCI (Open Container Initiative). PuzzleFS решает такие задачи как эффективное хранение дублирующихся данных, возможность прямого монтирования, повторяемая сборка образов и безопасная работа с памятью.
Для дедупликации повторяющихся в разных контейнерах данных задействован алгоритм FastCDC (Fast Content-Defined Chunking), работающий через разделение данных на фрагменты произвольного размера и ведение индекса с хэшами обработанных фрагментов. Повторяющиеся фрагменты хранятся один раз и совместно индексируются для всех слоёв ФС, т.е. дедупликация может охватывать разные точки монтирования (новый слой ФС может быть запущен на основе существующего и использовать, имеющиеся в нём фрагменты данных при дедупликации).
Повторяющаяся сборка образов контейнеров достигается через определение канонического представления формата образов контейнеров.
Прямое монтирование (direct-mount) позволяет монтировать образ контейнера в формате OCI из глобального совместно используемого хранилища без его предварительной распаковки и используя в качестве идентификатора хэш содержимого из манифеста контейнера. Для верификации целостности данных в условиях применения общего хранилища может применяться механизм fs-verity, который при обращении к файлам проверяет соответствие указанных в бинарном индексе хэшей с фактическим содержимым.
Язык Rust выбран как сочетающий высокую производительность результирующего кода с возможностями для безопасной работы с памятью, что позволяет снизить риск появления уязвимостей, вызванных такими проблемами как обращение к области памяти после её освобождения и выход за границы буфера. Применение Rust для модуля ядра также позволило совместно использовать код в ядре и компонентах, работающих в пространстве пользователя, для создания единой защищённой реализации.
Среди других целей проекта: очень быстрая сборка и монтирование образов, возможность использования необязательной промежуточной стадии для преобразования (canonicalization) образов, необязательность полных проходов по дереву ФС в стиле mtree при использовании многослойной структуры, наложение изменений в стиле
casync и простая в реализации архитектура.
Источник: http://www.opennet.ru/opennews/art.shtml?num=59271