Linus Torvalds włączył do jądra Linux 7.1, którego wydanie planowane jest na połowę czerwca, zestaw poprawek z nową implementacją systemu plików NTFS, rozwijaną pod nazwą ntfsplus. Nowy sterownik został włączony pod nazwą „ntfs”, która była wcześniej używana dla usuniętego ze jądra starego sterownika działającego w trybie tylko do odczytu. Sterownik ntfsplus opracował Namjae Jeon, członek projektu Samba, który towarzyszy sterownikowi EXFAT i serwerowi KSMBD w jądrze Linux.
Rozwój ntfsplus rozpoczął się w 2022 roku po opublikowaniu raportu dotyczącego problemów z utrzymywaniem sterownika NTFS3, opracowanego przez firmę Paragon Software i dostarczanego od jądra 5.15, zamiast starego, porzuconego sterownika NTFS. Od listopada 2021 roku do czerwca 2022 roku programiści ntfs3 przestali się kontaktować i rozpatrywać przesyłane poprawki, ale następnie wznowili wsparcie i opublikowali zestaw poprawek, który wszedł w skład jądra 5.19. Od tego czasu zmiany dla nowszych wersji jądra są regularnie wydawane, a wśród nich przyjęto dość dużą liczbę ulepszeń i poprawek w jądrze 7.0.
Jako powód promowania nowego sterownika ntfsplus wskazywano, że bardziej jakościowy i wspierany sterownik NTFS umożliwi poprawę zgodności systemów Linux z urządzeniami Windows i uprości pracę użytkowników. Twierdzono, że obecny sterownik NTFS3 ma nierozwiązane problemy, przez co wielu użytkowników i dystrybucji nadal korzysta ze starego sterownika ntfs-3g działającego w przestrzeni użytkownika. Podczas przechodzenia testów xfstests, sterownik ntfsplus pomyślnie przeszedł 326 testów (41,4%) z 787, a ntfs3 - 273 (34,6%).
Sterownik ntfsplus bazuje na kodzie usuniętego ze jądra klasycznego sterownika ntfs, który został przerobiony, rozszerzony o możliwość zapisu danych i znacznie rozbudowany w celu wsparcia nowoczesnych funkcji, takich jak wykorzystanie folii pamięci zamiast struktury buffer_head. W nowym sterowniku zrealizowano opóźnione przydzielanie bloków, co pozwoliło osiągnąć wysoką wydajność operacji zapisu i zmniejszyć fragmentację. Dla buforowanych operacji zapisu/odczytu, bezpośredniego wejścia/wyjścia, mapowania fragmentów oraz operacji zapisu/odczytu stron wykorzystano bibliotekę iomap.
W porównaniu do ntfs3, nowy sterownik obsługuje takie funkcje jak iomap, opóźnione przydzielanie bloków (delayed allocation) oraz mapowanie identyfikatorów użytkowników podczas montowania (idmap). Po przyjęciu do głównej wersji jądra planują w ntfsplus wdrożyć pełne dziennikowanie (w ntfs3 istnieje wsparcie dla tworzenia dziennika replay).
W ntfsplus udało się także zwiększyć wydajność dzięki zastosowaniu asynchronicznych operacji iomap, opóźnionemu przydzielaniu bloków, optymalizacji przydzielania nowych klastrów, optymalizacji łączenia fragmentów, ładowaniu mapy bitowej klastrów w tle oraz prefetchingowi bloków inode i informacji o katalogach. W testach przeprowadzonych w listopadzie ubiegłego roku, sterownik ntfsplus okazał się o 3-5% szybszy od ntfs3 przy zapisie w trybie jednowątkowym i o 35-110% przy użyciu 4 wątków. Prędkość odczytu ntfsplus i ntfs3 jest zbliżona. W teście na wyświetlanie listy plików (ls -lR) w katalogach z 100/200/400 tysiącami plików, ntfsplus był szybszy o 12-14%. W przypadku szybkości montowania ntfsplus jest 5-6 razy szybszy (dla partycji 1 TB 0.38 w porównaniu do 2.03 sekund).
Na podstawie narzędzi ntfsprogs z projektu ntfs-3g przygotowano dla ntfsplus własny zestaw narzędzi ntfsprogs-plus, działających w przestrzeni użytkownika i obejmujących aplikacje ntfsclone, ntfscluster oraz ntfsinfo. Projekt opracował także nowe narzędzie ntfsck do sprawdzania i przywracania uszkodzonych partycji NTFS.
Źródło: opennet.ru
