Логическая структура диска это

Обновлено: 07.07.2024

С внутренним устройством жёсткого диска HDD знакомы многие пользователи, включая тех, которым никогда не приходилось вскрывать гермоблок. Благо, это и не нужно, ведь на этот счёт в интернете имеется масса информации. А вот как именно устроена логическая структура диска знают лишь немногие. Физически жёсткий диск HDD представляет собой несколько закрепленных на центральном шпинделе магнитных пластин, имеющих особую «нарезку», именуемую треками.

Информация считывается и записывается на них в виде нулей и единиц, и в этом есть некая аналогия тому, как музыка записывается на старые виниловые пластинки.

Только вот в случае с жёсткими дисками всё намного сложнее. Как компьютер определяет, в каком месте диска лежит какой файл? Каким образом достигается отказоустойчивость, благодаря которой мы можем переустанавливать операционную систему, не затрагивая пользовательские файлы? Это было бы едва возможно, если бы данные не хранились на диске в упорядоченном виде. Тема логической структуры HDD-диска настолько глубока и обширна, что рассмотреть её в рамках одной статьи не представляется возможным, поэтому сегодня мы коснёмся только двух её самых важных аспектов — адресации и разметки.

Адресация жесткого диска

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

Первый механизм адресации, который использовался в ранних моделях жёстких дисков назывался CHS, что расшифровывалось как Cylinder, Head, Sector — цилиндр, головка, сектор. Что такое головка и сектор, надеемся, вам понятно. Под цилиндром же нужно понимать совокупность круговых дорожек одинакового радиуса на всех магнитных поверхностях пластин одного накопителя.

CHS

По сути, CHS это ничто иное, как трёхмерная система координат, где Cylinder это номер дорожки на поверхности диска, Head — номер считывающей головки, а Sector — номер конкретного сектора. Когда компьютеру нужно было прочитать некий файл, он делал запрос в формате CHS, и считывающая головка переходила как раз в нужный сектор, в котором этот файл был записан.

Очевидный минус технологии CHS заключался в поддержке дисков весьма ограниченного объёма, так как на низком уровне под адресацию изначально выделялось немного памяти. Максимальный объём диска с CHS не мог превышать 508 Мб. Поэтому, когда появились более объёмные диски, возникла нужда в новых механизмах адресации. Последующие механизмы адресации были основаны на CHS и представляли собой его расширенную версию.

Настоящим прорывом стал LBA (Logical block addressing), не нуждающийся в учёте геометрии жёсткого диска, вместо этого всем секторам от самого первого (нулевого) до самого последнего присваивался свой порядковый номер, служащий идентификатором. При этом под адресацию выделялось гораздо больше памяти. В общем, максимальный объём жёсткого диска, с которым может работать LBA составляет 128 Пиб , что намного больше объёма любых современных дисков, используемых в персональных компьютерах.

Разметка жёсткого диска

С адресацией всё более-менее ясно, теперь давайте перейдём к другому важному понятию — разметке жёсткого диска. Разметка — это разделение общего пространства диска на логические разделы иначе партиции, которые могут быть видны в операционной системе. Зачем вообще нужно такое разделение? Во-первых, это позволяет разграничивать загрузочные, системные и пользовательские файлы, во-вторых, использовать на каждом из разделов свой тип файловой системы, в-третьих — устанавливать на один ПК несколько разных операционных систем.

Существует две основных схемы разбиения на партиции. Самой распространённой является MBR. Называется она так потому, что в первых физических секторах жёсткого диска этого типа размещается особая область, содержащая загрузочный код и таблицу разделов. Эта область ещё именуется главной загрузочной записью, что на английском языке звучит как master boot record или сокращённо MBR.

MBR

Эта область диска не является ни одним из логических разделов, и она не доступна для просмотра средствами операционной системы. Загрузочный код передаёт управление компьютером системному разделу, а таблица разделов указывает, где именно начинается и заканчивается тот или иной логический раздел. Основной недостаток MBR заключается в том, что отводимая под него область диска является фиксированной , а это значит, что в него можно записать ограниченное количество информации. В свою очередь это становится следствием других ограничений, а именно:

• На MBR-диске нельзя создать более четырёх логических Primary-разделов (ограничение условно снимается посредством создания extended-партиции).
• Каким бы объёмным ни был диск, пользователю будет доступно только 2 Терабайта.

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

Менее распространённой, но зато более новой и надёжной схемой является GPT или GUID Partition Table. Если посмотреть на схематическое изображение GPT-диска, то можно увидеть, что его структура очень похожа на структуру диска MBR, но это сходство весьма условное. Приходящаяся на нулевой сектор область называется Protection MBR, и назначение её несколько иное, чем обычной MBR. Служит она для защиты схемы GPT от перезаписи утилитами, которые не понимают GPT. Если такой утилите «показать» GPT-диск, то благодаря Protection MBR она определит его как MBR-диск, на котором отсутствует свободное пространство. Следовательно, перезаписать она его уже не сможет.

GPT

В будущем, когда MBR уйдёт в прошлое, возможно, в Protection MBR больше не будет надобности, ведь процесс загрузки с GPT-дисков в EFI происходит несколько иначе. Помимо области Protection MBR, на GPT-дисках имеется другая область, именуемая GUID Partition Entries Array. Это аналог Partition Table в MBR, содержащий список всех партиций на диске GPT. В отличие от MBR, он не имеет жёсткой фиксации, поэтому на GPT-диске можно создавать практически неограниченное количество логических разделов. Ограничения тут могут быть только на уровне операционной системы. Например, Windows не может работать с более чем с 128 партициями.

