Выше при рассмотрении записи служебной информации на жесткий диск на заводе-изготовителе мы уже упоминали о низкоуровневом форматировании. Для современного винчестера это этап его производства, в результате которого секторы на жестком диске размечаются окончательно. То, что называют сейчас форматированием низкого уровня, сводится к простой записи нулей во все секторы, то есть к полному стиранию информации в области данных. Поэтому все, что делается с жестким диском после выхода его с завода, относится к форматированию высокого уровня. Оно включает в себя создание таблицы разделов и файловых систем.
Главная загрузочная запись и таблица разделов в первом секторе на любом жестком диске находятся код простой программы (загрузчика) и последовательность информационных полей (таблица разделов). Вместе программа и поля называются главной загрузочной записью (Master Boot Record – MBR).
Главная загрузочная запись создается на новом диске программой FDISK. Оснастка Управление дисками Windows при создании раздела производит запись в MBR. Все программы наподобие Partition Magic или Acronis Disk Director тоже создают и редактируют главную загрузочную запись.
Просмотреть содержимое секторов винчестера, в том числе первого, на котором находится главная загрузочная запись, можно многими НЕХ-редакторами. В редакторе Hexplorer есть отдельная команда меню Disk (Диск). При ее вызове появляется окно, где следует указать номер начального сектора и количество секторов, которое программа должна прочитать. Существуют и специальные дисковые редакторы, например DiskEdit из пакета Norton Utilities () или DiskExplorer for NTFS (). Основное отличие дисковых редакторов от обычных бинарных — наличие широкого набора шаблонов просмотра данных (можно сразу интерпретировать их не только как текст, но и как загрузочный сектор либо один из элементов файловой системы) и защиты от непреднамеренной записи на диск.
MBR занимает ровно 512 байтов — один сектор. Структура этой записи представлена в табл. 2.1.
Таблица 2Л. Структура MBR
|
Смещение |
Длина, байтов |
Описание |
|
OOOh |
446 |
Код программы-загрузчика |
|
IBEh |
16 |
Раздел 1 |
|
ICEh |
16 |
Раздел 2 |
|
IDEh |
16 |
Раздел 3 |
|
lEEh |
16 |
Раздел 4 |
|
IFEh |
2 |
Сигнатура (55h AAh) |
Четыре 16-байтных блока, каждый из которых описывает один раздел, образуют таблицу разделов — Partition Table. Максимальное количество разделов, которое может быть описано в MBR, — четыре. Каждый блок состоит из 10 полей (табл. 2.2).
Таблица 2.2. Поля таблицы разделов
|
Смещение |
Длина, байтов |
Описание |
|
ООН |
1 |
Флаг активности раздела |
|
Olh |
1 |
Начало раздела — головка |
|
02h |
1 |
Начало раздела — сектор (биты 0-5), дорожка (биты 6,7) |
|
03h |
Начало раздела — дорожка (старшие биты 8,9 хранятся в предыдущем байте) |
|
|
04h |
1 |
Код типа раздела |
|
05h |
1 |
Конец раздела — головка |
|
06h |
1 |
Конец раздела — сектор (биты 0-5), дорожка (биты 6,7) |
|
07h |
‘ |
Конец раздела — дорожка (старшие биты 8,9 хранятся в предьщущем байте) |
|
08h |
4 |
Смещение первого сектора |
|
OCh |
4 |
Количество секторов раздела |
Флаг активности указывает на то, что раздел активен. Значение OOh соответствует неактивному разделу, а Olh — активному. Из всех разделов на диске активным может быть лишь один.
Код типа раздела, находящийся по смещению 04h, — однобайтовый идентификатор. Если его значение равно OOh, то считается, что этого раздела не существует, и его содержимое игнорируется. Любое ненулевое значение означает, что в указанном пространстве находится раздел определенного типа. Так, например, идентификатор 06h указывает на раздел, отформатированный в FAT 16, OBh или ОСЬ — на раздел FAT32, а 07h – на раздел NTFS.
Если на диске нужно создать больше четырех разделов, то следует использовать специальный тип раздела с кодом 05h — расширенный раздел (Extended Partition).
Расширенный раздел отличается от всех остальных типов. Он описывает не сам раздел, а область пространства накопителя, в которой описаны разделы. В том секторе, который прописан в MBR как сектор начала расширенного раздела, фактически содержится еще одна загрузочная запись — Extended Boot Record (EBR) (табл. 2.3). Кода загрузчика в ней нет, есть только таблица разделов и сигнатура.
Таблица 2.3. Структура EBR
|
Смещение |
Длина, байтов |
Описание |
|
IBEh |
16 |
Указатель на раздел |
|
ICEh |
16 |
Указатель на следующий расширенный раздел |
|
IFEh |
2 |
Сигнатура (55h AAh) |
Указатель на раздел описывает обычный раздел (Partition), как показано в табл. 2.2. Если обычный раздел занимает не все пространство, то в таблице разделов появляется второй элемент, который вновь описывает оставшееся пространство как Extended Partition, то есть указатель на следующий EBR. В секторе, на который ссылается эта запись, точно так же описывается один раздел и, если осталось место, делается очередная запись об Extended Partition. Так продолжается до тех пор, пока пространство не будет разделено. Фактически все записи о расширенных разделах являются цепью (Extended Partition Chain), в которой от дискового пространства отрезаются кусочки, пока место не закончится. Ошибка в любом элементе этой цепи приведет к ее обрыву. Все разделы, записи о которых лежат после разрыва цепи, операционная система не сможет найти, а занимаемое этими расширенными разделами пространство она будет считать незанятым.
Файловые системы
Таблица разделов указывает на первые секторы каждого раздела. Для размещения файлов в разделе его следует отформатировать, то есть создать внутри раздела файловую систему. Основная запись файловой системы обычно начинается в первом секторе раздела. Структура записей файловой системы зависит от ее типа. Чаще всего встречаются файловые системы NTFS и FAT.
Файловая система NTFS сейчас используется на дисках 90 % домашних и офисных компьютеров. В основе ее лежит главная файловая таблица (Master File Table — MFT). Это база данных, или таблица, строки которой соответствуют файлам тома, а столбцы — атрибутам файлов. Файловая система NTFS образована девятью системными файлами, которые скрыты от просмотра обычными средствами. Эти файлы содержат таблицы занимаемых файлами кластеров и атрибутов файлов, список шагов транзакций (проведенных операций с файлами), корневой каталог и т. д. В секторе начальной загрузки указано положение сегментов данных MFT и зеркального файла MFT. В середине диска расположен дубликат сектора начальной загрузки.
Главная файловая таблица MFT — специальный и довольно большой файл. Первые 16 строк таблицы содержат служебную информацию о ней самой:
? в начале файла MFT находится первая (основная) таблица файлов;
? за основной таблицей файлов следует зеркальная запись (Mirror record), идентичная первой записи MFT. Если первая таблица MFT разрушена, то данные о размещении файлов берутся из зеркального файла MFT;
? третья запись MFT ссылается на файл регистрации (log file).
Начиная с семнадцатой, записи главной файловой таблицы используются собственно файлами и папками, которые также рассматриваются как файлы NTFS. Благодаря дублированию записей MFT, а также наличию файла транзакций файловая система NTFS считается отказоустойчивой. Восстановление данных облегчается теми же механизмами.
Файловая система FAT еще недавно была основной на разделах жестких дисков. Сегодня в этой системе форматируются, как правило, flash-диски и карты памяти. Файловая система FAT (точнее, системы FAT12, FAT16 и FAT32) образована четырьмя структурами:
? блок начальной загрузки (boot record), который находится в первом секторе раздела;
? таблица размещения файлов (file allocation table — FAT);
? резервная таблица размещения файлов (backup FAT), которая используется при обнаружении повреждений в основной таблице FAT;
? корневой каталог (root directory).
Структуры файловых систем создаются средствами операционной системы — утилитой форматирования разделов либо служебными программами. На диске эти
структуры и записи, как и таблицу разделов, можно просматривать и изменять с помощью редакторов двоичных данных.

June 11th, 2010
admin
Опубликовано в рубрике
Метки: