Cisco navrhuje súborový systém PuzzleFS pre jadro Linuxu

Cisco navrhlo nový súborový systém, PuzzleFS, implementovaný ako modul pre linuxové jadro, napísaný v Ruste. Súborový systém je navrhnutý na použitie na hosťovanie izolovaných kontajnerov a pokračuje vo vývoji nápadov navrhnutých v súborovom systéme Atomfs. Implementácia je stále vo fáze prototypu, podporuje budovanie s linuxovou vetvou rust-next a je otvorená pod licenciami Apache 2.0 a MIT.

Cieľom projektu je obísť obmedzenia, ktoré vznikajú pri používaní obrázkov kontajnerov vo formáte OCI (Open Container Initiative). PuzzleFS rieši problémy, ako je efektívne ukladanie duplicitných údajov, možnosť priameho pripojenia, vytváranie opakovateľných obrázkov a bezpečnosť pamäte.

Na deduplikáciu údajov, ktoré sa opakujú v rôznych kontajneroch, sa používa algoritmus FastCDC (Fast Content-Defined Chunking), ktorý funguje tak, že údaje rozdeľuje na fragmenty ľubovoľnej veľkosti a udržiava index s hodnotami hash spracovaných fragmentov. Opakujúce sa fragmenty sú uložené raz a spoločne indexované pre všetky vrstvy súborového systému, t.j. deduplikácia môže pokrývať rôzne body pripojenia (nová vrstva FS môže byť spustená na základe existujúcej vrstvy a počas deduplikácie použiť fragmenty údajov v nej obsiahnuté).

Opakované zostavovanie obrázkov kontajnera sa dosahuje prostredníctvom definovania kanonickej reprezentácie formátu obrázka kontajnera. Priame pripojenie vám umožňuje pripojiť obraz kontajnera OCI z globálneho zdieľaného úložiska bez jeho predchádzajúceho rozbalenia pomocou hash obsahu z manifestu kontajnera ako identifikátora. Na overenie integrity údajov pri použití zdieľaného úložiska možno použiť mechanizmus fs-verity, ktorý pri prístupe k súborom kontroluje zhodu hashov špecifikovaných v binárnom indexe so skutočným obsahom.

Jazyk Rust bol zvolený, pretože kombinuje vysoký výkon výsledného kódu s možnosťami bezpečnej práce s pamäťou, čo znižuje riziko zraniteľností spôsobených problémami, ako je prístup k pamäťovej oblasti po jej uvoľnení a pretečenie hraníc vyrovnávacej pamäte. Použitie Rustu pre modul jadra tiež umožnilo zdieľať kód medzi komponentmi jadra a používateľského priestoru na vytvorenie jedinej, bezpečnej implementácie.

Medzi ďalšie ciele projektu patrí: veľmi rýchle zostavenie a pripojenie obrázkov, možnosť použiť voliteľný medzistupeň na kanonizáciu obrázkov, možnosť úplného prechodu stromom súboru v štýle mtree pri použití viacvrstvovej štruktúry, vyradenie v štýle casync zmien a jednoducho implementovateľnej architektúry.

Zdroj: opennet.ru

Pridať komentár