Cisco föreslår PuzzleFS-filsystem för Linux-kärnan

Cisco har föreslagit ett nytt filsystem, PuzzleFS, implementerat som en modul för Linux-kärnan, skrivet i Rust. Filsystemet är designat för att användas för att vara värd för isolerade behållare och fortsätter att utveckla de idéer som föreslås i Atomfs filsystem. Implementeringen är fortfarande på prototypstadiet, stöder byggnad med rust-nästa Linux-kärngren och är öppen under Apache 2.0 och MIT-licenserna.

Projektet syftar till att kringgå de begränsningar som uppstår när man använder containerbilder i formatet OCI (Open Container Initiative). PuzzleFS löser problem som effektiv lagring av dubbletter av data, direktmonteringsförmåga, repeterbar bilduppbyggnad och minnessäkerhet.

För att deduplicera data som upprepas i olika behållare används FastCDC (Fast Content-Defined Chunking)-algoritmen, som fungerar genom att dela upp data i fragment av godtycklig storlek och upprätthålla ett index med hash för de bearbetade fragmenten. Upprepade fragment lagras en gång och indexeras gemensamt för alla lager i filsystemet, d.v.s. deduplicering kan täcka olika monteringspunkter (ett nytt FS-lager kan startas baserat på ett befintligt och använda datafragmenten som finns i det under deduplicering).

Repetitiv sammansättning av behållarbilder uppnås genom att definiera en kanonisk representation av behållarbildformatet. Direktmontering låter dig montera en OCI-containerbild från en global delad lagring utan att först packa upp den, med hjälp av en hash av innehållet från containermanifestet som en identifierare. För att verifiera dataintegriteten vid användning av delad lagring kan fs-verity-mekanismen användas, som vid åtkomst till filer kontrollerar överensstämmelsen mellan hasharna som anges i det binära indexet med det faktiska innehållet.

Språket Rust valdes eftersom det kombinerar hög prestanda hos den resulterande koden med möjligheter för säkert arbete med minne, vilket minskar risken för sårbarheter orsakade av problem som att komma åt ett minnesområde efter att det har frigjorts och att buffertgränser svämmar över. Att använda Rust för kärnmodulen gjorde det också möjligt att dela kod mellan kärnan och användarutrymmeskomponenter för att skapa en enda, säker implementering.

Andra mål med projektet inkluderar: mycket snabb uppbyggnad och montering av bilder, möjligheten att använda ett valfritt mellansteg för kanonisering av bilder, valbarheten för filträd i fullständig mtree-stil när man använder en flerskiktsstruktur, casync-stil utskjutning förändringar och en lättimplementerad arkitektur.

Källa: opennet.ru

Lägg en kommentar