Более того: одна и та же ОС может поддерживать работу нескольких разнотипных файловых систем. Скажем, для перезаписываемых компакт-дисков в настоящее время используется пять (!) различных типов файловых систем. Так о чем же пойдет речь в данном разделе?
   Вначале мы рассмотрим особенности организации файловых систем, используемых при работе с жесткими дисками в среде ОС Windows 98 и Windows XP. Причем с той стороны, которая обращена к «железу».
   Затем мы подойдем к файловой системе с другой стороны, то есть со стороны папок и файлов. И поговорим о тех параметрах, которые призваны защищать пользователя от «глупых», «дурацких» и тому подобных ошибок в работе с данными.

Организация хранения данных на жестком диске

   В процессе создания на жестком диске файловой системы определенного типа выполняется логическое форматирование диска. Полученная логическая структура зависит, с одной стороны, от особенностей файловой системы, а с другой – от физической структуры диска.
   Физическая структура жесткого диска
   Жесткий диск хранит информацию блоками фиксированного размера, которые называются секторами. Сектор (sector) является наименьшей порцией данных, имеющей уникальный адрес на жестком диске. Размер сектора стандартный для всех жестких дисков и составляет 512 байт. Для ускорения доступа к данным поверхность диска разделена на концентрические дорожки (track). Сектор, соответственно, является частью дорожки.
   Поскольку каждый жесткий диск – это «слоеный пирог» из нескольких дисков, то совокупность дорожек, одинаково удаленных от центра на всех рабочих поверхностях дисков, образует так называемый цилиндр (cylinder). В свою очередь, каждая рабочая поверхность диска «обслуживается» отдельной магнитной головкой. Поэтому часть дискового пространства, соответствующую одной рабочей поверхности, называют головкой (head) (рис. 3.3).
Рис. 3.3. Физическая структура жесткого диска
   Таким образом, общая емкость диска (V) вычисляется как произведение четырех сомножителей: числа цилиндров (С), количества секторов на одной дорожке (S), размера одного сектора (512) и числа головок (H):
   V = C х S х 512 х H.
   В соответствии с ограничениями BIOS предыдущего поколения и контроллеров жестких дисков для кодирования номера цилиндра выделяется 10 двоичных разрядов, для кодирования номера головки – 4 разряда, и для номера сектора – 6 разрядов.
   В результате максимальное адресуемое пространство жесткого диска при использовании трех координат (номер цилиндра, номер головки, номер сектора) ограничено значением 528 Мбайт:
   (210 = 1024 цилиндра) х (24 = 16 головок) х (26-1 = 63 сектора) х х 512 байт = 528 Мбайт.
   Такой способ адресации получил обозначение CHS (Cylinder, Head, Sector); сейчас он обычно именуется «обычным» режимом адресации – Normal, и под таким именем используется, в частности, в параметрах BIOS.
   ПРИМЕЧАНИЕ
   Обратите внимание, что первый сектор в адресном пространстве CHS имеет номер 1, то есть CHS-адрес этого сектора – (0, 0, 1).
   До появления жестких дисков большой емкости (более 528 Мбайт) проблем с адресацией данных на диске не возникало.
   Однако с появлением дисков большего объема система адресации CHS была заменена линейной адресацией – LBA (Logical Block Addressing, адресация логических блоков), в которой используется «сквозная» нумерация секторов (блоков) по всем цилиндрам и головкам:
   LBA = (Cylinder х Heads + Head) х Sectors + (Sector – 1).
   В приведенной выше формуле использованы следующие обозначения:
   Cylinder – номер цилиндра;
   Heads – количество головок диска;
   Head – номер головки, к которой относится адресуемый блок;
   Sectors – количество секторов на дорожке;
   Sector – номер адресуемого блока (сектора) на дорожке.
   При этом нумерация логических блоков начинается с нуля, то есть логический блок с номером 0 в адресации LBA соответствует первому сектору в адресном пространстве CHS (то есть сектору с адресом (0, 0, 1)).
   Таким образом, логический блок – это сектор, пронумерованный в соответствии с адресацией LBA.
   ПРИМЕЧАНИЕ
   При увеличении номера блока в первую очередь меняется номер сектора, потом номер головки, потом номер цилиндра. Отсюда следует, что цилиндры – это самые большие области смежных блоков данных. По этой причине цилиндры являются границами, по которым выравниваются разделы при их создании «вручную» (точнее, с помощью низкоуровневых редакторов дисков).
   Благодаря объединению всех двоичных разрядов адреса в номер логического блока адресация LBA позволила увеличить поддерживаемую емкость дисков до 2 Тбайт, а также более гибко изменять размер кластера в зависимости от размера диска.
   Кластер (Cluster) – это минимальный участок памяти на диске, который может быть выделен файловой системой при создании файла. Физически кластер представляет собой несколько смежных секторов, число которых должно быть равно степени 2 (то есть кластер может включать 1, 2, 4, 8, 16, 32 или даже 64 сектора).
   ПРИМЕЧАНИЕ ____________________
   Кластеры нумеруются в пределах одного логического диска, Первый кластер логического диска имеет номер 0. Для каждого логического диска пользователем может быть задан свой размер кластера. Понятие «логический диск» рассмотрено ниже.
   Размер кластера существенно влияет на эффективность использования дискового пространства. Например, если размер кластера составляет 32 Кбайт, это означает, что самый маленький файл (скажем, одна буква «Я») будет занимать на диске 32 Кбайт.
   При работе с файловой системой (FAT32 или NTFS) пользователь может на этапе логического форматирования диска выбрать размер кластера с учетом емкости диска, задав соответствующий параметр в программе форматирования. В табл. 3.1 приведены возможные варианты.
   Существует и еще один метод адресации дискового пространства – LARGE. Он применяется для тех дисков большого объема, которые не поддерживают режим LBA. Метод LARGE заключается в следующем. Если число цилиндров диска превосходит предельное значение 1024, то выбирается коэффициент К, при делении на который оно становится меньше или равно 1024. Например, если число цилиндров больше 1024 и меньше 2048, то К будет равен 2; если число цилиндров лежит в диапазоне от 2048 до 4096, то Кравен 4, и т. д. выбирается равным степени 2). Число головок диска, наоборот, умножается на выбранный коэффициент К. Это не приведет к выходу за пределы адресного пространства, поскольку появление 32-разрядных операционных систем позволило выделять для нумерации головок 8 разрядов вместо 4 (соответственно, максимальный номер головки может быть равен 28 – 1 = 255).
   Недостаток метода LARGE состоит в том, что в некоторых версиях BIOS могут использоваться свои алгоритмы пересчета параметров диска, отличающиеся от описанного выше. Вследствие этого жесткий диск на компьютерах с разными BIOS может в режиме LARGE иметь различную геометрию, а это, в свою очередь, может вызвать потерю записанных на диске данных.
   Узнать применяемый метод адресации и геометрию установленных на компьютере жестких дисков можно с помощью программы BIOS Setup (рис. 3.4).
   Рис. 3.4. Метод адресации и геометрию жестких дисков можно узнать с помощью BIOS Setup
 
   Формирование физической структуры диска, то есть разбиение его на дорожки, цилиндры и секторы, выполняется на этапе низкоуровневого (физического) форматирования. В настоящее время такая операция выполняется производителями дисков, и в большинстве случаев физическая структура не может быть изменена пользователем. В отличие от логической структуры, к описанию которой мы переходим.

Логическая структура жесткого диска

   Логическое форматирование жесткого диска выполняется пользователем либо с помощью стандартных (служебных) утилит, поставляемых вместе с операционной системой, либо с помощью специальных сервисных программ от сторонних производителей. Рекомендации по выбору и применению таких программ приведены в разделе «Создание логических дисков и изменение их атрибутов».
   В любом случае логическое форматирование диска производится в два этапа:
   ♦ разбиение диска на разделы;
   ♦ создание логических дисков и их форматирование.
   Сначала о том, что такое раздел и какие существуют типы разделов.
   Раздел (Partition) – это часть физического диска, которая после форматирова– ния может использоваться файловой системой как отдельное устройство (исключение составляет так называемый дополнительный раздел, о котором сказано ниже). В простейшем случае весь жесткий диск может быть представлен един– ственным разделом. Особенности использования и допустимые операции по работе с разделом зависят от его типа.
   Различают следующие типы разделов.
   ♦ Основной раздел (Primary Partition), который иногда называют «первичным» разделом, – это часть физического диска, с которой можно работать как с отдельным физическим устройством. Важнейшей особенностью основного раздела является то, что только с раздела такого типа может производиться загрузка операционной системы. Каждый основной раздел имеет собственное имя – букву диска. На одном физическом диске с главной загрузочной записью (о ней будет сказано ниже) можно создать до четырех основных разделов либо три основных раздела и один дополнительный раздел с несколькими логическими дисками.
   ♦ Дополнительный раздел (Extended Partition), который иногда не очень правильно называют «расширенным», – это специальный раздел, который создается (точнее, может быть создан) на жестком диске с целью преодоления ограничений на максимально допустимое число основных разделов. В отличие от основного раздела, дополнительный раздел не требуется форматировать и ему не назначается буква диска. Вместо этого на дополнительном разделе создается один или несколько логических дисков.
   ♦ Логический диск – это часть дополнительного раздела, с которой можно работать как с отдельным устройством. Логический диск должен быть отформатирован и ему должна быть присвоена буква диска. Число создаваемых логи– ческих дисков не ограничено (ограничен лишь их суммарный объем: он не должен превышать размера дополнительного раздела, на котором создаются диски). Правда, реальное число доступных логических дисков ограничено числом 26, то есть длиной английского алфавита.
   Каждому основному разделу, создаваемому на физическом диске, также ставится в соответствие логический диск. И в дальнейшем операционная система работает именно с логическими дисками, не «опускаясь» до уровня секторов и цилиндров, с которыми работает BIOS.
   ПРИМЕЧАНИЕ
   Для большей определенности логические диски, соответствующие основным разделам, в документации Windows именуются томами.
   И так, на каждом физическом жестком диске компьютера может быть создано несколько разделов, с которых возможна загрузка операционных систем. Причем допустима ситуация, когда на разных томах установлены разнотипные операционные системы.
   Возможна и такая конфигурация, при которой компоненты одной ОС распределены по нескольким дискам. В связи с этим введем еще два понятия.
   Системный раздел – это раздел, содержащий файлы операционной системы.
   Загрузочный раздел – это раздел, содержащий файлы, необходимые для загрузки операционной системы.
   ПРИМЕЧАНИЕ
   По какой-то загадочной причине в документации Windows системные тома именуются загрузочными и наоборот. В соответствии с этой документацией системный том содержит файлыподдержки оборудования, необходимые для загрузки Windows, а на загрузочном томе размещаются файлыоперационной системыWindows. Причем загрузочный том не обязательно является системным (каково, а?!). Основным признаком системного диска для ОС можно считать наличие в его корневой папке файла boot.ini, который содержит параметрыпроцедурызагрузки установленных ОС. Подробнее о роли файла boot.ini в процессе загрузки системыи поддержании ее работоспособности рассказано в главе 5.
   В конфигурации компьютера может иметься несколько загрузочных разделов (например, один – для загрузки Windows 98, второй – для загрузки Windows XP, третий – для загрузки Linux).
   Чтобы BIOS могла определить, с какого именно раздела должна выполняться загрузка при включении компьютера, используется признак активности раздела.
   Активный раздел – основной раздел, с которого производится загрузка ОС при включении компьютера. Признак активности устанавливается для раздела при его создании, но может быть впоследствии установлен для другого раздела.
   Теперь несколько слов о том, как организована и где хранится информация о созданных разделах.
   На этапе разбиения диска на разделы в первый сектор диска (цилиндр 0, головка 0, сектор 1) записывается служебная информация, которая, собственно, и делает возможным дальнейшее применение диска «по назначению»:
   в начало сектора помещается так называемая главная загрузочная запись – Master Boot Record (MBR). Она содержит программу начальной загрузки BIOS (ROM Bootstrap routine), которая считывает и загружает в оперативную память первый физический сектор активного раздела диска, называемый загрузочным сектором (Boot Sector);
   после MBR, начиная с адреса 1BE (в шестнадцатеричном коде), создается таблица разделов (Partition Table), состоящая из 4 строк по 16 байт каждая (вот с чем связано ограничение в 4 основных раздела). Каждая запись в таблице разделов содержит адрес начала и размер раздела на жестком диске, а также информацию о том, является ли раздел активным.
   В свою очередь, каждый раздел (кроме дополнительного) также имеет в своем составе служебную область, в которую обязательно входит загрузочная запись раздела – Boot Record (BR). Загрузочные записи логических дисков, входящих в состав дополнительного раздела, помещаются в каждый из них.
   Загрузочная запись раздела (и логического диска) располагается в его первом секторе. Как и MBR, она содержит программу загрузки. Только в данном случае имеется в виду загрузка ОС, установленной на данном диске. Если диск не является системным, то при попытке загрузиться с него программа загрузки выдаст сообщение об ошибке.
   Кроме того, в BR логического диска имеется своя (дополнительная) таблица разделов, EPT (Extended Partition Table). Если дополнительный раздел содержит несколько логических дисков, то EPT каждого логического диска (кроме последнего) содержит ссылку на EPT следующего логического диска.
   Состав других компонентов, относящихся к служебной области раздела (логического диска), зависит от типа файловой системы, под которую он отформатирован.

