Cisco представя файловата система PuzzleFS за ядрото на Linux

Cisco предложи нова файлова система, PuzzleFS, реализирана като модул за ядрото на Linux, написана на Rust. Файловата система е проектирана да се използва за хостване на изолирани контейнери и продължава да развива идеите, предложени във файловата система Atomfs. Внедряването все още е на етап прототип, поддържа изграждане с клона на ядрото rust-next на Linux и е отворено под лицензите Apache 2.0 и MIT.

Проектът има за цел да заобиколи ограниченията, които възникват при използване на изображения на контейнери във формат OCI (Open Container Initiative). PuzzleFS решава проблеми като ефективно съхранение на дублирани данни, възможност за директно монтиране, изграждане на повторяемо изображение и сигурност на паметта.

За дедупликация на данни, които се повтарят в различни контейнери, се използва алгоритъмът FastCDC (Fast Content-Defined Chunking), който работи чрез разделяне на данните на фрагменти с произволен размер и поддържане на индекс с хешове на обработените фрагменти. Повтарящите се фрагменти се съхраняват веднъж и се индексират съвместно за всички слоеве на файловата система, т.е. дедупликацията може да обхваща различни точки на монтиране (нов FS слой може да бъде стартиран на базата на съществуващ и да използва съдържащите се в него фрагменти от данни по време на дедупликацията).

Повтарящото се сглобяване на контейнерни изображения се постига чрез дефиниране на канонично представяне на формата на контейнерното изображение. Директното монтиране ви позволява да монтирате изображение на OCI контейнер от глобално споделено хранилище, без първо да го разопаковате, като използвате хеш на съдържанието от манифеста на контейнера като идентификатор. За проверка на целостта на данните при използване на споделено хранилище може да се използва механизмът fs-verity, който при достъп до файлове проверява съответствието на хешовете, посочени в двоичния индекс, с действителното съдържание.

Езикът Rust е избран, тъй като съчетава висока производителност на получения код с възможности за безопасна работа с памет, което намалява риска от уязвимости, причинени от проблеми като достъп до област на паметта, след като тя е била освободена и препълване на границите на буфера. Използването на Rust за модула на ядрото също направи възможно споделянето на код между компонентите на ядрото и потребителското пространство, за да се създаде единна, сигурна реализация.

Други цели на проекта включват: много бързо изграждане и монтиране на изображения, възможност за използване на незадължителен междинен етап за канонизиране на изображения, възможност за пълно преминаване на файлово дърво в стил mtree при използване на многослойна структура, налагане в стил casync на промените и лесна за внедряване архитектура.

Източник: opennet.ru

Добавяне на нов коментар