О себе Реферат Научные труды Индивидуальный раздел
Назад в библиотеку

Программаная реализация чтения дисков с разметкой MBR

Донецкий национальный технический университет

Источник: Клименко И.С. Программаная реализация чтения дисков с разметкой MBR / И.С. Клименко, О.Ю. Чередникова // Материалы научно-технической конференции «Информатика, управляющие системы, математическое и компьютерное моделирование - 2024» (ИУСМКМ-24)

Аннотация: Клименко И.С., Чередникова О.Ю. Программная реализация чтения дисков с разметкой MBR. В работе рассмотрены физическая структура и возможные схемы разметки жесткого диска. Предложена программная реализация анализа диска с разметкой MBR с помощью функций Windows API.

Abstract: The report considers the physical structure and possible layout schemes of the hard disk. A software implementation of disk analysis with MBR markup using Windows API functions is proposed.

Ключевые слова: схема разметки жесткого диска, MBR, GPT, Windows API.

Общая постановка проблемы и анализ последних исследований

В ходе работы системным программистом часто необходимо проанализировать информацию жёсткого диска устройства, что без сторонних вспомогательных приложений является весьма проблематичной задачей. Одним из способов решения данной проблемы является программа DMDE (DM Disk Editor and Data Recovery Software) – весьма гибкое приложение, предназначенное для поиска, редактирования и восстановления информации носителей. Однако нагруженность интерфейса, а также избыточно количество функционала требует относительно длительного изучения, прежде чем приступить к самому простому анализу диска. Отдельно стоит упомянуть сложности с просмотром вторичных MBR.

Прежде чем начать работать с твердотельным накопителем – с жёстким диском в частности – система должна понять, в какие его области можно записывать данные. В силу большого объёма современных жёстких дисков, а также для удобства работы их разбивают на части – разделы, каждому из которых присваивается своя буква. С каждым получившимся в итоге логическим диском можно работать как с независимым диском в системе.

Постановка задачи

Целью статьи является анализ строения и способов разметки жёсткого диска, а также программная реализация чтения разметки MBR.

Физическая структура жёсткого диска

Накопитель, который мы привыкли называть «жёстким диском», на самом деле содержит несколько дисковых пластин (далее дисков), расположенных одна над другой (рис.1). На каждой пластине с обеих сторон расположены считывающие и записывающие информацию по мере вращения диска головки. Головки всех пластин принято позиционировать как одну головку жёсткого диска. «Стопку» всех дисковых пластин называют цилиндром, каждый из них состоит из соответствующих дорожек на поверхностях дисков (т.е. число цилиндров соответствует числу дорожек) [1].

Концентрические круги, располагающиеся на дисках и хранящие данные, называются дорожками или треками. Минимальная адресуемая единица хранения информации на дорожках называется сектором [2]. Также в некоторых файловых системах для более эффективного использования места на диске применяется такая единица хранения данных как кластер, представляющая собой цепочку секторов.

Структура жёсткого диска
Рис.1 – Структура жёсткого диска

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

На данный момент существует два способа хранения информации о разделах накопителя: MBR и GPT. GPT является частью интерфейса для управления оборудованием UEFI, а MBR относится к BIOS [3]. Рассмотрим каждую из технологий разметки подробно.

MBR

MBR – способ размещения и управления разделами жёсткого диска. Совместимость с большинством систем на данный момент является главной причиной широкого использования этой технологии [4].

В самом начале диска – в первом секторе – расположена главная загрузочная запись, содержащая таблицу разделов (Partition Table), в которой находится информация об организации логических разделов. Каждый раздел соответствует логическому диску, причём один из разделов является загрузочным (на нём должна располагаться копия операционной системы, которой передаётся управление при загрузке компьютера).

Главное ограничение MBR - максимальное число разделов в одной MBR не может быть больше четырех. Для работы с жестким диском, на котором боле четырех логических дисков один из разделов назначается расширенным (EBR) и уже на нём создаются дополнительные подразделы (логические диски). О наличии расширенного раздела может сообщить запись, находящаяся по смещению 4 в структуре элемента таблицы разделов – там должно быть одно из двух значений: 0х05 или 0х0F.

На основе данной информации была составлена представленная на рис2. блок-схема определения всех разделов для схемы разметки MBR.

Блок-схема чтения MBR
Рис.2 – Блок-схема чтения MBR

GPT

GPT (GUID Partition Table) – таблица разделов GUID (Globally Unique Identifier); стандарт размещения таблиц разделов на жёстком диске, являющаяся часть UEFI и пришедшая на замену MBR [5].