Хранение данных в файловой системе FAT32

   Файловая система FAT32 предназначена для хранения данных на жестких дисках и поддерживается операционными системами Windows 98/ME, Windows 2000/XP и Windows 2000/2003 Server. Структура FAT32 унаследована ею от файловой системы FAT, применявшейся в MS DOS.
   Логическая структура диска в FAT32
   Аббревиатура FAT означает File Allocation Table (таблица размещения файлов). Эта таблица хранит информацию о папках и файлах, имеющихся на жестком диске, и является одним из основных компонентов файловой системы. Число 32 указывает на разрядность чисел, используемых для нумерации элементов данных на диске. Очевидно, что чем «длиннее» число, тем большее количество элементов данных можно пронумеровать с его помощью. Теоретически FAT32 может работать с томами емкостью 2 Тбайт.
   К служебным компонентам FAT32 относятся:
   загрузочная запись раздела – Boot Record (BR);
   таблица размещения файлов (FAT);
   корневой каталог.
   После служебной области располагается область данных (рис. 3.5).
   ПРИМЕЧАНИЕ
   В секторе под номером 6 (от начала раздела с файловой системой FAT32) хранится резервная копия загрузочной записи раздела. В других версиях файловой системыFAT типа FAT12 и FAT16 резервная копия BR отсутствует.
   Рис. 3.5. Логическая структура раздела файловой системы FAT32
 
   Таблица размещения файлов (FAT), которая дала название целому семейству файловых систем, хранит сведения о распределении файлов по кластерам из области данных. Ее структура достаточно проста: таблица содержит однотипные ячейки по числу кластеров в области данных раздела. Содержимое каждой ячейки определяет, занят ли соответствующий кластер или свободен. Если кластер занят (то есть выделен под какой-либо файл), то в ячейке хранится ссылка на следующий кластер, отданный этому файлу. В ячейке, соответствующей последнему кластеру файла, записывается признак конца файла (EOF – End Of File, «конец файла»).
   Почему возникает необходимость связывать ссылками кластеры одного файла, вместо того чтобы разместить данные в соседних кластерах? Если бы файлы записывались на диск последовательно и ни один из них впоследствии не удалялся или не изменялся бы в размере, то так бы, вероятно, и было. Однако после удаления файла его кластеры распределяются под новый файл, размер которого будет, скорее всего, другим. Если новый файл окажется больше предыдущего, то его «хвост» придется дописывать на другой свободный участок. Если же новый файл окажется меньше, то после его записи останется «дыра», которую файловая система отдаст при случае следующему файлу. Очевидно, что уже после месяца интенсивной работы с файлами дисковое пространство будет напоминать своеобразные пазлы (puzzle), сложить которые в цельную картину без участия FAT не получится (рис. 3.6).
   ПРИМЕЧАНИЕ
   Освобождение и повторное использование дискового пространства приводит к так называемой фрагментации диска, о которой пойдет речь в подразделе «Обслуживание дисков» данной главы. Более подробно структура таблицы размещения файлов рассматривается в разделе «Восстановление структуры файловой системы» главы 5.
   Для повышения надежности хранения данных каждый раздел содержит две копии FAT, которые можно условно обозначить как FAT1 и FAT2. Запись информации в обе копии выполняется автоматически, и так же автоматически файловая система переходит к работе с FAT2, если прочитать FAT1 не удается. Однако сравнение содержимого таблиц не производится, и если они различаются, то определить, какая из них «правильная», можно только «методом дедукции».
   Рис. 3.6. Пример распределения пространства раздела
   Корневой каталог содержит описание записанных в нем файлов (имя, атрибуты, номер первого кластера файла) и, по сути, ничем не отличается от любого другого каталога (папки), созданного на диске. Особое внимание к корневому каталогу в FAT32 можно считать традицией, унаследованной от предыдущих версий файловой системы (FAT12 и FAT16).
   Корневой каталог в FAT32, в отличие от ее предшественницы FAT16, может располагаться не «впритык» к FAT2, а в произвольной позиции области данных. Ссылка на номер первого кластера корневого каталога хранится в загрузочной записи раздела. Благодаря предоставленной «свободе» корневой каталог в FAT32 может при необходимости расширяться (в FAT16 его размер фиксирован и он не может содержать более 512 записей).
   Из всего сказанного выше следует вывод, весьма важный с точки зрения проблемы сохранения и восстановления данных: создание нескольких логических устройств даже при наличии единственного физического диска позволяет повысить надежность хранения данных. Разумеется, если вы знаете, как именно использовать такую возможность.

