8

Ссылка на эту страницу: https://support.microsoft.com/en-us/kb/140365

NTFS не превышает 4 КБ размера кластера, пока объем не превышает 16 ТБ, а FAT32 не превышает 16 КБ в диапазоне от 16 ГБ до 32 ГБ в современных версиях Windows.

Однако exFAT по умолчанию имеет значение 4 КБ в диапазоне от 7 до 256 МБ. После этого он прыгает до 32 КБ в диапазоне от 256 МБ до 32 ГБ и до 128 КБ сверх этого.

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

1 ответ1

8

Поскольку exFAT используется в основном для таких вещей, как карты SD большой емкости, а на картах SD вы должны стереть сектор, прежде чем сможете писать на него. Если бы вы использовали небольшие кластеры на карте с большим размером сектора стирания, это привело бы к тому, что многие команды стирания и записи в один и тот же сектор записывали бы несколько последовательных кластеров данных на диск, не только снижая производительность, но и преждевременно изнашивая флэш-память. клетки. Размер сектора стирания обычно не документируется в таблицах данных карты, но его можно найти в реестре CSD карты. Содержимое этого реестра будет варьироваться от карты к карте в зависимости от ее внутреннего дизайна. Поскольку SD-карты обычно используются в таких вещах, как камеры, в которых хранятся большие файлы, неиспользуемое пространство большого размера кластера не имеет значения, и это будет иметь место только в том случае, если вы храните очень большое количество очень маленьких файлов, чего обычно не происходит.

На этой веб-странице содержится содержимое этого реестра примерно для десятка карточек:

http://goughlui.com/2014/01/03/project-read-collect-decode-sd-card-csd-register-data/

И если вы введете его содержимое в следующий калькулятор, вы увидите, что для нескольких карт емкостью 32/64 ГБ размер сектора стирания составляет 128 блоков, а блок - 512 байт. А для карты объемом 2 ГБ размер сектора стирания составляет 32 блока, а блок - 1024 байта.

http://goughlui.com/static/csdecode2.htm

Является ли Windows достаточно умной, чтобы запрашивать регистр CSD и предлагать размер кластера, или она просто догадывается на основе размера раздела или диска, неизвестно. Если бы вам пришлось эмулировать SD-карту с помощью микроконтроллера, вы могли бы это узнать.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .