Особенности файловой системы FAT32

В DOS и Windows для размещения файлов на диске используется таблицы FAT. Физические секторы объединяются в группы, называемые кластерами, каждому из которых присваивается определенный номер. Аналогичный способ распределения пространстваиспользуется и на гибких дисках. Различие между ними заключается в том, что номера кластеров на дискетах — 12-разрядные и их файловая система получила название FAT12 (имеются в виду двоичные разряды), а на жестких дисках в подавляющем большинстве случаев номера кластеров, как минимум, 16-разрядные (соответствующая файловая система получила название FAT16) или 32-разрядные (соответственно, FAT32). FAT32 поддерживается, начиная с версии Windows 93 OSR2. Всякий раз, когда программа-приложение запрашивает доступ к дисковому пространству для записи данных, операционная система в поисках свободного кластера начинает просматривать FAT с того места, где производилась последняя запись (так называемый указатель последнего записанного кластера хранится в системной памяти), и как только такой кластер находится, в него записывается часть файла. После этого система начинает поиск следующего пустого кластера, и процесс продолжается до тех пор, пока весь файл не будет сохранен на диске. Если файл стирается, то соответствующие ему кластеры помечаются в FAT как доступные для повторной записи. Будучи весьма простой, система FAT оказалась, тем не менее, достаточно универсальной и надежной.

Основная проблема, возникающая при использовании FAT, заключается в том, что количество кластеров в этой системе ограничено разрядностью их номеров. При 12-разрядной FAT максимальное количество кластеров равно 4096 (212). В 16-разрядной системе их количество увеличивается до 65 536 (216). При емкости накопителя 120 Мбайт размер каждого кластера должен быть не менее 1,8 Кбайт (120 Мбайт/65 536). Округляя до ближайшей величины, кратной размеру сектора (512 байт), получим, что размер кластера на таком диске окажется равным 2 Кбайт. При емкости накопителя 500 Мбайт размер кластера составит 8 Кбайт (500 Мбайт / 65 536). Минимальный объем дискового пространства, отводимого для записи файла — это кластер. Даже если размер файла всего на один байт превосходит размер кластера, для его хранения будут отведены уже две ячейки размещения данных. Более того, для размещения файла нулевого размера все равно будет выдел отдельный кластер, который фактически будет потерян для системы! Именно стремлением покончить с подобным расточительством объясняется тот факт, что система FAT12 использовалась только в тех накопителях на жестких дисках (или их разделах), емкость которых не превышала 16 Мбайт. Нетрудно понять, что потери дискового пространства в накопителях большой емкости даже при использовании FAT 16 могут оказаться весьма существенными.

Другим недостатком системы FAT является то, что записанные на диске файлы оказываются фрагментированными. Происходит это потому, что в процессе поиска свободного места на диске система ищет ближайший пустой кластер, расположенный после указателя последней записи — а он может оказаться где угодно, в том числе, например, в начале диска (если указатель последней записи располагался в его конце). Файл размером в несколько мегабайт (изображение, архив, звуковой файл) может быть разбит на десятки фрагментов, например: 20 смежных кластеров на дорожке 345, два ближайших доступных смежных кластера на дорожке 1012,50 кластеров на дорожке 2011 и т.д. Фрагментация файлов — это неизбежное следствие того алгоритма поиска свободного пространства, который был принят разработчиками системы FAT. На практике это приводит к тому, что при считывании фрагментированного файла жесткий диск выполняет массу «лишних движений», разыскивая очередной принадлежащий этому файлу кластер (а при записи — перемещая головки на свободное пространство). Это не только снижает быстродействие накопителя, но и приводит к его повышенному износу и сокращению срока службы. Лучший способ борьбы с этим нежелательным явлением — периодически упорядочивать файлы и свободное пространство на диске с помощью программы дефрагментации жесткого диска. В процессе дефрагментации файлы перераспределяются между кластерами таким образом, чтобы свести к минимуму количество их фрагментов и консолидировать свободное пространство диска в участки максимальных размеров.