Какой максимальный размер файла в FAT?

1336
VortixDev

Из того, что я понимаю, FAT32 использует 32-битное число для каждого файла, чтобы сохранить размер его файла (и, следовательно, FAT32 ограничен в файлах ~ 4 ГБ). В FAT каждый файл имеет запись корневого каталога, и именно эти записи хранят значение для размера файла. На этой странице показана структура записи каталога для FAT32. Этот ресурс предполагает, что FAT12 использует 25-битное значение для размера файла, а FAT16 - 31-битное значение.

Правильна ли информация во втором связанном ресурсе? Если нет, то каков истинный максимальный размер файла для FAT12 и FAT16? Если это правда, то почему нерегулярное количество бит используется для хранения размера файла для этих файловых систем?

РЕДАКТИРОВАТЬ: Почему они ограничены размером тома, в то время как FAT32 имеет установленный размер? Это потому, что размер файла, который он хранит, превышает любой поддерживаемый размер тома, или FAT12 и FAT16 не используют размер файла в качестве поля в записи каталога?

-3
Вы проверили значения в [wikipedia] (https://en.wikipedia.org/wiki/File_Allocation_Table)? phuclv 5 лет назад 2
Спасибо за ваш комментарий, я добавил информацию в свой вопрос. VortixDev 5 лет назад 0
Следует понимать, что FAT12, FAT16 и FAT32 были разработаны в разное время разными людьми и с различными противоречивыми требованиями, которые значительно изменились за эти годы. FAT32 был разработан более 20 лет назад, в то время как FAT12 и FAT16 еще старше. Было желание максимально использовать возможности файловых систем, в то же время поддерживая эффективность с ограниченными технологиями того времени. Компромиссы должны были быть сделаны. Результатом стали некоторые явно странные значения и несоответствия между файловыми системами. LMiller7 5 лет назад 0
FAT32 ограничен значением «4 ГБ минус 2 байта», а не 4 ГБ. DavidPostill 5 лет назад 0
@DavidPostill Спасибо за ваше исправление, я исправил вопрос. Почему это -2 байта вместо -1 байта? VortixDev 5 лет назад 0
Отличное понимание: спасибо @ LMiller7 VortixDev 5 лет назад 0
@VortixDev Не знаю: / DavidPostill 5 лет назад 0
Я предполагаю, что неподписанный аналог "-1" где-то использовался как специальное значение. plugwash 5 лет назад 0

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

3
plugwash

Размер файла в FAT хранится в 32-битном поле.

В FAT32 поле обрабатывается как беззнаковое, что позволяет использовать файлы размером до 4294967294 байт (по-видимому, 4294967295 по какой-то причине недопустимо, возможно, где-то в качестве флага использовался «-1»).

В FAT16 поле ограничено диапазоном 32-разрядного числа со знаком. Я ожидаю, что причиной этого является устаревший код, который был записан обратно, когда 2 ГБ считался бы безумным размером для файла. Файловые системы FAT16 за пределами 2 ГБ были странностью в любом случае *.

Для AIUI в FAT12 размер файла ограничен 32 МБ (не 32 КБ!) Не из-за каких-либо ограничений, специфичных для размера файла, а просто потому, что это максимальный размер тома, и вы не можете иметь файл больше, чем том. То же самое относится и к ранним версиям FAT16.

* Версия FAT16, используемая в DOS 4 через windows 95, была ограничена 64 секторами на кластер, что в типичных 512-байтовых секторах означало размер тома примерно 2 ГБ. NT удвоил максимальное число секторов на кластер, позволив ~ 4 ГБ томам с 512 байтовыми секторами, а 98 добавил поддержку чтения / записи, но не создавая и не восстанавливая такие волюмы. Большие объемы были бы теоретически возможны, если бы базовое устройство имело более крупные сектора, но я не видел доказательств того, что это на самом деле произошло на практике.

0
SeanC

Часть этого будет зависеть от размера кластера.

В то время как диск имеет (для большинства реализаций) секторы по 512 байт, сектора были сгруппированы в кластеры, чтобы обеспечить более крупные файлы с большей емкостью.

Для FAT12 максимальная емкость и размер файла составляли 16 МБ (с кластерами 4 КБ) и 32 МБ (с кластерами 8 КБ).

Для FAT16 начальная версия не изменила емкость, но по мере ее развития размер файла был разрешен до 2 ГБ, 4 ГБ и, наконец, ограничен объемом, с максимальными объемами от 2 ГБ до 16 ГБ, в зависимости от версии FAT16. это было реализовано операционной системой

Размер тома был увеличен, но максимальный размер файла оставался ограниченным 2 ГБ. plugwash 5 лет назад 0

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