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 www.quantum.com
Тарановский Л.О., leonid@mailbox.alkor.ru
Copyright L.Taranovsky '2000
|