Петр Ташков - Восстановление данных на 100%
Наряду с трехмерной адресацией CHS была придумана адресация логических блоков LBA – Logical Block Adress. С одной стороны, при этом типе адресации данные считываются логическими блоками, состоящими из нескольких секторов. Соответственно, число цилиндров делается меньше, а головок – больше, чем в действительности. С другой стороны, эта адресация линейная: каждому логическому блоку присваивается порядковый номер LBA. За нулевой принимается блок, который начинается с первого сектора нулевой головки нулевого цилиндра. Далее номера блоков определяются по формуле:
LBA = (CYL · HDS + HD) · SPT + SEC – 1,
где CYL, HD, SEC – номера цилиндра, головки и сектора в пространстве CHS; HDS – количество головок; SPT – количество секторов на дорожке.
Примечание
Блоки, цилиндры и дорожки нумеруются, начиная с нуля, а сектора – с первого номера. Такая нумерация сложилась исторически.
Современные винчестеры, как правило, поддерживают все три типа адресации, а выбор используемого типа остается за BIOS материнской платы. Если в настройках BIOS выбран один из типов адресации, то винчестер за счет внутренней обработки и преобразования данных представляется контроллеру именно таким образом. Если взять три возможные конфигурации одного и того же диска, можно убедиться, что произведение CxHxS остается во всех трех случаях практически неизменным, а умноженное на размер сектора (512 байтов), оно составляет как раз емкость винчестера.
Нужно помнить, что ни число головок, ни количество физических секторов на «блинах» внутри гермоблока от выбора той или иной адресации не меняется. Электроника винчестера (его микропрограмма) «создает» несуществующие головки и соответствующим образом «подставляет» под них сектора и цилиндры. Этот процесс называют трансляцией адресов, а таблица трансляции обычно хранится во flash-памяти на плате электроники, но может быть записана и на скрытых служебных дорожках.
Если предложить контроллеру автоматически выбрать тип адресации, то он выберет CHS – универсальную адресацию. Если, как было сказано ранее, позволить BIOS выбирать настройки автоматически (auto), то адресация жестких дисков, как правило, происходит именно в CHS.
Организация дорожек и секторов
В действительности данные на пластинах винчестера организованы довольно сложно. Об истинном расположении данных на пластинах винчестера «знают» только его контроллер и микропрограмма. Пока все работает, через интерфейс винчестер видится как стандартная матрица блоков или секторов. Если же выходят из строя головки, разрушаются некоторые области пластин и т. д. Поэтому прочитать данные можно лишь штатными средствами такого жесткого диска. Сами специалисты фирм-изготовителей признают, что все рассуждения на тему сканирования извлеченных из корпуса пластин, считывания остаточной намагниченности оказываются бесполезными. Даже теория хранения данных на винчестере оставляет место для неопределенности.
Достаточно жестко прописана на поверхности пластин лишь сервоинформация. Это магнитные метки и коды, которые указывают положение дорожек и секторов. Благодаря им головки позиционируются относительно пластин и находят нужные дорожки и сектора. Сервометки записываются на почти готовый винчестер в процессе изготовления на специальном оборудовании, после этого их невозможно ни стереть, ни изменить.
Полный объем каждого сектора составляет 571 байт. Из них 512 байтов предназначены для записи данных (data), а 95 байтов содержат служебные сведения о внутреннем номере сектора, контрольные суммы и т. д. Эта информация записывается при низкоуровневом форматировании диска еще на заводе, и доступ к ней через интерфейс предельно ограничен.
При изготовлении пластин на них заранее допускается наличие небольшого количества дефектных участков, иначе рентабельность производства резко снизится. Разумеется, характер и распространенность допустимых дефектов строго регламентированы. Кроме того, пластины с размеченными на них дорожками и секторами обладают большей емкостью, чем указано в паспорте диска. Этот запасной объем частично используется для хранения служебной информации, а частично для замещения дефектных и поврежденных секторов. После сборки поверхность дисков еще раз проверяется, и в ПЗУ на плате электроники записывается карта расположения сбойных секторов, или таблица переназначения.
Процесс переназначения (remapping) сводится к тому, что, когда операционная система выдает запрос на информацию, находящуюся по адресу сбойного сектора, контроллер диска незаметно переадресовывает запрос к одному из запасных секторов. Контроллер постоянно обновляет карту дефектов, занося в нее каждый новый обнаруженный сбойный сектор. В современных винчестерах таблица переназначения может частично храниться во flash-памяти, а частично записываться на служебные дорожки самого диска. Фактически при обращении к диску контроллер пользуется таблицей, состоящей из двух частей. Первая – трансляция адресов, вторая – оперативные уточнения к ней, переназначение. Все это происходит на аппаратном уровне и никак не связано с форматированием, разделами или файловой системой. Дефектные сектора совершенно не заметны через интерфейс.
Практический вывод из всего сказанного касается случаев ремонта и замены электроники жесткого диска. По общему правилу заменять плату можно лишь на плату от винчестера той же модели и серии (Model, ID и Part No). Все сведения о формате хранятся в гермоблоке, и после замены платы они должны успешно читаться. После замены платы с установленным на ней ПЗУ может быть перестроена или дополнена таблица переназначения секторов.
Форматирование жестких дисков
Про низкоуровневое форматирование говорилось ранее. Для современного винчестера это этап его производства, и сектора на нем размечены окончательно. То, что называют сейчас форматированием низкого уровня, сводится к простой записи нулей во все сектора, то есть к полному стиранию информации в области данных. Поэтому все, что делается с жестким диском после выхода его с завода, относится к форматированию высокого уровня. Оно включает в себя создание таблицы разделов и файловых систем.
Главная загрузочная запись и таблица разделов
В первом секторе на любом жестком диске находятся код простой программы (загрузчика) и последовательность информационных полей (таблица разделов). Вместе программа и поля называются главной загрузочной записью (Master Boot Record – MBR).
Главная загрузочная запись создается на новом диске программой FDISK. Управление дисками Windows при создании раздела производит запись в MBR. Все программы наподобие Partition Magic или Acronis Disk Director тоже создают и редактируют главную загрузочную запись.
Просмотреть содержимое секторов винчестера, в том числе первого, на котором находится главная загрузочная запись, можно многими HEX-редакторами. В редакторе Hexplorer есть отдельная команда меню Disk (Диск). При ее вызове появляется окно, где следует указать номер начального сектора и число секторов, которое программа должна прочитать. Существуют и специальные дисковые редакторы, например DiskEdit из пакета Norton Utilities или DiskExplorer for NTFS (http://www.runtime.org). Основное отличие дисковых редакторов от обычных бинарных редакторов – наличие широкого набора шаблонов просмотра данных (можно сразу интерпретировать их не только как текст, но и как загрузочный сектор либо один из элементов файловой системы) и защиты от непреднамеренной записи на диск.
MBR занимает ровно 512 байтов – один сектор. Структура этой записи представлена в табл. 2.1.
Таблица 2.1. Структура MBRЧетыре 16-байтных блока, каждый из которых описывает один раздел, образуют таблицу разделов – Partition Table. Максимальное количество разделов, которое может быть описано в MBR, – четыре. Каждый блок состоит из 10 полей (табл. 2.2).
Таблица 2.2. Поля таблицы разделовФлаг активности указывает на то, что раздел активен. Из всех разделов на диске активным может быть лишь один. Код типа раздела – однобайтовый идентификатор. Если его значение 00h, то считается, что этого раздела не существует и его содержимое игнорируется. Любое ненулевое значение означает, что в указанном пространстве находится раздел определенного типа. Так, например, идентификатор 06h указывает на раздел, отформатированный в FAT16, 0Bh или 0Ch – на раздел FAT32, а 07h – на раздел NTFS.
Если на диске нужно создать больше четырех разделов, то следует использовать специальный тип раздела с кодом 05h – расширенный раздел (Extended Partition).
Расширенный раздел отличается от всех остальных типов. Он описывает не сам раздел, а область пространства накопителя, в которой описаны разделы. В том секторе, который прописан в MBR как сектор начала расширенного раздела, фактически содержится еще одна загрузочная запись – Extended Boot Record (EBR) (табл. 2.3). Кода загрузчика в ней нет, есть только таблица разделов и сигнатура.