Намджэ Чон (Namjae Jeon), участник проекта Samba, сопровождающий драйвер EXFAT и сервер KSMBD в ядре Linux, предложил включить в ядро новую реализацию файловой системы NTFS - ntfsplus. Предполагается, что более качественный и сопровождаемый NTFS-драйвер позволит улучшить совместимость Linux-систем с Windows-устройствами и упростить работу пользователей.
В текущем виде поддержка NTFS в Linux ограничена старым NTFS-драйвером, удалённым из ядра Linux и поддерживавшим только чтение, а также нынешним драйвером NTFS3, у которого имеется много проблем, остающихся нерешёнными из-за плохого сопровождения. Из-за подобных проблем многие пользователи и дистрибутивы продолжают применять старый драйвер ntfs-3g, работающий в пространстве пользователя.
В качестве основы драйвера ntfsplus использована кодовая база удалённого из ядра классического драйвера ntfs, который был переработан, расширен возможностью записи данных и существенно доработан для поддержки современных возможностей, таких как использование фолиантов страниц памяти (folios) вместо структуры buffer_head. В новом драйвере реализовано отложенное выделение блоков, позволившее добиться высокой производительности операций записи и снижения фрагментации. Для буферизированных операций записи/чтения, прямого ввода/вывода, маппинга экстентов и операций страничной записи/чтения задействована библиотека iomap.
В отличие от существующего драйвера ntfs3, разработанного компанией Paragon Software, драйвер ntfsplus демонстрирует более высокую производительность и поддерживает такие возможности, как iomap, отложенное выделение блоков (delayed allocation) и маппинг идентификаторов пользователей при монтировании (idmap). После принятия в основной состав ядра в ntfsplus планируют реализовать полноценное журналирование (в ntfs3 создаётся только replay-журнал, который в тестах работает некорректно).
Новый драйвер успешно проходит 287 тестов из набора xfstests, а также реализует возможности, необходимые для выполнения тестов производительности Bonnie++ (драйвер ntfs3 проходил 218 тестов xfstests и приводил к проблемам при запуске Bonnie++).
При выполнении тестов iozone драйвер ntfsplus оказался на 3-5% быстрее ntfs3 при записи в однопоточном режиме и на 35-110% при использовании 4 потоков. Скорость чтения ntfsplus и ntfs3 находится примерно на одном уровне. В тесте на вывод списка файлов (ls -lR) в каталогах со 100/200/400 тысячами файлов
ntfsplus быстрее на 12~14%. По скорости монтирования ntfsplus быстрее в 5-6 раз. Высокая производительность достигается в ntfsplus за счёт применения асинхронных операций iomap, отложенного выделения блоков, оптимизации выделения новых кластеров, оптимизации слияния фрагментов, загрузки битовой карты кластеров в фоновом режиме, упреждающей загрузки блоков inode и информации о каталогах.
Отдельно для ntfsplus подготовлен набор утилит
ntfsprogs-plus, работающих в пространстве пользователя и основанных на утилитах ntfsprogs от проекта ntfs-3g. Из ntfsprogs перенесены утилиты
ntfsclone, ntfscluster и ntfsinfo. Проектом также разработана новая утилита ntfsck для проверки и восстановления повреждённых разделов с NTFS.
|