Cisco introducerer PuzzleFS-filsystemet til Linux-kernen

Cisco har foreslået et nyt filsystem, PuzzleFS, implementeret som et modul til Linux-kernen, skrevet i Rust. Filsystemet er designet til at blive brugt til at være vært for isolerede containere og fortsætter med at udvikle de ideer, der foreslås i Atomfs filsystem. Implementeringen er stadig på prototypestadiet, understøtter bygning med rust-next Linux-kernegrenen og er åben under Apache 2.0- og MIT-licenserne.

Projektet har til formål at omgå de begrænsninger, der opstår ved brug af containerbilleder i OCI-formatet (Open Container Initiative). PuzzleFS løser problemer såsom effektiv lagring af duplikerede data, mulighed for direkte montering, gentagelig billedopbygning og hukommelsessikkerhed.

For at deduplikere data, der gentages i forskellige containere, bruges FastCDC (Fast Content-Defined Chunking) algoritmen, som virker ved at opdele dataene i fragmenter af vilkårlig størrelse og vedligeholde et indeks med hashes af de behandlede fragmenter. Gentagende fragmenter gemmes én gang og indekseres i fællesskab for alle lag i filsystemet, dvs. deduplikering kan dække forskellige monteringspunkter (et nyt FS-lag kan lanceres baseret på et eksisterende og bruge datafragmenterne indeholdt i det under deduplikering).

Gentagen samling af beholderbilleder opnås ved at definere en kanonisk repræsentation af beholderbilledeformatet. Direct-mount giver dig mulighed for at montere et OCI-containerbillede fra et globalt delt lager uden at pakke det ud først, ved at bruge en hash af indholdet fra containermanifestet som en identifikator. For at verificere dataintegriteten ved brug af delt lagring kan fs-verity-mekanismen bruges, som ved adgang til filer kontrollerer overensstemmelsen mellem de hashes, der er angivet i det binære indeks, med det faktiske indhold.

Rust-sproget blev valgt, da det kombinerer høj ydeevne af den resulterende kode med muligheder for sikkert arbejde med hukommelse, hvilket reducerer risikoen for sårbarheder forårsaget af problemer såsom adgang til et hukommelsesområde efter det er blevet frigivet og overfyldte buffergrænser. Brug af Rust til kernemodulet gjorde det også muligt at dele kode mellem kernen og brugerrumskomponenterne for at skabe en enkelt, sikker implementering.

Andre mål med projektet inkluderer: meget hurtig opbygning og montering af billeder, muligheden for at bruge et valgfrit mellemtrin til kanonisering af billeder, muligheden for fuld mtree-stil filtræ-passeringer ved brug af en flerlagsstruktur, casync-stil indsættelse af ændringer og en arkitektur, der er nem at implementere.

Kilde: opennet.ru

Tilføj en kommentar