Другим важным отличием GPT-дисков является резервирование загрузочных данных и сведений о таблице разделов. Если в MBR-дисках они хранятся в одном месте — в первых физических секторах, то в дисках с разметкой GPT они могут храниться где-то ещё, но уже в виде копий. Если основные данные окажутся повреждены, механизм GPT восстановит их из бекапа. В MBR же это привело бы к невозможности загрузки компьютера или «потере» разделов, а вместе с ними и записанных данных.

И наконец, разметка GPT позволяет работать с дисками объёмом больше 2 Тб.

Д иски 3 Тб и больше будут читаться и в MBR, но доступно пользователю будет только 2 Тб.

На этом пока всё. В следующий раз мы продолжим знакомится с логической структурой жестких дисков. В частности, вы узнаете, чем отличаются обычные диски от динамических, где последние применяются, а также что представляет собой файловая система.

Структура жесткого диска

Обычно пользователи имеют в своем компьютере один встроенный накопитель. При первой установке операционной системы производится разбивка его на определенное количество разделов. Каждый логический том отвечает за хранение определенной информации. Кроме этого он может быть форматирован в разные файловые системы и в одну из двух структур. Далее мы бы хотели максимально детально описать программную структуру жесткого диска.

Стандартные буквенные обозначения

Буквенные обозначения разделов жесткого диска

Пользователь сам разбивает HDD на разделы, присваивая им любые доступные буквы. О том, как создать такую разбивку вручную, читайте в другой нашей статье по следующей ссылке.

Структуры MBR и GPT

С томами и разделами все предельно просто, однако присутствуют еще и структуры. Более старым логическим образцом называется MBR (Master Boot Record), а ему на замену пришел усовершенствованный GPT (GUID Partition Table). Давайте остановимся на каждой структуре и рассмотрим их детально.

MBR

Процесс считывания MBR структуры жесткого диска

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

Процесс считывания раздела в MBR структуре жесткого диска

За координаты расположения крайней записи раздела рассматриваемой технологии отвечает технология CHS (Cylinder Head Sector). Она считывает номер цилиндра, головки и секторы. Нумерация упомянутых частей начинается с 0, а секторы с 1. Именно путем считывания всех этих координат и определяется логический раздел жесткого диска.

Недостаток такой системы заключается в ограниченности адресации объема данных. То есть во время первой версии CHS раздел мог иметь максимум 8 ГБ памяти, чего в скором времени, конечно же, перестало хватать. На замену пришла адресация LBA (Logical Block Addressing), в которой была переработана система нумерации. Теперь поддерживаются диски объемом до 2 ТБ. LBA была еще доработана, но изменения коснулись только GPT.

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

GPT

Технология MBR обладала рядом недостатков и ограничений, которые не могли обеспечить работу с большим количеством данных. Исправлять ее или изменять было бессмысленно, поэтому вместе с выходом UEFI пользователи узнали о новой структуре GPT. Она была создана с учетом постоянного увеличения объема накопителей и изменений в работе ПК, поэтому на текущее время это самое передовое решение. Отличается от MBR она такими параметрами:

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

Стоит отметить, что сектор MBR в GPT тоже присутствует, он является первым и имеет размер в один бит. Необходим он для корректной работы HDD со старыми комплектующими, а также не позволяет программам, которым неизвестен GPT, разрушить структуру. Поэтому этот сектор называется защитным. Далее располагается сектор размером в 32, 48 или 64 бита, отвечающий за разметку на разделы, называется он первичным GPT-заголовком. После этих двух секторов идет считывание содержимого, вторая схема томов, а замыкает все это копия GPT. Полная структура представлена на скриншоте ниже.

Процесс считывания GPT структуры

Файловые системы и форматирование

Говоря о логической структуре HDD, нельзя не упомянуть о доступных файловых системах. Конечно, их существует много, но остановиться мы бы хотели на разновидностях для двух ОС, с которым чаще всего работают обычные пользователи. Если компьютер не может определить файловую систему, то жесткий диск приобретает формат RAW и именно в нем отображается в ОС. Доступно ручное исправление этой проблемы. Мы предлагаем ознакомиться с деталями выполнения этой задачи далее.

Windows

  1. FAT32. Компания Microsoft начала выпуск файловых систем с FAT, в будущем эта технология претерпела множество изменений, и последней версией на данный момент является FAT32. Ее особенность заключается в том, что она не предназначена для обработки и хранения больших файлов, а также на нее будет довольно проблематично установить тяжелые программы. Однако FAT32 универсальна, и при создании внешнего жесткого диска она используется для того, чтобы сохраненные файлы можно было считать с любого телевизора или проигрывателя.
  2. NTFS. Майкрософт представила NTFS, чтобы полностью заменить FAT32. Сейчас эта файловая система поддерживается всеми версиями Windows, начиная от XP, также отлично работает на Linux, однако на Mac OS можно только считать информацию, записать ничего не получится. Выделяется NTFS тем, что не имеет ограничений на размер записываемых файлов, обладает расширенной поддержкой разных форматов, возможностью сжатия логических разделов и легко восстанавливается при различных повреждениях. Все остальные файловые системы в большем роде подходят для небольших съемных носителей и достаточно редко применяются в жестких дисках, поэтому мы не будем их рассматривать в рамках этой статьи.

Linux

С файловыми системами Windows мы разобрались. Хотелось бы обратить внимание еще на поддерживаемые типы в ОС Linux, поскольку она также является популярной среди пользователей. Линукс поддерживает работу со всеми файловыми системами Виндовс, однако саму операционку рекомендуется устанавливать на специально разработанную для этого ФС. Отметить стоит такие разновидности:

Что касается выбора файловой системы под установку ОС, обычному пользователю лучше выбрать рекомендуемый вариант при инсталляции. Обычно это Etx4 или XFS. Продвинутые юзеры уже задействуют ФС под свои нужды, применяя ее различные типы для выполнения поставленных задач.