Новый способ разметки диска был создан с целью устранения ограничений и недочётов MBR, проявившихся по мере развития технологий. Так, к примеру, GPT позволяет создать неограниченное число разделов, но фактически некоторые операционные системы могут ограничить это количество до 128, что всё ещё намного больше, чем лимиты MBR. Также GPT позволяет использовать до 64 бит (против 32 бит в MBR) информации в логических секторах. Это создаёт теоретическое ограничение в 9.4 ЗБ (9.4 зетабайта или 9.4 миллиарда терабайт) [6].

Вместо CHS-адресации (цилиндр-головка сектор), используемой в MBR, в GPT используется метод LBA (адресация логических блоков). По адресу LBA=0 расположена защитная (Protective) MBR [7]. Она сделана для того, чтобы старая система ошибочно не восприняла диск как пустой и не перезаписала данные GPT новой главной загрузочной записью.

В LBA=1 находится основной заголовок GPT. Он содержит различную информацию о таблице разделов, например, количество и размер записей.

Затем, начиная с LBA=2, идут записи данных о разделах. Каждая запись занимает 128 байт, то есть в один LBA вмещается 4 записи.

Далее следует само содержимое разделов. В современных системах для GPT отведено 32 сектора по 512 байт [8], следовательно, область хранения данных начинается лишь по адресу LB34.

В конце диска для обеспечения большей отказоустойчивости GPT имеет вторую (secondary GPT) копию.

Программная реализация анализа диска с разметкой MBR

Программная реализация анализа MBR осуществляется с помощью вызова функций WinAPI для чтения информации с жесткого диска и позиционирования указателя диска. В качестве тестирования использован виртуальный жёсткий диск, представленный на рис.3.

Виртуальный жёсткий диск
Рис.3 – Виртуальный жёсткий диск

Для точного определения работы с нужным разделом выведем размер и файловую систему каждого тома. Как мы видим на рис.4, наш диск действительно содержит расширенные разделы, начиная с четвёртого раздела – тома F.

Вывод информации о диске
Рис.4 – Вывод информации о диске

Заключение

Способов разбиения дисков на разделы на сегодняшний день существует два. Первый способ - использовать MBR. Этот способ применялся еще чуть ли не с появления жестких дисков и работает с любыми операционными системами. Второй способ - использовать новую систему разметки - GPT. В приложении анализа диска была предусмотрена возможность чтения расширенных разделов в удобном для использования формате. В дальнейшем приложение можно сделать более универсальным, дополнив более подробной информацией о дисках, например, информацией касающейся файловых систем.

Список литературы

  1. Библиотека технической документации Microsoft Learn [Электронный ресурс] / Дисковые устройства и секции – Режим доступа: https://learn.microsoft.com/ru-ru/windows/win32/fileio/disk-devices-and-partitions
  2. UNИX [Электронный ресурс] / Маслинский К., Жуков В. Структура жёсткого диска – Режим доступа: https://www.uneex.ru/static/AltDocs_hd_structure/docinfo.html
  3. Лайфхакер [Электронный ресурс] / Козориз А. GPT или MBR: как узнать, какой диск на компьютере – Режим доступа: https://lifehacker.ru/kak-uznat-gpt-ili-mbr/
  4. Хабр [Электронный ресурс] / Сравнение структур разделов GPT и MBR – Режим доступа: https://habr.com/ru/articles/327572/
  5. Клуб DNS [Электронный ресурс] / MBR или GPT? Что такое структуры накопителей и чем отличаются – Режим доступа: https://club.dns-shop.ru/blog/t-107-jestkie-diski/40496-mbr-ili-gpt-chto-takoe-strukturyi-nakopitelei-i-chem-otlichautsya/
  6. Библиотека технической документации Microsoft Learn [Электронный ресурс] / Поддержка жестких дисков объемом больше 2 ТБ в Windows – Режим доступа: https://learn.microsoft.com/ru-ru/troubleshoot/windows-server/backup-and-storage/support-for-hard-disks-exceeding-2-tb
  7. Manjaro [Электронный ресурс] / Некоторые основы MBR против GPT и BIOS против UEFI – Режим доступа: https://wiki.manjaro.org/index.php/Some_basics_of_MBR_v/s_GPT_and_BIOS_v/s_UEFI/ru
  8. Каморка злобного админа [Электронный ресурс] / Структура GPT – Режим доступа: http://www.it-simple.ru/?p=16325