Cisco ha proposto il file system PuzzleFS per il kernel Linux

Cisco ha proposto un nuovo file system PuzzleFS, implementato come modulo per il kernel Linux, scritto in linguaggio Rust. Il file system è progettato per l'hosting di contenitori isolati e continua lo sviluppo delle idee presentate nel file system Atomfs. L'implementazione è attualmente in fase prototipale, supporta la compilazione con il ramo del kernel Linux rust-next ed è aperta sotto le licenze Apache 2.0 e MIT.

Il progetto mira ad aggirare le limitazioni che sorgono nell'uso delle immagini dei contenitori nel formato OCI (Open Container Initiative). PuzzleFS affronta problemi come l'efficiente archiviazione di dati duplicati, la possibilità di montaggio diretto, il ricompilamento ripetuto delle immagini e un'operazione sicura con la memoria.

Per la deduplica dei dati ripetuti in diverse immagini di contenitori, è stato utilizzato l'algoritmo FastCDC (Fast Content-Defined Chunking), che funziona suddividendo i dati in frammenti di dimensioni arbitrarie e mantenendo un indice con gli hash dei frammenti elaborati. I frammenti duplicati vengono memorizzati una sola volta e indicizzati collettivamente per tutti i livelli del file system, ovvero la deduplica può abbracciare diversi punti di montaggio (un nuovo livello del file system può essere avviato sulla base di uno esistente e utilizzare i frammenti di dati già presenti nella deduplica).

La ricompilazione ripetuta delle immagini delle applicazioni viene raggiunta tramite la definizione di una rappresentazione canonica del formato delle immagini. Il montaggio diretto (direct-mount) consente di montare un'immagine di contenitore nel formato OCI da uno spazio di archiviazione condiviso globale senza la sua previa estrazione, usando come identificatore l'hash del contenuto dal manifesto del contenitore. Per verificare l'integrità dei dati in un contesto di archiviazione condivisa può essere utilizzato il meccanismo fs-verity, che controlla la corrispondenza degli hash specificati nell'indice binario con il contenuto effettivo durante l'accesso ai file.

Il linguaggio Rust è stato scelto per la sua combinazione di elevate prestazioni del codice risultante e capacità di gestione sicura della memoria, che riduce il rischio di vulnerabilità causate da problemi come l'accesso a porzioni di memoria dopo il loro rilascio e l'overflow del buffer. L'uso di Rust per il modulo del kernel ha anche consentito la condivisione del codice tra il kernel e i componenti che operano nello spazio utente, creando un'unica implementazione sicura.

Tra gli altri obiettivi del progetto: un'assemblaggio e montaggio delle immagini molto rapidi, la possibilità di utilizzare una fase intermedia opzionale per la trasformazione (canonicalization) delle immagini, l'assenza della necessità di passaggi completi attraverso l'albero del file system in stile mtree quando si utilizza una struttura multilivello, sovrapposizione delle modifiche in stile casync e un'architettura semplice da implementare.

Fonte: opennet.ru

Acquista un hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista un hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster