Cisco introduce sistemul de fișiere PuzzleFS pentru nucleul Linux

Cisco a propus un nou sistem de fișiere, PuzzleFS, implementat ca modul pentru nucleul Linux, scris în Rust. Sistemul de fișiere este conceput pentru a fi utilizat pentru a găzdui containere izolate și continuă să dezvolte ideile propuse în sistemul de fișiere Atomfs. Implementarea este încă în stadiul de prototip, acceptă construirea cu ramura de kernel Linux rust-next și este deschisă sub licențe Apache 2.0 și MIT.

Proiectul își propune să ocolească limitările care apar la utilizarea imaginilor containerului în format OCI (Open Container Initiative). PuzzleFS rezolvă probleme precum stocarea eficientă a datelor duplicate, capacitatea de montare directă, construirea de imagini repetabile și securitatea memoriei.

Pentru a deduplica datele care se repetă în diferite containere, se folosește algoritmul FastCDC (Fast Content-Defined Chunking), care funcționează prin împărțirea datelor în fragmente de dimensiuni arbitrare și menținerea unui index cu hash-uri ale fragmentelor procesate. Fragmentele care se repetă sunt stocate o dată și indexate în comun pentru toate straturile sistemului de fișiere, de exemplu. deduplicarea poate acoperi diferite puncte de montare (un nou strat FS poate fi lansat pe baza unuia existent și poate utiliza fragmentele de date conținute în acesta în timpul deduplicarii).

Asamblarea repetitivă a imaginilor containerului se realizează prin definirea unei reprezentări canonice a formatului imaginii containerului. Montarea directă vă permite să montați o imagine de container OCI dintr-un spațiu de stocare partajat global fără a o despacheta mai întâi, folosind un hash al conținutului din manifestul containerului ca identificator. Pentru a verifica integritatea datelor atunci când se utilizează stocarea partajată, se poate folosi mecanismul fs-verity, care, la accesarea fișierelor, verifică corespondența hashurilor specificate în indexul binar cu conținutul real.

Limbajul Rust a fost ales deoarece combină performanța ridicată a codului rezultat cu capabilitățile de lucru în siguranță cu memoria, ceea ce reduce riscul vulnerabilităților cauzate de probleme precum accesarea unei zone de memorie după ce aceasta a fost eliberată și depășirea limitelor buffer-ului. Utilizarea Rust pentru modulul de kernel a făcut posibilă, de asemenea, partajarea codului între componentele kernelului și spațiului utilizator pentru a crea o implementare unică și sigură.

Alte obiective ale proiectului includ: construirea și montarea foarte rapidă a imaginilor, capacitatea de a utiliza o etapă intermediară opțională pentru canonizarea imaginilor, opționalitatea trecerilor complete de fișiere în stil mtree atunci când se utilizează o structură cu mai multe straturi, impunerea în stil casync de schimbări și o arhitectură ușor de implementat.

Sursa: opennet.ru

Adauga un comentariu