Что такое NTFSPlus и почему он важен для пользователей Linux?

NTFSPlus – это название нового драйвера NTFS для ядра Linux, целью которого является создание производительной, функциональной и точной реализации драйвера чтения/записи для этой файловой системы.

В настоящее время это драйвер вне дерева (еще не включенный в основное ядро), он является работой давнего разработчика систем хранения и файловых систем Linux Намджае Джеона. Джеон также разработал и поддерживает драйвер файловой системы exFAT в ядре и сопутствующие Утилиты пользовательского пространства exfatprogs.

Цель этой работы над драйвером – совместимость с файловыми системами NTFS 3.x, инструментарий в стиле fsck (например, программа проверки в стиле ntfsc), хорошо документированный код и более качественное сопровождение драйвера, который живет в ядре. В настоящее время некоторые дистрибутивы (например, Fedora) все еще полагаются на драйвер пользовательского пространства NTFS-3G, который использует FUSE (Filesystem In Userspace), поскольку текущий драйвер ядра ntfs3 получил ограниченное обслуживание и продолжает иметь нерешенные проблемы.

Поддержка NTFS в Linux долгое время оставалась неясной

Исторически сложилось так, что экосистема Linux использует по меньшей мере три отдельных драйвера для взаимодействия с проприетарной файловой системой Microsoft. Оригинальный драйвер ntfs, встроенный в ядро, обычно рассматривался как предназначенный только для чтения (поддержка записи считалась ненадежной), а в ядре Linux 6.9 он был полностью удален, после чего стал не поддерживаться. Другой драйвер, ntfs3 от Paragon Software, был добавлен в ядро Linux 5.15 и имеет поддержку как чтения, так и записи, но сейчас фактически находится только в режиме обслуживания.

Драйвер пользовательского пространства NTFS-3G долгое время был единственной широко используемой реализацией драйвера NTFS с поддержкой чтения/записи в Linux. Однако он может быть заметно медленным и, как правило, более требователен к процессору (особенно при перемещении больших файлов или большого количества файлов) и менее производителен, чем реализация в ядре, особенно на больших современных дисках.

Проблемы, с которыми столкнулись все эти драйверы, во многом объясняются тем, что разработчикам пришлось полагаться на ограниченную документацию Microsoft по файловой системе NTFS, а также на множество обратных разработок. Это прискорбное обстоятельство затруднило создание драйвера для Linux с подробным описанием файловой системы, используемой по умолчанию на многих компьютерах, продаваемых по всему миру и хранящих большую часть мировых данных.

Что NTFSPlus стремится изменить

Во многих отношениях NTFSPlus – это новая реализация классического драйвера ntfs в ядре. Сможет ли он покончить с текущими проблемами NTFS для пользователей Linux, найденынми по крайней мере за два десятилетия работы NTFS, используя преимущества современной инфраструктуры ядра. Вместо того чтобы пытаться модифицировать код драйвера ntfs3 (реализация Paragon Softwares), NTFSPlus опирается на фундамент классического драйвера ntfs, встроенного в ядро. Он рефакторит и расширяет существующий код для поддержки современных томов NTFS 3.x и более новых API ядра, таких как iomap и folios.

В своем предложении в списке рассылки ядра Linux Джеон описывает NTFSPlus как переделанную реализацию ntfs, основанную на классическом драйвере, отмечая, что старый код чище и лучше прокомментирован, что облегчает понимание поведения NTFS. Эта удобочитаемость является ключевой причиной для использования его в качестве основы и последующего наложения таких функций, как iomap, поддержка фолиантов и надлежащих утилит, вместо того чтобы пытаться дальше развивать существующий код ntfs3. На этот раз цель состоит не только в улучшении производительности, но и в создании лучше документированного кода, в котором легче ориентироваться, тестировать и поддерживать со временем.

Разработка уже перешла к серии патчей v2, отслеживаемых в» ветке ntfs-next git, которая выступает в качестве перевалочного пункта, пока драйвер движется к потенциальному включению в основное ядро. В последних обновлениях добавлены опции монтирования, совместимые с NTFS3, улучшена поддержка ioctl (включая FITRIM для отбрасывания SSD и обработки меток файловой системы), поддержка расширений файлов $MFT, новая документация, и в настоящее время драйвер помечен как экспериментальный.

Новые возможности NTFSPlus

Предложение Джеонса о создании надлежащего инструментария для драйвера может стать крайне необходимым для Linux-сообщества, особенно сейчас, когда многие пользователи переходят на Linux с Windows. Восстановление NTFS-дисков в Linux сегодня возможно, но самым безопасным советом часто является оставить диск в покое и позволить собственным инструментам Windows выполнить необходимую работу.

Наличие утилит в стиле fsck для проверки и ремонта томов NTFS из пользовательского пространства стало бы важным шагом для внедрения Linux, поскольку многие пользователи не захотят заменять существующие файловые системы, если этого можно избежать. Для дистрибутивов Linux это может привести к созданию чистого стека NTFS в ядре с первоклассной поддержкой таких функций, как монтирование с использованием idmapped, стандартные опции монтирования и интеграция с существующими инструментами файловой системы.

Открытая реализация

Одним из наиболее важных аспектов этой разработки является то, что драйвер NTFSPlus разрабатывается полностью в открытом режиме. Джеон публикует обновления непосредственно в знакомых списках рассылки ядра и поддерживает ветку «ntfs-next», которую заинтересованные пользователи и дистрибутивы могут протестировать раньше. Это известный и надежный сопровождающий с солидным опытом создания надежного кода для другой проприетарной файловой системы Microsoft, а также для SMB-сервера ядра ksmbd.

Такой открытый процесс разработки означает, что у других разработчиков есть возможность протестировать и выявить проблемы на ранних этапах жизненного цикла проекта, что должно привести к созданию более надежного конечного продукта, если он появится в основном ядре. Если эта работа попадет в будущий релиз ядра и получит широкое распространение, это может окончательно избавить вас от необходимости выбирать между более медленным драйвером FUSE и фактически застывшей реализацией в ядре.

Может ли это означать, что Linux когда-нибудь перейдет на NTFS?

Возможно, но не обязательно. Уже сейчас можно установить Linux из-под Windows, используя образы дисков, которые доступны для записи и не требуют создания новой файловой системы или раздела. Это похоже на то, что когда-то использовалось в программе установки Ubuntu Wubi. Однако такая реализация была заметно медленнее, чем работа с собственной файловой системой Linux, и была более подвержена проблемам повреждения и другим трудностям.

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

Зарубин Иван Эксперт по Linux и Windows

Парашютист со стажем. Много читаю и слушаю подкасты. Люблю посиделки у костра, песни под гитару и приближающиеся дедлайны. Люблю путешествовать.

Похожие статьи

Комментарии (0)