Famfs v7 traz a velocidade da memória RAM para o compartilhamento de arquivos entre múltiplos servidores Linux

Dados compartilhados na velocidade da luz: famfs revoluciona a memória CXL no Linux!

Escrito por
Emanuel Negromonte
Emanuel Negromonte é Jornalista, Mestre em Tecnologia da Informação e atualmente cursa a segunda graduação em Engenharia de Software. Com 14 anos de experiência escrevendo sobre...
  • Adeus, replicação: O famfs permite que múltiplos servidores acessem o mesmo conjunto de dados na memória compartilhada, economizando terabytes de RAM e eliminando cópias desnecessárias.
  • Velocidade pura: Ao utilizar a tecnologia DAX (acesso direto), o sistema remove o intermediário do "page cache", conectando o processador diretamente aos dados na memória externa.
  • Estratégia FUSE: A migração para o framework FUSE facilita a manutenção no kernel, enquanto novas mensagens de protocolo garantem que o desempenho continue em nível nativo.
  • Segurança e resiliência: O patch introduz notificações automáticas para falhas de hardware (memória envenenada), bloqueando acessos corrompidos antes que causem instabilidade no sistema.
  • Pronto para a próxima era: Coordenado com ferramentas como libfuse e daxctl, o famfs prepara o Linux para a revolução da computação com memória disaggregada.

O desenvolvimento do kernel Linux acaba de receber a sétima versão (v7) da ambiciosa série de patches para o famfs (fabric-attached memory file system). Submetida por John Groves, esta atualização representa um marco na preparação do sistema operacional para arquiteturas de computação de próxima geração, focadas em memória compartilhada via CXL (compute express link).

Originalmente concebido como um sistema de arquivos independente, o famfs foi totalmente portado para o framework FUSE (filesystem in userspace) para facilitar sua manutenção e aceitação no kernel principal, sem sacrificar a performance ultra-rápida que o hardware permite.

Para o iniciante: o que é o famfs e por que ele é revolucionário?

Imagine que você tem um supercomputador com dezenas de servidores. Normalmente, se eles precisam compartilhar um banco de dados gigante, existem duas saídas ruins: ou cada um tem uma cópia (gastando muita memória preciosa) ou eles acessam via rede (o que é muito mais lento que a memória local).

O famfs muda as regras do jogo. Ele permite que todos esses servidores enxerguem um “tanque” de memória externo como se fosse um disco rígido comum (com pastas e arquivos), mas com a velocidade absurda da memória RAM.

O diferencial: diferente de um HD compartilhado comum, onde um servidor pode atropelar os dados do outro, o famfs organiza essa memória de forma que o Linux consiga ler e escrever nela diretamente (via tecnologia DAX), garantindo que múltiplos computadores trabalhem no mesmo arquivo ao mesmo tempo sem lentidão ou erros.

Detalhes técnicos da v7

A série de 19 patches foca em transformar o famfs em um cidadão de primeira classe dentro do subsistema de memória e do FUSE:

  • Novo driver fsdev.c: introduz o modo “famfs” para dispositivos DAX. Isso permite que dispositivos de memória bruta sejam alternados dinamicamente entre modos de RAM do sistema ou arquivos de acesso direto.
  • Mapeamento sem “upcalls”: o grande desafio do FUSE é a latência (precisar perguntar tudo para o espaço de usuário). O famfs resolve isso com as novas mensagens GET_FMAP e GET_DAXDEV, que permitem ao kernel “cachear” todo o mapa da memória. Uma vez mapeado, o Linux acessa a memória CXL diretamente, sem interrupções.
  • Tratamento de “poison”: em memórias externas (disaggregadas), erros de hardware são mais comuns. O patch implementa uma notificação de falha que bloqueia o acesso a regiões corrompidas imediatamente, protegendo a integridade do sistema.

Bastidores e curiosidades da discussão

A transição do famfs para o FUSE não foi apenas técnica, mas política e estratégica dentro da comunidade:

  • O consenso de LSFMM: durante as conferências de desenvolvedores de sistemas de arquivos e memória (LSFMM), ficou decidido que o famfs deveria ser portado para FUSE para evitar a complexidade de um novo sistema de arquivos no núcleo do kernel. John Groves acatou a sugestão, o que acelerou o progresso do projeto.
  • A caça aos bugs de transição: Allison Schofield reportou falhas críticas durante testes de estresse em mudanças de modo de dispositivo. Isso levou Groves a admitir que a limpeza de estado dos “folios” de memória precisava de mais robustez, prometendo uma solução definitiva já para a próxima versão.
  • Privilégios de segurança: uma discussão importante resultou na exigência da capacidade CAP_SYS_RAWIO para montagens famfs. Como o sistema lida com memória física bruta, os mantenedores garantiram que apenas usuários altamente privilegiados possam orquestrar esses mapeamentos.

Status e disponibilidade

O projeto está em revisão ativa. O conjunto de patches é “coordenado”, o que significa que além do kernel Linux, também foram enviados patches para a libfuse e para o utilitário daxctl. Isso garante que, quando o recurso chegar ao kernel estável, as ferramentas necessárias para usá-lo já estarão prontas.

Compartilhe este artigo
Emanuel Negromonte é Jornalista, Mestre em Tecnologia da Informação e atualmente cursa a segunda graduação em Engenharia de Software. Com 14 anos de experiência escrevendo sobre GNU/Linux, Software Livre e Código Aberto, dedica-se a descomplicar o universo tecnológico para entusiastas e profissionais. Seu foco é em notícias, tutoriais e análises aprofundadas, promovendo o conhecimento e a liberdade digital no Brasil.