Форматирование жесткого диска

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

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

Дефрагментация жесткого диска

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

Закрыть

Мы рады, что смогли помочь Вам в решении проблемы.

Отблагодарите автора, поделитесь статьей в социальных сетях.

Закрыть

Опишите, что у вас не получилось. Наши специалисты постараются ответить максимально быстро.

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

Физическая структура

С физической точки зрения обе поверхности всех магнитных дисков в массиве-пакете содержат дорожки. BIOS не определяет, к какому конкретно «блину» относится та или иная дорожка, поэтому все поверхности пронумерованы единой сквозной нумерацией. Каждой рабочей поверхности соответствует своя головка , по которым, собственно говоря, поверхности и нумеруются (параметр heads ). Физически максимально допустимое число головок за всю историю производства винчестеров было равно 11, но в современных накопителях более 6 головок не используется. В используемых ныне магнитных дисках число дорожек равно 80, а число дорожек жесткого диска достигает нескольких тысяч. Дорожки, как и головки, идентифицируются номером (внешняя дорожка и верхняя головка имеет нулевой номер). Количество дорожек на диске определяется поверхностной плотностью записи.

Дорожки, в свою очередь, разбиваются на сектора , являющие минимальными физическими элементами хранения и адресации данных. Чаще всего, сектора на каждой дорожке имеют фиксированный угловой размер, благодаря чему на всех дорожках располагается одинаковое количество секторов. Каждая дорожка дискеты 3,5” содержит 18 секторов. Жесткий диск имеет обычно от 17 до 63 секторов (так считает BIOS ). Реально же на дорожке современного накопителя содержится около 100 секторов, а максимальное их количество равно 256. Размер сектора определен в 512 байт. Нумерация секторов на дорожке начинается с единицы, а не с нуля, в отличие от головок и цилиндров.

Каждый сектор несет не только данные, но и служебную информацию. В начале каждого сектора записывается его заголовок ( prefix ), по которому определяется начало и номер сектора, а в конце – заключение ( suffix ), в котором находится контрольная сумма ( checksum , CRC ), необходимая для проверки целостности данных. Заголовок сектора включает в себя идентификатор ( ID ) сектора, первую CRC (контрольная сумма) и интервал включения записи. Идентификатор содержит информацию о номере цилиндра, головки и сектора. Далее следует интервал включения записи, после которого следует 512 байт данных. За данными располагается вторая CRC и интервал между записями (секторами), необходимый для того, чтобы застраховать следующий сектор от записи на предыдущий. Это может произойти из-за неравномерной скорости вращения диска. Завершает сектор прединдексный интервал, который имеет размер от 693 байт, служит для компенсации неравномерности скорости вращения диска. Таким образом, размер сектора увеличивается до 571 байта, из которых 512 байт составляют данные.

Вся эта информация записывается на заводе при низкоуровневом ( LowLewel ) форматировании, используя специальные программные средства (например, Speed Store или Disk Manager ) или команды DOS . Кроме промежутков между секторами существуют еще и промежутки между самими дорожками. Префиксы, суффиксы и промежутки как раз и составляют то пространство диска, которое теряется при форматировании.

Сектора, находящие друг над другом в пакете дисков, на которые одновременно может быть спозиционирован пакет головок, называется цилиндром . В связи с тем, что накопитель имеет несколько дисков, расположен­ных друг под другом, разбиения дисков идентичны. Поэтому при рассмот­рении жестких дисков чаще говорят о цилиндрах, чем о дорожках.

Адресация дискового пространства в BIOS

Геометрия (ёмкостные параметры) жесткого диска описываются в BIOS следующей формулой:

Общий объем (байт) = C x H x S x 512 (байт),

где С — количество цилиндров; Н – количество головок; S — количество секторов.

Следовательно, вследствие физических ограничений накопителей, BIOS может адресовать («увидеть») накопитель максимальной ёмкостью 128 Гбайт:

65536 x 16 x 256 x 512 = 128 Гбайт.

Однако из-за ограничений работы контроллера винчестера и BIOS эта величина может быть существенно сокращена. Так, до 1995 года использовался стандартный CHS -режим (стандарт ATA -1), в котором физические параметры накопителя соответствовали логическим , передаваемым в BIOS . При стандартной CHS -адресации максимальное количество цилиндров равно 1024, головок — 16, что приводит к ограниче­нию максимальной емкости жесткого диска (504 Мбайт). Кроме того, BIOS «считает», что у любого накопителя на любой дорожке должно быть ровно 63 сектора.

Современные IDE -контроллеры (начиная со стандартом ATA -2, EIDE ) поддерживают универсальный режим транс­ляции, для которого главным параметром является общее количество секторов. В большинстве BIOS появилась функция « Autodetect », которая позволяет считывать и устанавливать паспортные параметры накопителя. При инициализации накопителю переда­ются два параметра: количество головок и секторов; затем накопитель под­страивает свою логическую структуру таким образом, чтобы общая емкость не изменилась, причем коррекция осуществляется за счет цилиндров.

Максимальная емкость накопителей АТА-2 значительно увеличена за счет раз­работки улучшенной BIOS ( Enhanced BIOS ), что позволило преодолеть барьер в 504 Мбайт емкости жесткого диска. Первая модификация стандарта ATA -2 с режимом передачи PIO 3 использовала режим адресации ECHS , благодаря которому в CMOS Setup была введена опция Large и ECHS. Их надо было использовать для дисков, количество цилиндров которых превышает 1024, но к которым нельзя было применить адресацию LBA . Пересчет происходил в 2 этапа: сначала контроллер считал общее количество цилиндров, затем делил его пополам и в два раза увеличивал количество головок. Этот метод позволил адресовать 3-4 Гбайт дискового пространства.

В 1998 году для BIOS материнских плат выпустили обновление, способное решить проблему «8 Гигабайт». Была изменена адресация к прерыванию Int 13h ( DOS ), чем удалось преодолеть барьер 1024 цилиндров. Теперь для физической адресации использовались все 28 бит:

· С – 16 бит (максимум 2 16 = 65536)

· H – 4 бита (максимум 2 4 = 16)

· S – 8 бит (максимум 2 8 = 255).

Таким образом, теперь в интерфейсе ATA -5 теоретически был доступен максимальный объем винчестеров. Но биосописатели в очередной раз ошиблись. Они не учли, что при стандартном пересчете LBA с 16-ю головками и 63-мя секторами у винчестеров объемом более 33,8 Гбайт цилиндров окажется больше 65536, и они не поместятся в 16 бит отведенные под цилиндры. Эта проблема была решена в 1999 году введением простого условия: если число секторов превышает 65536 x 16 x 63 = 66060288, то тогда количество секторов приравнивать к 255. Также для некоторых BIOS существовала ошибка определения винчестеров объемом больше 65 Гбайт, которая, как обычно, решалась обновлением прошивки.

Логическая структура

Кроме того, что накопитель должен быть сконфигурирован в CMOS , его логическую структуру должна понимать операционная система. Для обращения к информации используется кластер ( allocation unit ) – минимальная логическая единица доступа к информации. Каждый кластер состоит из нескольких секторов (8 и более). Каждый кластер пронумерован и может быть либо свободен, либо монопольно занят для хранения определенного файла, даже если не все сектора внутри его заняты. Следовательно, даже файл размером несколько байт требует целого кластера. В результате, на каждом файле теряется около половины кластера. Чем больше размер кластера, тем больше потери. Использование кластеров позволяет ускорить работу, так количество кластеров существенно меньше количества секторов.

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

Для DOS версии 3.0 и выше используется алгоритм следующего свободного кластера размещения файлов на диске. Кластеры устроены так, что каждый из них ссылается на последующий. При работе DOS ищет свободные кластеры не с начала диска, а с места последней записи на диск. DOS устанавливает указатель последнего записанного кластера и ищет свободные кластеры, пользуясь этим указателем. Указатель размещается в RAM и уничтожается при перезарузке. Если DOS дошла до конца диска, то указатель также удаляется, а поиск начинается с начала диска. Таким образом осуществляются операции файлами на диске.

Этот алгоритм позволяет восстанавливать удаленные файлы. При удалении файла в начало его первого кластера ставится знак «?», и все кластеры, связанные с данным считаются свободными. Указатель выставляется на следующий свободный кластер, запись продолжается в идущих далее свободных кластерах. Перезапись кластера, в котором произошло удаление, произойдет только когда указатель в новом цикле дойдет до данного кластера. Даже, если переписывается один файл поверх другого, то запись работает по такой же схеме. А для каждого нового файла используется первая свободная запись.

Файловые системы

Файловая система через использование кластеров позволяет осуществлять доступ к данным. Большинство файловых систем построено на основе таблицы размещения файлов ( file allocation table - FAT ). Наиболее распространены файловые системы FAT 12 (диски менее 16 Мбайт), FAT 16 (или просто FAT) и FAT 32.

FAT подразумевает наличие следующих структур (в порядке расположения их на диске):

· Загрузочные секторы главного и дополнительного разделов

· Загрузочный сектор логического диска

· Таблицы размещения файлов ( FAT )

· Цилиндр диагностических операций

1. Загрузочный сектор главного раздела – Master Boot Record ( MBR , Главная загрузочная запись) или Partition table ( PT , Таблица разделов) – является первым сектором на жестком диске (занимает один или более секторов). Но под этот раздел отдана целиком вся первая дорожка (цилиндр 0, головка 0, сектор 1). Он в себя включает Таблицу главного раздела, которая может содержать только четыре записи, так как больше не поместится в 512 байт. Корневой таблице разделов принадлежат адреса 01BEh-01FDh. Очевидно, что можно создать только 4 раздела, среди которых могут быть Первичные ( Primary ) и Дополнительные ( Extended ) разделы. Поэтому если на диске выделен Дополнительный раздел, то Первичных уже можно создать не более трех.

Первичный может иметь только один логический диск, в то время как количество логических в Дополнительном разделе не ограничено. Общее количество логических дисков (томов) не должно быть более 24 (для DOS ). В первом секторе Дополнительного раздела расположена его Таблица разделов с такой же структурой как и Корневая таблица разделов. В ней описываются адреса начала и конца первого логического диска в этом разделе и его файловая система, а также зоны, занимаемой остальными логическими дисками (если они есть). Все последующие разделы в Дополнительном разделе имеют аналогичную структуру.

MBR создается с помощью стандартной программы fdisk . Правда последняя накладывает некоторые ограничения: первичный раздел может быть создан только один.

Также в Главной загрузочной записи находится главный загрузочный код – небольшая программа, которая выполняется из BIOS . Она передает управление активному (загрузочному) разделу.

2. Загрузочная запись ( Boot Record ) занимает 32 первых сектора каждого логического диска (для первичного раздела – цилиндр 0, головка 1, сектор 1). Загрузочный сектор активного раздела получает управление от MBR . Он выполняет некоторые проверки и запускает с диска первый системный файл io . sys . Формирует загрузочная запись программой format . Напомню, что только Первичный раздел может быть активным. Загрузочная запись, как Корневая таблица разделов должны заканчиваться сигнатурой 55АА. По этой сигнатуре BIOS определяет, успешной ли была загрузка.

