Файловая система exFAT – продукт компании Microsoft, созданный для работы с флеш-накопителями в Windows. Ядро Linux не умеет взаимодействовать с такими накопителями, но благодаря драйверу, разработанному российскими специалистами из Paragon Software, свободная ОС получит поддержку exFAT на уровне ядра.
Зачем нужна exFAT
exFAT – файловая система для накопителей высокой емкости. Теоретически она умеет работать с файлами размером до 16 эксабайт (10 в 18 степени байт). Предельный размер кластера в exFAT составляет 32 МБ.
Основная особенность exFAT – минимально возможное число перезаписей одного и того же сектора. Для флеш-памяти это критично: после определенного количества циклов перезаписи ячейки уже нельзя намагнитить, они выходят из строя. В современные USB-накопители и SD-карты уже встроены технологии выравнивания износа. Но бит-карта свободного места в exFAT также обеспечивает равномерную перезапись и снижает фрагментацию накопителя.
Разработчики Paragon Software создали собственный драйвер для Linux, который позволит работать с exFAT. Пока он позволяет лишь читать данные с накопителей формата exFAT, но в ближайшем будущем обещали добавить и режим записи. Патч с новым драйвером уже есть в списке рассылки. Его отправил Константин Комаров, сооснователь и глава компании.
Почему драйвер не создали раньше
Долгое время exFAT была проприетарной файловой системой, и Microsoft не разрешала сторонним разработчикам создавать драйверы для нее. В 2009 году компания стала лицензировать exFAT сторонним компаниям. Но для этого нужно было либо заплатить 300 тыс. долларов, либо отчислять процент с продажи каждого устройства с exFAT.
В августе 2019 года Microsoft решила пойти навстречу разработчикам. Компания на своем сайте опубликовала спецификации exFAT и дала «добро» на разработку и распространение драйверов для поддержки файловой системы.
Как раньше работали с exFAT
Реализации драйверов для exFAT существовали, но это было закрытое коммерческое ПО. Paragon Software разработал несколько таких драйверов, а также Paragon exFAT для Android. Это первая в мире потребительская версия файловой системы, которая позволяла работать с Android-устройствами и дисками объемом более 32 ГБ.
Кроме того, существовал драйвер exFAT в виде патча ядра. Но он позволял только считывать данные, запись была недоступна. Разработали и драйвер exFAT для подсистемы FUSE. Он давал возможность пользователям без root-прав монтировать файловые системы, в том числе exFAT. Наконец, Samsung в 2013 году представил свою версию драйвера под открытой лицензией GPL. Но в состав ядра Linux его не включили, опасаясь гнева Microsoft.
Когда же разработчик разрешил создавать собственные драйверы для exFAT, в ядро Linux 5.4 решили добавить драйвер от Samsung (sdFAT). Но он основан на устаревшем коде и как минимум небезопасен. Версия Paragon Software имеет больше шансов на успех.