Домой Статьи и аналитика Технологии В состав ядра Linux 7.1 принят новый драйвер для NTFS

В состав ядра Linux 7.1 принят новый драйвер для NTFS

Новая разработка от создателей Samba обещает значительный прирост скорости работы с файлами и более высокую стабильность по сравнению с текущим решением.

Линус Торвальдс включил в состав ядра Linux 7.1, релиз которого ожидается в середине июня, новый драйвер файловой системы NTFS. Проект, развивавшийся под рабочим названием ntfsplus, теперь официально представлен в ядре как «ntfs». Стоит отметить, что это имя ранее использовалось для старого драйвера, работавшего исключительно в режиме чтения.

Разработчиком новой реализации стал Намджэ Чон (Namjae Jeon) — активный участник проекта Samba, который также отвечает за поддержку драйвера EXFAT и сервера KSMBD в ядре Linux.

История создания ntfsplus

Работа над ntfsplus началась в 2022 году как ответ на проблемы с поддержкой драйвера NTFS3. Напомним, что NTFS3, созданный компанией Paragon Software, был внедрен в ядро 5.15 для замены устаревшего решения. Однако в период с конца 2021 по середину 2022 года разработка практически остановилась: авторы перестали реагировать на сообщения сообщества и патчи. Хотя позже активность была восстановлена и значительные улучшения вошли в состав ядра 7.0, проблемы надежности и производительности NTFS3 подтолкнули разработчиков к созданию более качественной альтернативы.

Авторы ntfsplus подчеркивают, что их решение призвано улучшить взаимодействие Linux с Windows-системами. Многие пользователи и дистрибутивы до сих пор предпочитают использовать ntfs-3g, работающий в пространстве пользователя, из-за нестабильности текущего встроенного решения. Тесты xfstests показывают преимущество новинки: ntfsplus успешно проходит 326 тестов (41,4%) против 273 (34,6%) у NTFS3.

Технические особенности

Драйвер ntfsplus базируется на коде классического драйвера NTFS, который был глубоко переработан и адаптирован для современных стандартов:

  • Внедрена поддержка фолиантов страниц памяти (folios) вместо устаревшей структуры buffer_head.
  • Реализовано отложенное выделение блоков, что благоприятно сказывается на производительности записи и снижает уровень фрагментации.
  • Для операций ввода-вывода (буферизированных, прямых и страничных) и маппинга экстентов задействована библиотека iomap.
  • Добавлена поддержка idmap для маппинга идентификаторов пользователей при монтировании разделов.

В ближайших планах разработчиков значится внедрение полноценного журналирования — функции, которая частично представлена в NTFS3 (через replay-журнал).

Производительность и утилиты

Внутренние тесты показывают существенный прирост скорости по сравнению с NTFS3. Применение асинхронных операций iomap и оптимизация работы с кластерами дали следующие результаты:

  • Запись: при однопоточном режиме прирост составляет 3–5%, а при использовании четырех потоков — от 35% до 110%.
  • Скорость чтения: показатели находятся на одном уровне с NTFS3.
  • Работа с файловой системой: при выводе списка файлов в крупных каталогах (от 100 до 400 тысяч объектов) ntfsplus опережает предшественника на 12–14%.
  • Монтирование: новый драйвер справляется с задачей в 5–6 раз быстрее (раздел объемом 1 ТБ монтируется за 0,38 секунды против 2,03 секунд).

Для обслуживания файловой системы подготовлен набор утилит ntfsprogs-plus, основанный на коде проекта ntfs-3g. В пакет входят инструменты для клонирования (ntfsclone), управления кластерами (ntfscluster), получения информации (ntfsinfo) и специальная утилита ntfsck для диагностики и восстановления целостности поврежденных разделов NTFS.

Источник: http://www.opennet.ru