Почему размер выделения по умолчанию exFAT в Windows так высок?

6600
InsanityOnABun

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

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

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

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

7
"Size" and "high" do not go together. Numbers can be "high". "Large" is the bettor word instead of "high". sawdust 5 лет назад 0
Возможный дубликат [Недостатки небольшого размера единицы размещения] (https://superuser.com/questions/465615/downsides-of-a-small-allocation-unit-size) sawdust 5 лет назад 0
Я просто хотел упомянуть, что я только что отформатировал диск 1 ТБ, используя размер кластера по умолчанию, а в Windows использовался размер кластера 2048 КБ !!! Это не только игнорирование спецификаций на их странице, это всегда Слишком высоко woojoo666 5 лет назад 0

1 ответ на вопрос

7
Muh Fugen

Поскольку 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-карту с помощью микроконтроллера, вы могли бы это узнать.

я не знал о необходимости стереть флэш-память, прежде чем вы могли бы написать на нее. Это имеет смысл сейчас. Спасибо! InsanityOnABun 7 лет назад 0
You seem to be assuming that SD cards have no flash translation layer, i.e. that adjacent logical sectors will always be physically adjacent in NAND. Otherwise the logical sectors in a cluster would not have to belong to the same eraseblock. What evidence do you have to support this assumption? sawdust 5 лет назад 0

Похожие вопросы