Разбиение магнитных дисков на разделы

Для того чтобы можно было загрузить с магнитного диска собственно саму ОС, а уже с ее помощью и организовать работу той или иной системы управления файлами, были приняты специальные системные соглашения о структуре диска. Расположение структуры данных, несущее информацию о логической организа­ции диска и простейшую программу, с помощью которой можно находить и за­гружать программы загрузки той или иной ОС, очевидно – это самый первый сектор магнитного диска.

Информация на магнитных дисках размещается и передается бло­ками. Каждый такой блок называется сектором (sector), сектора расположены на концентрических дорожках поверхности диска. Каждая дорожка (track) обра­зуется при вращении магнитного диска под зафиксированной в некотором пред­определенном положении головкой чтения/записи. Накопитель на жестких магнитных дисках (НЖМД) содержит один или более дисков. Однако обычно под термином «жесткий диск» понимают весь пакет магнитных дисков.

Группы дорожек (треков) одного радиуса, расположенных на поверхностях маг­нитных дисков, образуют так называемые цилиндры (cylinder). Современные же­сткие диски могут иметь по несколько десятков тысяч цилиндров.

Каждый сектор состоит из поля данных и поля служебной информации, ограни­чивающей и идентифицирующей его. Размер сектора (точнее – емкость поля данных) устанавливается контроллером или драйвером. Пользовательский ин­терфейс DOS поддерживает единственный размер сектора – 512 байт. BIOS же непосредственно предоставляет возможности работы с секторами размером 128, 256, 512 или 1024 байт. Если управлять контроллером непосредственно, а не че­рез программный интерфейс более высокого уровня (например, уровень DOS), то можно обрабатывать секторы и с другими размерами. Однако в большинстве современных ОС размер сектора выбирается равным 512 байт.

Физический адрес сектора – цифровой код, определяющий положение данных на диске. Физический адрес сектора на диске определяется с помощью трех «координат», то есть представляется триадой [c-h-s], где с – номер цилиндра (дорожки на по­верхности диска, cylinder), h – номер рабочей поверхности диска (магнитной го­ловки, head), a s – номер сектора на дорожке. Номер цилиндра с лежит в диапа­зоне 0..С-1, где С – количество цилиндров. Номер рабочей поверхности диска h принадлежит диапазону 0..Н-1, где Н – число магнитных головок в накопителе. Номер сектора на дорожке s указывается в диапазоне 1..S, где S – количество секторов на дорожке. Например, триада [1-0-2] адресует сектор 2 на дорожке 0 (обычно верхняя рабочая поверхность) цилиндра 1.

Жесткий диск может быть разбит на несколько разделов (partition), которые в принципе затем могут использоваться либо одной ОС, либо различными ОС.

Раздел – раздел памяти, выделяемый на жестком диске для определенного использования.

Причем самым главным является то, что на каждом разделе может быть органи­зована своя файловая система. Однако для организации даже одной-единственной файловой системы необходимо определить хотя бы только один раздел.

Разделы диска могут быть двух типов – primary (обычно этот термин переводят как первичный) и extended (расширенный). Максимальное число primary-разде­лов равно четырем. При этом на диске обязательно должен быть по крайней мере один primary-раздел. Согласно спецификациям на одном жестком диске может быть только один ехtended-раздел, который, в свою очередь, может быть разделен на большое коли­чество подразделов – логических дисков (logical).

Один из primary-разделов должен быть активным, именно с него должна загру­жаться программа загрузки операционной системы, или так называемый менед­жер загрузки, назначение которого – загрузить программу загрузки ОС из како­го-нибудь другого раздела, и уже с ее помощью загружать операционную систему. Поскольку до загрузки ОС система управления файлами работать не может, то следует использовать для указания упомянутых загрузчиков исключительно абсолютные адреса в формате [c-h-s].

По физическому адресу [0-0-1] на винчестере располагается главная загрузочная запись (master boot record, MBR), содержащая внесистемный загрузчик (non-sys­tem bootstrap – NSB), а также таблицу разделов (partition table, PT). Эта запись занимает ровно один сектор, она размещается в памяти, начиная с адреса 0:7C00h, после чего управление передается коду, содержащемуся в этом самом первом сек­торе магнитного диска. Таким образом, в самом первом (стартовом) секторе фи­зического жесткого диска находится не обычная запись boot record, как на дис­кете, a master boot record.

MBR является основным средством загрузки с жесткого диска, поддерживаемым BIOS. В MBR находятся три важных элемента:

1) программа начальной загрузки (non-system bootstrap). Именно она запуска­ется BIOS после успешной загрузки в память первого сектора с MBR. Она, очевидно, не превышает 512 байт, и ее хватает только на то, чтобы загрузить следующую, чуть более сложную программу, обычно – стартовый сектор опе­рационной системы, и передать ему управление;

2) таблица описания разделов диска (partition table). Располагается в MBR по смещению 0x1BE и занимает 64 байта;

