Процедура HDD Low Level Format системного BIOS
1. Служебная инфомация HDD.
Размещаемая на дисках накопителя инфомация делится на собственно информацию
пользователя (ради которой накопитель и существует) и служебную, предназначенную
для обеспечения возможности хранить информацию пользователя. Служебная информация
делится на:
- служебную информацию самого накопителя, необходимую для его работы на
аппаратном уровне (чтения-записи секторов), называемую в дальнейшем служебной
информацией HDD;
- служебную информацию операционной системы (необходимую для организации
информации в виде, пригодном для обработки операционной системой), наэываемую
в дальнейшем служебной информацией ОС.
Служебная информация HDD в свою очередь делится на три уровня:
- Информация, предназначенная для организации обратной связи сервосистемы
привода блока головок, т.е. для позиционирования головок на треки и удержания
их необходимого положения. В современных HDD это делается путем записи на все
рабочие поверхности специальных сервометок - полей, позволяющих сервоприводу
по прочитанному с них сигналу получать информацию о текущем положении головки.
По ним же (путем контроля периода следования сигнала) стабилизируется скорость
вращения диска. Сервометки наносятся не только на места самих треков, но и в
промежутках между ними. Запись сервометок производится при изготовлении HDD на
специальном устройстве, обеспечивающем внешнее позиционирование блока головок
- серворайтере (Serwowriter). Запись или восстановление сервометок средствами
самого HDD (без внешнего позиционирования) невозможны.
- Информация, служащая для адресации секторов с данными пользователя и
контроля целостности этих данных. Включает в себя поля идентификатора сектора
(дескриптора), служашего для идентификации сектора, и поля контрольной суммы
(ECC check bytes), предназначенных для контроля целостности информации,
записанной в поле данных сектора. Это и есть то, что обычно понимают под
низкоуровневым форматом. В ранних моделях HDD (с интерфейсом ST506/412), как и
в FDD, запись низкоуровневого формата была стандартной операцией. С появлением
же IDE накопителей и переносом основных функций работы с "железом" в контроллер
самого HDD унификация внутреннего формата потеряла смысл. Распределение секторов
в современных HDD индивидуально для каждой модели, используется ZBR (Zone Bit
Recording, разное число секторов на трек в зависимости от физической длины
трека), и реальное расположение сектора известно только внутренней программе
управления. Поэтому низкоуровневое форматирование может быть выполнено только
самим контроллером накопителя, и реализовано в большинстве HDD в виде автоформата
- процедуры, вызываемой технологической командой (vendor specific,
недокументированная служебная команда).
- Информация, необходимая для работы управляющего процессора HDD и
специализированных микросхем контроллера - Firmware, или служебное ПО накопителя.
Представляет собой набор программ, обеспечивающих выполнение функций HDD и таблиц,
содержащих все необходимые для работы данные (параметры накопителя, название
модели, серийный номер и т.п., адреса замещенных дефектных секторов, атрибуты
SMART и так далее). Расположена эта информация на специально предназначенных для
этого служебных цилиндрах, недоступных в пользовательском режиме работы HDD. Запись
ее производится также с помощью технологических команд.
2. Служебная информация ОС (DOS,Windows)
Операционная система создает на HDD свою структуру служебных данных для
обеспечения возможности манипуляций с хранящийся информацией по правилам,
принятым в данной ОС. С точки зрения ОС накопитель представляет собой просто
совокупность произвольно адресуемых блоков (секторов), вне зависимости от
внутренней конструкции устройства. Средствами ОС создаются таблицы логических
разделов (программой fdisk), таблицы параметров раздела и расположения файлов
(программой format), записываются программы загрузки ОС. Логическое
форматирование заключается именно в записи этих таблиц и программ, а также
проверке доступности секторов данных, входящих в логический раздел. Если при
проверке обнаруживаются недоступные сектора (сектора, при выполнении для
которых команды верификации возвращается код ошибки), они помечаются в FAT как
плохие. К идентификаторам секторов и вообще низкоуровневому формату эта
процедура никакого отношения не имеет. Запись производится только в сектора,
отведенные под загрузчик ОС, FAT и корневой каталог.
3. Что есть Low Level Format из BIOS
В стандарте ATA (AT attachment) имеется команда 50h (Format Track), оставшаяся
"по наследству" от ST506/412. В настоящее время данная команда поддерживается
всеми изготовителями HDD "для совместимости", реальное же действие накопителя
при получении ее варьируется от простого игнорирования до записи нулей в
указанные сектора. Реальное н.у. форматирование пользовательском режиме работы
HDD невозможно хотя бы из-за того, что внутренняя программа транслятора
контроллера HDD скрывает истинную адресацию секторов. Результатом выполнения
"низкоуровневого форматирования" из BIOS может быть:
- Отсутствие результата ;-), то есть полное игнорирование винчестером этой
процедуры. Позиционирование будет честно отработано, но никаких действий на
дисках произведено не будет.
- Запись нулей во все сектора, то есть простое стирание информации
пользователя.
- Возникновение проблем с HDD старых серий, не обеспечивающих надежную защиту
от пользователя. Hекоторые старые HDD (емкостью 40-80 мб) могут на 50h отвечать
ошибкой, что может привести к маркировке всех секторов как "bad", или наоборот,
записать нулями часть служебных треков, что приведет к неработоспособности
накопителя.
В то же время команда форматирования трека предоставляет и весьма полезные
возможности. Сама команда выглядит следующим образом (AT Attachment Interface
for Disk Drives, Revision 4c, 1994):
В регистр счетчика секторов (sector count) заносится число секторов на трек
(логическое, обычно 63);
В регистр накопителя/головки - номер накопителя и головки.
В регистры номера цилиндра - номер цилиндра.
В регистр команд - 50h.
Затем заполняется буфер сектора (100h слов) блоком данных, в котором каждое
16-битное слово является дескриптором сектора и содержит в старшем байте -
номер сектора, а в младшем - дескриптор, который может принимать значения:
00h - Format sector as good;
20h - Unassign the alternate location for this sector;
40h - Assign this sector to alternate location;
80h - Format sector as bad.
"Хвост" буфера заполняется нулями. По заполнении буфера команда выполняется.
Таким образом, с помощью команды Format Track можно производить замену (assign)
дефектных секторов на резервные. Такая возможность поддерживается большинством
современных IDE HDD. К сожалению, процедуры LLF BIOS (по крайней мере большинства
из них) эту процедуру не реализуют. Поэтому для скрытия дефектов лучше
использовать программы Hddspeed и Hddutil.
И последнее замечание: LLF из BIOS может привести и к положительному результату,
как, например, в случае с ошибочной контрольной суммой поля данных сектора.
При чтении такого сектора будет возникать ошибка "Uncorrectable by ECC" до тех
пор, пока новая запись в него не скорректирует байты ECC. Это может сделать и
BIOS LLF (если только винчестер его не проигнорирует).
Таким образом, процедуру HDD Low Level Format, реализованную в BIOS многих
системных плат, можно признать в большинстве случаев безвредной (для самого
винчестера, но не для информации на нем), но и практически бесполезной. То есть
ее использование может принести только ту пользу, которую способна принести
простая запись нулей во все сектора логического дискового пространства. А это
проще и быстрее делать с помощью Norton Diskedit или, например, утилиты
Zdisk от Quantum.
|