Процедура HDD Low Level Format системного BIOS
 
1. Служебная инфомация HDD.
Размещаемая на дисках накопителя инфомация делится на собственно информацию пользователя (ради которой накопитель и существует) и служебную, предназначенную для обеспечения возможности хранить информацию пользователя. Служебная информация делится на:
  • служебную информацию самого накопителя, необходимую для его работы на аппаратном уровне (чтения-записи секторов), называемую в дальнейшем служебной информацией HDD;
  • служебную информацию операционной системы (необходимую для организации информации в виде, пригодном для обработки операционной системой), наэываемую в дальнейшем служебной информацией ОС.
Служебная информация HDD в свою очередь делится на три уровня:
  1. Информация, предназначенная для организации обратной связи сервосистемы привода блока головок, т.е. для позиционирования головок на треки и удержания их необходимого положения. В современных HDD это делается путем записи на все рабочие поверхности специальных сервометок - полей, позволяющих сервоприводу по прочитанному с них сигналу получать информацию о текущем положении головки. По ним же (путем контроля периода следования сигнала) стабилизируется скорость вращения диска. Сервометки наносятся не только на места самих треков, но и в промежутках между ними. Запись сервометок производится при изготовлении HDD на специальном устройстве, обеспечивающем внешнее позиционирование блока головок - серворайтере (Serwowriter). Запись или восстановление сервометок средствами самого HDD (без внешнего позиционирования) невозможны.
  2. Информация, служащая для адресации секторов с данными пользователя и контроля целостности этих данных. Включает в себя поля идентификатора сектора (дескриптора), служашего для идентификации сектора, и поля контрольной суммы (ECC check bytes), предназначенных для контроля целостности информации, записанной в поле данных сектора. Это и есть то, что обычно понимают под низкоуровневым форматом. В ранних моделях HDD (с интерфейсом ST506/412), как и в FDD, запись низкоуровневого формата была стандартной операцией. С появлением же IDE накопителей и переносом основных функций работы с \"железом\" в контроллер самого HDD унификация внутреннего формата потеряла смысл. Распределение секторов в современных HDD индивидуально для каждой модели, используется ZBR (Zone Bit Recording, разное число секторов на трек в зависимости от физической длины трека), и реальное расположение сектора известно только внутренней программе управления. Поэтому низкоуровневое форматирование может быть выполнено только самим контроллером накопителя, и реализовано в большинстве HDD в виде автоформата - процедуры, вызываемой технологической командой (vendor specific, недокументированная служебная команда).
  3. Информация, необходимая для работы управляющего процессора 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