Podjetje Cisco je predstavilo nov datotečni sistem PuzzleFS, implementiran kot modul za jedro Linux, napisan v jeziku Rust. Sistem je zasnovan za uporabo pri nameščanju izoliranih kontejnerjev in nadaljuje razvoj idej, predlaganih v datotečnem sistemu Atomfs. Implementacija je trenutno v fazi prototipa, podpira gradnjo z veje jedra Linux rust-next in je odprta pod licencami Apache 2.0 in MIT.
Projekt si prizadeva obiti omejitve, ki nastanejo pri uporabi kontejnerskih slik v formatu OCI (Open Container Initiative). PuzzleFS rešuje težave, kot so učinkovito shranjevanje podvojenih podatkov, možnost neposrednega montaže, ponovna gradnja slik in varno delo z pomnilnikom.
Za deduplikacijo ponavljajočih se podatkov v različnih kontejnerjih se uporablja algoritem FastCDC (Fast Content-Defined Chunking), ki deluje z razdelitvijo podatkov na koščke poljubne velikosti in s prowadzeniem indeksa s Hashi obdelanih koščkov. Ponavljajoči se koščki se shranijo samo enkrat in se skupno indeksirajo za vse plasti sistema, torej lahko deduplikacija zajema različne točke montaže (nova plast sistema se lahko zažene na osnovi obstoječe in uporabi koščke podatkov, ki so že prisotni pri deduplikaciji).
Ponovna gradnja kontejnerskih slik dosežemo z definiranjem kanonične reprezentacije formata kontejnerskih slik. Neposredna montaža (direct-mount) omogoča montiranje slike kontejnerja v formatu OCI iz globalnega skupno rabljenega skladišča brez predhodne razpakiranja, pri čemer se kot identifikator uporablja Hash vsebine iz manifestacijo kontejnerja. Za preverjanje celovitosti podatkov v pogojih skupnega skladišča se lahko uporablja mehanizem fs-verity, ki ob dostopu do datotek preverja skladnost navedenih v binarnem indeksu Hash z dejansko vsebino.
Jezik Rust je izabran zbog kombinacije visoke performanse rezultantnog koda sa mogućnostima za sigurnu manipulaciju memorijom, što smanjuje rizik od pojave ranjivosti uzrokovanih problemima kao što su pristup oslobođenoj memoriji i izlazak van granica bafera. Korišćenje Rusta za kernel modul takođe je omogućilo deljenje koda između kernela i komponenti koje rade u korisničkom prostoru, čime se stvara jedinstvena sigurna implementacija.
Među drugim ciljevima projekta: vrlo brzo prevođenje i montiranje slika, mogućnost korišćenja opcione međustepenice za konverziju (kanonizaciju) slika, neobveznost potpunih prolaza kroz stablo FС u mtree stilu kod višeslojne strukture, primena promena u stilu casync i jednostavna za implementaciju arhitektura.
Izvor: opennet.ru
