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 (по крайней мере большинства из них) эту процедуру не реализуют. Поэтому для скрытия дефектов лучше использовать программы, для этого предназначенные: mhdd, Victoria (обе работают под MS-DOS), HDDScan (Windows 2000/XP).
И последнее замечание: LLF из BIOS может привести и к положительному результату, как, например, в случае с ошибочной контрольной суммой поля данных сектора. При чтении такого сектора будет возникать ошибка "Uncorrectable by ECC" до тех пор, пока новая запись в него не скорректирует байты ECC. Это может сделать и BIOS LLF (если только винчестер его не проигнорирует).
Что касается актуальных в настоящее время накопителей (с емкостью выше 1-2 Гб на пластину), то они имеют отличия в формате сектора, заключающиеся в отсутствии поля идентификации. Такой формат, называемый id-less или no-id, при котором идентификация сектора производится не по записи в его заголовке, а по расположению сектора относительно серворазметки, позволил увеличить полезную емкость диска и одновременно вовсе лишил смысла операцию форматирования. Если ранее при записи сектора оставалась необновляемая часть — дескриптор, то теперь обычная операция записи переписывает весь «физический» сектор, как поле данных, так и поле ECC.
Таким образом, отдельная функция «низкоуровневого форматирования» стала вовсе ненужной, и она была исключена из новых редакций ATA стандарта. Распространяемые изготовителями HDD сервисные утилиты по традиции могут содержать пункт меню «Low Lewel format», но за ним скрывается та же самая посекторная запись нулей.
Изменения коснулись также и системы дефект-менеджмента (системы скрытия дефектов поверхности). В любом современном HDD эта система включает в себя механизм автоматической замены дефектных секторов при операциях записи и чтения, поэтому нет необходимости в каких-то специальных командах для того, чтобы эту замену инициировать.
Таким образом, процедуру HDD Low Level Format, реализованную в BIOS многих системных плат, можно признать в большинстве случаев безвредной (для самого винчестера, но не для информации на нем), но и практически бесполезной. То есть ее использование может принести только ту пользу, которую способна принести простая запись нулей во все сектора логического дискового пространства. А это проще и быстрее делать с помощью приведенных выше программ или, например, утилит с сайтов изготовителей HDD.
Автор статьи
Леонид Тарановский