📂 Файловая системы FAT32 и VFAT

Сранение файловых систем

by itisgood

Введение

VFAT и FAT32 – это две старые файловые системы, разработанные компанией Microsoft.
Хотя они очень похожи, поскольку FAT32 является преемницей VFAT, у них есть некоторые различия.
В этом руководстве мы рассмотрим историю файловых систем FAT в целом.
Мы также изучим особенности и ограничения файловых систем FAT32 и VFAT, а затем сравним их.

FAT в целом

Первая версия FAT как файловой системы была разработана в 1977 году.
Она предназначалась для использования в MS-DOS и ранних версиях ОС Windows.
К тому времени FAT и ее преемники получили широкое распространение в мире ОС. Было разработано четыре версии FAT: FAT12, FAT16, FAT32 и FAT64 (иногда называемая exFAT или “расширенная FAT).
Позже Microsoft разработала файловую систему NTFS, которая является преемницей файловых систем FAT.
Каждая версия была призвана устранить проблемы предыдущей версии.
В первую очередь, каждая версия FAT значительно увеличивала размер кластера, где кластер – это просто логическая внутренняя единица хранения на диске:
FAT12 FAT16 FAT32 FAT64
Максимальный размер раздела 16 MB 2GB 32 GB 128 PB
Максимальный размер файла < 16 MB 2GB 4 GB 16 EB
Максимальный размер кластера 4 KB 64 KB 32 KB 32 MB
Это означает, что каждая версия FAT увеличивала теоретический порог размера файловой системы.
Конечно, изменений было больше, но мы сосредоточим свое внимание именно на FAT32 и файловой системе VFAT.
Начнем с VFAT.

VFAT

VFAT – это расширение FAT12 и FAT16.

Оно позволило решить основную проблему, с которой столкнулись FAT12 и FAT16, – ограничение на размер имени файла. FAT12 и FAT16 следовали соглашению 8.3 (или иногда называемому SFN) DOS об именовании файлов. Эта конвенция подразумевает, что имя файла может состоять не более чем из 8 символов, а также может иметь необязательное расширение имени файла, длина которого должна быть не более 3 символов.

Еще одна проблема заключалась в том, что имена файлов SFN, а также расширения могут состоять только из символов ASCII. В SFN было еще много тонкостей и ограничений, которые должна была решить VFAT.

Так, в VFAT было введено еще одно соглашение об именовании – LFN (или long-file-name). В LFN имя файла может состоять из 255 символов и пробелов.

Оно также может содержать несколько точек, что невозможно в чистых FAT12 и FAT16.

LFN также поддерживал кодировку имен файлов UTF-16. И последнее, но не менее важное: LFN и VFAT в целом разработаны с учетом обратной совместимости с файловыми системами FAT12 и FAT32.

Это означает, что VFAT может без проблем работать с дисками, разбитыми на разделы FAT16:

FAT12/FAT16 VFAT
Имя файла SFN (8.3 convention) LFN
Кодировки файлов ASCII ASCII, UTF-16

Но, кроме этого, VFAT имела те же ограничения, что и FAT16.

Об управлении кластерами и разделами на диске мы поговорим чуть позже.

FAT32

И все же основной проблемой FAT16 и VFAT были кластеры и управление разделами по мере их роста.

Чтобы объяснить это, нужно сначала понять, что сам диск делится на разделы, а разделы состоят из кластеров:

Это, конечно, очень высокий уровень.

Здесь мы видим, что диск состоит из 4 разделов, каждый из которых может иметь свою файловую систему, как в примере выше.

То, как файловая система структурирует данные на диске, сильно зависит от файловой системы; мы будем говорить о FAT, так что давайте продолжим.

Итак, допустим, у нас есть раздел на диске на 512 МБ.

Этот раздел изначально разбит на кластеры, по 8 Кбайт каждый в FAT16.

Проблема в том, что количество кластеров также фиксировано для разделов в FAT16 и VFAT.

Это означает, что если размер раздела увеличивается, то неизбежно должен увеличиться и размер кластеров.

Так, если размер раздела теперь составляет 1 ГБ, размер кластера становится 16 К.

Так почему же это вообще является проблемой?

Проблема в том, что FAT16 и VFAT считают кластер одним отдельным блоком.

И если нам нужно сохранить файл размером 10 байт, он займет весь кластер, несмотря ни на что.

Теперь этот файл занимает этот кластер, и никакие другие данные не могут быть записаны в этот конкретный кластер.

Таким образом, мы оказались в затруднительном положении, когда 99 % размера кластера было потрачено впустую.

Проблема становится еще хуже, если раздел увеличивается в размерах.

В этом случае на помощь приходит FAT32.

Для раздела размером менее 8 ГБ в FAT32 размер кластера по умолчанию остается 4 КБ.

Это, конечно, не полностью решает проблему потенциально пустого места, когда 1-байтовый файл занимает все 4 КБ раздела.

Тем не менее, FAT32, по крайней мере, не страдает от ухудшения условий на больших разделах. Это

Максимальный размер диска

Еще один момент, о котором стоит упомянуть, – это то, что у FAT16 и VFAT, в частности, была одна проблема.

Максимальный размер раздела, с которым может справиться файловая система, составлял 2 ГБ.

Это связано с тем, что в FAT16 каждый кластер идентифицируется 16 битами. В FAT32 такого ограничения нет, поскольку для адресации кластера используется 28 бит из 32 (последние 4 бита зарезервированы для возможного будущего использования).

Поэтому размер раздела теоретически может достигать 8 ТБ для FAT32.

На практике Windows ограничивает размер раздела 32 ГБ для FAT32.

В основном это произошло потому, что в свое время компания Microsft хотела продвигать NTFS вместо файловой системы FAT, но все же.

Это второе существенное различие между FAT32 и VFAT/FAT16.

 

You may also like

Leave a Comment