-----------------------------------------------------------
КУРС МОЛОДОГО БОЙЦА. ГЛАВА ДВЕНАДЦАТАЯ (Некоторые понятия, или почему USER'ы спорят)
Девять из десяти споров на форуме возникают из-за неправильной трактовки того или иного понятия, термина. Попытаюсь, в меру своих знаний, определить некоторые понятия.
Низкоуровневый формат, формат логического тома и обнуление. 1. Логический формат высокого уровня - это процесс создания разделов и файловой системы на магнитном носителе. Имеет средства для логического скрытия дефектов.
2. Внутреннее форматирование, т.е. переразметка ID секторов (разумеется, кроме сервоформата). Выполняется утилитой находящейся в ПЗУ самого винта или на "блинах", другими словами эту процедуру выполняет сам накопитель без участия, управляющего компьютера. Запускается технологической командой, после чего винт блокирует интерфейс, чтобы не прерывали процесс. По окончании винчестер сам переписывает транслятор по-новому и выходит на готовность. В некоторых источниках, называется еще Low Level Format, к примеру, в документах к PC3000. Видно это понятие просто "перекочевало на новые винчестеры".
3. Low Level Format - раньше, в старых БИОС, существовала команда Format Track (код 50h), которую и называли низкоуровневым форматированием. Она была рассчитана на винты MFM и RLL (c шаговым двигателем). Эти винчестеры выпускались лет 13 назад, если не больше и не обладали мощными системами вроде автозамещения дефектов (remapping). Контроллеры современных винчестеров не реагируют на эту команду.
Иногда, пользователи под понятием Low Level Format подразумевают обычную инициализацию секторов. Да и не мудрено запутаться. К примеру, у Seagate была утилита Disk Manager где в описании сказано, что утилита выполняет Low Level Format, на самом деле она лишь заполняет секторы нолями, проверяя их на чтение\запись. То же, можно найти и на сайте
Samsung. Там есть утилита clearhdd.exe (10,9 КБ) и написано, что она, как раз для "низкоуровневого форматирования жестких дисков", только название, почему-то clearhdd... В принципе, относительно пользователя, который, собственно, работает на уровне файловой системы, можно сказать так: форматирование уровнем ниже (скажем ниже файловой системы), а уж этих уровней, которые ниже...
4. Инициализация секторов или заполнение нолями (Zero Fill) - это очистка носителя от файловой системы с полным уничтожением всей информации на нем. Производится через интерфейс, путем записи нулей во все его секторы, вследствие чего, происходит перерасчет контрольных сумм секторов. Для этого можно использовать внутреннюю программу DiskPart.
Большинство USER'ов заблуждаются, думая, что при посекторном редактировании (считывании) диска, работая в той же DiskPart или DiskEditor, они работают с диском на физическом уровне. Это не так, это тоже логика, но только уровнем ниже файловой системы, так называемый прямой доступ к диску на логическом уровне, т.е. "прямой", в данном случае, значит в обход функций предоставляемых ОС. На самом низком уровне работает только сам винчестер, т.е. на уровне своих технологических команд.
5. Низкоуровневое форматирование поверхности диска - в контексте современных винчестеров, подразумевает запись на поверхности диска
серворазметки и возможно оно только с применением серворайтера в заводских условиях (в последнее время они появились и у ремонтников дисков, Лаборатория "АСЕ"). Помимо нанесения серворазметки, низкоуровневый формат подразумевает создание рабочей зоны диска, основываясь на его таблице зонного распределения.
Таблица зонного распределения - это часть микрокода, содержащая информацию о размере и расположении зон на дисковой поверхности, находится в служебной зоне или в ПЗУ винта.
Служебная зона - это часть дискового пространства HDD, скрытая в недрах накопителя и недоступная средствами ОС и BIOS. В ней хранятся: рабочие программы контроллера, паспорт диска, таблицы дефектов, транслятор, значения атрибутов SMART и т.д. Все вместе они образуют специализированную операционную систему, управляющую винтом. Запрос по интерфейсу идет в логической адресации (CHS или LBA), а головки едут туда, куда транслятор решит.
Транслятор - это часть микрокода винта, отвечающая за преобразование логического адреса в физический. Он строится с учетом заводских дефект-листов (P-List), которые создаются по результатам сканирования с учетом адаптивных настроек винта.
Аппаратные и логические беды, ошибки файловой системы BAD-блок это область дискового пространства, обычно размером с сектор (512 байт), утратившая способность хранения информации в результате повреждений.
Как известно сектор состоит из 2х частей (на самом деле их гораздо больше), поле данных и поле с контрольной суммой этих данных, не доступное пользователю. Когда контрольная сумма данных не совпадает с записанной в соответствующем поле, диск выдает ошибку чтения (Unable to Correct by ECC).
ECC (Error Correction Code) код коррекции ошибок, применяемый в HDD. Способ кодирования информации, когда к исходным данным добавляется их избыточность с контрольными суммами. Позволяет восстанавливать целостность данных, даже если они были прочитаны с ошибкой, а также сообщать об ошибках, если их было несколько.
Если это дефект поверхности, то это будет аппаратный "бед". Если же данные просто не совпадают с контрольной суммой (по разным причинам) и дефекта поверхности нет, то это уже софт-бед.
Отличить один от другого можно попыткой принудительной записи в этот сектор. В первом случае (бед аппаратный) - он может быть "сремаплен" диском, во втором случае бед пропадает, как будто его никогда и не было, но "ремапа" не происходит, так как при записи сектора винт автоматически пересчитывает и переписывает контрольную сумму, т.е. имел место софт бед.
Тут надо сказать, что бывают софт беды, которые не исправляются простой перезаписью сектора или, если исправляются, потом снова появляются, иногда довольно быстро. В первом случае, причина появления, как правило, кроется в плохом контакте между платой управления и гермоблоком, или в умирающей электронике, во втором, работа винта в ненормативных режимах, ошибки в микрокоде, проблемы платы управления.
Помимо этого бывают еще логические ошибки файловой системы, возникают, как правило, при проблемах с питанием и чаще исправляются диском после запуска CHKDSK.
Переназначение секторов ("ремап")
Запись на диск происходит по принципу работы обычного магнитофона, идет запись и тут же, мы можем прослушивать эту запись. Современная головка винчестера это GMR-головка записи/чтения. Достаточно первым по ходу расположить зазор головки записи, а следом головки чтения и получаем результат: возможен контроль достоверности записанной информации на одном заходе.
Есть у современных винтов такая вещь, как SMART Auto Off-Line Test. Его смысл, в определенный момент времени (обычно через некоторое время отсутствия команд от host-контроллера), производить обновление статистических данных (собственно SMART), а также производить тестирование секторов, ссылки на которые есть в логах ошибок винта. Если, во время этого теста, контроллер признает сектор дефектным, будет сделан "ремап", при условии, что Auto Reallocate также включен (по умолчанию включен).
Понятно, что "ремапятся" только аппаратные беды. Практически у всех современных винчестеров "ремап" прозрачен для пользователя. Диск производит "ремап" по одному ему известному алгоритму (определенная последовательность циклов чтения, записи, верификации сектора), этим занимается контроллер и сначала сбойный сектор заносится во временный G-List.
G-list это часть таблицы дефектов HDD, пополняемая в процессе эксплуатации харда. Добавление дефектов осуществляет не пользователь, а сам накопитель. Число убранных дефектов можно легко узнать по значению SMART-атрибута Reallocated Sector Count. Немного подробнее.
При чтении головками сектора, в котором есть данные с ошибками, контроллер сообщает системе, что этим данным доверять нельзя. ОС выкидывает сообщение о невозможности прочтения, а в MFT ($Volume) выставляется флаг запуска программы CHKDSK (при следующей перезагрузке компьютера), причем, без уведомления пользователя. При перезагрузке системы, происходит 10 секундный отсчет, и пользователь решает, разрешить запуск CHKDSK или нет. CHKDSK это программа, т.е. определенный набор команд, посылаемый, в конечном счете, диску (принцип работы
CHKDSK). Если были ошибки файловой системы , они исправляются, флаг запуска CHKDSK в MFT снимается. Если же ошибки исправить не удалось, CHKDSK мельком выкидывает сообщение о произошедших изменениях на диске (его можно потом просмотреть в "Event Viewer") и, загрузившись в систему, мы можем увидеть печально известные папки FOUND.00X или, вообще, не находим каких то файлов. Если это бед, сбойный сектор заносится во временный G-List и далее с ним имеет дело только сам диск и не факт, что он будет "сремаплен" сразу, контроллер будет еще работать с этим сектором, и возможно туда, впоследствии, будет произведена запись. Драйвер NTFS помечает кластер, в котором данный сектор находится, как сбойный (B) и ОС к нему не обращается. Если мы имеем дело с логическим бедом, можно загрузиться в DiskEditor, найти сбойный сектор и попытаться его обнулить. Если этот сектор перезаписать не удалось, возможно, мы имеем дело уже с аппаратным бедом и им будет заниматься сам контроллер.
Вообще, контроллер, очень трудно "убедить" в том, что сектор сбойный. Это целая наука и все тонкости "ремапа" знает лишь производитель, либо специалист по ремонту конкретной модели дисков. Пользователю же можно воспользоваться известными программами (PC3000, MHDD), которые умеют выполнять ряд технологических команд, для того, чтобы "заставить" контроллер (не факт, что каждый) "сремапить" сектор "навсегда".
Используемый материал:
Общие принципы ремонта HDD
_http://www.acelab.ru/products/pc/doc.hddtech.pdf
SMARTUDM - утилита чтения S.M.A.R.T. информации винчестеров, с описанием 31 атрибута S.M.A.R.T.. _http://www.sysinfolab.com/ru/files/smartudm.zip