Линус Торвальдс принял в состав ядра Linux 7.1, релиз которого ожидается в середине июня, набор патчей с новой реализацией файловой системы NTFS, развивавшейся под именем ntfsplus. Новый драйвер включён под именем «ntfs», которое ранее использовалось для удалённого из ядра старого драйвера, работавшего в режиме только для чтения. Драйвер ntfsplus разработал Намджэ Чон (Namjae Jeon), участник проекта Samba, сопровождающий драйвер EXFAT и сервер KSMBD в ядре Linux.
Разработка ntfsplus началась в 2022 году после публикации отчёта о проблемах с сопровождением драйвера NTFS3, разработанного компанией Paragon Software и поставляемого начиная с ядра 5.15 вместо старого заброшенного драйвера NTFS. С ноября 2021 года по июнь 2022 года разработчики ntfs3 перестали выходить на связь и рассматривать присылаемые патчи, но затем возобновили сопровождение и опубликовали набор исправлений, который вошёл в состав ядра 5.19. С тех пор изменения для свежих версий ядра выпускаются регулярно и, среди прочего, достаточно большой набор улучшений и исправлений был принят в состав ядра 7.0.
В качестве мотива продвижения в ядро нового драйвера ntfsplus указывалось, что более качественный и сопровождаемый NTFS-драйвер позволит улучшить совместимость Linux-систем с Windows-устройствами и упростить работу пользователей. Заявлялось, что в нынешнем драйвере NTFS3 имеются проблемы, остающиеся нерешёнными, из-за которых многие пользователи и дистрибутивы продолжают применять старый драйвер ntfs-3g, работающий в пространстве пользователя. При прохождении тестового набора xfstests драйвер ntfsplus успешно проходит 326 тестов (41.4%) из 787, а ntfs3 — 273 (34.6%).
Драйвер ntfsplus основан на кодовой базе удалённого из ядра классического драйвера ntfs, который был переработан, расширен возможностью записи данных и существенно расширен для поддержки современных возможностей, таких как использование фолиантов страниц памяти (folios) вместо структуры buffer_head. В новом драйвере реализовано отложенное выделение блоков, позволившее добиться высокой производительности операций записи и снижения фрагментации. Для буферизированных операций записи/чтения, прямого ввода/вывода, маппинга экстентов и операций страничной записи/чтения задействована библиотека iomap.
По сравнению с ntfs3 новый драйвер поддерживает такие возможности, как iomap, отложенное выделение блоков (delayed allocation) и маппинг идентификаторов пользователей при монтировании (idmap). После принятия в основной состав ядра в ntfsplus планируют реализовать полноценное журналирование (в ntfs3 имеется поддержка создания replay-журнала).
В ntfsplus также удалось повысить производительность, благодаря применению асинхронных операций iomap, отложенному выделению блоков, оптимизации выделения новых кластеров, оптимизации слияния фрагментов, загрузки битовой карты кластеров в фоновом режиме и упреждающей загрузки блоков inode и информации о каталогах. В проведённых в ноябре прошлого года тестах iozone драйвер ntfsplus оказался на 3-5% быстрее ntfs3 при записи в однопоточном режиме и на 35-110% при использовании 4 потоков. Скорость чтения ntfsplus и ntfs3 находится примерно на одном уровне. В тесте на вывод списка файлов (ls -lR) в каталогах со 100/200/400 тысячами файлов ntfsplus быстрее на 12-14%. По скорости монтирования ntfsplus быстрее в 5-6 раз (для 1 ТБ раздела 0.38 против 2.03 секунд).
На основе утилит ntfsprogs от проекта ntfs-3g для ntfsplus подготовлен собственный набор утилит ntfsprogs-plus, работающих в пространстве пользователя и включающих приложения ntfsclone, ntfscluster и ntfsinfo. Проектом также разработана новая утилита ntfsck для проверки и восстановления повреждённых разделов с NTFS.
Источник: opennet.ru
