Kompania Cisco ofroi një sistem skedarësh të ri, PuzzleFS, që realizohet si një modul për kernelin Linux, i shkruar në gjuhën Rust. FS është e dizajnuar për përdorim në vendosjen e konteinerëve të izoluar dhe vazhdon zhvillimin e ideve të propozuara në FS-në Atomfs. Realizimi është ende në fazën e prototipit, përkrah ndërtimin me degën rust-next të kernelit Linux dhe është e hapur nën licencat Apache 2.0 dhe MIT.
Projekti synon të anashkalojë kufizimet që lindin nga përdorimi i imazheve të konteinerëve në formatin OCI (Open Container Initiative). PuzzleFS zgjidh probleme si ruajtja efikase e të dhënave të dyfishta, mundësinë e montimit direkt, riparimin e imazheve dhe funksionimin e sigurt me memorie.
Për dedupikimin e të dhënave të përsëritura në konteinerë të ndryshëm përdoret algoritmi FastCDC (Fast Content-Defined Chunking), që punon duke ndarë të dhënat në fragmente të madhësisë së rastësishme dhe duke mbajtur një indeks me hash-et e fragmenteve të përpunuara. Fragmente të përsëritura ruhen një herë dhe indeksohen kolektivisht për të gjitha shtresat e FS-së, që do të thotë se dedupikimi mund të mbulojë pika të ndryshshme montimi (një shtresë e re FS mund të fillohet në bazë të ekzistueshmes dhe të përdorë fragmentet që ka për dedupikim).
Riparimi i imazheve të konteinerëve arrihet përmes përcaktimit të një reprezentimi kanonik të formatit të imazheve të konteinerëve. Montimi direkt (direct-mount) lejon montimin e një imazhi konteineri në formatin OCI nga një ruajtje globalisht të ndarë pa e nxjerrë paraprakisht dhe duke përdorur si identifikues hash-in e përmbajtjes nga manifesti i konteinerit. Për verifikimin e integritetit të të dhënave në kushte përdorimi të një ruajtjeje të përbashkët, mund të përdoret mekanizmi fs-verity, i cili, gjatë aksesit në skedarë, kontrollon përputhshmërinë e hash-eve të specifikuara në indeksin binar me përmbajtjen aktuale.
Gjuha Rust është zgjedhur si kombinuese e performancës së lartë të kodit të rezultuar me mundësitë për funksionim të sigurt me memorie, çka lejon uljen e rrezikut për shfaqjen e dobësive që shkaktohen nga probleme si qasja në një zonë memorjeje pas lëshimit të saj dhe dalja jashtë kufijve të buferit. Përdorimi i Rust për modulin e kernelit gjithashtu lejon ndarjen e kodit midis kernelit dhe komponenteve që funksionojnë në hapësirën e përdoruesit, për krijimin e një realizimi të mbrojtur të vetëm.
Mes qëllimeve të tjera të projektit: ndërtim dhe montim shumë të shpejtë të imazheve, mundësia e përdorimit të një faze të ndërmjetme për transformimin (canonicalization) e imazheve, opcionaliteti i kalimeve të plota në pemën e FS në stilin mtree kur përdoret struktura e shumëfishtë, shtimin e ndryshimeve në stilin casync dhe një arkitekturë të lehtë në realizim.
Burimi: opennet.ru
