Cisco propón o sistema de ficheiros PuzzleFS para o núcleo de Linux

Cisco propuxo un novo sistema de ficheiros, PuzzleFS, implementado como módulo para o núcleo de Linux, escrito en Rust. O sistema de ficheiros está deseñado para ser usado para aloxar contedores illados e segue desenvolvendo as ideas propostas no sistema de ficheiros Atomfs. A implementación aínda está na fase de prototipo, admite a construción coa rama do núcleo Linux rust-next e está aberta baixo as licenzas Apache 2.0 e MIT.

O proxecto pretende evitar as limitacións que xorden ao utilizar imaxes de contedores no formato OCI (Open Container Initiative). PuzzleFS resolve problemas como o almacenamento eficiente de datos duplicados, a capacidade de montaxe directa, a creación de imaxes repetibles e a seguridade da memoria.

Para deduplicar datos que se repiten en diferentes contedores utilízase o algoritmo FastCDC (Fast Content-Defined Chunking), que funciona dividindo os datos en fragmentos de tamaño arbitrario e mantendo un índice con hash dos fragmentos procesados. Os fragmentos que se repiten gárdanse unha vez e indízanse conxuntamente para todas as capas do sistema de ficheiros, é dicir. a deduplicación pode cubrir diferentes puntos de montaxe (pódese lanzar unha nova capa FS en función dunha existente e utilizar os fragmentos de datos contidos nela durante a deduplicación).

A montaxe repetitiva de imaxes de contedores conséguese mediante a definición dunha representación canónica do formato de imaxe de contedores. A montaxe directa permítelle montar unha imaxe de contedor OCI desde un almacenamento compartido global sen desempaquetala antes, utilizando un hash do contido do manifesto do contenedor como identificador. Para verificar a integridade dos datos ao utilizar o almacenamento compartido, pódese utilizar o mecanismo fs-verity que, ao acceder aos ficheiros, verifica a correspondencia dos hash especificados no índice binario co contido real.

Escolleuse a linguaxe Rust xa que combina un alto rendemento do código resultante con capacidades para traballar de forma segura coa memoria, o que reduce o risco de vulnerabilidades causadas por problemas como acceder a unha área de memoria despois de liberarse e desbordar os límites do búfer. Usar Rust para o módulo do núcleo tamén permitiu compartir código entre os compoñentes do núcleo e do espazo de usuario para crear unha implementación única e segura.

Outros obxectivos do proxecto inclúen: construción e montaxe de imaxes moi rápidos, a capacidade de usar unha fase intermedia opcional para a canonización de imaxes, a opcionalidade de pases completos de árbore de ficheiros de estilo mtree cando se usa unha estrutura de varias capas, a imposición de estilo casync. de cambios, e unha arquitectura fácil de implementar.

Fonte: opennet.ru

Engadir un comentario