Таблица разделов GUID в организации и поддержке динамических дисков.
UEFI
(Unified Extensible Firmware
Interface) определяет новую схему разбиения на разделы - таблицу
разделов GUID, которая должна устранить некоторые недостатки схемы разбиения,
принятой в MSDOS. Например, адреса секторов, используемых структурами разделов
GPT, вместо 32-разрядных стали 64-разрядными (32-разрядные адреса позволяли
адресовать лишь до 2 Тбайта памяти). На сегодняшний день устройств с таким
объемом памяти очень мало, но стандарт GPT разработан с прицелом на
перспективу. Кроме того, GPT «защищена» контрольной суммой CRC (cyclic redundancy
checksums), а также используется резервное копирование таблицы разделов, GPT
кроме 36-байтового Unicode-имени назначает каждому разделу свой GUID.
Еще одно практическое
применение идея GUID нашла в организации
и поддержке динамических дисков. Динамические диски предпочтительны и нужны
для создания новых составных томов. За поддержку динамических дисков отвечает
специальная подсистема диспетчера логических дисков LDM (Logical Disk Manager),
состоящая из компонентов пользовательского режима и драйверов устройств. Фирма
Microsoft лицензирует LDM y компании VERITAS Software, которая изначально
разработала технологию LDM для UNIX-систем. Microsoft и VERITAS перенесли LDM
еще в Windows 2000, благодаря чему эта операционная система получила более
надежную, отказоустойчивую схему разбиения диска на разделы и средства
поддержки составных томов. Главное различие между схемами разбиения на разделы
в LDM и MSDOS в том, что LDM поддерживает одну
унифицированную базу данных, где хранится информация о разделах на всех динамических
дисках системы, в том числе сведения о конфигурации составных томов.
UNIX-версия LDM поддерживает и дисковые группы, поэтому все динамические диски,
включаемые системой в группу, используют общую базу данных. Коммерческое
программное обеспечение VERITAS для управления логическими дисками в Windows
2000 поддерживает создание только одной дисковой группы.
База
данных LDM размещается в зарезервированном пространстве (размером 1 Мбайт) в
конце каждого динамического диска. Именно поэтому Windows 2000 требует
свободного места в конце базового диска при его преобразовании в динамический.
Данные о разбиении динамического диска на разделы находятся в базе данных, но
LDM реализует и таблицу разделов в стиле MSDOS, чтобы унаследованные утилиты
обслуживания дисков, включая работающие в средах с двухвариантной загрузкой,
могли нормально работать. LDM-разделы не описываются таблицей разделов MSDOS, и
их называют «нежесткими», a разделы MSDOS – «жесткими». LDM создает
таблицу разделов MSDOS и для того, чтобы загрузочный код Windows 2000 мог найти
системный и загрузочный тома, даже если они находятся на динамических дисках
(программа Ntldr не работает с LDM-разделами). Если диск содержит системный
и/или загрузочный тома, они описываются как жесткие разделы в таблице разделов
MSDOS. Иначе один жесткий раздел должен начинаться с первого цилиндра диска
(обычно это 63 сектора) и продолжаться до начала базы данных LDM. LDM помечает его как раздел типа «LDM» -
нового типа MSDOS-раздела, поддерживаемого Windows 2000. В этом пространстве,
определенном как раздел MSDOS, LDM создает нежесткие разделы, организуемые
базой данных LDM (рис. 1).
Рис. 1.
Внутренняя организация динамического диска
База
данных LDM состоит из четырех областей (рис. 2):
- сектор
заголовка, называемый в LDM "Pri-vate Header",
- таблица
оглавления,
- записи
базы данных,
- журнал
транзакций (на рис. 3 пятый раздел - просто зеркальная копия Private Header).
Сектор
Private Header находится за 1 Мбайт до конца динамического диска и является
границей базы данных. С Windows 2000 для идентификации практически всех
объектов уже используются GUID, и диски не составляют исключения (GUID - это
128-битное число, применяемое различными компонентами Windows 2000, для
уникальной идентификации объектов). LDM назначает GUID каждому динамическому
диску, а сектор Private Header регистрирует GUID динамического диска, на
котором он находится, поэтому данные в Private Header относятся исключительно к
конкретному диску. Private Header также хранит имя дисковой группы, которое формируется
конкатенацией имени компьютера и строки Dg0 (если имя компьютера - Jusan, то
имя дисковой группы - JusanDg0), и указатель на начало таблицы оглавления базы
данных. (LDM в Windows 2000 поддерживает только одну дисковую группу, поэтому
ее имя всегда оканчивается на Dg0). Для надежности LDM поддерживает копию
Private Header в последнем секторе диска.
Рис. 2.
Структура базы данных LDM
Таблица оглавления занимает 16
секторов и содержит информацию о структуре базы данных. Область записей базы
данных LDM начинается с сектора заголовка записей базы данных сразу за таблицей
оглавления. В этом секторе хранится информация об области записей базы данных,
включая число присутствующих в ней записей, имя и GUID дисковой группы, к
которой относится база данных, и идентификатор последовательности, используемый
LDM для создания следующего элемента в базе данных. Секторы, следующие за
сектором заголовка записей, содержат записи фиксированного размера (по 128
байт) с описанием разделов и томов дисковой группы.
Элементы базы данных могут
быть четырех типов: раздел (partition), диск (disk), компонент (component) и
том (volume). Типы элементов определяют три уровня описания томов. LDM
связывает элементы базы данных с помощью внутренних идентификаторов объектов.
На самом нижнем уровне элементы разделов (partition entries) описывают
нежесткие разделы, которые являются непрерывными областями на диске;
идентификаторы, хранящиеся в элементе раздела, связывают его с элементами
компонентов и дисков. Элемент диска (disk entry) представляет динамический диск
в составе группы и включает его GUID. Элемент компонента служит связующим
звеном между одним или несколькими элементами разделов и элементом тома, с
которым сопоставлен каждый раздел. Элемент тома хранит GUID этого тома, его
суммарный размер, информацию о состоянии и букву диска. Элементы дисков, размер
которых превышает размер одной записи, занимают несколько записей, элементы
разделов, компонентов и томов редко занимают больше одной записи.
Простой том в LDM описывается
тремя элементами: раздела, компонента и тома. На рис. 3 показано содержимое
простой базы данных LDM, которая определяет один том размером 300 Мбайт,
состоящий из одного раздела.
Рис. 3.
Для составных томов требуется более трех элементов. Например, чередующийся
том состоит минимум из двух элементов разделов, элемента компонента и элемента
тома. Единственный том, который включает более одного элемента компонента, -
зеркальный. Зеркальные тома включают два элемента компонентов, каждый из
которых представляет половину зеркального тома. Если зеркальный том разбивается
на разделы, LDM может разделить его на уровне компонентов, создав два тома, в
каждом из которых будет по одному элементу компонента. Поскольку простой том
требует три элемента, а база данных размером в 1 Мбайт вмещает около 8000
элементов (эффективный верхний предел числа томов, которое можно создать в
системе с Windows 2000, равен примерно 2500).
Последняя область базы данных
LDM отведена под журнал транзакций. Она состоит из нескольких секторов,
предназначенных для хранения резервной копии информации базы данных в процессе
ее изменения. Такая схема гарантирует целостность базы данных даже в случае
краха системы или сбоя электропитания, поскольку LDM может восстановить
согласованное состояние базы данных на основе журнала транзакций.
Hа рис. 4 показан пример
структуры раздела GPT. Подобно базовым и динамическим дискам в Windows 2000
первый сектор GPT-диска содержит MBR. Но во втором и последнем секторах диска
хранятся таблицы разделов GPT. С введением поддержки расширяемого списка разделов отпала необходимость во вложенных
разделах, используемая в прежних схемах разбиения.
Рис. 4.
Пример структуры раздела GPT
Хотя GPT-разделы более
совершенны по сравнению с MSDOS-разделами, они не заменяют LDM-схему разбиения
в Windows 2000. В 64-разрядной Windows 2000 схема LDM будет интегрирована с
GPT-схемой по аналогии с тем, как это было сделано с разделами MSDOS и LDM в
32-разрядной Windows 2000.
В Windows
2000 имеется утилита DmDiag, которая позволяет получить детальную информацию о
физических дисках в системе, содержимом базы данных LDM и структуре разделов,
описываемой таблицей разделов MSDOS. Кроме данных, относящихся к дискам, DmDiag
выводит дамп точек монтирования, определенных для системы, и сообщает об
объектах "устройство" и символьных ссылках, присутствующих в
пространстве имен диспетчера объектов.