Диски. Введение 3 Жесткие диски 3 Конструкция hdd 3
Скачать 2.12 Mb.
|
Логическая структура дискаС аппаратной точки зрения любой жесткий диск можно представить как совокупность секторов, адресуемых тем или иным способом (CHS или LBA), и каждый сектор может быть записан и считан независимо от других. Но для большинства прикладных программ представляет интерес не обращение к отдельным секторам, а возможность обращения к файлам, которые могут занимать произвольное, в том числе и не целое количество секторов. Для облегчения обращения к файлам и упорядочения использования пространства секторов диска в состав любой операционной системы входит файловая система, тесно связанная с логической структурой диска Логическая структура диска организована как система разделов это одна из наиболее важных элементов в дисковой подсистеме. Ее стандарт не зависит от файловых и операционных систем. Операционная система, используя логическую структуру диска, разбивает жесткий диск на несколько независимых частей – разделов (Partition, партиций),причём каждый из них может рассматриваться системой как отдельный логический диск. Логический диск (англ. volume) — часть памяти накопителя, рассматриваемая как единое целое для удобства работы. Логическим диском можно называть раздел жесткого диска, отформатированный под какую либо файловую систему. Термин «логический диск» используется в противоположность «физическому диску», под которым рассматривается память одного конкретного дискового носителя. Если на диске присутствуют соответствующие файлы операционной системы, и эта операционная система может быть загружена с него на компьютер, такой диск называется системным. Существуют несколько причин, по которым может быть полезно разделение большого диска на части: в случае повреждения логического диска теряется только информация, которая находилась на логическом диске; реорганизация и выгрузка диска маленького размера выполняется быстрее, чем большого; на одном физическом жёстком диске можно хранить информацию в разных файловых системах, или в одинаковых файловых системах, но с разным размером кластера (о кластерах будет расказанно позже в раделе посвященном файловым системам). Например, выгодно хранить файлы большого размера — например, видео — отдельно от маленьких, и задавать больший размер кластера для хранилища больших файлов; на одном физическом диске может находиться несколько различных операционных систем с разной файловой системой, расположенные на различных логических дисках (в разных разделах). В ходе загрузки операционной системы можно указать, с какого раздела должна загружаться операционная система. Главная загрузочная записьРазберем структуру диска подробно. Будем пользоваться методом адресации CHS, т.е. будем рассматривать физический диск как набор секторов, каждый из которых адресуется при помощи трех координат: цилиндр, головка, сектор. Отметим, что для цилиндров и головок нумерация начинается с 0, а секторов начиная от 1, то есть первый сектор физического диска имеет адрес 0-0-1. Так как расположение первого сектора не зависит от конкретной геометрии диска (контроллер находит первый сектор сразу), именно его удобно использовать для записи информации о разделах находящихся на диске. Итак, первый сектор жёсткого диска (сектор 1, головка 0, дорожка 0) содержит так называемую главную загрузочную запись (Master Boot Record = MBR). В начале этого сектора расположена программа начальной загрузки – IPL1 (Initial Program Loading 1), необходимая для распознавания логических разделов диска. Другое название IPL1– начальный загрузчик. За загрузчиком в этом же первом секторе записана Таблица Разделов (Partition Table, PT), описывающая схему разбиения логических дисков. Во время выполнения загрузки компьютера программа начальной загрузки сканирует и анализирует таблицу разделов диска. Именно эта таблица и содержит информацию, позволяющую системе представить физический диск как несколько логических. Таблица разделов состоит из четырех записей – структур размером 16 байт, соответствующих частям диска, называемых разделами. Если на вашем компьютере имеется только один логический диск в таблице разделов будет присутствовать только одна первая запись, более сложные случае рассмотрим дальше. В каждой записи таблицы располагается информация о соответствующем разделе: типе раздела (NTFS, FAT16, FAT32...), активности раздела (т.е. можно ли загружать с него операционную систему), расположении раздела т.е. адресов его начала и конца (информация о расположении присутствует в двух системах: CHS (координаты начала и конца) и LBA (начало и длина)), количестве секторов в разделе. Рассмотрим формат записи таблицы разделов более подробно (см. таблицу 2) Таблица 2 Элементы таблицы разделов
Прокомментируем части структуры таблицы разделов 1. Признак активного раздела (Boot Indicator) или маркер начальной загрузки – отмечает активный раздел т.е.логический диск, который может быть использован для загрузки операционной системы. Признак активного раздела занимает один байт, который может иметь два значения: 00h — раздел неактивный, 80h — раздел активен. Программа IPL1 просматривает таблицу разделов и находит активный раздел. Если активных разделов несколько, на консоль выводится сообщение о необходимости выбора активного раздела для продолжения загрузки. Физический диск может содержать одновременно несколько активных разделов, которые могут принадлежать различным операционным системам. 2. В поле начало раздела хранятся номера головки, сектора и цилиндра стартового сектора цилиндра (Starting Head, Starting Sector, Starting Cylinder). Обычно разделы начинаются с первого сектора дорожки. 3. Поле код или идентификатор системы (Boot ID) указывает тип раздела, т.е. код в этом поле указывает, какой именно операционной системе и файловой системе —FAT16, FAT32 или NTFS — принадлежит данный раздел, а также позволяет узнать некоторые характеристики файловой системы. Кроме того, данное поле показывает, существует ли на диске расширенный раздел (extended partition). Возможные значения поля System ID показаны в табл. 3. Таблица 3. Коды типов файловых систем файловых систем (System ID)
Если коду системы в элементе таблицы раздела соответствует вид раздела «основной», это означает, что раздел используется операционной системой в качестве первичного раздела (Primary Partition). Первичный раздел используется операционной системой как логический диск. Первый логический диск (первичный раздел) обычно является активным и из него выполняется загрузка операционной системы. Если в элементе таблицы разделов байт кода системы имеет значение, соответствующее виду раздела «расширенный», то раздел, указанный в этом элементе будет раздел использоваться как расширенный раздел (Еxtended partition). В начале расширенного раздела располагается сектор, содержащий таблицу логических дисков. Фактически эта таблица является расширением таблицы разделов диска, расположенной в самом первом секторе физического диска. Таблица логических дисков имеет формат, аналогичный таблице разделов диска, но имеет только два элемента. Подробно это будет рассмотрено ниже. Если в поле кода раздела записан 0, то описатель считается пустым, то есть он не определяет на диске никакого раздела. 4. В поле конец раздела – соответствующие номера (головки, сектора и цилиндра) для конечного сектора данного раздела (Ending Head, и Ending Sector, Ending Cylinder). 5. Относительный номер первого сектора раздела (Relative Sectors) – это число, которое показывает позицию раздела, т.е. адрес начала раздела в режиме LBA. Такой способ адресации используется современных версиях Windows с файловыми системами NTFS и FAT32. 6. Поле размер раздела в секторах (Total Sectors) указывает общее число секторов в томе. Используется в режиме адресации LBA. При использовании стандартного размера сектора (512 байт) и 32-битового представления числа секторов максимальный объем раздела ограничивается числом 2 Тбайт (или 2 199 023 255 552 байт). СигнатураПоследние два байта MBR называются сигнатурой. Сигнатура говорит BIOS'у о том, что это действительно MBR, а не что-то еще. Значение этих байтов должно быть 55h AAh. В случае, если это не так, запись считается некорректной. Первичный и расширенный разделКак уже было отмечено, в первом секторе физического диска размещается главная загрузочная запись, содержащая таблицу разделов из четырех записей (элементов). Каждый элемент дает полную информацию о разделе диска. Если код системы в элементе таблицы раздела соответствует основному виду раздела, этот означает, что раздел используется операционной системой в качестве первичного раздела (Primary Partition) или, что тоже самое, как логический диск. Конкретное значение кода системы дает информацию о виде операционной системы и поддерживаемой файловой системы (FAT12, FAT16, FAT32 или NTFS). Для разделов существуют некоторые общепринятые ограничения геометрии. Разделы должны начинаться в начале цилиндра, и заканчиваться в конце цилиндра (хотя это иногда нарушается). Т.е. первым сектором раздела должен быть сектор с номером 1 и размещаться он должен на поверхности 0 или 1 (когда 0, а когда 1 будет дальше разобрано детально). Последним сектором диска будет сектор с номером, совпадающим с числом секторов на дорожке, а находиться он будет на последней поверхности физического диска. Четыре элемента таблицы разделов в MBR описывают до четырех логических дисков. На большее в таблице просто нет места. Чтобы не ограничиваться четырьмя основными разделами логическая структура диска предусматривает использование расширенных разделов (Extended Partition). Расширенный раздел организован также как физический диск, т.е. первый сектор расширенного раздела занимает структура похожая на главную загрузочную запись, эта структура называется вторичной главной загрузочной записью (Secondary Master Boot Record, SMBR). Вторичная главная загрузочная запись отличается от MBR, тем, что она не содержит программы IPL1, вместо «четырехместной» таблицы разделов SMBR содержит собственную таблицу разделов, называемую Таблицей Логического Диска (Logical Drive Table), которая содержит только два элемента. Также как и MBR вторичная главная загрузочная запись заканчивается сигнатурой (55h AAh). Каждый из двух элементов таблицы логического диска указывает либо на логический диск, либо на новый расширенный раздел, который в свою очередь начинается с еще одной SMBR. Это значит, что таблицы логических дисков связаны в список, на начало которого указывает элемент таблицы разделов диска из MBR с кодом системы соответствующему расширенному разделу. Длина такой цепочки практически неограниченна. Так как в Windows используется механизм наименования логических дисков по буквам (начиная с «С:»), длина цепочки не должна превышать 24. Пример логической организации дискаПоясним логическую структуру диска на конкретном примере. Хотя любые современные диски используют метод адресации LBA, мы будем разбирать организацию основанную на методе CSH, так этот метод дает намного более наглядную картину. В качестве примера для разбиения будем рассматривать физический диск со следующими параметрами: цилиндров– 38309, поверхностей (головок) – 16, секторов на дорожке - 255. Несложно подсчитать объем такого диска: V = CYL*HDS*SPT*512 = 38309 * 16 * 255 * 512 = 80 025 968 640 байт. Будем организовывать на нашем физическом диске три логических (C:, D:, E:) в пропорции по размеру примерно 10% – 10% – 10%. Пример разбиения этого диска представлен на рисунке …. Соответствующие этому разбиению таблицы разделов и логических дисков отображены в таблице …. Заметим, что таблицы показаны в упрощенном виде для большей наглядности (напоминаем, что полный формат элемента MBR или SMBR представлен в таблице 4). Схема, иллюстрирующая логическую структуру жесткого диска, т.е. разбиение его на разделы, представлена на рис. 4. В самом начале физического диска располагается главная загрузочная запись MBR, находящаяся в первом секторе диска — цилиндр 0, головка 0, сектор 1. Внутри MBR располагается таблица разделов. Из четырех элементов находящихся в таблице разделов мы будем использовать только – первичный (Primary) и расширенный (Extened). Рисунок 4. Логическая организация жесткого диска Первая запись таблицы разделов описывает первичный раздел. Этот первичный раздел содержит один логический диск – C:. Так как раздел должен начинаться с первого сектора на дорожке, наш логический диск начинается с 1-го сектора, 0-го цилиндра, первой (а не нулевой) поверхности. С первой поверхности этот диск начинается так как первый сектор на нулевой поверхности уже занят – там находится сам MBR. Если это представить наглядно, то MBR будет располагаться на верхней поверхности диска, а первый сектор логического диска буде располагаться на нижней поверхности прямо под ним. Сектора располагающиеся после MBR на нулевой дорожке (с номерами от 2 до 255) остаются не использованными. На рисунке 4 заштрихованная область соответствует всем неиспользуемым секторам. Таблица 4 Заполнение таблиц разделов жесткого диска (пример)
SMBR 1
SMBR 2
Заканчиваться разделы должны на границе цилиндра, поэтому последний сектор логического диска C: будет иметь адрес: цилиндр 15301 (что соответствует примерно 40% всех цилиндров), головка 15 (последняя поверхность диска), сектор 255 (последний сектор на дорожке). Признак активного раздела в первой записи таблицы разделов отмечен как активный (код 80h), это означает, что операционная система будет загружаться с логического диска C:. Вторая запись таблицы разделов из MBR описывает расширенный раздел для этого в поле «идентификатор системы» должен находиться код, которому соответствует расширенный вид раздела. Этот раздел начинается сразу же за последним сектором логического диска C:, т.е. адрес первого сектора расширенного раздела будет следующим: цилиндр - 15301, головка - 0, сектор - 1. Расширенный раздел будет занимать все свободные (оставшиеся после выделения логического диска C:) сектора. Это значит, что расширенный раздел заканчивается в самом последнем секторе физического диска: цилиндр - 38309, головка - 15, сектор - 255. Так как из расширенного раздела никакой загрузки быть не может, в поле признака активного раздела во втором элементе таблицы разделов будет записан ноль. Как уже отмечалось, расширенный раздел сам имеет структуру аналогичную структуре физического диска. Первый сектор расширенного раздела (его адрес мы уже привели) содержит вторичную главную загрузочную запись (SMBR). Внутри SMBR находятся таблица разделов расширенного раздела, состоящая из двух элементов. Первый элемент этой таблицы задает первичный (Primary) раздел, отведенный под очередной логический диск (D:). Логический диск опять начинается с первого сектора 1-й поверхности, таким образом, между SMBR и разделом опять остаются неиспользуемые сектора, также как между MBR и логическим диском C:. Таким образом, первый сектор второго логического диска будет располагаться по адресу: цилиндр - 15301, головка - 1, сектор - 1. Отведем на второй логический диск 18400 цилиндров (48% от общего объема физического диска). Последний сектор логического диска D: будет иметь адрес: цилиндр - 33700, головка - 15, сектор - 255. Если логический диск занимает не весь объем расширенного раздела (как в нашем случае), то второй элемент таблицы разделов (находящийся в SMBR) указывает на положение следующего (в нашем случае второго) расширенного раздела. Первым сектором этого раздела будет сектор, следующий за логическим диском D:, его адрес: цилиндр - 33701, головка - 0, сектор - 1. Заканчивается второй расширенный раздел опять в самом последнем секторе физического диска: цилиндр - 38309, головка - 15, сектор - 255. Т.е. расширенные разделы являются вложенными друг в друга; все они располагаются в области, описанной в главной таблице разделов как расширенный раздел. В главной таблице описан лишь один расширенный раздел. Для второго расширенного раздела применима та же логика, что и для первого. В первом секторе этого раздела находится еще одна вторичная главная загрузочная запись (SMBR2). В SMBR2 опять находится таблица разделов расширенного раздела. Поскольку в этом расширенном разделе должен присутствовать только один логический диск (Е:), в таблице разделов должен находиться только один элемент, описывающий этот диск. В поле «Идентификатор системы» этого элемента будет код для описания первичного раздела. Начальный сектор логического диска Е: будет располагаться в первом подходящем для этого секторе после SMBR2, т.е. адрес начального сектора этого диска определиться так: цилиндр - 33701, головка - 1, сектор - 1. (Между SMBR2 и началом диска опять остается свободное место на нулевой поверхности.) Так как логический диск Е: занимает все свободное место во втором расширенном разделе, адрес конечного сектора логического диска совпадет с адресом последнего сектора второго расширенного раздела, который в свою очередь совпадает с адресом последнего сектора физического диска (цилиндр - 38309, головка - 15, сектор - 255). |