Linus Torvalds ha incluso nel kernel Linux 7.1, il cui rilascio è previsto per metà giugno, un insieme di patch con una nuova implementazione del file system NTFS, sviluppato con il nome di ntfsplus. Il nuovo driver è stato incluso con il nome "ntfs", precedentemente utilizzato per rimuovere il vecchio driver dal kernel, che operava in modalità sola lettura. Il driver ntfsplus è stato sviluppato da Namjae Jeon, un partecipante al progetto Samba, che supervisiona il driver EXFAT e il server KSMBD nel kernel Linux.
Lo sviluppo di ntfsplus è iniziato nel 2022 dopo la pubblicazione di un rapporto sui problemi di manutenzione del driver NTFS3, sviluppato da Paragon Software e fornito a partire dal kernel 5.15, in sostituzione del vecchio driver NTFS abbandonato. Da novembre 2021 a giugno 2022, gli sviluppatori di ntfs3 hanno smesso di comunicare e di considerare le patch inviate, ma poi hanno ripreso la manutenzione e pubblicato un insieme di correzioni che è stato incluso nel kernel 5.19. Da allora, gli aggiornamenti per le nuove versioni del kernel vengono rilasciati regolarmente e, tra l'altro, è stato accettato un numero abbastanza consistente di miglioramenti e correzioni per il kernel 7.0.
Come motivazione per l'inserimento del nuovo driver ntfsplus, è stato indicato che un driver NTFS di qualità superiore e supportato migliorerà la compatibilità dei sistemi Linux con i dispositivi Windows e faciliterà il lavoro degli utenti. È stato affermato che l'attuale driver NTFS3 presenta problemi irrisolti, per cui molti utenti e distribuzioni continuano a utilizzare il vecchio driver ntfs-3g, che opera nello spazio utente. Durante il test con il set xfstests, il driver ntfsplus ha superato con successo 326 test (41,4%) su 787, mentre il ntfs3 ha raggiunto 273 (34,6%).
Il driver ntfsplus si basa sul codice del driver ntfs classico, rimosso dal kernel, che è stato riprogettato, ampliato con la possibilità di scrivere dati e notevolmente esteso per supportare le funzionalità moderne, come l'uso di folios di memoria al posto della struttura buffer_head. Nel nuovo driver è stata implementata l'allocazione ritardata dei blocchi, che ha consentito di raggiungere elevate prestazioni nelle operazioni di scrittura e di ridurre la frammentazione. Per le operazioni di scrittura/lettura in buffer, l'input/output diretto, il mapping degli extent e le operazioni di scrittura/lettura su pagina è stata utilizzata la libreria iomap.
Rispetto a ntfs3, il nuovo driver supporta funzionalità come iomap, allocazione ritardata dei blocchi (delayed allocation) e mapping degli identificatori utente al momento del montaggio (idmap). Dopo l'inclusione nel kernel principale, con ntfsplus si pianifica di implementare un completo logging (in ntfs3 è presente il supporto per la creazione di un journal di replay).
In ntfsplus è stato possibile migliorare le prestazioni grazie all'uso di operazioni asincrone iomap, all'allocazione ritardata dei blocchi, all'ottimizzazione dell'allocazione dei nuovi cluster, all'ottimizzazione della fusione dei frammenti, al caricamento della bitmap dei cluster in background e al caricamento preventivo dei blocchi inode e delle informazioni sulle directory. Nei test condotti a novembre dello scorso anno, il driver ntfsplus si è rivelato essere dal 3 al 5% più veloce di ntfs3 in modalità di scrittura a thread singolo e dal 35 al 110% utilizzando 4 thread. La velocità di lettura di ntfsplus e ntfs3 è simile. Nel test per l'elenco dei file (ls -lR) in directory con 100/200/400 mila file, ntfsplus è più veloce del 12-14%. In termini di velocità di montaggio, ntfsplus è più veloce di 5-6 volte (per una partizione da 1 TB, 0.38 contro 2.03 secondi).
Basato sulle utilità ntfsprogs del progetto ntfs-3g, per ntfsplus è stato preparato un insieme di strumenti proprietari chiamato ntfsprogs-plus, che funziona nello spazio utente e include le applicazioni ntfsclone, ntfscluster e ntfsinfo. È stato sviluppato anche un nuovo strumento, ntfsck, per controllare e riparare partizioni NTFS danneggiate.
Fonte: opennet.ru
