Логические структуры и файловые системы жестких дисков
Конечно, жесткий диск, в первую очередь, является носителем для хранения информации. Емкость жестких дисков повышается каждый год, а это усложняет их эффективное использование. Для управления доступом к жестким дискам применяются логические структуры и программные процедуры, которые объединяются в общее понятие файловой системы (file system). Разные операционные системы используют различные способы организации данных и управления доступом к жестким дискам и выбор, в основном, не зависит от конкретных аппаратных средств.
Природа логических структур на жестком диске сильно влияет на производительность, надежность, расширяемость и совместимость подсистемы памяти. Далее рассмотрены логические структуры на жестком диске, их настройка и использование в типичном РС. Особенное внимание уделено влиянию настройки и работы файловой системы на производительность компьютера.
Мы рассмотрим, главным образом, "стандартные" файловые системы РС и, в
частности, файловую систему с таблицей размещения файлов
(File Allocation Table - FAT), которая применяется очень широко.
Операционные системы и файловые системы
Разные операционные системы используют различные файловые системы. Некоторые из
операционных систем могут работать с несколькими файловыми системами, а другие
работают только со своими файловыми системами. Далее кратко рассмотрены самые
распространенные операционные для РС и используемые ими файловые системы.
DOS (MS-DOS, PC-DOS и др.)
Обычные версии DOS используют для обращения к файлам файловую систему FAT с
разновидностями FAT12 и FAT16. Windows 95 поставляется со "встроенной" версией
DOS 7.x. Версия OEM Service Release 2 (OSR 2) системы Windows 95 поддерживает
FAT32, поэтому поставляемая с Windows 95 OSR2 система DOS 7.1 также поддерживает
FAT32. Разделы FAT32 не совместимы со стандартной DOS (до версии 7.х).
Windows 3.x
Windows 3.x фактически не является истинной мультизадачной операционной системой. Она работает поверх DOS и для доступа к файлам использует, в основном, средства и процедуры DOS. Следовательно, Windows 3.x использует такую же файловую систему FAT, что и DOS.
В последнюю версию Windows 3.x - Windows for Workgroups 3.11 - включено
улучшение "32-Bit File Access". Оно обеспечивает использование для доступа к
дискам 32-битовых процедур защищенного режима вместо стандартных 16-битовых
процедур DOS. Фактически это первая реализация файловой системы VFAT, которая
применяется в Windows 95, но в нее включены не все средства VFAT, а только
32-битовые процедуры доступа. Структуры файловой системы представляют собой
обычную FAT.
Windows 95
Windows 95 - это "великая" компромиссная операционная система. В некоторых отношениях в ней предусмотрены свои средства управления доступом к жесткому диску, а в других она напоминает и даже использует средства DOS. Благодаря этому достигается повышение производительности и сохраняется совместимость со старыми программами. Фактически в Windows 05 включена версия DOS 7.x, которая служит посредником между Windows 95 и файловыми структурами.
"Официальная" файловая система Windows 95 называется VFAT и ее поддерживают и
Windows 95, и DOS 7.x. Начиная с версии OSR2 поддерживается также FAT32, которая
позволяет применять большие разделы жесткого диска.
Windows NT
Windows NT - это новая реализация Windows, которая была разработана "с нуля". В отличие от других разновидностей Windows система Windows NT не опирается на DOS.
Windows NT поддерживает две различны файловых системы. Первая из них NTFS -
файловая система NT, которая является улучшенной UNIX-образной файловой
системой. Вторая система - это FAT, аналогичная используемой DOS. Поддержка FAT
предусмотрена по причинам совместимости, а также для РС, которые допускают
двойную загрузку. Несмотря на то, что Windows NT считывает разделы FAT и NTFS,
они не совместимы друг с другом.
UNIX / Linux
Для платформы РС имеется несколько разновидностей системы UNIX. Наиболее
известной и популярной из них является операционная система Linux
(http://www.linux.org). В этих системах применяется файловая система UNIX,
которая полностью отличается от вариантов файловой системы FAT для DOS и
Windows.
Файловые системы РС
В РС применяется несколько различных файловых систем и далее кратко рассмотрены
их основные положения, а подробные сведения приведены далее.
FAT
В подавляющем большинстве РС применяется файловая система FAT (File Allocation
Table - таблица размещения файлов). Таблица FAT является одной из важнейших
логических структур файловой системы, поэтому и вся файловая система называется
FAT. Иногда эту систему для компьютеров с DOS и Windows называют FAT16,
подчеркивая ее 16-битовую природу, чтобы избежать путаницы с ее преемником -
системой FAT32.
FAT32
FAT32 является усовершенствованием стандартной файловой системы FAT. Название FAT32 объясняется тем, что в ней номера кластеров представлены 32-битовыми числами, а не 16-битовые числа стандартной FAT. Система FAT32 появилась в Windows OSR2, которая иногда называется Windows 95b, и поддерживается данной версией Windows и поставляемой с ней версией DOS. Предыдущие операционные системы не могут считывать дисковые тома, форматированные для FAT32.
FAT32 создана потому, что был освоен массовый выпуск жестких дисков емкостью более 2 ГБ, а FAT16 поддерживает только логические дисковые тома с максимальной емкостью 2 ГБ. В текущей реализации FAT32 расширяет предел до 8 ГБ и может работать даже с еще более емкими дисками, используя те же базовые структуры.
В дополнение к поддержке больших дисковых томов FAT32 экономит пропавшее
пространство (slack), так как использует гораздо меньшие размеры кластеров по
сравнению с FAT16. При этом значительно увеличивается число кластеров, а это
несколько снижает производительность и расходует больше памяти для хранения FAT.
Кроме различий в выделении кластеров и их нумерации FAT32, в сущности,
аналогична обычной FAT и описание файловых структур FAT применимо и к FAT32.
Виртуальная FAT (VFAT)
Компания Microsoft ввела несколько улучшений в средства управления дисками Windows 95. Доступ к файловой системе можно осуществлять, используя быстрые 32-битовые драйверы защищенного режима или старые 16-битовые процедуры DOS. Добавлены также поддержка длинных имен файлов и лучшее управление такими возможностями, как блокировка диска, поэтому утилиты могут обращаться к диску в исключительном режиме (exclusive mode), не боясь, что его тем временем используют и другие программы.
Несмотря на новые название и возможности, все же FAT32 остается файловой системой, в основном, аналогичной FAT. Большинство новых возможностей связано с тем, как используется файловая система, а не с фактическими структурами на диске. VFAT работает со стандартными разделами FAT16, а под Windows 95 OSR2 - и с разделами FAT32. Единственным значительным новшеством в части фактических структур является введение длинных имен файлов. Но и здесь используется не нечто революционное, а просмотр в старой системе.
За исключением длинных имен файлов Windows 95, использующая VFAT, разделяет
те же логические структуры диска, что и DOS или Windows 3.x, использующие FAT.
Файловая система NT (NTFS)
Файловая система NTFS для Windows NT полностью отличается от файловой системы RAT для DOS и других вариантов Windows и несовместима с ней. Систему NTFS может использовать только Windows NT, а другие операционные системы не могут работать с диском, форматированным для NTFS.
Файловая система NTFS практически во всем превосходит FAT. Она является более
живучей и полномасштабной системой, которая поддерживает сжатие файлов, полное
управление атрибутами и многие другие возможности. В ней отсутствуют проблемы
ограничений размеров кластеров и жесткого диска, накладываемых FAT, и, кроме
того, она поддерживает RAID-массивы. Единственное, в чем NTFS не лучше FAT, -
это совместимость со старыми программами, поэтому NTFS применяется реже FAT.
Основные дисковые структуры и процесс загрузки
Файловая система фактически служит интерфейсом между операционной системой и накопителями. Когда пользовательское приложение, например Word, запрашивает считывание файла с жесткого диска, операционная система, например Windows 95/98/2000, обращается к файловой системе, заставляя ее открыть файл. Файловая система знает, где и как хранятся файлы, поэтому она находит и считывает нужные секторы с диска и предоставляет данные операционной системе.
Имеется несколько основных дисковых структур, которые применяются для
организации и управления хранением информации в РС с файловой системой FAT /
FAT32 / VFAT. Важно иметь представление об этих структурах, так как они
управляют тем, так работает жесткий диск с программной точки зрения.
Главная загрузочная запись (MBR)
При включении РС процессор должен начать обработку данных. Однако системная
память пуста и процессор ничего не имеет для выполнения и даже не знает, куда
обращаться. Чтобы РС можно было всегда загрузить независимо от имеющегося в нем
BIOS, производители микросхем и BIOS сделали так, что при включении процессор
всегда начинает выполнение с одного и того же места (адреса) FFFF0h.
Аналогичным образом каждый жесткий диск должен иметь согласованную "начальную точку", где хранится ключевая информация о диске, числе разделов, типах разделов и т.д. Должно также быть нечто такое, чтобы BIOS мог бы загрузить начальную программу загрузки, которая запускает процесс загрузки операционной системы. Место, где хранится вся эта информация, называется главной загрузочной записью (Master Boot Record - MBR), а также главным загрузочным сектором (master boot sector).
Главная загрузочная запись всегда находится по трехмерным координатам - цилиндр 0, голова 0 и сектор 1, т.е. в первом секторе диска. Это и есть согласованная "начальная точка", которую всегда использует диск. Когда BIOS загружает компьютер, он берет отсюда команды и информацию о том, как загрузить операционную систему. Главная загрузочная запись содержит следующие структуры:
- Главная таблица разделов: Эта небольшая таблица содержит описания разделов, имеющихся на жестком диске. В главной таблице разделов отведено место только для информации, описывающей четыре раздела. Следовательно, жесткий диск может иметь только четыре истинных раздела, называемых также первичными разделами. Все дополнительные разделы являются логическими разделами, которые "привязаны" к одному из первичных разделов.
- Главный код загрузки: Главная загрузочная запись содержит небольшую программу начальной загрузки, которую BIOS загружает и выполняет для инициирования процесса загрузки. Эта программа по окончании передает управление программе загрузки, которая хранится в том разделе, который используется для загрузки РС.
В главной загрузочной записи хранится очень важная информация, поэтому при ее
повреждении или искажении результатом будет серьезная потеря данных. Поскольку
главный код загрузки является первой программой, выполняемой при включении РС,
он является основной целью авторов вирусов.
Первичный, расширенный и логические разделы
Чтобы использовать пространство на жестком диске, его необходимо организовать в разделы (partitions). Организация разделов представляет собой процесс разбиения пространства жесткого диска на участки, которые можно подготовить для использования или даже специализировать на различные применения. Даже если весь диск требуется оставить одной частью, все равно нужно организовать раздел, чтобы к нему могла обращаться операционная система. При организации разделов приходится учитывать много различных факторов.
Каждый жесткий диск может содержать до четырех "истинных" разделов, которые называются первичными разделами. Ограничение в четыре раздела накладывается структурой главной загрузочной записи. При работе только с DOS, Windows 3.x или Windows 95 обычно организуется только один первичный раздел, а несколько разделов можно организовать для работы на РС с несколькими операционными системами. Разделы часто называются томами (volumes), особенно в контексте DOS.
Сама DOS может иметь на диске только один первичный раздел. Но вам наверняка встречались РС с четырьмя или более разделами DOS. Жесткий диск, который имеет четыре раздела DOS, все же имеет только один первичный раздел DOS. Остальные разделы являются логическими разделами, которые находятся в расширенном разделе DOS.
Очевидно, разработчики DOS не предвидели появления жестких дисков емкостью в десятки гигабайтов, содержащих большое число разделов. Последующие версии DOS допускают использовать до 24 дисковых разделов. Чтобы сохранить совместимость с первыми структурами DOS, рассчитанными только на четыре раздела, дополнительные разделы находятся в расширенном разделе.
Таким образом, на жестком диске имеется место для четырех первичных разделов. Если используется расширенный раздел, он занимает место, отведенное для одного из четырех первичных разделов, поэтому в результате получаются три первичных раздела и один расширенный раздел. При определении расширенно раздела он первоначально пустой; его пространство используется путем добавления логических разделов (иногда называемых логическими накопителями DOS или логическими томами). Можно образовать до 24 логических накопителя в расширенном разделе, если на диске не используется первичный раздел, или 23 при использовании первичного раздела. Ограничивающим фактором здесь оказываются буквы накопителей: жесткие диски начинаются с С: и заканчиваются Z:. Разумеется, практически никто и никогда не организует в системе так много разделов.
Внутренне логические накопители хранятся в связанной структуре. Информация о расширенном разделе содержится в основной таблице разделов (так как расширенный раздел является одним из четырех разделов, хранимых в главной загрузочной записи). Она содержит ссылку на таблицу расширенного раздела, которая описывает первый логический раздел для диска. Эта таблица содержит информацию об этом первом логическом разделе и ссылку на следующую таблицу расширенного раздела, которая описывает второй логический раздел на диске и т.д. Таблицы расширенного раздела связываются в цепь, начиная с главной таблицы разделов.
По способу использования диска имеются только два основных различия между первичным и логическим разделами (томами). Первое состоит в том, что первичный раздел можно определить как загрузочный (активный), а логический нельзя. Второе различие заключается в том, что DOS присваивает буквы накопителей (C:, D: и т.д.) первичным и логическим томам по-разному.
Приведем простой пример, иллюстрирующий эти различия. Предположим, что вы настраиваете новую систему и начинаете с пустого жесткого диска емкостью 2 ГБ. Ради повышения эффективности решено организовать в системе четыре одинаковых раздела по 500 МБ.
Прежде всего необходимо организовать первичный раздел DOS с размером 500 МБ. Он будет первым из четырех разделов. После этого создается расширенный раздел DOS размером 1500 МБ. Внутри расширенного раздела DOS создаются три логических тома по 500 МБ каждый, которые будут вторым, третьим и четвертым логическими томами. Первый раздел будет накопитель С:, с которого загружается компьютер, а остальным трем разделам DOS (обычно) присвоит буквы D:, E: и F:. Жесткий диск будет иметь один первичный раздел DOS и один расширенный раздел DOS, содержащий три логических тома DOS.
После настройки системы функционального различия между этими разделами нет за
исключением того, что загрузочным накопителем является только С: и системные
файлы DOS находятся в разных местах. Обычные файлы могут находиться в любых
томах.
Загрузочные секторы томов
Каждый раздел DOS, называемый также томом DOS, имеет свой загрузочный сектор тома. Он отличается от главного загрузочного сектора (или главной загрузочный записи), который управляет всем диском, но по структуре аналогичен. Каждый загрузочный сектор тома содержит следующую информацию:
- Блок параметров диска: Эта таблица данных, называемая также блоком параметров носителя, содержит конкретную информацию о томе, например его спецификации (размер, число секторов и др.), имя метки и т.п.
- Загрузочный код тома: Этот код, определяемый использующей данный том операционной системой, применяется для запуска загрузки операционной системы. Данный код вызывается главным загрузочным кодом, который находится в главной загрузочной записи, но только для первичного раздела, который определен как активный. Для других разделов этот код остается неиспользованным.
Загрузочный сектор тома создается при форматировании высокого уровня раздела
жесткого диска.
Активные разделы и менеджеры загрузки
Для загрузки операционной системы можно использовать только первичные разделы, причем только первичный раздел, который определен как загрузочный. Одновременно может быть определен как загрузочный только один раздел, так как в противном случае главная загрузочная запись не узнает, загрузочному коду какого тома передавать управление процессом загрузки при включении компьютера. В DOS загрузочный раздел называется активным разделом.
Если образовать разделы на новом жестком диске и создать первичный раздел с помощью стандартной утилиты FDISK, но не определить первичный раздел как активный, BIOS не сможет загрузить операционную систему. Обычно в такой ситуации появляется сообщение об ошибке вида "No boot device available" (Нет доступного загрузочного устройства). Некоторые BIOS отображают более загадочные сообщения, например BIOS компании AMI при невозможности найти загрузочное устройство выводят сообщение "NO ROM BASIC - SYSTEM HALTED". Вывод такого сообщения объясняется тем, что в старых IBM PC имели встроенный в ROM BIOS интерпретатор языка BASIC. Если загрузочного устройства не обнаружено, BIOS начинает выполнять аппаратный интерпретатор BASIC. Поскольку не-IBM компьютеры не имеют ROM BASIC, их BIOS должен вместо перехода к BASIC отображать сообщение об ошибке.
Большинство пользователей имеют только один первичный раздел в РС, так как работают только с одной операционной системой. Но если в РС инсталлировано несколько операционных систем с различными файловыми системами, например Windows 95 и UNIX, но не DOS и Windows 95, которые используют одни и те же файловые системы, можно определить несколько первичных разделов - по одному для каждой операционной системы. При этом возникает проблема указания компьютеру во время загрузки, какую операционную систему необходимо загружать.
Для решения этой задачи разработаны специальные программы, которые обычно называются менеджерами загрузки (boot managers). Менеджер загрузки вставляет себя в самое начало процесса загрузки, обычно определяя специальный раздел менеджера загрузки и делая себя активным разделом. При загрузке РС выполняется код из этого раздела. Он анализирует первичные разделы на диске и затем предоставляет пользователю меню с запросом, с какой операционной системой хочет работать пользователь. Выбранная система отмечается как активная, а затем продолжается процесс загрузки.
Менеджеры загрузки незаменимы при работе с несколькими операционными
системами. Однако при использовании менеджера загрузки необходимо быть очень
внимательным, так как он модифицирует диск на самом нижнем уровне. Широко
распространен менеджер загрузки, который входит в состав программы Partition
Magic.
Процесс загрузки DOS
Последовательность загрузки состоит из этапов, которые система выполняет при включении или перезагрузке, например при нажатии кнопки сброса. Она всегда начинается со специальной программы загрузки, которая находится в системном ROM BIOS. Система BIOS должна обязательно несколько этапов для тестирования и конфигурирования системы до загрузки любой операционной системы.
После завершения BIOS начальных действий он инициирует загрузку операционной системы. Для этого он отыскивает загрузочное устройство с кодом загрузки, которому передается управление загрузкой. Поиск загрузочного устройства производится в порядке, определенным параметром BIOS, который управляет последовательностью загрузки. При невозможности найти загрузочное устройство выдается сообщение об ошибке.
Если BIOS нашел загрузочный сектор на устройстве, начинается процесс загрузки DOS. Далее рассмотрен процесс загрузки с жесткого диска. Загрузка с гибкого диска отличается только несколькими первыми этапами, так как структуры гибкого диска несколько отличаются от структур жесткого диска. На гибких дисках невозможно образовать разделы, поэтому на них нет главной загрузочной записи и разделов. Поэтому для гибких дисков пропускается этапы поиска главной загрузочной записи. Вот какие этапы выполняются в процессе загрузки DOS:
- BIOS по окончании своих операций загружает загрузочный код из главной загрузочной записи и передает ему управление. Начинается выполнение кода главной загрузочной записи. Если загрузочным устройством оказывается гибкий диск, процесс продолжается с этапа 6.
- Главный загрузочный код анализирует главную таблицу разделов, отыскивая два объекта. Во-первых, необходимо определить, имеется ли загрузочный раздел, указанный в таблице разделов.
- Если главный загрузочный код находит на диске расширенный раздел, он загружает расширенную таблицу разделов, которая описывает первый логический том в расширенном разделе. Анализируется расширенная таблица - не указывает ли она на другую расширенную таблицу разделов. Если ссылка имеется, то данная таблица содержит информацию о втором логическом томе в расширенном разделе, поэтому она загружается и выполняется. (Напомним, что логические тома в расширенном разделе имеют сцепленные расширенные таблицы разделов.) Этот процесс продолжается до загрузки и опознавания системой всех расширенных разделов.
- После загрузки всей информации о расширенном разделе (если она есть) код пытается загрузить первичный раздел, который отмечен как активный (загрузочный). Если нет разделов, отмеченных как активные, процесс загрузки прекращается с сообщением об ошибке. Часто выдается такое же сообщение, какое выдает BIOS при отсутствии загрузочного устройства, и выглядит примерно так "No boot device" (Нет загрузочного устройства), но может быть и другим "NO ROM BASIC - SYSTEM HALTED".
- Если имеется первичный раздел, отмеченный как активный, код загружает его. Последующие этапы предполагают, что им является первичный раздел DOS.
- Загрузочный сектор тома загружается и проверяется, а содержащемуся в нем загрузочному коду передается управление остальной частью процесса загрузки.
- Загрузочный код тома проверяет правильность структур на диске. Если что-то неверно, процесс загрузки прекращается с сообщением об ошибке.
- Код отыскивает в корневом каталоге загрузочного устройства файлы, содержащие операционную систему. Для MS-DOS - это файлы "IO.SYS", "MSDOS.SYS" и "COMMAND.COM".
- Если файлы операционной системы не найдены, программа загрузки отображает сообщение об ошибке обычно в виде "Non-system disk or disk error - Replace and press any key when ready" (Несистемный диск или дисковая ошибка - Замените и при готовности нажмите любую клавишу).
- Если файлы операционной системы обнаружены, программа загрузки считывает их в память и передает им управление. Эти файлы содержит более полный код операционной системы, который загружает и инициализирует остальные структуры операционной системы. Для MS-DOS это означает загрузку командного интерпретатора, а затем считывание и интерпретацию содержания системных управляющих файлов CONFIG.SYS и AUTOEXEC.BAT.
В этой точке управление РС осуществляет код операционной системы. В случае
операционной системы типа Windows 95 в ходе загрузки начальные файлы
операционной системы управляют загрузкой и выполнением дополнительных процедур.
Просто удивительно, сколько разных элементов кода участвует в процессе запуска
РС.
Вирусы загрузочного сектора
Компьютерные вирусы - это небольшие программы, которые попадают в РС, выполняются без знания об этом пользователя и размножаются" заражая" другие компьютеры. О вирусах, которые могут раздражающими и даже злонамеренными, должен знать и помнить каждый пользователь.
Основной целью для вирусов является загрузочный код, который хранится на жестком диске и выполняется при загрузке с диска. Объяснение этому простое: автор вируса хочет, чтобы вирус выполнялся как можно чаще и быстро размножался. Поэтому загрузочный код, который автоматически выполняется при включении РС и при отсутствии в памяти других программ, является наиболее подходящим местом для вируса.
Вирусы одной из двух главных групп - так называемые инфекторы загрузочного сектора (boot sector infectors) - направлены на искажение важных загрузочных областей жесткого диска. (Вторая основная группа вирусов "нападает" на отдельные файлы.) Некоторые вирусы "заражают" код в главной загрузочной записи, а другие - код в загрузочном секторе тома. Попадая в этот код, вирус гарантирует себе обязательную загрузку в память при загрузке РС с данного тома. На форматированном диске (гибком или жестком) всегда имеется код независимо от наличия или отсутствия системных файлов.
Многие полагают, что при загрузке системы с гибкого или жесткого диска, не имеющего системных файлов (так как они были форматированы без переноса системных файлов), система не загрузится. На самом деле она загружается, но процесс загрузки быстро прекращается из-за отсутствия системных файлов. Фактически сообщение об ошибке "Non-system disk or disk error - Replace and press any key when ready" выводится загрузочным кодом тома, который считан с загрузочного сектора диска.
Важность понимания указанного различия связана с размножением вирусов. Так
как загрузочный код тома всегда выполняется, когда система пытается загрузиться
с устройства, вирус может оказаться на гибком диске, даже если он форматирован
без системных файлов. Как только появилось сообщение "Non-system disk...", вирус
уже может находиться в системной памяти.
Структуры дискового тома файловой системы FAT
Логическими дисковыми структурами высшего уровня являются главная загрузочная
запись и таблицы разделов, которые определяют организацию всего диска. На
следующем уровне находятся структуры определения дискового тома. Именно здесь
находятся файлы и каталоги, хранящиеся на диске. Далее рассмотрены структуры
дискового тома, используемые в файловой системе FAT.
Загрузочный сектор тома
Загрузочный сектор тома (volume boot sector) является "управляющим центром" для
дискового тома. Он имеет информацию о том, что содержит том, и загрузочную
программу тома, которая выполняется при загрузке с тома (если он является
загрузочным).
Таблицы размещения файлов
Структура, которая определяет название файловой системы FAT, - это таблица размещения файлов (File Allocation Table). Чтобы понять то, что делает эта таблица, нужно вначале разобраться, как распределяется дисковое пространство в DOS и производных от нее операционных системах.
Данные на жестком диске хранятся в 512-байтовых секторах, но по причинам производительности отдельные секторы файлам обычно не выделяются. На слежение за такими маленькими фрагментами файлов потребовалось бы много времени и пространства. Вместо этого жесткий диск разбивается на большие единицы, называемые кластерами (clusters) или единицами распределения (allocation units). Каждый кластер содержит несколько секторов. Обычно размер кластеров варьируется от 2048 байтов до 32 768 байтов, что соответствует от четырех до 64 секторов.
Возможный элемент FAT |
Значение |
Последний кластер файла |
FFFFh |
Номер следующего кластера файла |
A3BCh |
Пустой (свободный) кластер |
0000h |
Кластер имеет дефектный секторы |
FFF7h |
В таблице размещения файлов хранится информация о кластерах. Каждый кластер имеет элемент (entry) в FAT, который описывает, как используется кластер. Эта информация сообщает операционной системе, какие участки диска заняты файлами, а какие свободны. Возможные значения элементов для FAT16 (в 16-ричной системе) приведены в таблице. Элементы FAT используются операционной системой для сцепления кластеров с целью размещения файлов на диске.
Когда операционная система участвует в считывании файла, она всегда действует согласно следующей процедуре. Предположим для примера, что файл состоит из четырех кластеров и занимает кластеры с номерами 0442h, 0443h, 0444h и 0448h.
- По адресу файла система находит его элемент в каталоге.
- Из элемента каталога извлекается номер первого (начального) кластера файла - 0442h.
- Система считывает кластер 0442h и по его элементу FAT определяет номер следущего кластера файла - 0443h.
- Система считывает кластер 0443h и по его элементу FAT определяет номер следущего кластера файла - 0444h.
- Система считывает кластер 0444h и по его элементу FAT определяет номер следущего кластера файла - 0448h.
- Система считывает кластер 0448h и по его элементу FAT, который содержит 0FFFFh, узнает, что это последний кластер файла.
Одно из важнейших программ кэширования диска состоит в том, что они
всегда поддерживают копию FAT в памяти RAM. Благодаря этому "карту" дисковых
кластеров можно считать намного быстрее по сравнению со считыванием ее с диска
при обращении к каждому файлу.
Таблицы распределения файлов находятся на участке диска сразу после загрузочного
сектора тома. Фактически каждый том содержит две идентичные копии FAT, причем
вторая копия служит резервом на случай повреждения первой копии. Повреждение FAT
может привести к потере данных, так как в ней зарегистрировано, в каких участках
диска хранятся все файлы. К сожалению, две копии находятся на диске рядом с друг
с другом, поэтому при появлении дефектных секторов в первой копии высока
вероятность того, что будет повреждена и вторая копия FAT.
Файлы, каталоги, пути и дерево каталогов
Основу модели хранения в РС на логическом уровне служит файл. Универсальное понятие файла является одной из сильных сторон файловой системы РС, которая характерна и для других файловых систем, например UNIX. Файл - это набор байтов, хранимых под идентифицирующим его именем. Файл может содержать все: программный код, данные, изображения, фильмы и др. Смысл файлу и его использование определяет его содержание и используемая файл программа.
Во всех операционных системах для PC файлы хранятся с использованием дерева каталогов (directory tree). "Основой" дерева является корневой каталог (root directory). В корневом каталоге можно создать файлы или дополнительные каталоги, называемые подкаталогами (subdirectories). Каждый каталог служит контейнером, который содержит файлы или новые подкаталоги. В целом, структура каталогов и подкаталогов образует логическое дерево.
Каждый файл или каталог на жестком диске можно однозначно идентифицировать с
помощью двух элементов информации: имени файла и
пути (path) по дереву каталогов, который нужно пройти до файла или
каталога. Предположим, что имеется набор файлов с информацией о клиентах,
организованный по регионам. Вся база данных находится в каталоге с именем
"Customers". Внутри этого каталога имеется каталог для каждого штата. Внутри
каждого из каталогов штатов имеется текстовый файл с именем "customer-list.txt".
Тогда файл, содержащий информацию о клиентах из штата Техас, следует адресовать
как "\Customers\Texas\customer-list.txt". Именем файла является
"customer-list.txt", а путем "\Customers\Texas".
Внутренние структуры каталогов
Каждый имеющийся в системе файл хранится в каталоге. Каталог - это просто файл, который специально структурирован и отмечен так, что он имеет особый смысл. Каталог представляет собой таблицу, которая содержит информацию о находящихся в каталоге файлах и подкаталогах и ссылки на то, где эти файлы и подкаталоги находятся на диске.
Каждый элемент в каталоге имеет длину в 32 байта и содержит следующую информацию:
- Имя файла и расширение: Это 11-символьное имя файла в соответствии со стандартом DOS именования 8.3, например COMMAND.COM. Отметим, что "точка" в "COMMAND.COM" подразумевается и фактически на диске не хранится. Поле имени файла применяется также для указания элементов каталога, содержание которых удалено.
- Байт атрибутов файла: Имеется несколько атрибутов, которые операционная система использует для придания конкретным файлам определенного смысла. Атрибуты хранятся в отдельном байте каждого элемента каталога. Отметим, что один из атрибутов показывает, представляет ли элемент каталога "настоящий" файл или подкаталог.
- Дата и время последнего изменения: Для каждого файла имеются поля, показывающие дату и время создания или модификации файла. Отметим, что эти поля может изменить любая программа, поэтому уверенно полагаться на эту информацию не следует.
- Размер файла: Размер файла в байтах.
- Ссылка на начальный кластер: В каталоге хранится номер кластера, в котором начинается файл или подкаталог. Этот номер позволяет операционной системе при необходимости отыскать файл.
Каждый обычный каталог на диске имеет два специальных элемента, которые
ссылаются на сам каталог и на родительский каталог
(parent directory). Они называются "." (одиночная точка) и ".." (двойная точка),
соответственно. Эти элементы применяются для навигации по дереву каталогов; если
ввести команду "chdir ..", то DOS сменит текущий каталог на его родительский
каталог.
Корневой каталог и обычные каталоги
Главным каталогом структуры каталогов, определяющей логическое дерево, которое организует файлы на жестком диске, является корневой каталог (root directory). Корневой каталог оказывается специальным каталогом, потому что он удовлетворяет специальным правилам, неприменимым к другим "обычным" каталогом на жестком диске.
Для каждого дискового тома имеется только один корневой каталог. Чтобы "посадить" дерево каталогов, корневой каталог фиксировано в начале тома DOS. Он находится прямо ниже двух копий таблицы FAT, которая сама находится ниже других ключевых структур диска. Обычные же (под)каталоги могут размещаться в любом месте диска.
Тип тома |
Макс. число
элементов |
Гибкий диск 720 КБ 3.5" |
112 |
Гибкий диск 1.2 МБ 5.25" |
224 |
Гибкий диск 1.44 МБ 3.5" |
224 |
Гибкий диск 2.88 МБ 3.5" |
448 |
Жесткий диск |
512 |
Помимо фиксации позиции у корневого каталога также фиксирован размер. Обычные каталоги могут иметь произвольный размер; они используются так же, как файлы, и когда требуется большее пространство для хранения большего числа элементов, каталог можно расширить аналогично расширению файла. Корневой каталог ограничен конкретным числом элементов, так как он выполняет специальные функции. Число элементов в корневом каталоге зависит от типа тома и максимальные значения числа элементов приведены в таблице.
Отметим, что новая файловая система FAT32 не имеет ограничений на размещение и размер корневого каталога. Здесь корневой каталог считается обычным каталогом и его можно перемещать и расширять так же, как и любой другой каталог.
Имеется еще две особенности корневого каталога. Его нельзя удалить и это
обстоятельство вполне очевидно. Далее, корневой каталог не имеет родительского
каталога, так как он является верхом древовидной структуры. Корневой каталог все
же имеет элемент "..", но вместо указания на номер кластера родительского
каталога, как в обычном каталоге, он содержит пустое значение (нуль).
Имена файлов и расширения
Как известно всем, стандартные файлы РС именуются в соответствии с фиксированным форматом, принятым еще для первого компьютера IBM PC. Имя файла состоит из двух частей:
- Имя файла: Основное имя самого файла. Длина этой части имени файла может быть от одного до восьми символов. Специальный код в качестве первого символа имени файла означает удаленный файл.
- Расширение (имени) файла: Расширение считается необязательным и может содержать от нуля до трех символов.
Расширение можно считать "типом файла". Оно показывает пользователям (и компьютерам), что это за файл. Например, файл с расширением "EXE" обычно является исполняемым (executable) программным файлом, расширение "HTM" обычно показывает HTML-документ, а расширение "BAT" означает пакетный (batch) файл DOS.
Фактически ничего специального в расширениях имен нет. Причина того, что файл EXE обычно является исполняемым файлом, объясняется принятым соглашением, а не каким-то требованием системы. Можно открыть текстовый редактор и ввести фразу "Это проверка", а при сохранении файла указать имя "TEST.EXE" и это вполне допустимо.
Так для чего же применяются расширения файлов? Они служат удобным способом организации файлов по типу и используются различными программами, в том числе и самой DOS, для указания того, какие программы должны использоваться с какими файлами без "заглядывания" в структуру самого файла. Причина указания расширения EXE файлу заключается в том, что DOS запрограммирована на выполнение файлов с таким расширением.
Обычно другие программы по умолчанию пытаются искать только те файлы, расширения которых предназначены для этих программ. Если запустить текстовый процессор Word и перейти в диалоговый бокс "Открыть", по умолчанию он будет искать файлы с расширением "DOC" (от слова "document"). Именно поэтому важно использовать согласованные расширения файлов.
Такое использование расширений файлов приложениями общепринято. Например, если в Windows 95 Windows Explorer (Проводнике) произвести двойной щелчок кнопкой мыши на файле, он автоматически запустит программу, которая, как он знает, использует выбранный файл, и укажет программе открыть файл, на котором произведен двойной щелчок. Нужно только помнить, что Проводник определяет нужную программу только по расширению файла, а не анализируя что-то в самом файле.
В допустимых именах файлов DOS разрешены следующие символы:
A-Z 0-9 $ % ' - _ @ ~ ` ! ( ) ^ # &. Отметим, что пробел официально
допустим в именах файлов, но в стандартных именах файлов применять его не
рекомендуется, так как многие программы путаются с файлами, имеющими в именах
пробелы. Даже Windows 95 избегает использовать пробелы в именах файлов, когда
она создает псевдонимы 8.3 для длинных имен файлов (Long File Name - LFN).
Длинные имена файлов
До появления Windows 95 все имена файлов в DOS и Windows 3.x были ограничены стандартным 8-символьным именем файла и 3-символьным расширением файла. Такое ограничение приводило к появлению запутанных и бестолковых имен. Пользователи хотели именовать свои файлы как "Mega Corporation - fourth quarter results.DOC", а не как "MGCQ4RST.DOC".
Компания Microsoft решила ввести длинные имена файлов (Long Lile Names - LFN) в Windows 95 так же, как это было сделано в Windows NT. Однако Windows NT имеет новую файловую систему, которая с самого начала была рассчитана на длинные имена файлов. При разработке же Windows 95 возникла серьезная проблема: требовалось обеспечить совместимость с существующими дисковыми структурами, старыми версиями DOS и Windows и старыми приложениями. Было невозможно просто выбросить все существующее и начать заново, так как старые программы просто не смогли бы работать с файлами, имеющими новые длинные имена. В каталогах на диске имена файлов были ограничены соглашением "8.3".
Поэтому компании Microsoft потребовался способ реализовать длинные мена файлов таким образом, чтобы соблюдались следующие требования:
- Windows 95 и приложения для Windows 95 могли использовать имена файлов, которые были бы намного длиннее прежних 11 символов.
- Новые длинные имена файлов могли бы ради достижения совместимости храниться в существующих томах DOS с использованием стандартных структур каталогов.
- Вместе с тем старые программы до Windows 95 должны были иметь возможность обращаться к файлам, которые имеют новые длинные имена.
Эти требования удовлетворены в файловой системе VFAT следующим образом. В Windows 95 и в любой программе, написанной под Windows 95, можно присваивать файлам длинные имена до 255 символов (на практике не рекомендуются имена файлов длиннее 100 символов). Поддержка таких длинных имен файлов обеспечивается версией DOS (7.x), которая поставляется с Windows 95. Допускаются расширения файлов для сохранения того способа, каким их используют программы. В длинных именах файлов допускаются дополнительные символы + , ; = [ ].
Чтобы обеспечить доступ к файлам старых программ, каждый файл с длинным именем имеет также псевдоним (alias), или альтернативное имя, в виде стандартного имени файла и этот псевдоним автоматически присваивается файлу. Это осуществляется путем усечения и модификации имени файла следующим образом:
- Расширение длинного имени файла (до трех символов после ".") преобразуется в расширение альтернативного имени файла.
- Анализируются первые шесть непробельных символов длинного имени файла. Все символы, которые допустимы в длинных именах, но не разрешены в стандартных именах (это символы + , ; = [ ]), заменяются на символ подчеркивания. Все строчные буквы преобразуются в прописные. Полученные шесть символов сохраняются как первые шесть символов имени файла.
- Последним двум символам имени файла присваиваются "~1". Если это вызывает конфликт из-за наличия в каталоге файла с таким псевдонимом, то подставляются символы "~2" и т.д. до определения уникального псевдонима.
В приведенном ранее примере файл "Mega Corporation - fourth quarter results.DOC" должен храниться с этим именем, а также с псевдонимом "MEGACO~1.DOC". Если раньше в этом же каталоге был сохранен файл с именем "Mega Corporation - third quarter results.DOC", то для этого файла должен быть псевдоним "MEGACO~1.DOC", а для нового файла - псевдоним "MEGACO~2.DOC". Все старые программы могут обращаться к файлу, используя такое старое имя. Отметим, что применение пробелов в длинных именах файлов не вызывает никаких проблем, так как приложения Windows 95 "знают" об их допустимости, а в коротких псевдонимах пробелы удаляются.
Длинные имена файлов хранятся в обычных каталогах с использованием стандартных элементов каталогов, но с применением специальных приемов. Файловая система Windows 95 создает для файла стандартный элемент каталога, в который помещается короткий псевдоним. Затем она использует несколько дополнительных элементов каталога для хранения длинного имени файла. Одно длинное имя файла может занимать несколько элементов каталога (так как каждый элемент каталога имеет длину всего 32 байта). Поэтому рекомендуется не помещать длинные имена файлов в корневой каталог, в котором ограничено число элементов каталога.
Чтобы старые версии DOS не запутались в таком необычном использовании
элементов каталога, каждый из дополнительных элементов каталога, используемый
для хранения длинного имени файла, отмечается следующей странной комбинацией
атрибутов файла: только считываемый, скрытый, системный и метка тома. Цель
такого приема состоит в том, чтобы старые версии DOS не пытались что-то сделать
с такими элементами длинных имен и не пытались перезаписать их, считая их
свободными. Приведенная комбинация атрибутов файлов заставляет старые программы,
в общем, игнорировать дополнительные элементы каталога, используемые файловой
системой VFAT.
Атрибуты файлов
Каждый файл хранится в каталоге и использует элемент каталога, который описывает такие характеристики файла, как имя и размер, а также содержит указатель на то, где файл хранится на диске. Одной из характеристик, хранимых для каждого файла, является также набор атрибутов файла, который сообщает DOS и приложениям больше информации о файле и его целевом использовании.
Использование атрибутов является "сознательным", т.е. любая программа может "заглянуть" в элемент каталога, чтобы узнать атрибуты файла, и опираясь на них принять обоснованные решения о том, как оперировать файлом. Например, утилита удаления программы управления файлами, встретив файл, отмеченный как только считываемый, должна, по крайней мере, предупредить пользователя перед удалением файла. Однако она не обязана делать этого. Любая программа, которая знает, что делать, может проигнорировать атрибуты файла.
DOS и большинство других операционных систем присваивают определенный смысл атрибутам, хранимым для файлов, и изменяют свое поведение соответственно атрибутам. Если, например, на стимул DOS ввести "DIR" для просмотра файлов в каталоге, по умолчанию не отображаются файлы, которые имеют установленный атрибут "скрытый" (hidden). Для просмотра скрытых файлов необходимо ввести "DIR /AH".
Атрибут |
Битовый код |
Read-Only (только считываемый) |
00000001 |
Hidden (скрытый) |
00000010 |
System (системный) |
00000100 |
Volume Label (метка тома) |
00001000 |
Directory (каталог) |
00010000 |
Archive (архивный) |
00100000 |
Файл может иметь несколько атрибутов, хотя практический смысл имеют только определенные комбинации. Атрибуты хранятся в одном байте и каждый бит байта представляет собой конкретный атрибут (фактически используются только шесть битов). Каждый бит, установленный в единицу, означает, что файл имеет этот атрибут включенным. С помощью такого способа в компьютерах хранятся параметры типа "да/нет" ради экономии пространства. В таблице приведены атрибуты и используемые ими биты в байте атрибутов.
Например, атрибутный байт для скрытого только считываемого каталога имеет вид 00010011, в котором просто "просуммированы" три атрибута из приведенной таблицы. Приведем более подробное описание смысла атрибутов или, точнее, как они обычно используются. Отметим, что каждый из атрибутов применим к файлам и каталогам, за исключением, конечно, атрибута каталога:
- Read-Only (только считываемый): Большинство программ, встретив файл, отмеченный как только считываемый, окажутся удалять или модифицировать его. Например, DOS сообщит "Access denied" (Доступ отвергнут) при попытке удалить только считываемый файл. С другой стороны, Windows Explorer (Проводник) удалит его. Некоторые программы позволяют удалить или модифицировать файл, но после запроса на подтверждение.
- Hidden (скрытый): Если файл отмечен как скрытый, то при обычных обстоятельствах он скрыт от просмотра. DOS не отображает файл по команде "DIR" без указания специального флажка, как показано ранее.
- System (системный): Этот атрибут применяется для отметки важных файлов, которые используются системой и не должны изменяться и удаляться с диска. В сущности, это "более серьезный" атрибут по сравнению с только считываемым.
- Volume Label (метка тома): Каждому дисковому тому можно присвоить идентифицирующую метку при форматировании или впоследствии, например командой "LABEL". Метка тома хранится в корневом каталоге как файл, но с установленным атрибутом метки тома.
- Directory (каталог): Этот атрибут отличает элементы, которые описывают файлы, от элементов, которые описывают подкаталоги внутри текущего каталога.
- Archive (архивный): Этот специальный атрибут используется для взаимодействия приложений, которые модифицируют файлы, и программами резервирования. Большинство программ резервирования предоставляют пользователю возможность выполнять инкрементное резервирование (incremental backup), когда для резервирования выбираются только файлы, изменившиеся после последнего резервирования. Данный бит и применяется для этой цели. Когда программа резервирования резервирует ("архивирует") файл, она сбрасывает бит "архивный" в нуль. Любая программа, которая впоследствии модифицирует файл, должна устанавливать бит "архивный" в единицу. При следующем выполнении программы резервирования она битам "архивный" узнает, какие файлы изменились, и должны резервироваться.
Большинство атрибутов для файлов можно модифицировать с помощью команды DOS
ATTRIB или просмотре свойств файла в Windows 95 Windows Explorer (Проводнике).
Кластеры и размещение файлов
Одна из важнейших функций операционной системы заключается в управлении дисками
и другими запоминающими устройствами (DOS и называется дисковой
операционной системой). Проблема ставится таким образом: имеются диск, способный
хранить определенный объем информации, и множество файлов и каталогов (с
переменными размерами и описаниями), которые должны использовать дисковое
пространство - как же эффективно организовать дисковое пространство и управлять
им? В различных операционных системах применяются разные способы управления
организацией и распределения файлам дискового пространства. В DOS и производных
от нее операционных системах для распределения пространства файлам и управления
использованием каждым дисковым томом применяется файловая система FAT.
Кластеры (единицы распределения)
Напомним, что минимальной единицей дискового пространства, к которой может обратиться программа, является 512-байтовый сектор. Вполне возможно иметь для диска систему распределения, которая выделяет каждому файлу столько секторов, сколько ему требуется. Например, для файла с размером 1 МБ потребуется примерно 2048 отдельных секторов для хранения его данных.
Однако в файловой системе FAT (а фактически в большинстве файловых систем) отдельные секторы не применяются и для этого имеется несколько веских причин, связанных с производительностью. Довольно сложно управлять диском, когда файлы разбиты на 512-байтовые "порции". Например, дисковый том 2 ГБ, в котором для управления используются отдельные секторы, должен содержать более 4 млн отдельных секторов и для слежения за такими многочисленными элементами информации потребуется много времени и ресурсов. Некоторые операционные системы все же распределяют пространство файлам секторами, но для этого в них нужен особый "интеллект". Файловая система FAT разрабатывалась много лет назад и является простой файловой системой, которая неспособна управлять отдельными секторами.
Вместо этого FAT группирует секторы в большие блоки, которые называются кластерами (clusters) или единицами распределения (allocation units). Размер кластера определяется, в основном, размером дискового тома: в общем, чем больше размер тома, тем больше размер кластера. Для томов жесткого диска кластеры занимают от четырех секторов (2048 байтов) до 64 секторов (32 768 байтов). Для гибких дисков применяются намного меньшие кластеры, а иногда кластер состоит всего из одного сектора. Секторы в кластере являются смежными, поэтому каждый кластер представляет собой смежный блок дискового пространства.
Размер кластера (и, следовательно, размер раздела или тома, так как они прямо взаимосвязаны) сильно влияет на производительность и эффективность использования дискового пространства. Размер кластера определяется при организации раздела дискового тома. Некоторые утилиты, например Partition Magic, могут изменять размер кластера существующего раздела (в определенных пределах), но большей частью после создания раздела размер кластера фиксирован.
Размеры дисков и кластеров в FAT16 | |
Размер диска (тома) |
Размер кластера |
< 255 МБ |
8 секторов (4 КБ) |
< 512 МБ |
16 секторов (8 КБ) |
< 1024 МБ |
32 сектора (16 КБ) |
< 2048 МБ |
64 сектора (32 КБ) |
Размеры дисков и кластеров в FAT32 | |
Размер диска (тома) |
Размер кластера |
< 8 ГБ |
8 секторов (4 КБ) |
8 ГБ - 16 ГБ |
16 секторов (8 КБ) |
16 ГБ - 32 ГБ |
32 сектора (16 КБ) |
> 32ГБ |
64 сектора (32 КБ) |
В приведенных таблицах показаны взаимосвязи размера диска (тома) и принимаемого по умолчанию размера кластера в файловых системах и FAT16 FAT32.
Каждому файлу необходимо распределить, или выделить, целое число кластеров
(кластер - это наименьшая единица дискового пространства, которую можно выделить
файлу), поэтому кластеры часто называются еще единицами распределения. Таким
образом, в томе с кластерами по 8192 байта файл с размером 8000 байтов
использует на диске один кластер, а файл с размером 9000 байтов используют два
кластера (16 384 байта на диске). Вот почему размер кластера так важен для
максимизации эффективности использования диска - большие кластеры приводят в
большему пропавшему пространству (wasted space).
Сцепление файлов и распределение кластеров в FAT
Таблица размещения файлов (File Allocation Table - FAT) используется для слежения за тем, какие кластеры выделены каждому файлу. Операционная система (и программные приложения) смогут определить, где находятся данные файла, используя элемент каталога для файла и элементы FAT. Кроме того, FAT следит за тем, какие файлы свободны и доступны для использования. Когда приложению требуется создать или расширить файл, оно запрашивает дополнительные кластеры у операционной системы, которая находит их в таблице размещения файлов.
Для каждого кластера диска имеется элемент в FAT. Каждый элемент содержит значение, которое определяет, каким образом используется кластер. Имеются различные коды, которые применяются для представления возможных состояний кластера.
Каждый занятый файлом кластер содержит в своем элементе FAT номер кластера, который связывает данный кластер со следующим кластером, занятым файлом. Затем этот следующий кластер содержит в своем элементе номер кластера, находящегося после него. Последний занятый файлом кластер отмечается специальным кодом, сообщающим системе о том, что это последний кластер файла; часто им является число 65 535 (16 единиц в двоичном представлении). Поскольку кластеры связаны друг за другом, они называются сцепленными (chained). Рассмотренным способом сцепляется каждый файл, если он, конечно, содержит более одного кластера.
В дополнении к номеру кластера и маркеру конца файла (End-Of-File - EOF) элемент кластера может содержать другие специальные коды, показывающие состояние соответствующего кластера. Специальный, обычно нуль, помещается в элемент FAT каждого свободного (незанятого) кластера. Этим способом операционной системе сообщается, какие файлы доступны для распределения файлам, которым требуется большее дисковое пространство. Еще один код применяется для указания дефектных (bad) кластеров. Это такие кластеры, в которых дисковая утилита (или пользователь) ранее обнаружила один или несколько ненадежных секторов из-за дефектов поверхности диска. Такие кластеры отмечаются как дефектные и в дальнейшем они не привлекаются для хранения данных.
Доступ ко всему файлу производится с использованием комбинации элемента каталога файла и его элементов кластеров в FAT. Подробно доступ описать затруднительно, поэтому рассмотрим пример. Пусть имеется дисковый том с кластерами 4 КБ и в каталоге C:\DATA находится файл "PCGUIDE.HTM" размером 20 000 байтов. Для хранения файла потребуется пять кластеров.
Предположим, далее, что этот файл необходимо открыть для редактирования. Мы открываем текстовый редактор и указываем ему открыть файл. Для нахождения на диске кластера, содержащего первую "порцию" файла система просто обращается к элементу каталога файла и извлекает номер начального кластера; пусть этот номер равен 12 720. Теперь система знает, что необходимо найти на диске кластер с номером 12 720 и загрузить первую порцию файла.
Для нахождения второго кластера, занятого файлом, система обращается к элементу FAT для кластера 12 720. Там находится другое число - номер следующего занятого файлом кластера. Пусть оно равно 12 721. Поэтому следующая порция файла загружается из кластера 12 721 и проверяется элемент FAT для кластера 12 721 для определения следующего занятого кластером файла. Такой процесс продолжается до обнаружения последнего кластера файла. Система проверяет элемент FAT для определения номера следующего кластера, но вместо допустимого номера кластера обнаруживает там специальное число, например 65 535. Оно сигнализирует системе о том, что "больше кластеров в этом файле нет". Система "понимает", что она считала весь файл.
Так как каждый кластер сцепляется со следующим с помощью номера,
необязательно хранить весь файл на диске в одном смежном блоке. Фактически
порции файла могут находиться в любых местах диска и могут даже перемещаться
после создания файла. Прохождения по цепочкам кластеров на диске операционная
система реализует невидимо для пользователя и ему кажется, что весь файл
находится на диске в одном смежном блоке.
Удаление и восстановление файлов
Одно из достоинств файловой системы FAT заключается в простоте восстановления файлов после удаления, которое объясняется способом удаления файлов. Удаление файла не означает физического выбрасывания содержания файла с диска, а система просто отмечает файл как удаленный.
При удалении файла система помещает код E5h на место первого символа имени файла. Он служит своеобразным маркером, указывающим системе "этот файл удален". Пространство, ранее занятое файлом, становится доступным для других файлов, но содержание его не изменяется.
Со временем освобожденные кластеры удаленного файла, в конце концов, окажутся занятыми другими файлами. Однако при случайном удалении файла его часто можно восстановить, если действовать быстро. Если сразу же запустить утилиту UNDELETE (или UNERASE), она сможет идентифицировать и восстановить удаленный файл. При указании ей отсутствующего первого символа имени файла (при удалении он был перезаписан кодом E5h) утилита сможет восстановить большую часть или весь удаленный файл.
Чем меньше времени пройдет между удалением файла и попыткой его
восстановления, тем выше вероятность восстановления файла. Очевидно, после
дефрагментации файла или интенсивной работы с файлами содержание файла будет
потеряно навсегда. Многие утилиты защищают файлы после удаления и их можно легко
восстановить. Например, Windows 95 передает все удаляемые файлы в "Recycle Bin"
(Корзину), из которой их при необходимости можно восстановить.
Фрагментация и дефрагментация
Поскольку каждый файл хранится как связанный список кластеров, содержащиеся в файле данные могут находиться в любом месте диска. Если имеется файл размером 10 МБ на диске с размером кластера 4096 байтов, файл занимает 2560 кластеров. Эти кластеры могут находиться на разных дорожках, на разных дисках (platters) накопителя, т.е. они могут располагаться в любом месте.
Однако "разброс" файла по всему диску оказывается совсем не не достоинством и причиной этого является производительность. Напомним, что жесткие диски - это относительно медленные устройства из-за наличия движущихся частей. Каждый перевод головок на другую дорожку по времени эквивалентен тысячам и тысячам тактов процессора.
Следовательно, необходимо минимизировать степень "разброса" файла по диску. В идеальном случае каждый файл должен быть "непрерывным" (смежным - contiguos), т.е. каждый занятый им кластер должен находиться рядом с другим. Это позволяет считать весь файл без механического перемещения головок. Имеются утилиты, которые оптимизируют диск, перестраивая файлы таким образом, что они становятся смежными. Этот процесс называется дефрагментацией (defragmentation), а реализующие его утилиты называются дефрагментаторами (defragmenters). Наиболее известным дефрагментатором является SpeedDisk, программа DEFRAG для DOS и встроенный дефрагментатор для Windows 95.
Возникает вопрос - а как же возникает фрагментация? Почему нельзя организовать диск так, что все файлы всегда остаются смежными? В большинстве случаев фрагментация развивается как постепенный процесс - файловая система начинается с того, что все или большинство файлов оказываются смежными, а в результате создания и удаления файлов она становится все более и более фрагментированной.
Для иллюстрации этого рассмотрим очень простой пример крошечного жесткого диска, имеющего всего 12 кластеров. Следующая таблица представляет собой использование 12 кластеров. Первоначально таблица пустая:
(кластер 1) |
(кластер 2) |
(кластер 3) |
(кластер 4) |
(кластер 5) |
(кластер 6) |
(кластер 7) |
(кластер 8) |
(кластер 9) |
(кластер 10) |
(кластер 11) |
(кластер 12) |
Предположим теперь, что создаются четыре файла: файл A занимает один кластер, файл B занимает четыре, файл C - два и файл D - три кластера. Файлы сохраняются в свободном пространстве, поэтому все они оказываются смежными
A |
B |
B |
B |
B |
C |
C |
D |
D |
D |
Далее, файл C становится ненужным и он удаляется. После удаления диск выглядит следующим образом:
A |
B |
B |
B |
B |
|
D |
D |
D |
После этого создается новый файл E, которому требуются три кластера. Смежных блоков длиной три кластера на диске нет, поэтому приходится разбивать файл E на два фрагмента, используя часть пространства, прежде занятого файлом С. В результате диск выглядит следующим образом:
A |
B |
B |
B |
B |
E |
E |
D |
D |
D |
E |
После этого удалятся файлы A и E и создается файл F, который занимает пять секторов. Получается такое распределение кластеров:
F |
B |
B |
B |
B |
F |
F |
D |
D |
D |
F |
F |
Как видно, файл F разбит на три фрагмента. Конечно, приведенный пример является очень простым, так как реальные диски имеют тысячи файлов и тысячи кластеров, так что ситуация становится намного сложнее. Однако пример показывает общую идею того, как возникает фрагментация. Программа дефрагментации перестраивает диск таким образом, что файлы возвращаются к смежной форме. После выполнения программы дефрагментации диск принимает следующий вид:
B |
B |
B |
B |
F |
F |
F |
F |
F |
D |
D |
D |
Ошибки файловой системы FAT
Из-за того, каким образом файловая система FAT распределяет пространство и сцепляет файл, со временем в FAT могут появиться некоторые ошибки. Здесь речь идет об ошибках в логической структуре диска, а не о физических ошибках, дефектных секторах и т.п. Большинство рассматриваемых далее ошибок можно обнаружить с помощью стандартной программы контроля диска, например SCANDISK или Norton Disk Doctor (NDD), которая контролирует целостность файловой системы. На практике рекомендуется ежедневно пользоваться подобной программой для каждого дискового тома.
Ошибки файловой системы появляются в результате искажения диска, причиной которого может быть аппаратная проблема. Такие ошибки могут появиться из-за любой системной проблемы, вызывающей искажение диска, например конфликта ресурсов, ошибки в драйвере и т.д. Однако гораздо чаще ошибки файловой системы появляются как результат программной проблемы. Например, в случае краха программы часто остаются кластеры, которым выделено пространство, н они не присвоены файлу.
Аварийное выключение питания на РС с Windows часто приводит к появлению одной или нескольким ошибкам файловой системы из-за того, что файлы не закрыты правильно. Именно поэтому необходимо всегда выходить из Windows перед выключением компьютера. Поэтому же новая версия Windows 95 (OSR2) при запуске автоматически сканирует ошибки на диске, если обнаруживается, что Windows прекращена без правильного завершения работы с файловой системой.
Приведем наиболее распространенные ошибки, встречающиеся на дисках с файловой системой FAT:
- Потерянные кластеры: Практически каждый пользователь DOS встречался с
данной проблемой. Потерянными (и даже "сиротливыми") кластерами называются такие
кластеры, которые отмечены в FAT как занятые, но которые система не смогла
привязать ни к одному файлу. Каждый файл состоит из последовательности
кластеров, которую можно проследить, начиная с элемента каталога и проходя по
связанному списку кластеров до конца файла. Программы контроля диска могут
проверить наличие потерянных кластеров во всем дисковом томе с помощью следующей
процедуры. Вначале создается копия FAT в памяти и отмечаются все занятые
кластеры. Начиная с корневого каталога, необходимо проследить кластеры занятые
каждым файлом и отметить их как "учтенные", так как они привязаны к файлу. Затем
эту операцию следует выполнить для всех подкаталогов корневого каталога, после
этого их подкаталогов и т.д. После этого каждый файл, отмеченный в FAT как
занятый, должен быть и учтенным. Любой кластер, который занят, но не учтен,
оказывается "сиротой", т.е. не принадлежит никакому файлу.
Потерянные кластеры обычно появляются в результате прерванных файловых операций. Программа, которая находит их, обычно предлагает вариант очистки их (отметки их как доступные и возвращения в пул свободного дискового пространства) или сохранения их как файл. Во втором случае программа образует имя файла и привязывает потерянные кластеры к этому имени, а в результате формируется настоящий файл. Обычно этот файл окажется искаженным или поврежденным, но часто можно просмотреть "сиротливые" данные и иногда восстановить их. - Файлы с перекрестными связями: В редких случаях два файла могут указывать на одни и те же дисковые данные. Оба файла имеют одинаковые номера начального кластера в элементах каталога. Это вызывает проблему, так как всякий раз при использовании любого файла будет перезаписываться другой. Единственное решение этой проблемы состоит в том, чтобы образовать новые копии каждого файла. При этом теряется содержание того или другого файла; действительно, к моменту обнаружения этой проблемы уже потеряно содержание одного из файлов, так как ни один из кластеров не может одновременно содержать информацию из двух файлов.
- Неверные файлы или каталоги: Очень редко внутренние структуры файла или каталога могут оказаться поврежденными таким образом, что некоторые элементы не удовлетворяют "правилам" компоновки нового файла или каталога. Например, может появиться каталог, который не имеет указателя на родительский каталог, или файл, который имеет неверный начальный кластер. Иногда файлам ошибочная программа присваивает неверные дату или время. Обычно программа контроля диска позволяет исправить такие ошибки.
- Ошибки распределения или FAT: Иногда элементы FAT могут оказаться искаженными или установленными на неверные значения. По-прежнему, большинство программ контроля диска обнаруживают и исправляют такие ошибки "на лету".
Организация разделов, размеры разделов и буквы накопителей
Организация разделов (partitioning) на жестком диске заключается в разделении его на части - логические тома. Эта операция выполняется при конфигурировании нового жесткого диска, так как разделы являются основными дисковыми структурами, определяющими организацию диска. Фактически выполнять организацию разделов до форматирования и использования диска необходимо даже в том случае, если она сводится к одному разделу.
Размер раздела сильно влияет на производительность и эффективность
использования дискового пространства. Даже несмотря на то, что во многих случаях
можно "втиснуть" весь диск в один раздел, по причинам производительности этого
не делают.
Размеры FAT: FAT12, FAT16 и FAT32
Таблица размещения файлов FAT содержит информацию о кластерах на диске. Имеется три разновидности FAT, различающиеся их размерами. Обычно системная утилита, которая применяется для организации разделов, выбирает правильный тип FAT для используемого тома, но иногда выбор типа предоставляется пользователю.
Так как для каждого кластера имеется элемент в FAT, а эти элементы используются для хранения номера следующего кластера, занятого файлом, размер FAT ограничивает число кластеров, которое может содержать дисковый том. Рассмотрим особенности трех разных вариантов FAT:
- FAT12: В самом старом типе FAT для хранения номера кластера используется 12-битовое число. Максимальное число кластеров тома с FAT12 равно 4086 (с учетом нескольких зарезервированных значений). FAT12 используется для гибких дисков и разделов жестких дисков меньше 16 МБ.
- FAT16: Для хранения номеров кластеров большинства жестких дисков применяются 16-битовые числа и термин "том FAT" обычно подразумевает именно FAT16. Максимальное число кластеров равно 65 526. FAT16 применяется для томов жестких дисков размером от 16 МБ до 2048 МБ.
- FAT32: Эту FAT поддерживают Windows 95 OSR2 и Windows 98. В FAT32 для номеров кластеров применяются 28-битовые числа, так как четыре из 32 битов зарезервированы. Число кластеров превышает 268 млн, а размер раздела может доходить до 2 ТБ. Разумеется, размер самой FAT становится огромным.
Суммарные сведения о вариантах FAT приведены в следующей таблице:
Характеристика |
FAT12 |
FAT16 |
FAT32 |
Применяется для |
Гибких дисков и небольших томов жестких дисков |
Небольших и больших томов жестких дисков |
Средних и очень больших томов жестких дисков |
Размер каждого элемента FAT |
12 битов |
16 битов |
28 битов |
Максимальное число кластеров |
4086 |
65 526 |
~ 268 435 456 |
Размер кластера |
От 0.5 КБ до 4 КБ |
От 2 КБ до 32 КБ |
От 4 КБ до 32 КБ |
Максимальный размер тома |
16 736 256 |
2 147 123 200 |
Примерно 2^41 |
Эффективность раздела FAT
В недавнее время относительно файловой системы FAT привлек внимание вопрос о пропавшем пространстве (slack). По мере выпуска жестких дисков все большей емкости пользователи стали замечать, что значительные объемы дискового пространства как бы "исчезают", особенно в системах без большого числа разделов. Часто "исчезают" буквально сотни мегабайтов.
Разумеется, дисковое пространство реально не исчезает, оно просто пропадает как результат кластерной системой, используемой FAT. Кластер - это минимальное пространство, которое можно выделить любому файлу. В файловой системе FAT ни один файл не может использовать часть кластера.
Таким образом, занятое файлом пространство "округляется" до целого, кратного размеру кластера. Если создать файл, содержащий точно один байт, он все же займет целый кластер. Затем размер этого файла можно увеличивать до достижения им максимального размера кластера, не занимая дополнительного пространства. Как только сделать файл больше одного кластера, ему будет выделен второй кластер и занятое файлом дисковое пространство удваивается, хотя размер файла увеличен всего на один байт.
Так как файлам всегда выделяются целые кластеры, чем больше размер кластера тома, тем большее пространство пропадает. В среднем для каждого файла пропадает половина кластера. Следовательно, при удвоении размера кластера пропавшее пространство удваивается. Незанятый файлом конец последнего кластера называется пропавшим пространством (slack).
Практическая ситуация оказывается даже хуже теоретического среднего. Файлы на большинстве жестких дисков не имеют случайного распределения размеров и многие файлы имеют небольшой размер. (Чтобы убедиться в этом, загляните в каталог кэша Web-броузера.) На жестком диске со множеством небольших файлов пропадает гораздо большее пространство. Имеются утилиты, например Partition Magic, которыми можно воспользоваться для анализа пропавшего пространства на жестком диске. На очень больших дисках в одном разделе FAT может пропасть до 40% пространства, хотя чаще пропадает примерно 25-30%.
Возьмем, к примеру, том жесткого диска, в котором используются кластеры размером 32 КБ. Пусть в разделе содержится 17 000 файлов. Если для каждого файла пропадает половина кластера, то реально это составляет 16 КБ на файл. Умножая на 17 000 файлов, получаем пропавшее пространство в 265 МБ. Если предположить, что большинство файлов имеют небольшой размер и вместо половины кластера для каждого файла пропадает две трети кластера, общее пропавшее пространство составит 354 МБ!
Размер кластера |
50% кластера |
67% кластера |
2 КБ |
17 МБ |
22 МБ |
4 КБ |
33 МБ |
44 МБ |
8 КБ |
66 МБ |
89 МБ |
16 КБ |
133 МБ |
177 МБ |
32 КБ |
265 МБ |
354 МБ |
Если использовать для диска меньший размер кластера, объем пропавшего пространства сильно уменьшается. В таблице приведено сравнение пропавшего пространства при различных размерах кластера. Чем больше файлов на диске, тем больше пропавшее пространство. Для получения относительной величины пропавшего пространства нужно разделить абсолютный показатель на размер диска. Тогда для диска 1.2 ГБ с кластерами 32 КБ пропадает 30% пространства, а для диска 2.1 ГБ - 17%.
Как видно, чем больше размер кластера, тем большее дисковое пространство
пропадает. Следовательно, по возможности следует применять кластеры меньшего
размера. К сожалению, часто это легче сказать, чем сделать. Число используемых
кластеров ограничено файловой системой, а уменьшении размера кластера ведет к
снижению производительности. Поэтому не всегда можно использовать абсолютно
наименьший размер кластера, чтобы максимизировать полезное пространство.
Взаимосвязь размера раздела и размера кластера
Поскольку размер FAT фиксирован, максимальное число кластеров строго ограничено. Максимум зависит от размера FAR, используемой для тома. Для разделов FAT12 имеется только 4086 кластеров, для FAT16 - 65 526 и для FAT32 - сотни миллионов.
FAT12 предназначена для небольших разделов и анализ ее не представляет особого интереса, так как в современных жестких дисках нет разделов размером всего в 16 МБ. С другой стороны, размер FAT32 ограничивается проблемами производительности - нам не нужна FAT со 100 млн элементов, которая значительно снизит производительность.
Вопрос взаимосвязи размера раздела и размера кластера наиболее интересен для FAT16, которая применяется для разделов емкостью от 16 МБ до 2048 МБ. Утилита организации разделов обычно выбирает минимальный размер кластера, чтобы уменьшить пропавшее пространство. Так как FAT16 ограничена общим числом в 65 525, каждый размер кластера определяет максимальный размер раздела, который он может поддерживать. При необходимости сделать раздел больше максимума, необходимо переходить к следующему большему размеру кластера.
Размер кластера |
Макс. размер
раздела |
Макс. размер
раздела |
2 КБ |
127.98 МБ |
134 197 248 |
4 КБ |
255.96 МБ |
268 394 496 |
8 КБ |
511.92 МБ |
536 788 992 |
16 КБ |
1023.84 МБ |
1 073 577 984 |
32 КБ |
2047.69 МБ |
2 147 155 968 |
В таблице приведены ограничения FAT16 на разделы, причем значения равны размеру кластера, умноженному на 65 526. Важно помнить, что поскольку имеется максимум 65 526 кластеров, что меньше 64K (65 536), максимальный размер раздела меньше "округленного" до МБ. Например, максимальный размер раздела для кластеров 8 КБ составляет 511.92 МБ, а не 512 МБ.
Примечание: Windows NT в FAT16 поддерживает размер кластера 64 КБ, допуская максимальный размер раздела 4096 МБ. Объем пропавшего пространства в разделе такого размера просто астрономический, поэтому разделы с кластерами 64 КБ не применятся.
Жесткого минимума для размеров кластеров не накладывается. Например считается, что раздел 512 МБ является минимальным разделом для кластеров 16 КБ, потому что большинство утилит запрограммированы на выбор минимально возможного размера кластера, чтобы уменьшить пропавшее пространство. Например, FDISK для раздела 300 МБ всегда выберет кластер 8 КБ, а не 16 КБ или 32 КБ. Но это не значит, что нельзя иметь раздела 300 МБ с размером кластера 32 КБ - программа Partition Magic позволяет установить такой размер кластера.
Примечание: FAT32 практически не имеет минимального размера: она поддерживается только разделами не меньшими 512 МБ.
Таким образом, при использовании FAT16 (а не FAT32) и наличии диска больше
512 МБ необходимо тщательно выбрать для него число разделов. Для диска больше
1024 МБ настоятельно рекомендуется организовать более двух томов, чтобы
избежать появления огромного пропавшего пространства при использовании кластеров
32 КБ.
Размеры кластеров FAT32 и размеры FAT
Обычно при выборе размера кластера придерживаются правила "чем меньше, тем лучше". Поскольку разделы FAT16 становятся все больше и пропавшее пространство становится просто огромным, намечается повсеместный переход к FAT32 для уменьшения размера кластера. Несмотря на то, что FAT32 позволяет использовать большие жесткие диски и значительно меньшие размеры кластеров, FAT32 ставит серьезные проблемы производительности.
Рассмотрим раздел размером около 2048 МБ, т.е. наибольшего размера, который поддерживает FAT16. Если этот раздел создавать с FAT16, получится таблица распределения файлов с 65 526 кластерами, а каждый кластер занимает 32 КБ. Такой большой размер кластера приведет к значительному пропавшему пространству. Поэтому часто рекомендуется применять для этого тома FAT32, которая уменьшит размер кластера с 32 КБ до 4 КБ. При этом пропавшее пространство сильно уменьшается.
Тип FAT |
FAT16 |
FAT32 |
Размер кластера |
32 КБ |
4 КБ |
Число элементов FAT |
65,526 |
524,208 |
Размер FAT |
~ 128 КБ |
~ 2 МБ |
Однако уменьшение размера кластера не достается "бесплатно". Так как каждый кластер стал меньше, число их для всего диска должно быть больше. Поэтому вместо прежних 65 526 кластеров получается 524 208 кластеров. Более того, элементы FAT32 состоят из четырех байтов в отличие от двухбайтовых элементов FAT16. В результате размер самой FAT становится в 16 раз больше, что показано в таблице.
Хуже того, при увеличении размера тома FAT32 с 2 ГБ до 8 ГБ размер FAT увеличивается с 2 МБ до почти 8 МБ. Дело здесь не в том, что FAT "съедает" несколько мегабайтов дискового пространства (ведь при этом значительно снижается пропавшее пространство), а в том, что при обычной работе РС к FAT производится масса обращений, поскольку она содержит указатели кластеров для всех находящихся на диске файлов. Увеличение размера FAT негативно повлияет на скорость системы.
Почти во всех системах применяется кэширование диска для хранения в памяти дисковых структур, к которым производятся частые обращения, например FAT. Дисковый кэш использует область памяти для хранения информации о диске, которая часто требуется, чтобы каждый раз не считывать ее с диска. Когда FAT невелика, например размером 128 КБ для FAT16, всю FAT можно легко хранить в памяти и всякий раз она оказывается "под рукой". Когда размер таблицы увеличивается, например до 8 МБ, система должна выбирать из двух альтернатив: либо выделять для FAT больше памяти, либо вовсе не хранить ее в памяти.
Поэтому важно стремиться ограничить размер FAT до приемлемого объема. Фактически в большинстве случаев приходится искать баланс между размером FAT и размером кластера. Наглядным примером служат выбираемые самой FAT32 размеры кластеров. Так как FAT32 может оперировать максимум примерно 268 млн кластеров, размер кластера 4 КБ может поддерживать дисковый том размером в 1 ТБ (1024 ГБ). Проблему здесь вызывает только то, что размер FAT при этом должен составлять более 1 ГБ (268 млн элементов с размером четыре байта).
Размер кластера |
"Минимальный"
размер |
"Максимальный"
размер |
4 КБ |
0.5 ГБ |
8 ГБ |
8 КБ |
8 ГБ |
16 ГБ |
16 КБ |
16 ГБ |
32 ГБ |
32 КБ |
32 ГБ |
64 ГБ? |
В силу этого обстоятельства FAT32 использует кластеры 4 КБ только для томов
размером до 8 ГБ, а затем быстро переходит к большим кластерам, как показано в
приведенной таблице. Конечно, кластеры 32 КБ вызывают появление огромного
пропавшего пространства.
Размер |
Кластеры 4 КБ |
Кластеры 8 КБ |
Кластеры 16 КБ |
Кластеры 32 КБ |
8 ГБ |
8 МБ |
4 МБ |
2 МБ |
1 МБ |
16 GB |
16 МБ |
8 МБ |
4 МБ |
2 МБ |
32 GB |
32 МБ |
16 МБ |
8 МБ |
4 МБ |
64 ГБ |
64 МБ |
32 МБ |
16 МБ |
8 МБ |
2 ТБ |
-- |
1024 МБ |
512 МБ |
256 МБ |
В таблице слева показано, как ведет себя размер FAT (в МБ) при увеличение
размера раздела при различных значениях размера кластера. Как видно, FAT32
недолго остается с кластерами 4 КБ, так как при увеличении размера раздела с
сохранением кластера 4 КБ для FAT потребуется огромная память. Жирным шрифтом
приведены значения, выбираемые FAT32 для данного размера раздела. Как видно,
увеличивая размер кластера, компания Microsoft не допускает FAT расти более 8
МБ.
Организация разделов на дисках более 2 ГБ
Организация разделов на диске более 2 ГБ без использования FAT32 для обращения
ко всему диску необходимо разбивать его на разделы, каждый из которых не более 2
ГБ. Если этого не сделать, будет невозможно обратиться более чем первым 2 ГБ
диска. Конечно, для уменьшения пропавшего пространства целесообразно сделать
размер разделов менее 2 ГБ.
Организация разделов для уменьшения пропавшего пространства
Так как пропавшее пространство зависит от размера кластера, используемого для раздела, а размер кластера прямо связан с размером раздела, можно значительно улучшить эффективность использования жесткого диска, просто разбивая его на несколько разделов. Чем больше разделов и чем больше файлов на диске, тем сильнее улучшение. (Это положение относится только к FAT16, так как FAT32 поддерживает диски до 8 ГБ, используя кластеры 4 КБ.)
Размер |
Размер каждого раздела |
Число |
Общее пропавшее |
2 КБ |
128 МБ |
16 |
28 МБ |
4 КБ |
256 МБ |
8 |
56 МБ |
8 КБ |
512 МБ |
4 |
112 МБ |
16 КБ |
1 GB |
2 |
225 МБ |
32 КБ |
2 GB |
1 |
450 МБ |
Рассмотрим пример с диском 2 ГБ. Пусть на диске имеется 24 000 файлов и у каждого пропавшее пространство составляет 60% размера кластера. Рассмотрим различные альтернативы организации разделов - можно оставить диск как есть или разбить его на меньшие части. В таблице показано, каким образом организация разделов влияет на пропавшее пространство. Как видно из таблицы, в случае одного раздела примерно 20% диска пропадает и потерю можно сократить вдвое, просто организуя два раздела. При организации большего числа разделов пропавшее пространство еще более уменьшается. С точки зрения минимизации пропавшего пространства лучше всего организовать разделы по 128 МБ. Но при этом придется использовать 16 разделов! Захотите ли вы распределять файлы по 16 дисковым томам от C: до R:? По-видимому, большинство пользователей этого не захотят.
Таблица показывает наличие компромисса между экономией пропавшего пространства и разбиением диска на большое число малых разделов. Выбор зависит от предназначения диска и личных предпочтений пользователя.
Примечание: Совсем необязательно выбирать размеры разделов точно 256
МБ, 512 МБ или что-то другое; разделы могут иметь любой размер, не превышающий
максимум для данного размера кластера. Поэтому можно организовать на диске 2 ГБ
пять разделов по 400 КБ, но каждый из них должен иметь такой же размер кластера,
как и диск 500 МБ из приведенного примера.
Пропавшее пространство и пространство конца тома
Практический способ уменьшения пропавшего пространства из-за большого размера кластера состоит в разбиении больших дисков на несколько меньших разделов. Если не применять FAT32, нужно поддерживать приемлемый размер кластера и обеспечивать эффективное использование жесткого диска.
К сожалению, некоторые пользователи не придерживаются принципа "слишком много хорошего". Они разбивают свои жесткие диски на огромное число маленьких разделов, полагая, что при этом достигается наилучшее использование дискового пространства. Но при этом помимо запутывания самих себя ("Находится файл на H:? Или это был K:?") они не экономят столько пространства, на какое рассчитывают. Это объясняется тем, что чем меньше дисковый том, тем больший процент его необходимо оставлять пустым, чтобы избежать вероятности нехватки дискового пространства. Нехватка дискового пространства может привести к потере данных, а поддержание диска близко к той точке, где возникает нехватка пространства повышает фрагментацию и снижает производительность в интенсивных дисковых операциях. Иногда пространство, резервируемое для гарантии того, что томам хватит пространства, называется пространством конца тома (end of volume space).
В общем, большинство пользователей имеют "зону комфорта", определяющую, какое свободное дисковое пространство осталось на диск. Если объем свободного пространства оказывается ниже этой зоны, пользователи стараются что-то удалить или приобрести более емкий диск. Проблема заключается в том, что при наличии множества крошечных разделов можно легко получить нехватку пространства в одном разделе при полупустом другом разделе.
Размер |
Размер |
Число |
Типичное общее |
Общее |
Сумма пропавшего |
2 КБ |
128 МБ |
16 |
28 МБ |
320 МБ |
336 МБ |
4 КБ |
256 МБ |
8 |
56 МБ |
160 МБ |
216 МБ |
8 КБ |
512 МБ |
4 |
112 МБ |
80 МБ |
192 МБ |
16 КБ |
1 ГБ |
2 |
225 МБ |
40 МБ |
265 МБ |
32 КБ |
2 ГБ |
1 |
450 МБ |
20 МБ |
470 МБ |
Предположим, что зона комфорта для свободного пространства в конце тома
составляет 20 МБ. Вернемся к прежнему диску 2 ГБ с 24 000 файлами, но сейчас
рассмотрим пространство конца тома. Очевидного и однозначного ответа нет.
Конечно, размер кластера 32 КБ неэффективен, но таким же оказался и размер
кластера 2 КБ. Вместе с тем, наличие многих разделов затрудняет поиск нужных
данных.
Лучшая организация диска
Обычно считают, что применение большого числа разделов помогает поддерживать диск организованным. Например, некоторые пользователи говорят так: "Я сделал восемь разделов по 256 МБ и могу разместить свой код в одном разделе, приложения - в другом, игры - в третьем и т.д. и все окажется в отдельных местах". Вроде бы, это утверждение имеет смысл, но на самом деле это не совсем так.
Тип файла |
Много |
Один раздел |
Системные утилиты |
C: |
C:\UTIL |
Офисные приложения |
D: |
C:\OFFICE |
Игры |
E: |
C:\GAMES |
Данные о клиентах |
F: |
C:\DATA |
Изображения |
G: |
C:\IMAGES |
Звуковые файлы |
H: |
C:\SOUNDS |
Объяснение довольно простое: все, что можно организовать с помощью разделов и букв накопителей, можно даже лучше организовать с помощью древовидной структуры каталогов. Посмотрите два способа, показанные в таблице. Все, что можно проделать с отдельными буквами, можно получить, применяя структуру каталогов. Действительно, разве "C:\IMAGES" не более содержательно по сравнению с буквой "G:", которая не более содержательна, чем "H:" или любая другая буква.
Но есть и еще одна серьезная причина избегать множества разделов и эта причина - гибкость. Если на диске 2 ГБ имеется восемь разделов по 256 МБ, предназначенных для конкретных применений, что делать, когда, например, раздел для игр заполняется? Большинство пользователей найдет пустой раздел и поместит туда "лишние" игры, например в раздел звуковых файлов. После интенсивного аудиоредактирования появятся "лишние" звуковые файлы, которые придется помещать в раздел для изображений. В результате возникнет такая мешанина, что отыскать нужные файлы будет очень сложно.
Таким образом, с точки зрения организации и гибкости лучше иметь один большой
раздел. Единственная причина, оправдывающая использование нескольких разделов -
уменьшение пропавшего пространства.
Специализированные разделы и другие проблемы организации разделов
Бывают обстоятельства, когда требуется создать меньшие, чем обычно, разделы, когда нужно выделить раздел для конкретного применения или обеспечить нахождение раздела в конкретном месте диска. Приведем несколько дополнительных проблем, которые приходится решать при организации разделов на диске:
- Размещение раздела: В большинстве современных накопителей применяется зонная запись, т.е. на внешних дорожках хранится большее данных, чем на внутренних. В результате внешние дорожки оказываются несколько более производительными по сравнению с внутренними. Так как внешние дорожки занимаются первыми, первый раздел на томе физического диска будет несколько быстрее последующих разделов. Следовательно, файлы, работа с которыми требует более высокой производительности, целесообразно поместить в раздел, находящийся в начале диска.
- Специализированные разделы: На практике возникают ситуации, когда имеет смысл выделить раздел для конкретного применения. Наглядным примером специализации раздела служит раздел для файла своппинга виртуальной памяти, который используется в мультизадачных операционных системах. Этот файл очень важен, так как интенсивно привлекается в определенных видах обработки, поэтому возможность управлять точными свойствами и расположением раздела с этим файлом имеет важное значение.
- Размеры кластеров для специализированных разделов: Конечно, наличие конкретных разделов для определенных типов файлов уменьшает гибкость, но иногда это имеет смысл. При интенсивной работе с огромными мультимедийными файлами можно специально установить большее значение размера файла. При работе с большими кластерами снижаются служебные потери - последовательное считывание файла 10 МБ из тома с кластерами 32 КБ требует поиска в FAT 319 "следующих кластеров", а в случае тома с кластерами 2 КБ - число поисков возрастает до 5119. Кроме того, при использовании больших кластеров несколько уменьшается фрагментация.
Отмеченные особенности показывают, что в двухдисковом РС идеальным местом для
файла своппинга Windows 95 оказывается специализированный раздел в начале
второго диска. Для него можно выделить 63 МБ и определить размер кластера 32 МБ,
хотя обычно для такого раздела принимается размер кластера 2 КБ.
Присваивание букв накопителей и выбор первичного и логических разделов
Обращения к дисковым томам, использующим файловую систему FAT под DOS или производными от нее операционными системами производятся по буквам накопителей, например C:, D: и т.д. Однако вопрос об определении этих букв несколько запутан. При наличии большего числа дисков и разделов трудности понимания определения букв накопителей возрастают. Может случиться, что при модернизации РС путем добавления жесткого диска некоторые файлы будут перемещены из накопителя D:, например, в накопитель E:. Это объясняется тем, что DOS присваивает буквы накопителей при загрузке РС в конкретной последовательности. Буквы не постоянно присвоены накопителям, поэтому добавление новых томов жестких дисков может нарушить предыдущий порядок.
Буквы A: и B: зарезервированы для гибких дисков. Первым накопителем, как определено физической конфигурацией накопителей, является накопитель A:, а вторым - накопитель B:. Даже при наличии в системе только одного гибкого диска буква B: все равно зарезервирована для гибких дисков и не может применяться для других целей.
Буквы жестким дискам присваиваются, начиная с C:, и каждый раздел получает отдельную букву. Важно отметить, что DOS будет вначале присваивать буквы всем первичным разделам DOS на всех жестких дисках в РС до присваивания букв всем логическим томам DOS (в расширенных разделах DOS) на любом жестком диске. Именно поэтому добавление жесткого диска в существующую систему может вызвать "сдвиг" букв.
Раздел |
До |
После |
Жесткий диск 1: Первичный раздел |
C: |
C: |
Жесткий диск 1: Логические разделы |
D:, E: |
E:, F: |
Жесткий диск 2: Первичный раздел |
-- |
D: |
Жесткий диск 2: Логические разделы |
-- |
G: |
Рассмотрим систему, которая содержит один жесткий диск 1.2 ГБ, разбитый на три раздела. Первый раздел является первичным разделом DOS, а затем определен расширенный раздел, содержащий другие два раздела как логические тома. Первичный раздел будет накопителем C:, а два других - накопителями D: и E:. Теперь предположим, что добавлен второй жесткий диск, который имеет два раздела - один первичный и второй логический (расширенный). При загрузке системы с новым жестким диском первичный раздел первого жесткого диска останется накопителем C:, но первичный раздел второго жесткого диска получит букву D:. Затем буквы присваиваются расширенным разделам. В результате буквы логических разделов на первом жестком диске оказываются "сдвинутыми", как показано в таблице.
Изменение букв накопителей не только запутывает пользователя, но и может привести к краху программ, поскольку многие программы регистрируют, на каком диске и в каком каталоге они находятся и ожидают, что их местонахождение остается постоянным.
Имеется относительно простой способ избежать ситуации с изменением букв: не создавать первичных разделов ни на одном жестком диске кроме первого. Вполне допустимо создать на диске только расширенный раздел и поместить в него все разделы. Первичный раздел абсолютно необходим только на первом жестком диске, так как он требуется для загрузки операционной системы. Обычно невозможно произвести загрузку из тома расширенного раздела (хотя некоторые материнские платы позволяют сделать это).
Примечание: При создании на диске только расширенных разделов теряется некоторое дисковое пространство. Расширенный раздел начинается с использованием (логического) цилиндра 1 диска, поэтому теряется пространство цилиндра 0. Потеря нескольких мегабайтов неизбежна, чтобы сохранить правильный порядок разделов.
Поэтому в приведенном примере, если на втором жестком диске оба раздела определены как логические, им будут присвоены буквы F: и G:, а разделы первого жесткого диска останутся неизменными. Именно таким образом и следует организовывать разделы на втором и третьем жестких дисках в РС.
После присваивания букв разделам жесткого диска система будет распределять буквы для других устройств, которыми управляют драйверы. Такие устройства, как накопители CD-ROM, накопители Zip и др., работают под управлением программных драйверов, которые представляют устройство системе так, как будто он является диском, и для обращения к устройству ему должна быть присвоена буква накопителя. Обычно этим устройствам присваивается буква сразу за последней буквой для жестких дисков, но ее можно изменить с помощью параметров драйвера. Например, букву на накопителя CD-ROM под Windows 95 можно определить программно с помощью Device Manager.
Наконец, некоторые программы могут изменять буквы накопителей. Наглядным
примером служат утилиты сжатия диска, например DriveSpace. Часто они берут
жесткий диск, например D:, изменяют его букву, например на R:, создают на R:
сжатый том, а затем отображают сжатый том вновь на D:. В конечном результате
диск сжимается, но представляется несжатым.
Программы организации разделов и форматирования дисков
Все современные операционные системы поставляются с полным набором утилит для организации разделов и форматирования как гибких, так и жестких дисков. Утилиты для операционных систем, использующих файловую систему FAT, практически не изменились за последние годы, поэтому при работе с DOS, Windows 3.x или Windows 95 применятся старый набор утилит DOS. Далее кратко рассмотрены основные утилиты, которые применятся для настройки жестких дисков.
Предупреждение: Все утилиты организации разделов и форматирования
жесткого диска работают на физическом уровне. При их использовании всегда
имеется шанс потери данных. Поэтому настоятельно рекомендуется вначале
обязательно произвести полное резервирование.
Утилита FDISK
В DOS для настройки разделов жесткого диска предназначена утилита (программа) FDISK (по-видимому, от слов fixed disk - это старое название жесткого диска). FDISK применяется только для разделов DOS (FAT) и позволяет выполнить следующие операции:
- Создать разделы: FDISK позволяет создать первичный раздел DOS или логические тома DOS. Конечно, для создания логического тома DOS необходимо вначале создать расширенный раздел DOS, так как логические тома содержатся внутри расширенного раздела.
- Установить активный раздел: Можно использовать FDISK для установки активного первичного раздела жесткого диска, чтобы иметь возможность запустить РС.
- Удалить разделы: FDISK позволяет также удалять разделы. Это фактически единственный способ изменить размер раздела в FDISK: удалить старый раздел и создать новый раздел с новым размером. При необходимости изменить с помощью FDISK размер первичного раздела DOS необходимо удалить на диске все разделы FAT на диске и начать все сначала ...
- Показать информацию о разделах: Последняя опция FDISK позволяет отобразить информацию о разделах в системе. Вначале отображаются сведения о первичном и расширенном разделах, а затем FDISK запрашивает о необходимости просмотра логических накопителей внутри расширенного раздела. Для просмотра информации достаточно ввести "FDISK /STATUS" в командной строке DOS.
Приведем несколько важных моментов, которые нужно помнит при использовании программы FDISK:
- Будьте внимательны: При неумелом обращении FDISK может уничтожить часть или все содержание жесткого диска. Применять ее нужно только при необходимости и отчетливо понимая все свои действия.
- Выполнять программу из DOS: Windows 95 позволяет выполнить FDISK прямо в среде графического пользовательского интерфейса и даже тогда, когда открыты и выполняются другие приложения. Поскольку FDISK изменяет критические дисковые структуры на самом нижнем уровне, запуск ее при наличии открытых файлов и других приложений, использующих диск, вызовет неприятности. Рекомендуется всегда выходить в DOS (рестарт компьютера в режиме MS-DOS) до применения FDISK; однако команда "FDISK /STATUS" безопасно работает в окне DOS в Windows 95.
- Поддержка FAT32: Версия FDISK в Windows 95 OSR2 поддерживает создание разделов, которые используют улучшенную файловую систему FAT32 для больших томов. Однако в этой программе явно система FAT32 не упоминается. Вместо этого при запуске FDISK в системе с Windows 95 OSR2 и наличии диска емкостью более 512 МБ (минимум для использования FAT32) появляется сообщение с вопросом о "разрешении поддержки большого диска". При ответе "Y" все создаваемые в данной сессии новые разделы будут разделами FAT32.
Примечание: Рекомендуется включить FDISK как одну из программ на загрузочный гибкий диск. В этом случае ее можно использовать при конфигурировании новых жестких дисков.
Несмотря на свою важность, FDISK все же оказывается довольно примитивной программой, с которой трудно работать. Все доступные в FDISK операции можно легко выполнить с помощью программ третьих компаний, например Partition Magic. Программа FDISK не позволяет выбирать и изменять размеры кластеров, изменять размеры разделов, перемещать разделы и т.п. Главное достоинство FDISK состоит в том, что она является бесплатной (точнее, встроенной).
В Windows NT для конфигурирования жестких дисков применяется программа Disk
Administrator. Практически она представляет собой улучшенный вариант FDISK,
который позволяет не только оперировать разделами, но и обращаться к некоторым
уникальным средствам Windows NT управления дисками. Например, с помощью Disk
Administrator можно создать программный RAID-массив.
Программа FORMAT
Программа FORMAT применяется для форматирования гибких и жестких дисков. Многие не понимают, что эта программа работает по-разному для гибких и жестких дисков. Имеются два вида форматирования: форматирование низкого уровня и форматирование высокого уровня. Для гибких дисков программа FORMAT выполняет оба вида форматирования, а для жестких дисков - только форматирование высокого уровня, так как форматирование низкого уровня жестких дисков производится при их изготовлении.
Для команды FORMAT имеется множество параметров, которые можно посмотреть,
вводя команду "FORMAT /?" в командной строке DOS. Большинство параметров
определяют различные опции форматирования для различных типов гибких дисков.
Важным параметром является флажок "/S", который указывает FORMAT сделать
форматируемый том загрузочным. Это осуществляется путем создания необходимых
дисковых структур и копирования файлов операционной системы в корневой каталог
нового тома.
Программа SYS
Обычно файлы операционной системы, превращающие жесткий диск в загрузочный, помещаются в начале диска при форматировании высокого уровня загрузочного тома с помощью команды FORMAT (с параметром /S). Однако можно "превратить" в загрузочный существующий диск с помощью команды SYS. Эта команда копирует файлы операционной системы с того тома, с которого загружалась система (гибкого или жесткого диска) на целевой том.
Обычно SYS применяется для создания загрузочных гибких дисков из
незагрузочных дисков. Она также иного используется для обновления версий DOS на
жестких дисках; нужно загрузить с гибкого диска новую версию DOS, а затем с
помощью SYS передать файлы новой операционной системы на жесткий диск.
Операционная система Windows 95 выполняет эти действия автоматически и не
требует выполнения операции вручную.
Утилита Partition Magic
Утилита Partition Magic компании PowerQuest предназначена для управления дисками, без которой не может обойтись ни один серьезный пользователь РС. Она выполняет все, что должна была бы делать, но не делает, программа FDISK, а также многое другое. Отметим динамическое изменение размеров разделов без потери данных, изменение размеров кластеров, копирование разделов с одного диска на другой и т.л. Подробнее об этой утилите можно узнать на сайте http://www.powerquest.com/. Компания Quarterdeck (http://www.quarterdeck.com/qdeck/products/partit/) предлагает аналогичную утилиту под названием Partition-It.
Версия Partition Magic 3.x поддерживает файловую систему FAT32. Так как FAT32 стала доступной только в Windows OSR2, предназначенной для инсталлирования на новых компьютерах, компания Microsoft не предлагает средств для преобразования существующих разделов FAT16 в разделы FAT32. Программа Partition Magic 3.х позволяет сделать это.
Предупреждение: Некоторые операции Partition Magic, например изменение
размеров разделов или кластеров, выполняются довольно долго, поэтому при
аппаратном отказе можно потерять данные. Поэтому до производства всех операций с
разделами необходимо зарезервировать все данные, а также подключить
бесперебойный источник питания. Это предупреждение относится к FDISK и всем
другим программам, работающими с диском на нижнем уровне, но так как FDISK
обычно применяется к пустым дискам, потеря данных в этом случае исключена.
Сжатие дисков
Конечно, сейчас происходит постоянное снижение удельной стоимости жестких
дисков, но было время, когда во многих РС применялись различные способы сжатия
дисков из-за их невысокой емкости и дороговизны жестких дисков. Всего несколько
лет назад в большинстве РС были жесткие диски емкостью 100 - 400 МБ. Сжатие
позволяет хранить больше информации в одном и том же дисковом пространстве,
используя специальные программы, которые реорганизуют хранимую на диске
информацию. Имеются также аппаратные способы сжатия, но они обычно не применятся
для томов жестких дисков.
Как действует сжатие дисков
Сжатие дисков опирается на две особенности большинства файлов. Во-первых, большинство файлов содержит значительный объем избыточной информации, т.е. повторяющиеся наборы. С помощью специальных маркеров (placeholders), которые меньше представляемых ими наборов, можно сократить размер файла.
Рассмотрим, например, предложение: "In fact, there are many theories to explain the origin of man.". При внимательном рассмотрении нетрудно заметить, что цепочка " the" (пробел и "the") встречается в предложении три раза. Программа сжатия может заменить эту цепочку на маркер (token), например "#", и сохранить фразу в виде "In fact,#re are many#ories to explain# origin of man.". При считывании файла программа произведет обратное преобразование "#" в цепочку " the". Программа может также заменить цепочку " man" на "$" и уменьшить предложение до "In fact,#re are$y#ories to explain# origin of$.". Простая замена всего двух наборов уменьшает размер предложения на 24%. По существу, мы привели простейший пример того, что может сделать алгоритм сжатия, применяя большое число наборов и правил.
Вторая особенность большинства файлов, которая используется для сжатия дисков, заключается в том, что хотя каждый символ в файле занимает один байт, большинство символов не требуют для хранения их полного байта. Каждый байт может содержать одно из 256 значений, но если имеется текстовый файл, в нем будут очень длинные последовательности, содержащие только цифры, буквы и знаки пунктуации. Программы сжатия используют специальные формулы для упаковки такой информации, как текст, таким образом, что полностью используются 256 значений, которые может содержать каждый байт.
Совместное использование этих двух особенностей приводит к тому, что текстовые файлы часто сжимаются в два (2:1) или даже в три (3:1) раза. Файлы данных часто сжимаются еще больше: если посмотреть файлы электронных таблиц или баз данных, в них можно увидеть длинные последовательности пробелов и нулей: иногда сотни и тысячи подряд. Такие файлы часто можно сжать в семь, десять и даже более раз.
Наконец, сжатие полезно также для уменьшения пропавшего пространства (slack).
Если на жестком диске с размером кластера 16 384 байта имеется 1000 файлов
размером 500 байтов каждый, то в результате более 16 МБ дискового пространства
используется для хранения всего 500 КБ данных. Действительно, каждому файлу
приходится выделять один полный кластер и только 500 байтов их 16 384 фактически
содержат данные - все остальное приходится на пропавшее пространство. Если
собрать все файлы в один сжатый файл, например ZIP-файл, они не только сильно
сожмутся в размере, но сам ZIP-файл будет иметь максимум 16 383 байта пропавшего
пространства, что значительно экономит дисковое пространство. Расширенные
возможности упаковки тома Drive Space 3 позволяют уменьшить пропавшее
пространство даже в том случае, если сжатие не разрешено.
Типы сжатия
Имеется несколько способов сжатия файлов на жестком диске. Мы рассмотрим логические механизмы выполнения сжатия и распаковки, а не сами алгоритмы сжатия. Имеется множество различных алгоритмов сжатия, но детали выполнения собственно сжатия полностью скрыты от пользователя. Сжатие в РС реализуется тремя основными способами.
- Сжатие файлов с помощью утилиты: Это очень популярный способ сжатия диска, используемый практически каждым пользователем независимо от того, понимает он это или нет. Здесь файлы сжимаются специальной утилитой, причем она часто применяется для сжатия одного или нескольких файлов в сжатый файл, обычно называемый архивом (archive). Для распаковки сжатого файла привлекается другая аналогичная утилита. Операционная система ничего не знает о сжатии и для нее сжатый файл выглядит просто еще одним файлом. Конечно, для использования сжатого файла его необходимо распаковать. Наиболее известной утилитой является пакет PKZIP и его производные, например WinZip. Практически все программы и большие файлы, загружаемые из Internet, используют разновидность такого сжатия.
- Сжатие файлов операционной системой: Сжатие файлов на индивидуальной основе не поддерживает файловая система с FAT, используемая DOS и большинством версий Windows, н некоторые операционные системы поддерживают такой способ сжатия. Например, Windows NT поддерживает такую возможность при использовании файловой системы NTFS. Во многих отношениях это наилучший тип сжатия, так как он оказывается автоматическим (распаковку производит операционная система, когда файл нужен программе) и обеспечивает полное управление типами сжимаемых файлов).
- Сжатие тома: В отличие от сжатия отдельных файлов большинство новых операционных систем позволят создавать целые сжатые тома. Сжатие осуществляется с помощью утилит в составе операционной системы или пакетами третьих компаний. Сжатие тома позволяет экономить дисковое пространство, не сжимая отдельные файлы. Каждый файл, копируемый на сжатый том, автоматически сжимается и каждый файл автоматически распаковывается, когда его запросит любая программа. Сжатие тома прозрачно для пользователей и хорошо работает в большинстве РС.
Из приведенных способов сжатие с помощью утилиты широко распространено, но
является относительно простым; с помощью одной программы пользователь создает
сжатый файл, а с помощью другой просматривает его. С точки зрения операционной
системы сжатые файлы и утилиты аналогичны другим файлам и программам на диске: в
принципе не отличаясь, например, от текстового процессора и файла документа
текстового процессора. С другой стороны, сжатие тома оказывается несколько
сложнее. В частности, до применения сжатия тома необходимо учесть проблемы
производительности, безопасности и совместимости.
Операция сжатия тома
Сжатие дискового тома осуществляется путем создания виртуального тома (virtual volume). По существу, в системе создается программно-управляемый том, а специальные драйверы представляют его как физический жесткий диск. Чего-то радикально нового в этом способе нет, так как многие устройства используют программные драйверы, позволяющие им выглядеть для системы накопителем со своей буквой.
Вот что делает программа создания сжатого тома:
- Программа запрашивает пользователя, какой реальный дисковый раздел использовать для хранения сжатого тома. Этот раздел иногда называется хост-томом (host volume) или хост-разделом (host partition). Программа запросит также, следует ли сжимать существующие данные в этом томе или использовать для создания нового сжатого тома пустое пространство тома.
- Целевой дисковый том готовится для сжатия, для чего проверяются логические ошибки файловой структуры, например потерянные кластеры, а также ошибки считывания секторов на диске. Если диск сильно фрагментирован, может потребоваться выполнить дефрагментацию, так как сжатый том должен быть смежным блоком на диске.
- На жестком диске создается специальный файл, называемый файлом сжатого тома (Compressed Volume File - CVF). Именно этот файл содержит сжатый том. Если сжатый том создается из пустого пространства, файл CVF записывается прямо на жесткий диск и в нем создаются необходимые для работы внутренние структуры. Если сжатый том создается из существующего диска с находящимися в нем файлами у программы может не оказаться достаточного свободного пространства для создания полного CVF. Она создаст меньший файл, передаст в него некоторые файлы с сжимаемого диска, а затем использует ранее занятое этими файлами пространство для увеличения размера CVF. Эта процедура продолжается до сжатия всего диска и может длиться довольно долго.
- Файл CVF скрывается от просмотра с помощью специальных атрибутов файла. Инсталлируются специальные драйверы, которые представят файл CVF как новый логический дисковый том при следующей перезагрузке системы. Это иногда называется монтированием (mounting) CVF по аналогии с физическим действием монтирования физического диска.
При использовании сжатия вы увидите, что сжатый том фактически является просто гигантским файлом на реальном жестком диске. Иногда можно использовать оба диска. Например, при наличии в системе жесткого диска 340 МБ можно разбить диск, создавая сжатый накопитель с буквой D: из пространства 150 МБ накопителя C:. Тогда на диске C: остаются свободными 190 МБ и образуется файл сжатого тома емкостью 150 МБ. Драйверы сжатия образуют логический накопитель D: из файла сжатого до 150 МБ.
Обычно программа сжатия допускает замену, или подстановку, (substitution) сжатого тома вместо хост-тома, из которого он образован. Обычно это делается при создании файла CVF, который занимает целый дисковый раздел. Предположим, имеется жесткий диск емкостью 540 МБ с разделами 300 МБ C: и 240 МБ D: и требуется сжать весь раздел D:. Обычно программа сжатия после создания файла CVF, занимающего весь D:, отображает хост-накопитель D: на "более высокую букву", например H:, а затем заставляет CVF появиться вместо D:. Этим обеспечивается "бесшовное" сжатие жесткого диска с сохранением его прежнего буквенного адреса.
Предупреждение: Не рекомендуется производить данную операцию с загрузочным разделом диска C: даже несмотря на то, что программа DriveSpace иногда рекомендует сделать это по умолчанию. Лучше создать отдельный сжатый том и оставить загрузочный том как есть, чтобы при появлении проблемы система могла более просто произвести загрузку.
Предупреждение: Если удалить файл сжатого тома с хост-накопителя,
можете представить себе, что произойдет с сжатым томом? Никогда не делайте
этого!
Программы для сжатия тома
Имеются две основные популярные программы для сжатия тома в DOS и Windows. Первая - это программа DriveSpace (ранее называлась DoubleSpace) компании Microsoft, которая имеет несколько версий и различные версии для DOS и Windows. Вторая программа Stacker компании Stac Electronics (http://www.stac.com). Каждая из этих программ хорошо работает со сжатыми томами, но имеет свои достоинства или недостатки.
У каждого пользователя имеются свои предпочтения, но все же по причинам
совместимости целесообразнее применять программу упаковки и операционную систему
одного поставщика. В этом случае всегда можно быть уверенным в том, что сжатие
полностью поддерживается операционной системой. В этом отношении для
операционной системы Windows 95 можно рекомендовать программу DriveSpace 3.
Свободное пространство, оцениваемые и фактические коэффициенты сжатия
Один из источников путаницы при использовании сжатых дисковых томов связан с объемом свободного пространства, сообщаемого для накопителя. Оно изменяется, причем иногда самым неожиданным образом, по мере заполнения сжатого диска, в зависимости от того, как сжимаются помещаемые в том файлы. Причина здесь простая: свободное пространство на реальном дисковом томе легко оценивается путем подсчета числа свободных кластеров в таблице размещения файлов и умножения найденного числа на размер кластера. В сжатом томе мы не узнаем свободное пространство, не зная, что помещается в том, так как некоторые сжимаются очень сильно, а другие почти не сжимаются.
Фактически отчет о свободном дисковом пространстве сжатого тома является только оценкой (estimation). С каждым сжатым томом ассоциируется число, называемое оцениваемым коэффициентом сжатия (estimated compression ratio), с помощью которого драйвер сжатого тома сообщает, насколько хорошо сжимаются файлы в данном томе. Это число можно устанавливать для каждого тома и в идеальном случае оно должно оцениваться по фактическому коэффициенту сжатия тома (actual compression ratio), который том использует с текущими файлами. Поскольку этот коэффициент потенциально привлекателен для пользователей, многие утилиты сжатия принимают его по умолчанию примерно 2:1, хотя обычно для дискового тома такое значение на практике почти недостижимо. Обычные значения коэффициента сжатия составляет от 1.6 до 1.8, хотя, конечно, они зависят от того, что сжимается.
На основе оцениваемого коэффициента сжатия система будет определять оцениваемый объем свободного пространства, умножая несжатое свободное пространство на оцениваемый коэффициент сжатия. Именно это значение и сообщается как свободное пространство накопителя. Если изменить оцениваемый коэффициент сжатия, отчет о свободном пространстве диска также изменится; практически же емкость сжатого тома не изменяется.
Как только файл копируется на сжатый диск, он сжимается с той скоростью, какую программа сжатия обеспечивает для данного типа файла. Огромный текстовый текстовый файл может быть сжат с коэффициентом 3:1, а ZIP-файл, который уже сжат, не сжимается совсем. Объем пространства, занимаемого реальными файлами, будет варьироваться, поэтому объем свободного пространства будет изменяться в зависимости от типов файлов.
Емкость |
Используемое |
Свободное |
Общая |
Несжатая общая (внутри CVF) |
0 МБ |
500 МБ |
500 МБ |
Коэффициент сжатия |
-- |
2:1 |
2:1 |
Сжатая общая |
0 МБ |
1000 МБ |
1000 МБ |
Предположим, что имеется пустой жесткий диск емкостью 500 МБ, который необходимо сжать. Мы запускаем программу DriveSpace 3 и она устанавливает на хост-диске файл CVF с размером 500 МБ и создает новый сжатый накопитель с буквой F:. Если проверить F:, мы увидим свободное пространство 1000 МБ, потому что по умолчанию принимается оцениваемый коэффициент сжатия 2:1. Конечно, он может изменяться: но мы пока оставим его равным 2:1. В таблице слева показано, как выглядит диск.
Емкость |
Используемое |
Свободное |
Общая |
Несжатая общая (внутри CVF) |
80 МБ |
420 МБ |
500 МБ |
Коэффициент сжатия |
1.25:1 |
2:1 |
1.88:1 |
Сжатая общая |
100 МБ |
840 МБ |
940 МБ |
Таким образом, мы имеем 500 МБ "свободного" пространства на хост-диске в файле CVF и 1000 МБ пространства на упакованном диске в предположении нашего коэффициента сжатия 2:1. Теперь предположим, что мы копирует на этот пустой диск файл размером 100 МБ, который сжимается плохо - с коэффициентом сжатия от 1.25:1. Следовательно, мы займем не 50 МБ реального пространства CVF, как было бы при коэффициенте сжатия 2:1, а 80 МБ (100, деленное на 1.25). Вид нашего диска показан в таблице.
Как видно из примера, общая емкость 500 МБ для файла CVF всегда остается той же самой (если не изменять размера тома). Но мы "потеряли" 60 МБ из упакованного тома; теперь он имеет свободное пространство 840 МБ вместо 900 МБ, что можно было бы ожидать после копирования файла размером 100 МБ. Фактически это означает, что невозможно сжать файл с ожидаемым коэффициентом сжатия 2:1.
Емкость |
Используемое |
Свободное |
Общая |
Несжатая общая (внутри CVF) |
125 МБ |
375 МБ |
500 МБ |
Коэффициент сжатия |
2.24:1 |
2:1 |
2.06:1 |
Сжатая общая |
280 МБ |
750 МБ |
1030 МБ |
Теперь предположим, что мы копируем на сжатый диск еще один файл, например файл базы данных размером 180 МБ, который сжимается с коэффициентом сжатия 4:1. Этот файл займет только 45 МБ в файле CVF, а не 90 МБ, которые получаются для тома с коэффициентом сжатия 2:1. Получающийся результат приведен в таблице.
После сохранения этого файла общие емкости увеличились, потому что он
занимает намного меньше места, чем мы "ожидали". Фактически наш сжатый том
теперь "больше" по сравнению с тем, с чего мы начинали! Конечно, мы привели
предельный пример, он наглядно показывает, почему свободное пространство на
сжатом диске варьируется. Довольно часто возникает ситуация, когда пользователь
определяет сжатый диск 1000 МБ и начинает копировать на него огромные ZIP-файлы.
Помните, что эти файлы уже сжатые и больше не сжимаются. Как только будет
скопировано около 500 МБ ZIP-файлов на сжатый том указанного размера, он будет
заполнен.
Уменьшение пропавшего пространства с помощью сжатия тома
Пропавшее пространство (slack) - это пространство, которое пропадает из-за того, что не используется память в конце больших кластеров. Когда на диске с большим размером кластера хранится много файлов, пропадает большое дисковое пространство. Один из способов уменьшения этого пространства заключается в использовании утилиты для создания архивного ZIP-файла, например, содержащего все файлы. Однако в этом случае к файлам обратиться будет непросто.
Программы сжатия тома, например DriveSpace 3, фактически могут экономить дисковое пространство с помощью уменьшения пропавшего пространства даже тогда, когда не настроены на сжатие файлов. Внутренне DriveSpace 3 сжимает накопители, распределяя место для файлов по секторам. Размер сектора 512 байтов эффективнее размера кластера, поэтому в одном кластере можно хранить несколько файлов, а не один, как при обычном хранении файлов.
Некоторые пользователи инсталлируют тома DriveSpace 3 ради получения только
этого преимущества. Программу можно конфигурировать так, что файлы фактически не
сжимаются (чтобы не терять производительности из-за необходимости распаковки),
но все дисковое пространство экономится благодаря уменьшению пропавшего
пространства. Однако все же сохраняется определенный риск использования сжатого
тома и расходуется память на драйвер сжатого тома, который должен работать, даже
если сжатие не определено.
Уровень сжатия и проблемы производительности
Большинство программ сжатия предоставляют пользователю возможность управления объемом сжатия для тома и даже позволяют определить конкретные типы файлов (по расширениям имен файлов), которые сжимать не нужно. В общем, чем больше сжимать том, тем больше файлов можно поместить на диск, но тем больше алгоритмы сжатия снижают производительность из-за необходимости сжатия. Степень снижения зависит от нескольких факторов, но сильнее всего зависит от скорости системы. Медленный процессор может привести к тому, что сжатие приведет к значительному снижению производительности, а быстрый процессор благодаря сжатию может иногда повысить производительность.
Но разве возможно повысить производительность благодаря сжатию? Рассмотрим две копии одного и того же файла размером 100 МБ; одна копия не сжата, а вторая сжата с коэффициентом сжатия 2:1 и обе копии находятся в томе одного и того же жесткого диска. Предположим, что необходимо проверить каждый байт в обоих файлах. Можно считывать несжатый файл по байтам с высокой скоростью, так как не нужно расходовать время на распаковку. Однако с диска приходится считывать в два раза больше байтов, так как файл занимает в два раза большее дисковое пространство. С другой стороны, сжатый файл занимает только 50 МБ физических секторов, а не 100 МБ.
Напомним, что обращения к жесткому диску производятся намного медленнее, чем к памяти, чипсету и другим электронным компонентам РС. Поэтому устраняя необходимость считывать с диска 50 МБ, можно сэкономить больше времени по сравнению с временем, необходимым на распаковку! Таким образом, при наличии быстрого процессора, который расходует много времени на ожидание данных с медленного жесткого диска, можно с помощью сжатия повысить производительность при обработке некоторых типов файлов.
Важным фактором оказывается то, насколько система быстрее по сравнению с жестким диском. Если процессор быстрый, а жесткий диск медленный, производительность повышается. Но если процессор медленный, а жесткий диск быстрый, сжатие вызовет заметное замедление. В общем, использование сжатия на РС класса 486 ведет к заметному снижению производительности.
Наконец, имеются некоторые типы файлов, которые просто не подходят для сжатых
дисков. При наличии множества больших ZIP-файлов их не следует размещать в
упакованном томе: они уже сжаты и сжатие тома не сможет уменьшить их размеры.
Это же относится и к большинству мультимедийных файлов, например изображений в
формате JPEG или GIF, так как они также являются сжатыми. Хранение таких файлов
в сжатом томе делает неверными все оценки свободного пространства, так как они
займут намного больше места, чем сжимаемые файлы таких же размеров.
Память для драйверов сжатия
Сжатые тома работают только при наличии драйвера сжатия, который должен быть загружен до использования сжатого диска. Для сжатых томов систем DOS или Windows 95 возникает одна проблема - драйвер оказывается большим и может "съесть" значительную часть стандартной (conventional) памяти.
Обычно для старых версий DOS применяется утилита DriveSpace 2 (или DoubleSpace), а для Windows 95 используется DriveSpace 3. Под DOS драйвер DriveSpace 2 можно загрузить в блок верхней памяти (Upper Memory Block - UMB) для уменьшения занимаемой стандартной памяти и этот драйвер не особенно большой. Под Windows 95 драйвер DriveSpace 3 большой, но система имеет драйверы сжатия для защищенного режима, которые работают в расширенной памяти, поэтому проблема стандартной памяти для драйвера не возникает.
Настоящая проблема возникает, когда Windows 95 переводится в режим MS-DOS; в
этом режиме драйвер DriveSpace реального режима необходимо загрузить в
стандартную память, а он оказывается довольно большим. Простого решения этой
проблемы не существует. Хорошее управление стандартной памятью может снять
остроту этой проблемы, но не может устранить ее полностью.
Вопросы совместимости и надежности при сжатии тома
Имеется несколько причин того, что сейчас сжатие не столь популярно, как это было в прошлом. Одной из них является постоянное снижение удельной стоимости жестких дисков. Вторая причина связана с снижением производительности. Однако самая главная причина состоит в надежности и безопасности сжатия диска.
Относительно совместимости - опыт многих пользователей показывает, что особых трудностей сжатие дисков не вызывает. Фактически большинство проблем с программами, работающими на сжатых дисках, возникают из-за нехватки стандартной памяти, которая требуется для драйвера сжатия, или снижения производительности из-за необходимости распаковки. Последнее обстоятельство может повлиять на некоторые программы, которые требуют высокой производительности. Почти все обычные программы "видят" сжатый том просто как еще один диск и все современные утилиты прекрасно работают со сжатыми томами. Если программа не рассчитана на использование сжатых дисков, об этом обязательно сообщается в инструкции.
Некоторые программы правильно не работают со сжатым томом просто потому, что не могут допустить потенциальной задержки на распаковку данных. Эта задержка зависит от алгоритма сжатия и других факторов. Некоторым программам требуется непрерываемый поток данных с жесткого диска и наглядным примером служит утилита записи на компакт-диск. Данные таких приложений необходимо размещать в несжатом томе.
При использовании сжатых томов повышается риск катастрофической потери данных. Причиной этого оказывается наличие дополнительного слоя программной интерпретации и дополнительный уровень дисковых структур, которые потенциально могут быть повреждены. Весь сжатый том хранится как один реальный файл CVF и при повреждении или случайном удалении этого файла теряются все файлы сжатого тома. Однако сейчас применять сжатые тома довольно безопасно. Тем не менее, следует придерживаться следующих общих рекомендаций:
- Никогда не сжимать загрузочный накопитель: На диске С: находятся все важные дисковые структуры и операционная система, поэтому лучше не сжимать этот накопитель. Кроме того, в этом случае можно запустить систему без драйвера сжатия, если в этом возникнет необходимость, и проще решать проблемы с вирусами.
- Сжимать приложения, а не данные: Рекомендуется сжимать те объекты, которые в случае потери легко восстановить, например инсталлированные программы и особенно игры. Сжимать разделы данных нецелесообразно.
- Регулярно сканировать возможные проблемы: Те же утилиты, которые применяются для сканирования обычных дисковых накопителей, можно использовать для сканирования сжатых томов и их необходимо регулярно выполнять.
- Регулярно резервировать: Если резервировать жесткий диск каждую неделю и хранить важные данные в несжатых разделах, можно совсем не бояться сжатия.
При аккуратном и внимательном использовании сжатие в определенных обстоятельствах имеет ценность. Конечно, для современных жестких дисках гигантской емкости и при продолжающемся снижении удельной стоимости сжатие может "кануть в Лету". Однако сжатие позволит использовать на старых РС с небольшими дисками более новые программные продукты.
Примечание: Система Windows NT несовместима с традиционными сжатыми
томами. Разумеется, Windows NT обеспечивает отличное сжатие файлов при
использовании улучшенной файловой системы NTFS.