3) сигнатура MBR. Последние два байта MBR должны содержать число AA55h. По наличию этой сигнатуры BIOS проверяет, что первый блок был загружен успешно. Сигнатура эта выбрана не случайно. Ее успешная проверка позво­ляет установить, что все линии передачи данных могут передавать и нули, и единицы.

Таблица разделов (partition table) – таблица, описывающая размещение и характеристики имеющихся на винчестере разделов. Можно сказать, что эта таблица разделов – одна из наибо­лее важных структур данных на жестком диске. Если эта таблица повреждена, то не только не будет загружаться операционная система (или одна из операцион­ных систем, установленных на винчестере), но перестанут быть доступными и данные, расположенные на винчестере, особенно если жесткий диск был разбит на несколько разделов.

В таблице partition table для описания каждого раздела отводится по 16 байтов. Первым байтом в элементе раздела идет флаг активности раздела boot indicator (0 – не активен, 128 (80Н) – активен). Он служит для определения, является ли раздел системным загрузочным и есть ли необходимость произво­дить загрузку операционной системы с него при старте компьютера. За флагом активности раздела следует байт но­мера головки, с которой начинается раздел. За ним следуют два байта, означаю­щие соответственно номер сектора и номер цилиндра загрузочного сектора, где располагается первый сектор загрузчика операционной системы. Затем следует кодовый идентификатор System ID (длиной в один байт), указывающий на принадлежность данного раздела к той или иной операционной системе и установке на нем соответствующей файловой системы. В табл. 3.1 приведены некоторые наиболее известные идентификаторы.

За байтом кода операционной системы расположен байт номера головки конца раздела, за которым идут два байта – номер сектора и номер цилиндра послед­него сектора данного раздела. Ниже представлен формат элемента таблицы раз­делов.

 

Таблица 3.2

 

Формат элемента таблицы разделов

 

Вслед за сектором MBR размещаются собственно сами разделы (рис. 3.1). В про­цессе начальной загрузки сектора MBR, содержащего таблицу partition table, работают программные модули BIOS. Начальная загрузка считается выполнен­ной корректно только в том случае, когда таблица разделов содержит допусти­мую информацию.

В MS-DOS в первичном разделе может быть сформирован только один логиче­ский диск, а в расширенном – любое их количество. Каждый логический диск «управляется» своим логическим приводом. Каждому логическому диску на винчестере соответствует своя (относительная) логическая нумерация. Физиче­ская же адресация жесткого диска сквозная.

Первичный раздел DOS включает только системный логический диск без каких-либо дополнительных информационных структур.

Расширенный раздел DOS содержит вторичную запись MBR (secondary MBR, SMBR), в состав которой вместо partition table входит таблица логического дис­ка (LDT, logical disk table), ей аналогичная. Таблица LDT описывает размещение и характеристики раздела, содержащего единственный логический диск, а также может специфицировать следующую запись SMBR. Следовательно, если в рас­ширенном разделе DOS создано К логических дисков, то он содержит К экземп­ляров SMBR, связанных в список. Каждый элемент этого списка описывает со­ответствующий логический диск и ссылается (кроме последнего) на следующий элемент списка.

Утилиты, позволяющие разбить диск на разделы и тем самым сформировать как partition table, так и, возможно, списковую структуру из LDT, обычно называются FDISK (от form disk), хотя есть утилиты и с другим названием, умеющие выполнить разбиение диска. FDISK от MS-DOS позволяет создать только один primary-раздел и один extended, который, в свою очередь, предлагается разделить на несколько логических дисков. Аналогичные утилиты других ОС имеют существенно больше возможностей. Так, например, FDISK системы OS/2 позволяет создавать не­сколько primary-разделов, причем их можно выделять не только последовательно, начиная с первых цилиндров, но и с конца свободного дискового пространства. Это удобно, если нужно исключить из работы некоторый диапазон дисково­го пространства (например, из-за дефектов на поверхности магнитного диска). С помощью этой утилиты можно установить и менеджер загрузки (boot-менеджер),

Одной из самых известных и до сих пор достаточно часто используемых утилит, с помощью которой можно посмотреть и отредактировать таблицу разделов, а также выполнить и другие действия, связанные с изучением и исправлением данных как на дискете, так и на винчестере, является программа Disk editor из комплекта нортоновских утилит. Disk editor, с одной стороны, очень мощ­ное средство, и поэтому его следует использовать с большой осторожностью, а с другой стороны – эта утилита работает только в среде DOS. На сегодняшний день главным недостатком этой утилиты является ограничение на максималь­ный размер диска в 8 Гбайт. В последнее время появилось большое количество утилит, которые предоставляют возможность более наглядно представить разбиение дис­ка на разделы, поскольку в них используется графический интерфейс. Эти про­граммы успешно и корректно работают с наиболее распространенными типами разделов (разделы под FAT, FAT32, NTFS). Однако созданы они в основном для работы в среде Win32API, что часто ограничивает возможность их использова­ния. Одной из самых известных и мощных программ для работы с разделами же­сткого диска является Partition Magic фирмы Power Quest.