3. Таблица размещения файлов ( FAT ) – основная часть файловой системы, давшая ей название. Она представляет собой набор записей с номерами, соответствующих номерам всех кластеров на логическом диске. Каждому кластеру соответствует одно число. Для каждого кластера запись может иметь несколько стандартных значений: кластер свободен, кластер поврежден или кластер является последним кластером файла, или содержать ссылку на следующий кластер в цепочке, относящийся к тому же файлу. Получается, что в таблице хранится информация только о первом кластере цепочки кластеров одного файла.

Каждая ячейка FAT хранит значение длиной 12, 16 или 32 бита. Отсюда и пошли названия FAT 12, FAT 16 и FAT 32. Размер записей в таблице FAT определяет максимальный размер логического тома. Так как в FAT 16 запись представлялась 2-байтовым числом, то на логическом диске не могло быть более 65536 кластеров: 2 16 = 65536. В результате несложных вычислений мы находим, что вся таблица FAT помещается в 1 Мбайте. Этим и пользовались вирусы типа «Чернобыль». В связи этим FAT , начиная с DOS 4.0 ограничивала объем логического диска в 2 Гбайта (ра змер кластера составлял 32 Кбайта): 32 Кб х 65536 = 2 Гб.

Операционные системы Windows 95 OSR 2 и старшие поддерживают 32-разрядную FAT с размером кластера до 64 Кбайт. Таким образом, эта система поддерживает тома размером до 2 Тбайт. А применяется она в дисках объемом от 512 Мбайт.

Всего в каждом логическом диске существует 2 таблицы FAT , которые следуют друг за другом. При порче первого экземпляра, используется второй, путем корректировки первого. Но у этой системы защиты есть свои недостатки. Во-первых, вторая таблица используется только когда первая полностью испорчена . Во-вторых, вторая копия часто обновляется за счет первой, так что во второй также могут содержаться ошибки.

В зависимости от размера логического диска меняется и размер кластера. Для FAT 16 тома до 260 Мбайт используют кластеры размером 2 Кбайта, до 8 Гбайт – 32 Кбайта. Размеры кластеров и записей определяются при форматировании высоко уровня. Для FAT 32 зависимость размера кластера от размера тома приведена в таблице.

Для работы с жестким диском его для начала необходимо как-то разметить, чтобы операционная система могла понять в какие области диска можно записывать информацию. Поскольку жесткие диски имеют большой объем, их пространство обычно разбивают на несколько частей — разделов диска. Каждому такому разделу может быть присвоена своя буква логического диска (для систем семейства Windows) и работать с ним можно, как будто это независимый диск в системе.

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

Структура MBR

До недавнего времени структура MBR использовалась на всех персональных компьютерах для того, чтобы можно было разделить один большой физический жесткий диск (HDD) на несколько логических частей — разделы диска (partition). В настоящее время MBR активно вытесняется новой структурой разделения дисков на разделы — GPT (GUID Partition Table). Однако MBR используется еще довольно широко, так что посмотрим что она из себя представляет.

MBR всегда находится в первом секторе жесткого диска. При загрузке компьютера, BIOS считывает этот сектор с диска в память по адресу 0000:7C00h и передает ему управление.

Итак, первая секция структуры MBR — это секция с исполняемым кодом, который и будет руководить дальнейшей загрузкой. Размер этой секции может быть максимум 440 байт. Далее идут 4 байта, отведенные на идентификацию диска. В операционных системах, где идентификация не используется, это место может занимать исполняемый код. То же самое касается и последующих 2 байт.

Начиная со смещения 01BEh находится сама таблица разделов жесткого диска. Таблица состоит из 4 записей (по одной на каждый возможный раздел диска) размером 16 байт.

Структура записи для одного раздела:

Первым байтом в этой структуре является признак активности раздела. Этот признак определяет с какого раздела следует продолжить загрузку. Может быть только один активный раздел, иначе загрузка продолжена не будет.

Следующие три байта — это так называемые CHS-координаты первого сектора раздела.

По смещению 04h находится код типа раздела. Именно по этому типу можно определить что находится в данном разделе, какая файловая система на нем и т.п. Список зарезервированных типов разделов можно посмотреть, например, в википедии по ссылке Типы разделов.

После типа раздела идут 3 байта, определяющие CHS-координаты последнего сектора раздела.

CHS-координаты сектора расшифровываются как Cylinder Head Sector и соответственно обозначают номер цилиндра (дорожки), номер головки (поверхности) и номер сектора. Цилиндры и головки нумеруются с нуля, сектор нумеруется с единицы. Таким образом CHS=0/0/1 означает первый сектор на нулевом цилиндре на нулевой головке. Именно здесь находится сектор MBR.

Все разделы диска, за исключением первого, обычно начинаются с нулевой головки и первого сектора какого-либо цилиндра. То есть их адрес будет N/0/1. Первый раздел диска начинается с головки 1, то есть по адресу 0/1/1. Это все из-за того, что на нулевой головке место уже занято сектором MBR. Таким образом, между сектором MBR и началом первого раздела всегда есть дополнителььные неиспользуемые 62 сектора. Некоторые загрузчики ОС используют их для своих нужд.

Интересен формат хранения номера цилиндра и сектора в структуре записи раздела. Номер цилиндра и номер сектора делят между собой два байта, но не поровну, а как 10:6. То есть на номер сектора приходится младшие 6 бит младшего байта, что позволяет задавать номера секторов от 1 до 63. А на номер цилиндра отведено 10 бит — 8 бит старшего байта и оставшиеся 2 бита от младшего байта: «CCCCCCCC CCSSSSSS», причем в младшем байте находятся старшие биты номера цилиндра.

