
Justin Sullivan/Getty Images
Файловая система практически на каждом USB-накопителе и SD-карте в мире получила значительное архитектурное обновление. 20 июня 2026 года запрос на включение (pull request) exFAT для Linux 7.2, поданный мейнтейнером Намджэ Чоном (Namjae Jeon), был объединен в активное окно слияния ядра, что перевело драйвер на использование инфраструктуры IOmap, которая уже обеспечивает работу наиболее часто используемых файловых систем Linux. Практический результат: более быстрая передача больших файлов на сменных носителях, более чистые внутренние пути кода и — что критически важно — допуск к классу общесистемных оптимизаций хранилища, которые старая архитектура никогда не могла получить.
Что такое exFAT и почему она повсюду
ExFAT (Extensible File Allocation Table) — это файловая система Microsoft, представленная в 2006 году и принятая Ассоциацией SD в качестве обязательного формата для карт SDXC и SDUC объемом более 32 ГБ. Поскольку все основные операционные системы — Windows, macOS, Linux, iOS и Android — поддерживают ее нативно, exFAT является де-факто стандартом для переносных носителей: практически каждый USB-флеш-накопитель, SD-карта и внешний SSD, продаваемый по всему миру, поставляется с ней в отформатированном виде.
Нативная поддержка exFAT в ядре Linux появилась с ядром 5.4 в ноябре 2019 года, после того как Microsoft опубликовала спецификацию exFAT и выпустила соответствующие патенты в Open Invention Network в августе 2019 года. Улучшенный драйвер, производный от Samsung и поддерживаемый Намджэ Чоном, появился в ядре 5.7 в 2020 году. С тех пор драйвер активно поддерживался — в 2025 году было исправлено состояние циклической цепочки кластеров, которое могло вызвать зависание обработки каталогов на поврежденных носителях, — но его архитектура ввода-вывода оставалась относительно консервативной.
Что такое IOmap и что меняет конверсия
IOmap — это современный уровень абстракции ввода-вывода ядра Linux. Вместо того чтобы позволять каждой файловой системе управлять собственным учетом кэша страниц, IOmap централизует эту работу: он сопоставляет логические диапазоны байтов файла с физическими блоками хранения и обрабатывает буферизованный ввод-вывод, прямой ввод-вывод и операции LLSEEK SEEK_HOLE/SEEK_DATA через единую инфраструктуру, к которой файловые системы обращаются, вместо того чтобы реализовывать их самостоятельно.
Конверсия exFAT — которую Майкл Ларабель из Phoronix охарактеризовал как обеспечивающую «очень хорошие приросты производительности» — охватывает все три пути ввода-вывода: буферизованное чтение и запись, прямой ввод-вывод и операции с разреженными файлами. До конверсии exFAT поддерживала собственную схему кэша страниц, используя устаревший механизм buffer_head — дизайн, который собственная документация ядра описывает как «фрагментированные остатки старого кэша буферов», построенный вокруг парадигмы блоков размером 512 байт, которая предшествовала современным флеш-накопителям на десятилетия.
После завершения портирования на IOmap exFAT больше не нужно реализовывать собственные операции write-begin, write-end или прямого ввода-вывода адресного пространства. IOmap обрабатывает все это централизованно, устраняя дублирование кода и заменяя связанные списки заголовков буферов (buffer heads) на битовые карты на фолио (per-folio bitmaps) — более эффективную структуру данных для управления большими последовательными операциями ввода-вывода.
Почему это важно помимо немедленного прироста скорости
Увеличение пропускной способности в результате конверсии на IOmap — это видимое изменение. Архитектурное значение больше: документация ядра прямо заявляет, что поддержка больших фолио доступна только через IOmap, и нет планов портировать ее обратно на путь buffer_head. Большие фолио позволяют ядру рассматривать смежные области памяти как единые блоки, а не как отдельные страницы, уменьшая накладные расходы на метаданные и конфликты блокировок при последовательных операциях — именно такой шаблон рабочей нагрузки характерен для передачи больших файлов на USB- и SD-носители и с них.
Это означает, что файловые системы, которые остаются на buffer_head, не просто упускают текущую оптимизацию. Они навсегда исключены из целого класса будущих улучшений ядра по мере эволюции стека хранения данных. Конверсия на IOmap устраняет этот архитектурный долг для exFAT до того, как он станет ограничивающим фактором.
Файловые системы, такие как ext4 и XFS, используют IOmap уже много лет. Btrfs находится в процессе конвертации оставшихся путей. С включением в Linux 7.2, exFAT присоединяется к этому уровню — это больше не прокладка совместимости, находящаяся вне современной архитектуры хранения ядра, а драйвер, который будет автоматически наследовать будущие улучшения уровня IOmap наряду с остальной экосистемой файловых систем.
Что Linux 7.2 приносит в область хранения данных
Конверсия exFAT на IOmap является частью активного цикла хранения данных для Linux 7.2. Окно слияния, открывшееся 14 июня, когда Линус Торвальдс выпустил Linux 7.1, также принесло улучшения и исправления драйвера NTFS от того же мейнтейнера, доработку быстрого коммита EXT4 и более быстрое хеширование каталогов, а также более широкие обновления io_uring и блочного уровня NVMe. Первый кандидат в релизы Linux 7.2 намечен на 28 июня, а стабильный выпуск ожидается примерно в конце августа 2026 года.
Для разработчиков, создающих приложения с интенсивным использованием хранения данных на Linux, или для производителей устройств, чье оборудование поставляется с носителями, отформатированными в exFAT, эта конверсия сигнализирует о том, что формат будет идти в ногу с траекторией производительности ядра, а не отставать от нее.
Часто задаваемые вопросы
Что такое IOmap и почему переход exFAT на него важен для пользователей Linux?
IOmap — это современный уровень абстракции ввода-вывода ядра Linux, используемый такими файловыми системами, как ext4 и XFS, для обработки чтения, записи файлов и отображения экстентов через общую, хорошо оптимизированную инфраструктуру. Перевод exFAT на IOmap означает, что драйвер больше не поддерживает собственный код кэша страниц, получает доступ к улучшениям производительности, которые IOmap обрабатывает централизованно, и — что самое важное — становится пригодным для поддержки больших фолио, которую ядро явно ограничило только для IOmap и никогда не будет переносить обратно в старую архитектуру buffer_head.
Почему на USB-накопителях и SD-картах используется exFAT вместо ext4 или NTFS?
ExFAT был разработан специально для флеш-памяти: он легковесен, поддерживает файлы размером более 4 ГБ (в отличие от FAT32) и нативно работает в Windows, macOS, Linux, iOS и Android без необходимости установки дополнительных драйверов. Ассоциация SD требует exFAT для карт SDXC и SDUC объемом более 32 ГБ, поэтому практически каждое съемное устройство большой емкости поставляется с ней в отформатированном виде. Ext4 и NTFS не обладают кроссплатформенной поддержкой чтения/записи, что делает exFAT практичным для съемных носителей, используемых между разными операционными системами.
Повлияет ли конверсия exFAT на IOmap на мою текущую систему Linux?
Не сразу. Изменение включено в Linux 7.2, первый кандидат в релизы которого намечен на 28 июня 2026 года, а стабильный выпуск ожидается примерно в конце августа 2026 года. Пользователи, работающие на более ранних ядрах, увидят это изменение только после обновления до дистрибутива, поставляемого с Linux 7.2 или более поздней версией. Когда это произойдет, передача файлов на exFAT-отформатированные USB-накопители и SD-карты и с них должна стать быстрее, особенно для больших последовательных файлов.
В чем разница между буферизованным вводом-выводом и прямым вводом-выводом в Linux?
Буферизованный ввод-вывод — это путь ввода-вывода по умолчанию в Linux: данные файла проходят через кэш страниц ядра, который хранит недавно использованные данные в памяти для ускорения повторных чтений и поглощения всплесков записи перед их фиксацией на носителе. Прямой ввод-вывод полностью обходит кэш страниц, записывая или считывая данные напрямую между буфером в пространстве пользователя и устройством хранения — это полезно для таких приложений, как базы данных, которые управляют собственным кэшированием. Конверсия exFAT на IOmap улучшает оба пути, заменяя устаревший код buffer_head на буферизованном пути и обеспечивая более чистую реализацию прямого ввода-вывода.
Всегда имейте в виду, что редакции могут придерживаться предвзятых взглядов в освещении новостей.
Автор – Shannon Harwood