Настраиваемые параметры FAT32

   При форматировании раздела или логического диска под файловую систему FAT32 пользователь может выбирать значение размера кластера. Этот параметр весьма важен не только с точки зрения рационального использования пространства диска, но и с точки зрения эффективности операций по восстановлению данных.
   Дело в том, что успешность восстановления данных существенно зависит от соотношения размера кластера и среднего размера записываемых на диск файлов. Если выбрать размер кластера, примерно равный среднему размеру файлов (с некоторым запасом), то велика вероятность того, что файл будет «умещаться» в одном кластере. Восстановить такой файл значительно проще, чем состоящий из десятка кластеров, разбросанных по всему диску.
   С другой стороны, чем больше размер кластера, тем сложнее файловой системе отыскать на диске свободный участок, достаточный для размещения непрерывной цепочки кластеров. Соответственно увеличение размера кластера повышает вероятность быстрой фрагментации диска. Поэтому кластеры большого размера целесообразно использовать для таких дисков (разделов), на которые предполагается записывать редко изменяемые файлы большого размера, например файлы с мультимедийными (видео– или аудио-) данными.
   Чтобы оценить возможные потери дискового пространства для различных размеров кластера, можно воспользоваться утилитой, которая входит в состав программы Norton PartitionMagic (подробнее о ней рассказано в следующем разделе, «Инструменты для работы с разделами дисков»). Утилита, о которой идет речь, позволяет изменить размер кластера выбранного раздела, но предварительно предлагает оценить выбранное решение (рис. 3.7).
Рис. 3.7. Влияние размера кластера на потери дискового пространства

Хранение данных в файловой системе NTFS

   Файловая система NTFS (New Technology File System) была разработана для операционной системы Windows NT, а ее обновленные версии используются в ОС Windows 2000/XP.
   Поскольку в качестве «посредника» при работе с жестким диском NTFS использует все ту же BIOS, то физическая структура диска для нее безразлична.
   А вот логическая структура диска, которая необходима NTFS для корректной работы, принципиально отличается от используемой файловыми системами из семейства FAT.
   Все особенности NTFS обусловлены тем, что она изначально разрабатывалась как система повышенной надежности, предназначенная для использования в корпоративных (многопользовательских) системах. Соответственно, реализованные в ней технические решения направлены на повышение защищенности данных от несанкционированного доступа и на обеспечение отказоустойчивости системы. Кроме того, в ней учтены потребности работы с большими объемами данных. Учтена в NTFS также особенность организации вычислений в операционных системах семейства NT, основанная на понятии потока (stream) и на объектно-ориентированной идеологии. В частности, файл рассматривается в NTFS как объект с некоторым набором атрибутов. Например, имя файла – это его атрибут, содержимое файла – это также его атрибут. Приложение, работающее с файлом, может создавать для него любые дополнительные атрибуты.
   Отказоустойчивость (а точнее, способность к самовосстановлению) NTFS основана на использовании понятия транзакции. Суть технологии восстановления состоит в следующем. Любая операция, связанная с модификацией данных, заносится в файл протокола. Если все действия, необходимые для выполнения операции, завершаются удачно, транзакция считается выполненной. В противном случае на основе протокола выполняется отмена частично выполненной операции.
   Кроме того, с периодичностью в несколько секунд NTFS фиксирует текущее состояние системы, запоминая его основные параметры в так называемой контрольной точке. В случае возникновения серьезной ошибки производится возврат к состоянию, зафиксированному в последней контрольной точке.
   Следует отметить и наличие специфических сервисов NTFS, непосредственно встроенных в эту систему: возможность шифрования файлов и возможность сжатия данных.
   В силу перечисленных факторов логическая структура NTFS несколько сложнее по сравнению с FAT, однако некоторые общие черты все-таки имеются.
   NTFS, как и FAT, распределяет дисковое пространство кластерами, но для адресации кластера в ней отводится не 32, а 64 разряда. Это дает возможность нумеровать свыше 16 миллиардов кластеров. Размер кластера в NTFS может меняться, но он не зависит жестко от размера диска (или раздела). Для маленьких дисков стандартным размером кластера считается 512 байт, для больших – 4 Кбайт.
   ПРИМЕЧАНИЕ
   Оптимальный размер кластера устанавливается автоматически стандартной утилитой форматирования FDISK NTFS при форматировании раздела, однако впоследствии пользователь может изменить этот размер с помощью одной из программ для работы с дисками.
   Теперь непосредственно о логической структуре раздела, отформатированного под файловую систему NTFS.
   В силу объектного подхода все элементы раздела, в том числе служебные, рассматриваются в NTFS как файлы с определенным набором атрибутов. Файлы со служебной информацией называются файлами метаданных, или метафайлами. К ним относятся (рис. 3.8):
   
Конец бесплатного ознакомительного фрагмента