Cisco představuje souborový systém PuzzleFS pro linuxové jádro

Cisco navrhlo nový souborový systém, PuzzleFS, implementovaný jako modul pro linuxové jádro, napsaný v Rustu. Souborový systém je navržen pro použití k hostování izolovaných kontejnerů a pokračuje ve vývoji nápadů navržených v souborovém systému Atomfs. Implementace je stále ve fázi prototypu, podporuje budování s linuxovou větví rust-next a je otevřena pod licencemi Apache 2.0 a MIT.

Cílem projektu je obejít omezení, která vznikají při používání obrázků kontejnerů ve formátu OCI (Open Container Initiative). PuzzleFS řeší problémy, jako je efektivní ukládání duplicitních dat, možnost přímého připojení, vytváření opakovatelného obrazu a zabezpečení paměti.

K deduplikaci dat, která se opakují v různých kontejnerech, se používá algoritmus FastCDC (Fast Content-Defined Chunking), který funguje tak, že data rozděluje na fragmenty libovolné velikosti a udržuje index s hashemi zpracovávaných fragmentů. Opakující se fragmenty jsou uloženy jednou a společně indexovány pro všechny vrstvy souborového systému, tzn. deduplikace může pokrývat různé přípojné body (nová vrstva FS může být spuštěna na základě existující vrstvy a během deduplikace využívat datové fragmenty v ní obsažené).

Opakované sestavení obrazů kontejneru je dosaženo prostřednictvím definování kanonické reprezentace formátu obrazu kontejneru. Přímé připojení vám umožňuje připojit obraz kontejneru OCI z globálního sdíleného úložiště, aniž byste jej nejprve rozbalili, pomocí hash obsahu z manifestu kontejneru jako identifikátoru. Pro ověření integrity dat při použití sdíleného úložiště lze použít mechanismus fs-verity, který při přístupu k souborům kontroluje shodu hashů zadaných v binárním indexu se skutečným obsahem.

Jazyk Rust byl zvolen, protože kombinuje vysoký výkon výsledného kódu se schopnostmi bezpečné práce s pamětí, což snižuje riziko zranitelnosti způsobených problémy, jako je přístup k oblasti paměti po jejím uvolnění a přetečení hranic vyrovnávací paměti. Použití Rustu pro modul jádra také umožnilo sdílet kód mezi jádrem a komponentami uživatelského prostoru a vytvořit tak jedinou bezpečnou implementaci.

Mezi další cíle projektu patří: velmi rychlé sestavení a připojení obrázků, možnost použít volitelný mezistupeň pro kanonizaci obrázků, možnost plného průchodu stromem ve stylu mtree při použití vícevrstvé struktury, vyřazování ve stylu casync změn a snadno implementovatelnou architekturu.

Zdroj: opennet.ru

Přidat komentář