Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции ОФСС.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
949.86 Кб
Скачать

Рис Геометрия винчестера: дорожки, головки и секторы

Тогда же сложилась спецификация таблицы разделов, которая действует и до сих пор. В ней под номер цилиндра C отведено 10 битов, и цилиндров может быть не более 210 = 1024. Под номер сектора S отдано 6 битов, и секторов может быть не более 26 - 1 = 63 (нумерация секторов начинается с единицы). Соответственно, го­ловок может быть не более 28 = 256. Итого, адресуемый объем диска теоретически не может превышать 1024 • 63 • 256 • 512 = 8 455 716 864 байта, чуть больше 7,8 Гбайт.

В дальнейшем, когда емкость винчестеров превысила 7 Гбайт, была принята «линейная» адресация LBA (Logical Block Addressing, адресация логических бло­ков). В ней все секторы «выстроены в ряд», и у сектора есть только порядковый номер. При таком типе адресации данные считываются логическими блоками, со­стоящими из нескольких секторов.

Адресация LBA преобразуется в CHS и наоборот. Примерно так же на строевом смотре воинское подразделение из «коробки» в несколько шеренг развертывается в колонну или шеренгу по одному, а затем вновь выстраивается в «коробку». За ну­левой принимается блок, который начинается в первом секторе нулевой головки нулевого цилиндра. Блоки (секторы) LBA нумеруются с нуля, а не с единицы, как секторы CHS.

Если начало раздела лежит за пределами адресации CHS, то в соответствующие поля таблицы разделов записываются максимально возможные значения: C = 1023 (3FFh), H = 255 (FFh), S = 63 (3Fh), а для обращения к разделу система будет при­менять адресацию LBA.

Если в MBR под запись каждого адреса LBA отводится 4 байта (32 бита), то че­рез LBA теоретически можно адресовать до 232 • 512 = 2 199 023 255 552 байта (около 2 Тбайт).

Четвертый байт — код (идентификатор) типа раздела. Если значение этого байта равно 00, считается, что такого раздела не существует, и его содержимое игнориру­ется. Любое другое значение указывает на раздел определенного типа. Некоторые идентификаторы приведены в табл.

Таблица Коды типа раздела

Код

Тип раздела

00

Раздел отсутствует

01

FAT12, CHS

04

FAT16 (от 32 680 до 65 535 секторов или 16-33 Мбайт), CHS

05

Расширенный раздел (extended partition), CHS

Код

Тип раздела

06

FAT16 (до 32 680 секторов или до 16 Мбайт), CHS

07

NTFS или exFAT

0B

FAT32, CHS

0C

FAT32, LBA

0E

FAT16, LBA

0F

Расширенный раздел (extended partition), LBA

42

Динамический диск Windows NT, LBA

82

Linux swap

83

Linux native

87

NTFS массива RAID0

B7

NTFS master-раздела массива RAID1

C7

NTFS slave-раздела массива RAID1

Добавление к коду типа раздела шестнадцатеричного числа 10 делает раздел «скрытым» (hidden). Например, если идентификатор 0C указывает на раздел FAT32, то идентификатор 0C + 10 = 1C соответствует скрытому разделу FAT32.

Скрытые разделы недоступны большинству ОС — для них это «раздел неиз­вестного типа», следовательно, он не должен содержать файловую систему. Однако в скрытых разделах часто располагают средства восстановления системы. Напри­мер, Зона безопасности Acronis является скрытым разделом FAT32, а на ноутбуках Acer скрытый раздел несет утилиту e -Recovery (специализированная ОС на базе Linux) и образ системного диска. В таком случае программа, создающая скрытый раздел, заменяет стандартный загрузчик MBR своим, модифицированным. Такой «хитрый» загрузчик предлагает в процессе загрузки нажать какое-либо сочетание клавиш, чтобы загрузить компьютер со скрытого раздела.

Если на диске нужно создать больше четырех разделов, применяется специаль­ный тип раздела с кодом 05 — расширенный раздел (Extended Partition). В термино­логии Windows отформатированные расширенные разделы называются логически­ми дисками.

Расширенный раздел отличается от всех других типов разделов. Он описывает не сам раздел, а область пространства накопителя, в которой начинается описание логических дисков. Сектор, который указан в таблице разделов MBR как началь­ный сектор расширенного раздела, фактически содержит еще одну загрузочную запись — Extended Boot Record (EBR). Загрузочного кода в ней нет, есть только таблица разделов из двух записей и сигнатура.

Записи EBR устроены точно так же, как записи таблицы разделов в MBR. Если логический диск, на который ссылается указатель, занимает не все пространство, то в EBR заполняется второй элемент — указатель на следующий расширенный раздел. Он вновь описывает оставшееся пространство как Extended Partition и указывает на следующую расширенную загрузочную запись (EBR). В секторе, на который ссылается эта запись, точно так же описывается один раздел (логический диск) и, если осталось место, делается очередная запись об Extended Partition. Так продолжается до тех пор, пока пространство не будет разделено.

Схема на рис. поясняет соотношение между основными и расширенными разделами. В качестве примера левый диск разбит на 3 основных раздела. На пра­вом создано два основных раздела и расширенный, в котором размещены 3 логиче­ских диска.

