Linus Torvalds integrou no núcleo do Linux 7.1, cuja liberação está prevista para meados de junho, um conjunto de patches com uma nova implementação do sistema de arquivos NTFS, que vinha sendo desenvolvido sob o nome ntfsplus. O novo driver foi incluído sob o nome "ntfs", que anteriormente era usado para a remoção do driver antigo do núcleo, que operava em modo somente leitura. O driver ntfsplus foi desenvolvido por Namjae Jeon, um participante do projeto Samba, que também desenvolve o driver EXFAT e o servidor KSMBD no núcleo do Linux.
O desenvolvimento do ntfsplus começou em 2022 após a publicação de um relatório sobre problemas com a manutenção do driver NTFS3, desenvolvido pela Paragon Software e fornecido a partir do núcleo 5.15, em vez do antigo driver NTFS, que foi abandonado. De novembro de 2021 a junho de 2022, os desenvolvedores do ntfs3 pararam de se comunicar e de analisar os patches enviados, mas depois retomaram a manutenção e publicaram um conjunto de correções que foi incluído no núcleo 5.19. Desde então, alterações para novas versões do núcleo são lançadas regularmente, e, entre outras coisas, um conjunto considerável de melhorias e correções foi aceito no núcleo 7.0.
Como motivação para a inclusão no núcleo do novo driver ntfsplus, foi apontado que um driver NTFS mais qualificado e mantido poderia melhorar a compatibilidade entre sistemas Linux e dispositivos Windows, além de simplificar o trabalho para os usuários. Foi afirmado que o atual driver NTFS3 possui problemas não resolvidos, o que leva muitos usuários e distribuições a continuarem utilizando o antigo driver ntfs-3g, que opera no espaço do usuário. Durante a execução do conjunto de testes xfstests, o driver ntfsplus passou com sucesso 326 testes (41,4%) de 787, enquanto o ntfs3 passou 273 (34,6%).
O driver ntfsplus é baseado na base de código removida do núcleo do antigo driver ntfs, que foi reformulado, ampliado com a capacidade de escrita de dados e significativamente expandido para suportar funcionalidades modernas, como o uso de folhetos de páginas de memória (folios) em vez da estrutura buffer_head. No novo driver, foi implementada a alocação atrasada de blocos, permitindo alcançar alto desempenho nas operações de escrita e reduzir a fragmentação. Para operações de escrita/leitura bufferizadas, entrada/saída direta, mapeamento de extensões e operações de escrita/leitura em páginas, foi utilizada a biblioteca iomap.
Comparado ao ntfs3, o novo driver oferece recursos como iomap, alocação de blocos atrasada (delayed allocation) e mapeamento de identificadores de usuários durante a montagem (idmap). Após ser aceito na versão principal do kernel, o ntfsplus planeja implementar um registro completo (no ntfs3 há suporte para criação de um registro de replay).
No ntfsplus, também foi possível melhorar o desempenho, graças ao uso de operações assíncronas iomap, alocação de blocos atrasada, otimização na alocação de novos clusters, otimização na fusão de fragmentos, carregamento do bitmap de clusters em segundo plano e pré-carregamento de blocos de inode e informações de diretórios. Nos testes realizados em novembro do ano passado, o driver ntfsplus foi de 3-5% mais rápido que o ntfs3 durante gravações em modo de thread única e de 35-110% ao usar 4 threads. A velocidade de leitura do ntfsplus e do ntfs3 está aproximadamente igual. No teste de listagem de arquivos (ls -lR) em diretórios com 100/200/400 mil arquivos, o ntfsplus foi 12-14% mais rápido. Em termos de velocidade de montagem, o ntfsplus é de 5-6 vezes mais rápido (para uma partição de 1 TB, 0.38 contra 2.03 segundos).
Com base nas ferramentas ntfsprogs do projeto ntfs-3g, foi preparada uma nova coleção de utilitários chamada ntfsprogs-plus para o ntfsplus, que funciona no espaço do usuário e inclui aplicativos como ntfsclone, ntfscluster e ntfsinfo. O projeto também desenvolveu uma nova ferramenta chamada ntfsck para verificar e recuperar partições danificadas com NTFS.
Fonte: opennet.ru
