технология, чье время наконец пришло


Что плохого в том, с чем мы работали до сих пор?
Что это означает?
Знакомьтесь: 32-разрядная FAT
Прикинь, да!
Есть ли плохие новости?
Вновь о хорошем
И что теперь?
Подсчитаем потери

Хотя лишь относительно небольшая часть пользователей ПК познакомилась с новой технологией 32-разрядной FAT (таблицы размещения файлов), разработанной корпорацией Microsoft, уже вовсю идет полемика об ее надежности и обратной совместимости, а также о методах преобразования в новый формат из предыдущих. Много лет назад я написал для жестких дисков утилиту SpinRite 4.0, которую постоянно корректировал, обновлял и публиковал, так что на первых этапах разработки своего 32-разрядного формата FAT для разделов жесткого диска Microsoft воспользовалась моими идеями. Теперь, когда начинается этап широкого внедрения 32-разрядной FAT, которая, судя по всему, станет преобладающим форматом разделов жестких дисков, организованных на основе FAT, похоже, пришло время проанализировать сущность этой новой технологии.

Что плохого в том, с чем мы работали до сих пор?

Каждый, кто работал с операционными системами, приготовленными на "кухне" Microsoft, наверняка знаком и с термином "кластеры", причем обстоятельства этого знакомства, как правило, малоприятны. Из-за того, что с кластерами постоянно что-нибудь случается (то они теряются и на них ставится клеймо "плохих кластеров", то их размеры слишком велики), "добропорядочным" кластерам уделяется недостаточно внимания. Чтобы разобраться в недавно предложенной компанией Microsoft технологической новинке, которая призвана устранить хотя бы небольшую часть неудобств, связанных с кластерами, а также понять, каким образом эти изменения повлияют на нашу жизнь, нужно усвоить две вещи о файловых системах FAT.

  • Во-первых, "кластеры" - это единица размещения (блок) данных на диске, которой оперирует любая файловая система FAT в DOS или в Windows. В разделе жесткого диска доступное пространство равномерно разделено на кластеры, причем каждый кластер может или быть незанятым, доступным, т. е. предназначенным для использования файлом, или дефектным, непригодным для использования. Состояние каждого кластера записывается и сохраняется в FAT раздела жесткого диска при помощи или 12-разрядных, или 16-разрядных записей (элементов описания). Поскольку каждая запись в FAT содержит указатель на следующий кластер в "цепочке кластеров", то чем больше размер записи в FAT, тем больше максимально возможное число значений указателей и, следовательно, максимально возможное число кластеров, которые содержит в себе раздел жесткого диска. Например, 12-разрядная FAT может контролировать состояние не более 4.086 кластеров, а 16-разрядная FAT способна управиться с 65.526 кластерами.
  • Во-вторых, по причинам, таящимся глубоко в недрах DOS, за основание системы счисления размеров кластеров принят 512-байтный сектор диска, и кластер должен иметь размер, равный основанию (512 байт), умноженному на 2 в степени n, а именно 512 байт, 1 Кбайт, 2 Кбайт, 4 Кбайт, 8 Кбайт, 16 Кбайт или 32 Кбайт.
  • Что это означает?

    Десять лет назад, когда жесткие диски объемом 80 Мбайт считались гигантскими, раздел жесткого диска можно было разбить максимум на 65.526 блоков размещения, и это всех устраивало. DOS должна была сформатировать наш диск объемом примерно 80 Мбайт на 40 000 кластеров по 2 Кбайт каждый. Из-за того, что при записи каждого файла на жесткий диск в среднем половина последнего кластера всегда остается неиспользованной, выходило, что на одном файле мы теряли только 1 Кбайт дискового пространства.

    Сегодня, однако, ситуация радикально изменилась. Когда жесткий диск начального уровня содержит "каких-то" 1,2 Гбайт, ныне существующая схема форматирования DOS достигла уже предела возможностей. Поскольку 16-разрядная FAT может поддерживать только 65.526 кластеров, а кластеры могут иметь только размер, равный основанию (512 байт), умноженному на 2 в степени n, то DOS вынуждена форматировать сегодняшние жесткие диски емкостью 1,2 Гбайт только на 40 000 кластеров по 32 Кбайт каждый. Несмотря на то что работа с таким большим жестким диском все же возможна, в среднем место на жестком диске, которое теряется в расчете на один файл, возросло до 16 Кбайт, и в системе, где очень многие файлы имеют размер гораздо меньше 16 Кбайт, фактические потери могут составить значительную величину.

    Никогда не забуду, как я перенес 400 Мбайт файлов с прекрасного "маленького" жесткого диска объемом 512 Мбайт с чудесными куцыми кластерами размером 8 Кбайт на жесткий диск емкостью 1,2 Гбайт, гордившийся своими "солидными" 32-килобайтными кластерами. Мои файлы представляли собой обычную Windows-смесь - небольшие pif'ы, ярлыки, командные файлы и файлы данных, а также многочисленные исполняемые файлы Windows (за редким исключением тоже небольшие) и библиотеки DLL. В результате, оказавшись на жестком диске емкостью 1,2 Гбайт, эти 400 Мбайт файлов фактически "сожрали" 800 Мбайт пространства жесткого диска! Целая треть моего диска объемом 1,2 Гбайт оказалась израсходованной впустую из-за того, что жесткий диск был разбит на такие большие кластеры!

    Сперва был просто шокирован, потом запустил две превосходные утилиты, позволяющие определить профиль файлов на любом диске, организованном на основе FAT, и с их помощью составил таблицы, показывающие, какое дисковое пространство теряется при разных размерах кластера. Эта информация настолько интересна, что я советую вам загрузить и выполнить две маленькие утилиты на ваших машинах, чтобы посмотреть, какой экономии вы достигнете, если переформатируете разделы своих жестких дисков на 4-килобайтные кластеры. Обе эти утилиты бесплатные, я написал для вас короткий файл readme.txt и упаковал все в один zip-файл: FAT-FAT.ZIP (85 кбайт при загрузке).

    Вторая сложность, с которой мы сталкиваемся, имея максимум 65.526 кластеров по 32 Кбайт каждый, состоит в том, что размер любого раздела жесткого диска имеет абсолютный верхний предел. Независимо от того, какие операции мы выполняем, 16-разрядная FAT не способна контролировать раздел жесткого диска, размер которого превышает 2 Гбайт. На заре вычислительной техники нам никогда не приходилось беспокоиться из-за подобного ограничения, но сегодня оно превратилось в нелегкую задачу. Так, никакой файл не может быть больше, чем раздел жесткого диска, в котором размещен этот файл, и принуждение новых пользователей к применению нескольких локальных дисков в среде Windows создало бы такую неразбериху, которую даже не хочется обсуждать!

    Знакомьтесь: 32-разрядная FAT

    Наконец-то фирма Microsoft приняла решение расширить существующий формат DOS FAT, включив в него 32-разрядные записи. Стратегически это очень хорошая идея, но в тактическом плане неизбежно возникнут некоторые вопросы, касающиеся совместимости.

    Прикинь, да!

    Целиком заполненная 32-разрядная FAT способна контролировать более 4 млрд. кластеров. Если бы все кластеры имели одинаковый размер в 32 Кбайт, то при этом объем файловой памяти составил бы 4 млн. Гбайт! Новый 32-разрядный формат FAT позволит нам продержаться до тех пор, пока на смену персональным компьютерам не придет что-то совсем иное.

    И еще одна приятная новость: даже самые емкие жесткие диски, которыми мы пользуемся сегодня, значительно выиграют от перехода на 32-разрядную FAT. Любой диск емкостью более 256 Мбайт, кластеры которого при работе с 16-разрядной FAT обязаны были иметь размер больше 4 Кбайт, теперь может быть отформатирован так, чтобы размер кластеров не превышал 4 Кбайт! Снова посмотрите на таблицу, созданную при помощи упомянутых выше утилит, и вы поймете, что это означает для ваших жестких дисков. [Строка "4-килобайтный кластер" в таблицах могла бы относиться к вашим жестким дискам], если бы в вашей машине использовалась 32-разрядная FAT!

    Есть ли плохие новости?

    А как же без них! Естественно, ни в одной из современных расплодившихся утилит для жесткого диска (подобных моей SpinRite) не могли до сегодняшнего дня учтены все детали, относящиеся к заново созданному формату жесткого диска. Поэтому никакая утилита, написанная до того, как появилась FAT32, не сможет работать с разделами жесткого диска, организованными на основе 32-разрядной FAT. Однако, как автор одной из этих в настоящее время несовместимых утилит, я подробно изучил суть вопроса. Изменения, которые нужно внести для поддержки нового формата, будут довольно незначительными.

    Фирма Microsoft приняла некоторые меры для того, чтобы утилиты и программы, которые не учитывают особенности этого нового формата, не смогли непреднамеренно "искалечить" 32-разрядные разделы жесткого диска. Осторожно перенеся адреса "точек входа", которые ранее использовались этими мощными и опасными утилитами форматирования жестких дисков для проникновения в операционную систему, Microsoft гарантировала, что только утилиты, рассчитанные на 32-разрядную FAT, смогут получить прямой доступ к жесткому диску. Помимо этого, разделам жесткого диска, организованным на основе 32-разрядной FAT, присваиваются новые идентификаторы раздела (partition ID), которые в дальнейшем будут предупреждать операционные системы и утилиты о том, что они имеют дело с чем-то совершенно новым.

    Я обнаружил одну "несовместимость", которая меня сильно заинтриговала: оказывается, Microsoft решила не распространять сферу деятельности собственной утилиты сжатия разделов жесткого диска - DriveSpace - на разделы, организованные на основе 32-разрядной FAT. Я подозреваю, что DriveSpace не достигла бы хоть сколько-нибудь значительных результатов как по скорости, так и по коэффициенту сжатия, потому что основным преимуществом сжатого диска всегда была высокая степень разбиения (грануляции) на уровне его внутренних секторов, а 32-разрядная FAT и 4-килобайтные кластеры обеспечивают вполне приемлемую грануляцию. Кроме того, если раздел жесткого диска действительно велик, то после его сжатия некоторые структуры данных внутри него могут стать громоздкими. Я, например, не буду сильно скучать без сжатых разделов жестких дисков, ибо никогда не считал их достаточно безопасными.

    Стоит также упомянуть о подтверждении корпорацией Microsoft того, что FAT 32-разрядного формата работает несколько медленнее, чем FAT 16-разрядного формата. Наличие большого числа мелких кластеров вызывает необходимость в более крупной FAT, в которой каждая запись имеет вдвое больший размер; это создает куда более значительную фрагментацию файлов в случае изменения их размеров и требует, чтобы операционная система уделяла больше времени на обновление и контроль различных управляющих таблиц. Представители Microsoft заявили, что такое снижение скорости во многом компенсируется усовершенствованиями внутренней архитектуры. На мой взгляд, одна только экономия дискового пространства уже оправдывает весьма незначительное ухудшение производительности.

    А вот и пресловутая ложка дегтя во всей этой бочке меда: к моменту написания данной статьи 32-разрядный формат FAT поддерживался только в неслишком распространенной версии Windows 95 - OEM Service Release 2. Он не поддерживается в других операционных системах, таких как Unix, OS/2 и даже Windows NT 4.0, так что тем, кто раньше всех захочет перейти на новый формат, нужно будет учесть его недостаточно широкую поддержку. Сетевые протоколы позволят системам с FAT32 прозрачно использовать файлы совместно с другими машинами, но многие операционные системы не смогут локально обращаться к 32-разрядным разделам жесткого диска до тех пор, пока изготовители этих ОС не обеспечат соответствующую поддержку. Поскольку поддержка 32-разрядной FAT уже почти закончена для NT 4.0, я буду очень удивлен, если она окажется нереализованной в грядущей версии NT 5.0.

    Вновь о хорошем

    Чтобы компенсировать вынужденное полное отсутствие поддержки совместимости с предыдущим форматом, корпорация Microsoft решила одновременно предложить несколько удобных для использования новых свойств.

    Некоторые из этих улучшений: увеличен размер загрузочного сектора раздела жесткого диска, что обеспечивает большую гибкость при загрузке системы; добавлена резервная копия загрузочных секторов раздела жесткого диска, что также пошло на пользу системе разделов. Начальный код загрузки в таблице разделов жесткого диска расширен и теперь в случае какой-либо ошибки при считывании из основной копии позволяет проводить загрузку с резервных загрузочных секторов. Эти изменения по меньшей мере делают формат файловой системы FAT менее уязвимым при сбоях загрузки с жесткого диска. Ограничение максимального числа файлов (512) в корневом каталоге также устранено, а новое поле "Last Accessed Date (Дата последнего обращения)" в записи, производимой в файловый каталог, должно помочь будущим утилитам должным образом размещать давно не используемые файлы, о которых, похоже, пользователь вовсе забыл.

    Если кому-то покажется, что вместо того, чтобы просто с оптимизмом приветствовать этот новый формат, я хожу вокруг да около, не обессудьте. Слишком долго нашу работу стесняло ограничение по максимальному размеру и числу кластеров, накладываемое 16-разрядной FAT, которое, в свою очередь, принуждало нас иметь кластеры гораздо большего размера, чем это было нужно. Наконец-то мы получили решение задачи. Я работал с 32-разрядной файловой системой FAT больше года, и за все это время она ни разу "не чихнула". Мне она кажется вполне готовой, но должен вас предупредить: запуск утилит, рассчитанных на старую файловую систему, вызовет появление диалоговой панели, говорящей о том, что в целях безопасности их дальнейшее выполнение блокируется.

    И что теперь?

    Да знаю, знаю - эти ловкие утилиты, подсчитывающие объем, понапрасну занимаемый кластерами, точно показали вам, сколько места на самом деле занимают "крупногабаритные" кластеры вашего диска.Теперь вы загорелись, и вам невтерпеж перейти на этот новый 32-разрядный формат, чтобы вновь обрести все это растраченное попусту дисковое пространство! Возможно, вам известно, что в комплекты операционной системы Windows 95, которые продаются в последнее время, входит предустановленная версия OEM Service Release 2 для Windows 95 и что кое-где эта 32-разрядная технология FAT уже реализована и работает. Возможно, вы также знаете, что эта технология в настоящее время доступна для владельцев предыдущих версий Windows 95 в форме upgrade-версии. Однако Microsoft планирует включить FAT32 в состав следующей коммерческой версии Windows, выход которой намечен на начало будущего года.

    Я разместил в Сети два коммерческих конвертера формата FAT, которые способны "на месте" выполнить неразрушающее преобразование 16-разрядного формата FAT в 32-разрядный. Дополнительную информацию вы можете получить, обратившись на наши Web-узлы.

  • Утилита Power Quest's Partition Magic Version 3.02: http://www.PowerQuest.com
  • Утилита Quarterdeck's PartitionIt Version 1.02: http://www.quarterdeck.com
  • Хотя создание революционной технологии, подобной этой, никогда не обходится без дискуссий, через несколько лет мы даже не сможем представить себе, как можно было обходиться без дисков, сформатированных на основе 32-разрядной FAT.


    Стив Гибсон - президент Gibson Research Corp., разработчик и издатель утилит SpinRite и ChromaZone. К нему можно обратиться по адресу: Steve@grc.com.

    Подсчитаем потери

    Приведенная ниже таблица - для тех кто привык доверять цифрам. В ней сравниваются потери дискового пространства в старой и новой системах при использовании в качестве теста файла shortcut из Windows95 (обычно имеющий размер около 128 байт)

    Размер диска, Мбайт
    Размер кластера в старой системе, Кбайт
    Потери в старой системе, Кбайт
    Размер кластера в новой системе, Кбайт
    Потери в новой системе, Кбайт
    64-0127
    2
    1,75
    2
    1,75
    128-0255
    4
    3,75
    4
    3,75
    256-0511
    8
    7,75
    8
    7,75
    512-1023
    16
    15,75
    4
    3,75
    1024-2047
    32
    31,75
    4
    3,75
    2048-4095
    -
    -
    4
    3,75