Linus Torvalds hat das Kernel-Release 7.1, das für Mitte Juni erwartet wird, um ein Set von Patches zur neuen Implementierung des NTFS-Dateisystems erweitert, das unter dem Namen ntfsplus entwickelt wurde. Der neue Treiber wird unter dem Namen 'ntfs' eingebunden, der zuvor für den veralteten Treiber verwendet wurde, der nur im Schreibschutzmodus arbeitete. Der ntfsplus-Treiber wurde von Namjae Jeon, einem Mitglied des Samba-Projekts, entwickelt, der auch den EXFAT-Treiber und den KSMBD-Server im Linux-Kernel betreut.
Die Entwicklung von ntfsplus begann im Jahr 2022 nach der Veröffentlichung eines Berichts über Probleme bei der Betreuung des NTFS3-Treibers, der von der Paragon Software entwickelt wurde und ab Kernel 5.15 anstelle des alten, aufgegebenen NTFS-Treibers ausgeliefert wird. Von November 2021 bis Juni 2022 hörten die Entwickler von ntfs3 auf, auf Anfragen zu reagieren und eingereichte Patches zu berücksichtigen, setzten dann jedoch die Betreuung fort und veröffentlichten eine Sammlung von Bugfixes, die im Kernel 5.19 integriert wurden. Seitdem werden regelmäßig Änderungen für neue Kernversionen veröffentlicht; unter anderem wurde eine umfangreiche Sammlung von Verbesserungen und Fehlerbehebungen in das Kernel 7.0 aufgenommen.
Als Motivation für die Einführung des neuen ntfsplus-Treibers wurde angeführt, dass ein qualitativ hochwertiger und unterstützter NTFS-Treiber die Kompatibilität von Linux-Systemen mit Windows-Geräten verbessern und die Benutzerfreundlichkeit vereinfachen würde. Es wurde erklärt, dass der derzeitige NTFS3-Treiber ungelöste Probleme aufweist, weshalb viele Benutzer und Distributionen weiterhin den alten ntfs-3g-Treiber verwenden, der im Benutzermodus arbeitet. Im Testlauf mit dem xfstests-Satz besteht der ntfsplus-Treiber aus 326 erfolgreichen Tests (41,4%) von 787, während der ntfs3-Treiber 273 (34,6%) besteht.
Der ntfsplus-Treiber basiert auf dem Code des aus dem Kernel entfernten klassischen ntfs-Treibers, der überarbeitet und um die Fähigkeit zur Datenschreibung erweitert wurde. Er wurde erheblich überarbeitet, um moderne Funktionen zu unterstützen, wie die Verwendung von Seitenverzeichnisseiten (folios) anstelle der buffer_head-Struktur. Der neue Treiber implementiert eine verzögerte Blockzuweisung, die hohe Schreibgeschwindigkeit und weniger Fragmentierung ermöglicht. Für die gepufferten Lese-/Schreiboperationen, den direkten Datentransfer, die Extent-Zuordnung und die Seiten-Lese-/Schreiboperationen wird die iomap-Bibliothek verwendet.
Im Vergleich zu ntfs3 unterstützt der neue Treiber Funktionen wie iomap, verzögerte Blockzuweisung (delayed allocation) und die Zuordnung von Benutzer-IDs beim Einbinden (idmap). Nach der Übernahme in den Hauptkernel plant ntfsplus, vollständige Journaling-Funktionen zu implementieren (in ntfs3 gibt es Unterstützung zur Erstellung eines Replay-Journals).
Mit ntfsplus wurde auch die Leistung verbessert, dank des Einsatzes asynchroner iomap-Operationen, verzögerter Blockzuteilung, Optimierung der Zuteilung neuer Cluster, Optimierung der Fragmentzusammenführung, der Hintergrundladung des Cluster-Bitmap und des vorab Ladens von Inode-Blöcken sowie von Verzeichnisinformationen. In Tests, die im November letzten Jahres durchgeführt wurden, war der ntfsplus-Treiber 3-5 % schneller als ntfs3 beim Schreiben im Einzelfadenbetrieb und 35-110 % schneller bei der Nutzung von 4 Threads. Die Lesegeschwindigkeit von ntfsplus und ntfs3 liegt etwa auf dem gleichen Niveau. Im Test zum Auflisten von Dateien (ls -lR) in Verzeichnissen mit 100/200/400 Tausend Dateien war ntfsplus um 12-14 % schneller. Bei der Einhängegeschwindigkeit ist ntfsplus 5-6 Mal schneller (für eine 1 TB-Partition 0,38 gegenüber 2,03 Sekunden).
Basierend auf den ntfsprogs-Tools des ntfs-3g-Projekts wurde für ntfsplus ein eigenes Set von ntfsprogs-plus-Tools entwickelt, die im Benutzerspeicher arbeiten und Anwendungen wie ntfsclone, ntfscluster und ntfsinfo umfassen. Das Projekt hat auch ein neues Dienstprogramm namens ntfsck entwickelt, das zur Überprüfung und Wiederherstellung beschädigter NTFS-Partitionen dient.
Quelle: opennet.ru
