Linus Torvalds ha accettato nel kernel Linux 7.1, il cui rilascio è previsto a metà giugno, un insieme di patch con una nuova implementazione del file system NTFS, sviluppato con il nome di ntfsplus. Il nuovo driver è incluso con il nome 'ntfs', precedentemente utilizzato per rimuovere dal kernel il vecchio driver, che funzionava in modalità sola lettura. Il driver ntfsplus è stato sviluppato da Namjae Jeon, un partecipante al progetto Samba, che mantiene 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 nella manutenzione del driver NTFS3, sviluppato da Paragon Software e fornito a partire dal kernel 5.15 in sostituzione del vecchio driver NTFS abbandonato. Tra novembre 2021 e giugno 2022, gli sviluppatori di ntfs3 hanno smesso di comunicare e di esaminare le patch inviate, ma successivamente hanno ripreso il supporto e pubblicato un insieme di correzioni, che è stato incluso nel kernel 5.19. Da allora, le modifiche per le versioni più recenti del kernel vengono rilasciate regolarmente e, tra le altre cose, un ampio insieme di miglioramenti e correzioni è stato accettato nel kernel 7.0.
Come motivazione per l'integrazione nel kernel del nuovo driver ntfsplus, è stato affermato che un driver NTFS di qualità superiore e mantenuto migliorerebbe la compatibilità dei sistemi Linux con i dispositivi Windows e semplificherebbe l'esperienza degli utenti. È stato dichiarato che l'attuale driver NTFS3 presenta problemi irrisolti, che portano molti utenti e distribuzioni a continuare a usare il vecchio driver ntfs-3g, che opera nello spazio utente. Durante il test del set di test xfstests, il driver ntfsplus ha superato con successo 326 test (41,4%) su 787, mentre ntfs3 ha superato 273 (34,6%).
Il driver ntfsplus si basa su una codebase del driver ntfs classico, rimosso dal kernel, che è stato rielaborato, ampliato con la possibilità di scrivere dati e sostanzialmente arricchito per supportare funzionalità moderne, come l'uso di volumi di pagine di memoria (folios) invece della struttura buffer_head. Nel nuovo driver è stata implementata l'allocazione differita dei blocchi, permettendo di ottenere elevate prestazioni nelle operazioni di scrittura e ridurre la frammentazione. Per le operazioni di scrittura/lettura in buffer, I/O diretto, mapping degli extents e operazioni di scrittura/lettura a pagina è stata utilizzata la libreria iomap.
Rispetto a ntfs3, il nuovo driver supporta funzionalità come iomap, allocazione differita dei blocchi e mapping degli identificatori utente al momento del montaggio (idmap). Dopo l'inclusione nel kernel principale, in ntfsplus si prevede di implementare un journaling completo (in ntfs3 è supportata la creazione di un replay log).
In ntfsplus è stato anche possibile aumentare le prestazioni grazie all'uso di operazioni asincrone iomap, allocazione differita dei blocchi, ottimizzazione dell'assegnazione di nuovi cluster, ottimizzazione della fusione dei frammenti, caricamento in background della mappa dei cluster e caricamento preventivo dei blocchi inode e delle informazioni sulle directory. Nei test effettuati a novembre dello scorso anno, il driver ntfsplus è risultato essere dal 3 al 5% più veloce di ntfs3 in modalità single-thread e dal 35 al 110% più veloce utilizzando 4 thread. La velocità di lettura di ntfsplus e ntfs3 è pressoché equivalente. Nel test di elencazione dei file (ls -lR) in directory con 100/200/400 mila file, ntfsplus è stato 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).
Sulla base degli strumenti ntfsprogs del progetto ntfs-3g, è stato preparato un proprio set di strumenti ntfsprogs-plus per ntfsplus, operanti nello spazio utente e comprendenti le applicazioni ntfsclone, ntfscluster e ntfsinfo. È stato anche sviluppato un nuovo strumento ntfsck per il controllo e il ripristino di partizioni danneggiate con NTFS.
Fonte: opennet.ru