Все записи о расширенных разделах образуют цепь (Extended Partition Chain), в которой от дискового пространства последовательно отрезаются фрагменты (ло­гические диски). Ошибка в любом элементе этой цепи приводит к ее обрыву. Все разделы, которые описаны после обрыва цепи, операционная система найти не сможет. Занимаемое этими расширенными разделами пространство она будет счи­тать незанятым.

Рис. Основные и расширенные разделы

GPT — таблица разделов GUID

Как уже сказано, диски объемом более 2 Тбайт на наших глазах становятся ре­альностью. Что же нужно, чтобы компьютер смог работать с такими винчестерами?

□ Контроллер дисков и BIOS материнской платы должны, как минимум, поддер­живать 48-битную адресацию LBA. Когда под номер сектора отводится 48 би­тов, можно адресовать на диске до 248 ~ 2,8 • 1014 байтов, т. е. почти 300 тера­байт. Эта поддержка появляется в «железе», выпущенном после 2008 г. В идеале материнская плата должна соответствовать спецификации Extensible Firmware Interface (EFI), но пока это «экзотика».

□ На диске должна быть создана таблица разделов нового типа — GPT (англ. GUID Partition Table, таблица разделов GUID).

□ Операционная система должна «уметь» работать с таблицей разделов GPT. Та­ковы Windows 7, 64-битные предыдущие версии Windows и некоторые сборки Linux.

GUID (Globally Unique Identifier, глобально уникальный идентификатор)- это концепция, согласно которой каждой цифровой «железке» и программному компоненту в мире желательно присвоить статистически уникаль­ный 128-битный идентификатор. Активное участие в ее разработке и продвижении принимают корпорация Microsoft и другие гиганты индустрии.

Одно отражение идея GUID нашла в сетевом протоколе IPv6. В результате у ка­ждого компьютера на Земле появляется уникальный IP-адрес, адресация в цифро­вых сетях становится довольно простой и прозрачной, а многие проблемы отпада­ют сами собой.

Другое воплощение идеи — архитектура EFI (Extensible Firmware Interface, рас­ширяемый интерфейс микропрограмм). Эта архитектура призвана заменить BIOS при загрузке компьютеров и взаимодействии аппаратных компонентов.

Попросту говоря, BIOS обращается к диску, подключенному к указанному пор­ту, потом загрузчик MBR передает загрузку загрузочному сектору того раздела, который помечен как активный, последний отправляет к загрузочным файлам ОС и т. д. Материнская плата с EFI сразу же обратится к тому разделу, уникальный идентификатор (GUID) которого прописан в ее настройках. Для этого на диске и нужна структура GPT.

В нулевом секторе диска с GPT все равно находится MBR. Эта запись делается лишь из соображений совместимости и безопасности. Поэтому ее называют на­следственной или защитной (Protective MBR). ОС и утилиты, поддерживающие GPT, эту запись игнорируют.

В Protective MBR описан всего один раздел, занимающий весь диск. Разделу присвоен тип 00EE. Благодаря этому старые ОС и программы, не поддерживающие GPT, «видят» через MBR один раздел неизвестного им типа и не пытаются что- либо писать на диск.

Следующие 33 сектора занимает структура GPT. Общая схема диска с GPT при­ведена на рис.

В первом секторе расположен первичный заголовок GPT. Он как раз и содержит GUID диска, сведения о собственном размере и ссылку на расположение вторично­го (запасного) оглавления и запасной таблицы разделов, которые всегда находятся в последних секторах диска.

Кроме того, в заголовке хранятся две контрольные суммы (CRC32): самого заго­ловка и таблицы разделов. При загрузке компьютера микропрограмма EFI проверя­ет по этим контрольным суммам целостность GPT.

Секторы со второго по тридцать третий занимает таблица разделов. Она со­стоит из записей длиной по 128 байтов. Всего таких записей и, соответственно, разделов на диске может быть не более 128.

Первые 16 байтов записи содержат GUID типа раздела. Это напоминает код типа раздела в MBR. Например, GUID системного раздела EFI имеет вид C12A7328-

F81F-11D2-BA4B-00A0C93EC93B. Следующие 16 байтов — уникальный иденти­фикатор (GUID) конкретного раздела. Фактически, это его «серийный номер». Да­лее могут быть записаны данные о начале и конце раздела в 64-битных координа­тах LBA (не обязательно). Затем следуют метка (имя) и атрибуты раздела.

В конце диска расположена резервная копия GPT — вторичный заголовок (Secondary GPT Header) и точно такая же таблица разделов. Номера секторов здесь обозначают отрицательными числами: -1 — последний сектор, -2 — предпослед­ний и т. д.

Простое редактирование GPT с помощью HEX-редакторов без вычисления и об­новления контрольных сумм приводит к тому, что содержимое заголовка или таб­лицы перестает соответствовать контрольным суммам. Если микропрограмма EFI при проверке выявит такое расхождение, она перезапишет Primary GPT из вторич­ной копии. Если же обе записи GPT будут содержать неверные контрольные сум­мы, доступ к диску станет невозможным.

Таким образом, GPT обладает отказоустойчивостью и позволяет создать на дис­ке до 128 основных разделов.