Cisco предложи нов датотечен систем, PuzzleFS, имплементиран како модул за Linux кернелот, напишан во Rust. Датотечниот систем е дизајниран да се користи за хостирање на изолирани контејнери и продолжува да ги развива идеите предложени во датотечен систем Atomfs. Имплементацијата е сè уште во фаза на прототип, поддржува градење со руст-следната гранка на кернелот на Linux и е отворена под лиценците Apache 2.0 и MIT.
Проектот има за цел да ги заобиколи ограничувањата што се јавуваат при користење на слики од контејнери во формат OCI (Open Container Initiative). PuzzleFS решава проблеми како што се ефикасно складирање на дупликат податоци, можност за директно монтирање, повторлива градба на слики и безбедност на меморијата.
За да се отстранат податоците што се повторуваат во различни контејнери, се користи алгоритмот FastCDC (Брзо делење на содржината дефинирано), кој работи со делење на податоците на фрагменти со произволна големина и одржување на индекс со хешови на обработените фрагменти. Повторувачките фрагменти се складираат еднаш и заеднички се индексираат за сите слоеви на датотечниот систем, т.е. дедупликацијата може да опфати различни точки на монтирање (може да се лансира нов FS слој врз основа на постоечки и да ги користи фрагментите на податоци содржани во него за време на дедупликацијата).
Повторливото склопување на слики од контејнерот се постигнува преку дефинирање на канонска претстава на форматот на сликата на контејнерот. Директното монтирање ви овозможува да монтирате слика на OCI контејнер од глобално споделено складирање без претходно да го отпакувате, користејќи хаш од содржината од манифестот на контејнерот како идентификатор. За да се потврди интегритетот на податоците кога се користи заедничко складирање, може да се користи механизмот fs-verity, кој, при пристап до датотеки, ја проверува кореспонденцијата на хашовите наведени во бинарниот индекс со вистинската содржина.
Јазикот Rust е избран бидејќи ги комбинира високите перформанси на добиениот код со можностите за безбедно работење со меморијата, што го намалува ризикот од ранливости предизвикани од проблеми како што се пристап до мемориската област откако ќе се ослободи и преполни граници на баферот. Користењето на Rust за модулот на јадрото, исто така, овозможи споделување на кодот помеѓу компонентите на кернелот и корисничкиот простор за да се создаде единствена, сигурна имплементација.
Други цели на проектот вклучуваат: многу брзо градење и монтирање на слики, можност за користење опционална средна фаза за канонализација на сликите, опционалност за целосни поминувања на стебло на датотеки во стил mtree при користење на повеќеслојна структура, наметнување во стил на касинк на промени и лесна за имплементација архитектура.
Извор: opennet.ru
