6
декабрь
2022
Файловая система exFAT для переносных накопителей
16:06

Файловая система exFAT для переносных накопителей

6 декабрь 2022 16:06
  • Почему exFAT лучше, чем NTFS?

Для работы организация закупила SSD переносной жесткий диск, и корпус для HDD 2.5 для хранения архива видео. Перед использованием диска создал на нём таблицу разделов msdos и отформатировал раздел в файловую систему NTFS. Через некоторое время он при подключении USB кабеля перестал открываться в Windows 10 и 8.1 - "Доступ запрещен".

Скопировал его содержимое в Linux на внутренний HDD большего объёма. SSD я отформатировал на этот раз в exFAT.
Теперь для "флешек" и переносных HDD всегда буду использовать exFAT!

Главные преимущества exFAT перед NTFS перечислены ниже:

1) exFAT как и NTFS позволяет сохранять файлы размером более 4Гбайт.

2) Поддержка exFAT в Linux встроена в ядро 5.4, или более поздние. В то время, как поддержка NTFS реализована через необязательный (optional) пакет "ntfs-3g".

3) Использование exFAT меньшей нагрузке на процессор и контроллер диска при копировании информации и повышает быстродействие.

4) Нет проблем с правами пользователей и групп - их, как в любой FAT, нет. Поэтому неприятности с невозможностью чтения или запись на носитель не возникнут.

5) Наверное, все USB "флешки" идут предварительно отформатированными в exFAT. Но exFAT можно использовать и для дисков с резервными копиями, на которые копируются архивы, копии баз данных, или видео файлы.

6) exFAT одна из самых совместимых файловых систем с переносными устройствами (сотовыми телефонами, mp3 плеерами) а также с ТВ и стационарными DVD проигрывателями. Поддержка exFAT реализована впервые в Window XP (обновление KB955704), Windows 7 и т.д., в Linux с ядра 5.4 и выше.

7) exFAT поддерживает только длинные имена файлов.

8) Максимальное количество файлов в каталоге ограничено фактически числом кластеров.

9) Более эффективная запись длинных файлов без фрагментации. В exFAT один бит в записи каталога указывает, что файл является непрерывным (нефрагментированным), указывая драйверу exFAT игнорировать FAT." В то время, как NTFS нужно постоянно образаться к таблице блоков. Это повышает скорость exFAT при копировании файлов.

10) Существует карта свободного места, что также упрощает и ускоряет запись больших файлов.

Оптимальный размер кластера exFAT. Резервирование места в начале диска

При форматировании диска большого объёма можно указать размер кластера значительно выше стандартных для NTFS 4 кБайт. Предельный размер - 32 Мбайт. Для диска 256MB–32GB оптимальны кластеры размером 32 кБайт.

Форматирование раздела в Windows в формат exFAT с размером кластера 32 кБайт:

diskpart
select disk 0
list partition
select partition 1
format fs=exFAT unit=32k quick

При форматировании диска из Linux в формат exFAT можно указать два параметра - границу boundary "-b" и размер кластера "-c".
Нижняя граница нужна для так называемого "выравнивания" раздела. При котором повышается скорость копирования информации.

Аргумент выравнивания указывается в байтах или может быть указан с суффиксом m/M для мегабайтов или суффиксом k/K для кибибайтов и должен быть степенью двойки. Некоторым носителям, таким как SD-карты, данный параметр необходим для оптимальной производительности и долговечности носителя.

mkfs.exfat /dev/sdd1 -b 64k -c 32k -L "Cruiser 8Gb"

где:
/dev/sdd1 - имя тома заменить на реальное имя (можно узнать командой lsblk).
-b - параметр "boundary" для выделения свободного пространства в начале диска для повышения надёжности и производительности.
-c - размер кластера.
-L "label name" - символьная метка диска, где текст label name длиной до 11 символов включительно (пробелы разрешены).

Рекомендуемые ассоциацией производителей USB Flash значения -b и -c для дисков разных объёмов:

Объём USB флешки, Гбайт Параметры -b и -c
1 - 2 -b 64k -c 32k
2 - 32 -b 4M -c 32k
32 - 128 -b 16M -c 128k
128 - 512 -b 32M -c 256k
512 - 2048 -b 64M -c 512k

Например, для Flash-накопителя объёмом 16 Гбайт команда для создания файловой системы exFAT:

mkfs.exfat /dev/sdd1 -b 4M -c 32k