Проблема с CHS-координатами состоит в том, что с помощью такой записи можно адресовать максимум 8 Гб диска. В эпоху DOS это было приемлемо, однако довольно скоро этого перестало хватать. Для решения этой проблемы была разработана система адресации LBA (Logical Block Addressing), которая использовала плоскую 32-битную нумерацию секторов диска. Это позволило адресовать диски размером до 2Тб. Позже разрядность LBA увеличили до 48 бит, однако MBR эти изменения не затронули. В нем по-прежнему осталась 32-битная адресация секторов.

Итак, в настоящее время повсеместно используется LBA-адресация для секторов на диске и в структуре записи раздела адрес его первого сектора прописывается по смещению 08h, а размер раздела — по смещению 0Ch.

Для дисков размером до 8Гб (когда адресация по CHS еще возможна) поля структуры с CHS-координатами и LBA-адресации должны соответствовать друг другу по значению (корректно конвертироваться из одного формата в другой). У дисков размером более 8Гб значения всех трех байт CHS-координат должны быть равны FFh (для головки допускается также значение FEh).

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

Расширенные разделы

Разделы, отмеченные в таблице типом 05h и 0Fh, это так называемые расширенные разделы. С их помощью можно создавать больше разделов на диске, чем это позволяет MBR. На самом деле расширенных разделов несколько больше, например есть разделы с типами C5h, 15h, 1Fh, 91h, 9Bh, 85h. В основном все эти типы разделов использовались в свое время различными операционными системами (такими как например OS/2, DR-DOS, FreeDOS) с одной и той же целью — увеличить количество разделов на диске. Однако со временем различные форматы отпали и остались только разделы с типами 05h и 0Fh. Единственное исключение — это тип 85h. Он до сих пор может использоваться в Linux для формирования второй цепочки логических дисков, скрытых от других операционных систем. Разделы с типом 05h используются для дисков менее 8Гб (где еще возможна адресация через CHS), а тип 0Fh используется для дисков больше 8Гб (и используется LBA-адресация).

В первом секторе расширенного раздела находится структура EBR (Extended Boot Record). Она во многом схожа со структурой MBR, но имеет следующие отличия:

  • В EBR нет исполняемого кода. Некоторые загрузчики могут его туда записывать, но обычно это место заполнено нулями
  • Сигнатуры диска и два неиспользуемых байта должны быть заполнены нулями
  • В таблице разделов могут быть заполнены только две первых записи. Остальные две записи должны быть заполнены нулями

В отличие от MBR, где позволяется создавать не более четырёх разделов, структура EBR позволяет организовать список логических разделов, ограниченный лишь размером раздела-контейнера (того самого, который с типом 05h или 0Fh). Для организации такого списка используется следующий формат записей: первая запись в таблице разделов EBR указывает на логический раздел, связанный с данным EBR, а вторая запись указывает на следующий в списке раздел EBR. Если данный логический раздел является последним в списке, то вторая запись в таблице разделов EBR должна быть заполнена нулями.

Формат записей разделов в EBR аналогичен формату записи в структуре MBR, однако логически немного отличается.

Признак активности раздела для разделов структуры EBR всегда будет 0, так как загрузка осуществлялась только с основных разделов диска. Координаты CHS, с которых начинается раздел используются, если не задействована LBA-адресация, также как и в структуре MBR.

А вот поля, где в режиме LBA-адресации должны находиться номер начального сектора и количество секторов раздела, в структуре EBR используются несколько иначе.

Для первой записи таблицы разделов EBR в поле начального сектора раздела (смещение 08h) записывается расстояние в секторах между текущим сектором EBR и началом логического раздела, на который ссылается запись. В поле количества секторов раздела (смещение 0Ch) в этом случае пишется размер этого логического раздела в секторах.

Для второй записи таблицы разделов EBR в поле начального сектора раздела записывается расстояние между сектором самой первой EBR и сектором следующей EBR в списке. В поле количества секторов раздела в этом случае пишется размер области диска от сектора этой следующей структуры EBR и до конца логического раздела, относящегося к этой структуре.

Таким образом, первая запись таблицы разделов описывает как найти, и какой размер занимает текущий логический раздел, а вторая запись описывает как найти, и какой размер занимает следующий EBR в списке, вместе со своим разделом.

Структура GPT

В современных компьютерах на смену BIOS пришла новая спецификация UEFI, а вместе с ней и новое устройство разделов на жестком диске — GUID Partition Table (GPT). В этой структуре были учтены все недостатки и ограничения, накладываемые MBR, и разработана она была с большим запасом на будущее.

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

Рассмотрим теперь устройство структуры GPT подробнее. Вся структура GPT на жестком диске состоит из 6 частей:

LBA-адрес Размер (секторов) Назначение
LBA 0 1 Защитный MBR-сектор
LBA 1 1 Первичный GPT-заголовок
LBA 2 32 Таблица разделов диска
LBA 34 NN Содержимое разделов диска
LBA -34 32 Копия таблицы разделов диска
LBA -2 1 Копия GPT-заголовка

Защитный MBR-сектор

Первый сектор на диске (с адресом LBA 0) — это все тот же MBR-сектор. Он оставлен для совместимости со старым программным обеспечением и предназначен для защиты GPT-структуры от случайных повреждений при работе программ, которым про GPT ничего не известно. Для таких программ структура разделов будет выглядеть как один раздел, занимающий все место на жестком диске.

Структура этого сектора ничем не отличается от обычного сектора MBR. В его таблице разделов дожна быть создана единственная запись с типом раздела 0xEE. Раздел должен начинаться с адреса LBA 1 и иметь размер 0xFFFFFFFF. В полях для CHS-адресации раздел соответственно должен начинаться с адреса 0/0/2 (сектор 1 занят под саму MBR) и иметь конечный CHS-адрес FF/FF/FF. Признак активного раздела должен иметь значение 0 (неактивный).

При работе компьютера с UEFI, данный MBR-сектор просто игнорируется и никакой код в нем также не выполняется.

Первичный GPT-заголовок

Этот заголовочный сектор содержит в себе данные о всех LBA-адресах, использующихся для разметки диска на разделы.

Структура GPT-заголовка:

Смещение (байт) Размер поля (байт) Пример заполнения Название и описание поля
0x00 8 байт 45 46 49 20 50 41 52 54 Сигнатура заголовка. Используется для идентификации всех EFI-совместимых GPT-заголовков. Должно содержать значение 45 46 49 20 50 41 52 54, что в виде текста расшифровывается как "EFI PART".
0x08 4 байта 00 00 01 00 Версия формата заголовка (не спецификации UEFI). Сейчас используется версия заголовка 1.0
0x0C 4 байта 5C 00 00 00 Размер заголовка GPT в байтах. Имеет значение 0x5C (92 байта)
0x10 4 байта 27 6D 9F C9 Контрольная сумма GPT-заголовка (по адресам от 0x00 до 0x5C). Алгоритм контрольной суммы — CRC32. При подсчёте контрольной суммы начальное значение этого поля принимается равным нулю.
0x14 4 байта 00 00 00 00 Зарезервировано. Должно иметь значение 0
0x18 8 байт 01 00 00 00 00 00 00 00 Адрес сектора, содержащего первичный GPT-заголовок. Всегда имеет значение LBA 1.
0x20 8 байт 37 C8 11 01 00 00 00 00 Адрес сектора, содержащего копию GPT-заголовка. Всегда имеет значение адреса последнего сектора на диске.
0x28 8 байт 22 00 00 00 00 00 00 00 Адрес сектора с которого начинаются разделы на диске. Иными словами — адрес первого раздела диска
0x30 8 байт 17 C8 11 01 00 00 00 00 Адрес последнего сектора диска, отведенного под разделы
0x38 16 байт 00 A2 DA 98 9F 79 C0 01 A1 F4 04 62 2F D5 EC 6D GUID диска. Содержит уникальный идентификатор, выданный диску и GPT-заголовку при разметке
0x48 8 байт 02 00 00 00 00 00 00 00 Адрес начала таблицы разделов
0x50 4 байта 80 00 00 00 Максимальное число разделов, которое может содержать таблица
0x54 4 байта 80 00 00 00 Размер записи для раздела
0x58 4 байта 27 C3 F3 85 Контрольная сумма таблицы разделов. Алгоритм контрольной суммы — CRC32
0x5C 420 байт 0 Зарезервировано. Должно быть заполнено нулями

Система UEFI проверяет корректность GPT-заголовка, используя контрольный суммы, вычисляемые по алгоритму CRC32. Если первичный заголовок поврежден, то проверяется контрольная сумма копии заголовка. Если контрольная сумма копии заголовка правильная, то эта копия используется для восстановления информации в первичном заголовке. Восстановление также происходит и в обратную сторону — если первичный заголовок корректный, а копия неверна, то копия восстанавливается по данным из первичного заголовка. Если же обе копии заголовка повреждены, то диск становится недоступным для работы.

У таблицы разделов дополнительно существует своя контрольная сумма, которая записывается в заголовке по смещению 0x58. При изменении данных в таблице разделов, эта сумма рассчитывается заново и обновляется в первичном заголовке и в его копии, а затем рассчитывается и обновляется контрольная сумма самих GPT-заголовков.

Таблица разделов диска

Следующей частью структуры GPT является собственно таблица разделов. В настоящее время операционные системы Windows и Linux используют одинаковый формат таблицы разделов — максимум 128 разделов, на каждую запись раздела выделяется по 128 байт, соответственно вся таблица разделов займет 128*128=16384 байт, или 32 сектора диска.

Форматирование дисков. Для того чтобы на диске можно было хранить информацию, диск должен быть отформатирован, то есть должна быть создана физическая и логическая структура диска.

Формирование физической структуры диска состоит в создании на диске концентрических дорожек, которые, в свою очередь, делятся на секторы. Для этого в процессе форматирования магнитная головка дисковода расставляет в определенных местах диска метки дорожек и секторов.

  • информационная емкость сектора - 512 байтов;
  • количество секторов на дорожке - 18;
  • дорожек на одной стороне - 80;
  • сторон - 2.

Рис 4.24. Физическая структура дискеты

Логическая структура гибких дисков. Логическая структура магнитного диска представляет собой совокупность секторов (емкостью 512 байтов), каждый из которых имеет свой порядковый номер (например, 100). Сектора нумеруются в линейной последовательности от первого сектора нулевой дорожки до последнего сектора последней дорожки.

На гибком диске минимальным адресуемым элементом является сектор.

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

Файл записывается в произвольные свободные сектора, которые могут находиться на различных дорожках. Например, Файл_1 объемом 2 Кбайта может занимать сектора 34, 35 и 47, 48, а Файл_2 объемом 1 Кбайт - сектора 36 и 49.

Таблица 1.4. Логическая структура гибкого диска формата 3,5" (2-я сторона)

Для того чтобы можно было найти файл по его имени, на диске имеется каталог, представляющий собой базу данных.

Запись о файле содержит имя файла, адрес первого сектора, с которого начинается файл, объем файла, а также дату и время его создания (табл. 4.5).

Таблица 4.5. Структура записей в каталоге

Полная информация о секторах, которые занимают файлы, содержится в таблице размещения файлов (FAT - File Allocation Table). Количество ячеек FAT соответствует количеству секторов на диске, а значениями ячеек являются цепочки размещения файлов, то есть последовательности адресов секторов, в которых хранятся файлы.

