Я буду предполагать, что вы используете файловую систему FAT / FAT32 здесь, поскольку вы упоминаете, что это SD-карта. NTFS и exFAT ведут себя одинаково в отношении единиц размещения. Другие файловые системы могут отличаться, но они все равно не поддерживаются в Windows.
Если у вас много маленьких файлов, это, безусловно, возможно. Учти это:
Хорошо, теперь минимальное занимаемое пространство составляет 50 000 * 32 000 = 1,6 ГБ (для упрощения математики используются префиксы SI, а не двоичные). Пространство, которое каждый файл занимает на диске, всегда кратно размеру единицы размещения - и здесь мы предполагаем, что каждый файл на самом деле достаточно мал, чтобы поместиться в одном блоке, с некоторым (потерянным) пространством.
Если бы каждый файл занимал в среднем 2 КБ, вы получили бы около 100 МБ общего объема, но вы также теряли в 15 раз больше (30 КБ на файл) в среднем из-за размера единицы размещения.
Подробное объяснение
Почему это происходит? Что ж, файловая система FAT32 должна отслеживать, где хранится каждый файл. Если бы он вел список каждого байта, таблица (например, адресная книга) росла бы с той же скоростью, что и данные, - и тратила бы много места. Поэтому они используют «единицы выделения», также известные как «размер кластера». Том разделен на эти единицы размещения, и что касается файловой системы, они не могут быть разделены - это самые маленькие блоки, которые он может адресовать. Так же, как у вас есть номер дома, но вашему почтальону все равно, сколько у вас спален или кто в них живет.
Так что же будет, если у вас очень маленький файл? Что ж, файловой системе все равно, если файл равен 0 кБ, 2 кБ или даже 15 кБ, он даст ему наименьшее пространство, которое он может - в приведенном выше примере это 32 кБ. Ваш файл использует только небольшое количество этого пространства, а остальное в основном тратится впустую, но все равно принадлежит файлу - очень похоже на спальню, которую вы оставляете незанятой.
Почему существуют разные размеры единиц размещения? Что ж, это становится компромиссом между наличием большого стола (адресная книга, например, говоря, что Джон владеет домом на 123 Фэйк-стрит, 124 Фэйк-стрит, 666 Сатана-лейн и т. Д.) Или большим количеством неиспользуемого пространства в каждой единице (доме). Если у вас есть файлы большего размера, имеет смысл использовать большие единицы размещения - потому что файл не получает новый блок (дом), пока все остальные не будут заполнены. Если у вас много маленьких файлов, то в любом случае у вас будет большая таблица (адресная книга), поэтому они могут также дать им небольшие блоки (дома).
Большие единицы размещения, как правило, будут занимать много места, если у вас много маленьких файлов. Обычно нет веской причины превышать 4 кБ для общего использования.
Дробление?
Что касается фрагментации, фрагментация не должна тратить пространство таким образом. Большие файлы могут быть фрагментированы, т. Е. Разделены, на несколько единиц размещения, но каждая единица должна быть заполнена до запуска следующей. Дефрагментация может сэкономить немного места в таблицах размещения, но это не ваша конкретная проблема.
Возможные решения
Как и предположил gladiator2345 , на данный момент ваши единственные реальные варианты - жить с ним или переформатировать с меньшими единицами распределения.
Ваша карта может быть отформатирована в FAT16, который имеет меньшее ограничение на размер таблицы и, следовательно, требует гораздо больших единиц выделения для адресации большего объема (с верхним пределом в 2 ГБ с 32 кБ единицами выделения). Источник любезно предоставлен Брайаном . Если это так, вы все равно сможете безопасно форматировать как FAT32.