где sdd1 - замените на имя раздела Вашего диска.

Для переносного Flash-накопителя объёмом 256 Гбайт команда для создания файловой системы exFAT:

mkfs.exfat /dev/sdd1 -b 32M -c 256k

где sdd1 - замените на имя раздела Вашего диска.

Типичные ошибки при разбивке и использовании Flash-дисков

Главная проблема, которая может возникнуть - выход flash-диска из строя, если удалена таблица разделов и на её месте создана другая partition table (например, при выполнении команды dd id=file.iso of=/dev/sdc). Некоторые USB флеш диски могут работать только с созданной на заводе таблицей разделов и не выносят её изменения. Можно лишь форматировать такие "флешки" в exFAT, не меняя структуры. Признаком выхода из строя флеш-диска является сообщение "отсутствует носитель". При этом, котроллер опознается с компьютера в момент подключения к гнезду USB, но внутренняя память носителя не видна (Объём 0 байт, 0 байт свободно).

"Убитый" флеш-диск невозможно восстановить командами Windows или Linux (помогут лишь специальные низкоуровневые программы от производителей, которые напрямую обращаются к контроллерами, с указанием параметров чипов памяти. Такие программы часто не совместимы с установленным контролером, имеют сложный интерфейс, трубующий указания точного типа контроллера (можно узнать, разобрав Flash-диск).

Список переносных накопителей, которые выходят из строя при выполнении команды DD или удаления таблицы разделов при помощи parted:

  • ADATA C008 [AC008-8G-RKD]
  • флешки с Aliexpress с двумя разъёмами USB и micro-USB (чип контроллера Chipsbank CBM2199E). Надпись на печатной плате: CBM2199. Возможно, и другие модели флешек Chipsbank.

Создание таблицы разделов диска и форматирования в exFAT в Windows

cmd
diskpart

list disk
select disk 1
clean
list disk
create partition primary
active
format fs=exfat unit=32k label="Flash disk" quick
assign letter=f

Создание таблицы разделов диска и форматирования в exFAT в Linux

Сначала нужно установить нужные пакеты:

sudo apt-get update
sudo apt-get install gparted gnome-disk-utility

Теперь запускаем программу:

sudo gparted

Далее проделайте действия как на снимках экрана ниже:

Замените буквы SDA на имя диска (SDD, SDE и т.д.), соответствующей переносному накопителю - см. вывод команды lsblk.

1.
create0
2.
create1
3.
create2
4.
create3
5.
create4
6.
create5
7.
create6
8.
create7
9.
create8
10.
create9

Чтобы смонтировать диск, запустите оснастку "Диски" (sudo gnome-disks), выберите диск, раздел и нажмите на кнопку "треугольник".
mount

Новый диск готов к работе.

Монтирование накопителя с другим именем

При подключении носителя к USB происходит автоматическое монтирование внешнего диска в папку /media/username/label:
mounted

Если не устраивает имя точки монтирования по умолчанию, его можно изменить, нажатием на кнопку с изображением двух шестерёнок.
options

Отключить выключатель "Параметры по умолчанию для сеанса пользователя" => Изменить точку монтирования.
change

Затем, укажите другую точку монтирования:
backup

Чтобы изменения настроек были применены, в оснастке "Диски" размонтируйте диск (кнопка с квадратом - "стоп") и смонтируйте диск снова (кнопка с треугольником).

backup2

Точка монтирования изменилась на /mnt/backup. Диск виден в Проводнике "PCManFM".

Корректное извлечение диска

Перед физическим отключением диска, нажмите на значок "извлечь" в проводнике.
unmount

Дополнение. Вопросы и ответы.

Вопрос: Какой пакет отвечает за утилиты для exFAT

Ответ:

sudo apt-get install exfatprogs

Вопрос: Как задать новую метку диску без его форматирования?

Ответ:

sudo sudo exfatlabel /dev/sdd1 "Disk Label"

Вопрос: Что делать, если при выполнении exfatlabel выводится сообщение:
"open failed : /dev/sdd, Device or resource busy"

Ответ: нужно узнать имя устройства внешнего диска:

mount | grep fat

Размонтируем том (в данном случае sdd1):

sudo umount /dev/sdd1

Повторяем команду "exfatlabel" для тома sdd1:

sudo exfatlabel /dev/sdd1 "Cruizer_8Gb"

Отключаем диск от гнезда USB и подключаем снова.
Диск теперь смонтирован с новой этикеткой.

Источники: