Cisco predstavlja datotečni sistem PuzzleFS za jedro Linuxa

Cisco je predlagal nov datotečni sistem, PuzzleFS, implementiran kot modul za jedro Linuxa, napisan v Rustu. Datotečni sistem je zasnovan za uporabo za gostovanje izoliranih vsebnikov in še naprej razvija ideje, predlagane v datotečnem sistemu Atomfs. Izvedba je še vedno v fazi prototipa, podpira gradnjo z vejo jedra Linuxa rust-next in je odprta pod licencama Apache 2.0 in MIT.

Projekt želi zaobiti omejitve, ki nastanejo pri uporabi slik vsebnikov v formatu OCI (Open Container Initiative). PuzzleFS rešuje težave, kot so učinkovito shranjevanje podvojenih podatkov, zmožnost neposrednega priklopa, ponovljiva izdelava slik in varnost pomnilnika.

Za deduplikacijo podatkov, ki se ponavljajo v različnih vsebnikih, se uporablja algoritem FastCDC (Fast Content-Defined Chunking), ki deluje tako, da podatke razdeli na fragmente poljubne velikosti in vzdržuje indeks z zgoščenimi vrednostmi obdelanih fragmentov. Ponavljajoči se fragmenti so enkrat shranjeni in skupaj indeksirani za vse plasti datotečnega sistema, tj. deduplikacija lahko zajema različne točke priklopa (novo plast FS je mogoče zagnati na podlagi obstoječe in med deduplikacijo uporabiti fragmente podatkov, ki jih vsebuje).

Ponavljajoče se sestavljanje slik vsebnika je doseženo z definiranjem kanonične predstavitve formata slike vsebnika. Neposredna montaža vam omogoča pripenjanje slike vsebnika OCI iz globalnega skupnega pomnilnika, ne da bi jo najprej razpakirali, z uporabo zgoščene vsebine iz manifesta vsebnika kot identifikatorja. Za preverjanje celovitosti podatkov pri uporabi skupnega pomnilnika je mogoče uporabiti mehanizem fs-verity, ki pri dostopu do datotek preveri ujemanje zgoščenih vrednosti, navedenih v binarnem indeksu, z dejansko vsebino.

Jezik Rust je bil izbran, ker združuje visoko zmogljivost dobljene kode z zmožnostmi za varno delo s pomnilnikom, kar zmanjšuje tveganje za ranljivosti, ki jih povzročajo težave, kot je dostop do pomnilniškega območja po tem, ko je bil ta osvobojen, in prekoračitev meja medpomnilnika. Uporaba Rusta za modul jedra je omogočila tudi skupno rabo kode med komponentami jedra in uporabniškega prostora za ustvarjanje ene same varne izvedbe.

Drugi cilji projekta vključujejo: zelo hitro izdelavo in namestitev slik, zmožnost uporabe izbirne vmesne stopnje za kanoniziranje slik, izbirnost popolnih prehodov drevesa datotek v slogu mtree pri uporabi večplastne strukture, vsiljevanje v slogu casync sprememb in arhitekturo, ki jo je enostavno implementirati.

Vir: opennet.ru

Dodaj komentar