Cisco apresenta o sistema de arquivos PuzzleFS para o kernel do Linux

A Cisco propôs um novo sistema de arquivos, PuzzleFS, implementado como um módulo para o kernel Linux, escrito em Rust. O sistema de arquivos foi projetado para ser usado para hospedar contêineres isolados e continua a desenvolver as ideias propostas no sistema de arquivos Atomfs. A implementação ainda está em fase de protótipo, suporta construção com o ramo do kernel Linux Rust-next e está aberta sob as licenças Apache 2.0 e MIT.

O projeto visa contornar as limitações que surgem ao usar imagens de contêiner no formato OCI (Open Container Initiative). O PuzzleFS resolve problemas como armazenamento eficiente de dados duplicados, capacidade de montagem direta, construção de imagens repetíveis e segurança de memória.

Para desduplicar dados que se repetem em diferentes containers, é utilizado o algoritmo FastCDC (Fast Content-Defined Chunking), que funciona dividindo os dados em fragmentos de tamanho arbitrário e mantendo um índice com hashes dos fragmentos processados. Fragmentos repetidos são armazenados uma vez e indexados conjuntamente para todas as camadas do sistema de arquivos, ou seja, a desduplicação pode cobrir diferentes pontos de montagem (uma nova camada FS pode ser iniciada com base em uma existente e usar os fragmentos de dados contidos nela durante a desduplicação).

A montagem repetitiva de imagens de contêiner é obtida através da definição de uma representação canônica do formato da imagem de contêiner. A montagem direta permite montar uma imagem de contêiner OCI de um armazenamento compartilhado global sem descompactá-la primeiro, usando um hash do conteúdo do manifesto do contêiner como identificador. Para verificar a integridade dos dados ao utilizar armazenamento compartilhado, pode-se utilizar o mecanismo fs-verity, que, ao acessar os arquivos, verifica a correspondência dos hashes especificados no índice binário com o conteúdo real.

A linguagem Rust foi escolhida porque combina alto desempenho do código resultante com recursos para trabalhar com memória com segurança, o que reduz o risco de vulnerabilidades causadas por problemas como acesso a uma área de memória após ela ter sido liberada e transbordamento dos limites do buffer. O uso do Rust para o módulo do kernel também tornou possível compartilhar código entre o kernel e os componentes do espaço do usuário para criar uma implementação única e segura.

Outros objetivos do projeto incluem: construção e montagem de imagens muito rápidas, a capacidade de usar um estágio intermediário opcional para canonização de imagens, a opcionalidade de passagens completas de árvore de arquivos no estilo mtree ao usar uma estrutura multicamadas, imposição no estilo casync de mudanças e uma arquitetura fácil de implementar.

Fonte: opennet.ru

Adicionar um comentário