Mikuláš Patočka, um dos desenvolvedores do LVM e autor de várias , relacionadas à otimização do funcionamento de sistemas de armazenamento, trabalha na empresa Red Hat, na lista de discussão dos desenvolvedores do núcleo Linux uma nova sistema de arquivos , voltada para a criação de um sistema de arquivos compacto e rápido para chips de memória não volátil (NVM, non-volatile memory, como NVDIMM), combinando o desempenho da RAM com a capacidade de armazenamento permanente dos dados.
Ao desenvolver o NVFS, foi levado em consideração a experiência do sistema de arquivos , criado em 2017 especificamente para memória NVM, mas não aceito no núcleo Linux e com suporte de núcleos Linux de 4.13 a 5.1.
O sistema de arquivos NVFS é significativamente mais simples que o NOVA (4972 linhas de código contra 21459), fornece uma ferramenta fsck, tem um desempenho superior, suporta atributos estendidos (xattrs), rótulos de segurança, ACL e quotas, mas não suporta snapshots. NVFS é semelhante à
sistema de arquivos Ext4 e se alinha bem ao modelo de sistemas de arquivos baseado no subsistema VFS, permitindo minimizar o número de camadas e utilizar um módulo que não requer patches no núcleo.
NVFS utiliza a interface do núcleo para acesso direto aos dispositivos de memória permanente, contornando a cache de página. Para otimizar o trabalho com a memória NVM, que utiliza endereçamento por byte, o conteúdo do armazenamento é mapeado para o espaço de endereçamento linear do núcleo sem o uso do nível de dispositivos de bloco tradicional e cache intermediário. Para armazenar o conteúdo dos diretórios, é utilizado , na qual cada nome de arquivo é hasheado e o valor do hash é utilizado durante a busca na árvore.
A integridade dos dados é garantida por meio do mecanismo "" (como no UFS do FreeBSD e no FFS do OpenBSD) sem o uso de journalização. Para evitar a corrupção de arquivos no NVFS, as operações de modificação de dados são agrupadas de tal forma que uma falha não pode resultar na perda de blocos ou inode, e a integridade das estruturas é restaurada por meio da ferramenta fsck. A ferramenta fsck opera em modo multithreading e proporciona um desempenho de cerca de 1,6 milhões de inodes por segundo.
Em A NVFS executou a operação de copiar a árvore com os textos de núcleo Linux na memória NVM cerca de 10% mais rápido que a NOVA, 30% mais rápido que a ext4 e 37% mais rápido que a XFS. No teste de busca de dados, o sistema de arquivos NVFS foi 3% mais rápido que a NOVA e 15% mais rápido que a ext4 e XFS (mas com o cache de disco ativo, a NOVA foi 15% mais lenta).
No teste de um milhão de operações com diretórios, a NVFS superou a NOVA em 40%, a ext4 em 22% e a XFS em 46%. Ao simular a atividade de um SGBD, o sistema de arquivos NVFS superou a NOVA em 20%, a ext4 em 18 vezes e a XFS em 5 vezes. No teste fs_mark, os resultados da NVFS e da NOVA ficaram aproximadamente no mesmo nível, enquanto a ext4 e a XFS ficaram atrás em cerca de 3 vezes.
O atraso dos sistemas de arquivos tradicionais na memória NVM deve-se ao fato de que eles não estão planejados para endereçamento por byte, utilizado na memória não volátil, que se apresenta como uma memória RAM comum. A leitura a partir de dispositivos de armazenamento convencionais garante a atomicidade da operação no nível de leitura/escrita de um setor, enquanto a memória NVM proporciona acesso no nível de palavras de máquina individuais. Além disso, os sistemas de arquivos tradicionais tentam reduzir a intensidade de acessos ao meio, que é considerado intrinsecamente mais lento do que a memória RAM, e também tentam agrupar operações para garantir leituras sequenciais ao usar discos rígidos, processar filas de solicitações, combater a fragmentação e dividir as prioridades de execução de diferentes operações. Para a memória NVM, tais complexidades são desnecessárias, uma vez que a velocidade de acesso aos dados é comparável à da RAM e a ordem de acesso não importa.
Fonte: opennet.ru