Например, для двух рассмотренных выше файлов таблица FAT с 1 по 54 сектор принимает вид, представленный в табл. 4.6.

Таблица 4.6. Фрагмент FAT

Для размещения каталога - базы данных и таблицы FAT на гибком диске отводятся секторы со 2 по 33. Первый сектор отводится для размещения загрузочной записи операционной системы. Сами файлы могут быть записаны, начиная с 34 сектора.

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

Быстрое форматирование производит лишь очистку корневого каталога и таблицы размещения файлов. Информация, то есть сами файлы, сохраняется и в принципе возможно восстановление файловой системы.

1. В контекстном меню выбрать пункт Форматировать. Откроется диалоговая панель Форматирование. С помощью переключателя Способ форматирования выбрать пункт Полное.

В поле Метка можно ввести название диска. Для получения сведения о результатах форматирования установить флажок Вывести отчет о результатах. Щелкнуть по кнопке Начать.

2. После окончания форматирования диска появится информационная панель Результаты форматирования.

Вы увидите, что доступный для размещения данных информационный объем диска оказался равен 1 459 664 байта (2047 секторов), а системные файлы и поврежденные сектора отсутствуют.

В целях защиты информации от несанкционированного копирования можно задавать нестандартные параметры форматирования диска (количество дорожек, количество секторов и др.). Такое форматирование возможно в режиме MS-DOS.

1. Ввести команду [Программы-Сеанс MS-DOS]. Появится окно приложения Сеанс MS-DOS.

2. Ввести команду нестандартного форматирования гибкого диска А:, на котором будет 79 дорожек и 19 секторов на каждой дорожке:

Информационная емкость гибких дисков. Рассмотрим различие между емкостью неформатированного гибкого магнитного диска, его информационной емкостью после форматирования и информационной емкостью, доступной для записи данных.

Заявленная емкость неформатированного гибкого магнитного диска формата 3,5" составляет 1,44 Мбайт.

Рассчитаем общую информационную емкость отформатированного гибкого диска:

Количество секторов: N = 18 х 80 х 2 = 2880.

512 байт х N = 1 474 560 байт = 1 440 Кбайт = 1,40625 Мбайт.

Однако для записи данных доступно только 2847 секторов, то есть информационная емкость, доступная для записи данных, составляет:

512 байт х 2847 = 1 457 664 байт = 1423,5 Кбайт » 1,39 Мбайт.

Логическая структура жестких дисков. Логическая структура жестких дисков несколько отличается от логической структуры гибких дисков. Минимальным адресуемым элементом жесткого диска является кластер, который может включать в себя несколько секторов. Размер кластера зависит от типа используемой таблицы FAT и от емкости жесткого диска.

На жестком диске минимальным адресуемым элементом является кластер, который содержит несколько секторов.

Таблица FAT16 может адресовать 2 16 = 65 536 кластеров. Для дисков большой емкости размер кластера оказывается слишком большим, так как информационная емкость жестких дисков может достигать 150 Гбайт.

Например, для диска объемом 40 Гбайт размер кластера будет равен:

40 Гбайт/65536 = 655 360 байт = 640 Кбайт.

Файлу всегда выделяется целое число кластеров. Например, текстовый файл, содержащий слово "информатика", составляет всего 11 байтов, но на диске этот файл будет занимать целиком кластер, то есть 640 Кбайт дискового пространства для диска емкостью 150 Гбайт. При размещении на жестком диске большого количества небольших по размеру файлов они будут занимать кластеры лишь частично, что приведет к большим потерям свободного дискового пространства.

Эта проблема частично решается с помощью использования таблицы FAT32, в которой объем кластера принят равным 8 секторам или 4 килобайтам для диска любого объема.

В целях более надежного сохранения информации о размещении файлов на диске хранятся две идентичные копии таблицы FAT.

Преобразование FAT16 в FAT32 можно осуществить с помощью служебной программы Преобразование диска в FAT32, которая входит в состав Windows.

Дефрагментация дисков. Замедление скорости обмена данными может происходить в результате фрагментации файлов. Фрагментация файлов (фрагменты файлов хранятся в различных, удаленных друг от друга кластерах) возрастает с течением времени, в процессе удаления одних файлов и записи других.

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

1. Для запуска программы Дефрагментация диска, необходимо из Главного меню ввести команду [Стандартные-Служебные-Дефрагментация диска].

2. Диалоговая панель Выбор диска позволяет выбрать диск, нуждающийся в процедуре дефрагментации. После нажатия кнопки ОК появится петель Дефрагментация диска.

3. Процесс дефрагментации диска можно визуально наблюдать, если щелкнуть по кнопке Сведения. Каждый квадратик соответствует одному кластеру, при этом неоптимизированные, уже оптимизированные, а также считываемые и записываемые в данный момент кластеры имеют различные цвета.

  • на гибком магнитном диске;
  • на жестком магнитном диске.

2. Какова последовательность размещения файла Файл_2 из приведенного примера на секторах гибкого диска?

3. Почему различаются величины емкости отформатированного диска и информационной емкости, доступной для записи данных?

4. Чем различаются полное и быстрое форматирование диска?

5. Чем различаются таблицы размещения файлов FAT16 и FAT32?

6. С какой целью необходимо периодически проводить дефрагментацию жестких дисков?

4.14. Отформатировать гибкий диск с нестандартными параметрами.

4.15. Вычислить объем кластера вашего жесткого диска в системе FAT16.

4.16. С помощью служебной программы Сведения о системе определить тип FAT, используемый на ваших дисках.

4.17. С помощью служебной программы Проверка диска провести проверку целостности файловой системы.

4.18. С помощью служебной программы Дефрагментация диска провести дефрагментацию дисков вашего компьютера.

Читайте также: