Uploaded by Alex Muhan

MHDD-Disk boot failure

advertisement
Disk boot failure, insert system disk and press enter.
Надпись, от которой по спине начинается шествие легионов мурашек, каждая сама размером с
жесткий диск.
Поможет в этом испытанный инструмент — MHDD.
Если SMART показывает проблемы, чаще всего это означает одно: диск вот-вот начнет сыпаться,
и повлиять может даже лишняя загрузка ОС. Следующее, что нужно понять, — это софтверные на
нем «бэды» или хардварные. Если хардварных не так много, то диск еще можно попытаться
вернуть к жизни.
MHDD — это небольшая, но мощная бесплатная программа, которая предназначена для работы с
накопителями на самом низком уровне (насколько это возможно). Первая версия была выпущена
Дмитрием Постриганем в 2000 году. Она могла сканировать поверхность накопителя с
интерфейсом IDE в режиме CHS. Сейчас MHDD — это значительно больше, чем диагностика. С
MHDD ты можешь делать все что угодно: диагностировать накопители, выполнять чтение и
запись произвольных секторов, управлять системой SMART, парольной системой, системой
управления шумовыми характеристиками, а также изменять размер накопителя.
Несмотря на то что работа с MHDD возможна и через установленную Windows, я крайне
рекомендую записать образ на флешку или внешний (или второй загрузочный) диск и загрузить
оттуда голый DOS - хардварном вопросе лучше максимально исключить все звенья цепи, которые
могут привести к глюкам или зависанию компьютера во время работы.
Интерфейс SATA. Есть вероятность, что диск не определится в MHDD. Причина может
заключаться в режиме работы SATA-контроллера (IDE и AHCI) в BIOS. MHDD, увы, не
поддерживает режим AHCI. Необходимо менять настройки BIOS. Хуже всего то, что нынче не все
матплаты поддерживают этот режим. Выходом может стать только использование машины с
подходящей материнкой или отказ от MHDD.
Интерфейс IDE. Для данного интерфейса характерно распределение устройств на шлейфе —
master/slave. По умолчанию MHDD скрывает все устройства в режиме slave. Исправить это можно
двумя способами. Первый — изменить расположение жесткого диска (переключить перемычку на
master) и проверить соответствие настройки в BIOS. Второй способ — попробовать в MHDD
сменить номер диска на 2 или 4. Ну и не забывай про конфигурационный файл mhdd.cfg, который
лежит в папке CFG. В данном случае важен параметр PRIMARY_ENABLED=TRUE.
Интерфейс SCSI. Может не определиться драйвер SCSI-контроллера.
Интерфейс USB. Подключить диск через USB теоретически возможно с помощью
дополнительного драйвера и настройки программы. Драйвер эмулирует режим работы через SCSI.
Также необходимо отключить все лишние USB-накопители. Целевой диск должен быть
подключен до загрузки MHDD. В config.sys потребуется прописать: device=X:\USBASPI.SYS /w
/v, где X:\ — путь к диску.
Итак, я беру с полки один из сломанных дисков (я обычно клею на них этикетку broken) и сейчас
попробую воскресить его, чтобы показать тебе, как это работает на практике. У меня на руках
оказался винт WDC WD7500BPVX-60JC3T0 с винегретом вместо системы и всех файлов на нем.
SMART подопытного диска
Раз уж ситуация настолько печальна, то можно с чистой совестью форматировать диск вдоль и
поперек, что заметно упрощает задачу.
Но для начала давай разберемся с небольшой теорией и планом восстановления.
Первоначально диск должен инициализироваться программой, что вполне логично. После этого
производится сканирование поверхности, которое дает понимание текущего положения дел:
MHDD покажет состояние поверхности харда. Затем нужно будет отформатировать диск и
провести проверку еще раз. Обычно на этом этапе софт-бэды пропадают, и остаются только
хардварные. Далее можно будет выполнить процедуру REMAP, чтобы бэд-блоки переназначить в
служебную область.
Что ж, можно приступать к делу! Для начала создаем загрузочную флешку. Когда носитель готов,
остается только бросить в его корень MHDD, чтобы лишний раз не лазить по директориям из
командной строки.
Чтобы диск, подключенный на первый канал, точно отображался, нужно подредактировать конфиг
mhdd.cfg, который лежит в папке CFG.
PRIMARY_ENABLED=TRUE
USB Tools
Сканирование любого устройства возможно, только если оно определяется командами ID или EID
(или нажатием F2).
Определяем наш жесткий диск
О чем сигнализируют индикаторы

BUSY — накопитель занят и на команды не реагирует;

WRFT — ошибка записи;

DREQ — накопитель жаждет обменяться данными с внешним миром;

ERR — возникла ошибка в результате какой-либо операции.
Когда загорается ERR, смотри в правую верхнюю часть экрана: там будет отображен тип
последней ошибки:

AMNF — Address Mark Not Found — обращение к какому-то конкретному сектору не
удалось. Скорее всего, означает, что сектор поврежден. Однако сразу после включения
накопителя как раз наоборот — свидетельствует об отсутствии проблем и сообщает об
успешном выполнении внутренней диагностики;

T0NF — Track 0 Not Found — не найден нулевой трек;

ABRT — Abort, команда отвергнута;

IDNF — Sector ID Not found;

UNCR — Uncorrectable Error, ошибка, не скорректированная кодом ECC. Скорее всего, в
этом месте логический бэд-блок.
Вверху могут появляться еще два индикатора: PWD сигнализирует об установленном аппаратном
пароле, HPА появляется в том случае, если размер накопителя был изменен с помощью команды
HPA (обычно используется для скрытия бэд-блоков в конце диска).
Сканируем
Чтобы выполнить сканирование, набираем SCAN и жмем ENTER или используем F4. Появится
меню, из которого можно изменить часть настроек. По умолчанию начальный сектор равен нулю
(стартовый сектор). Конечный сектор равен максимально возможному (конец диска). Все
деструктивные по отношению к пользовательским данным функции (Remap, Erase Delays) по
умолчанию выключены.
Начинаем сканирование
Параметры сканирования.

Start LBA — начальный сектор для сканирования, по дефолту 0, то есть начало диска.

End LBA — сектор завершения сканирования, по дефолту конец диска. Иногда удобнее
сканировать не всю поверхность (особенно когда объем диска переваливает за несколько
терабайт), а только рабочую область, где лежит ОС. К примеру, диск С равен 50 Гбайт,
тогда конечная область будет равна 2 * 50 * 1024 * 1024 = 104 857 600-й сектор. Можно
посчитать проще: (объем * 2) * 1 000 000, итого 100 000 000.

Remap помечает сектор как сбойный в специальной служебной области, после чего диск к
нему не обращается.

Timeout — время задержки на чтение сектора, после которого проверка переходит к
следующему сектору.

Spindown after scan — остановить жесткий диск после сканирования.

Loop test/repair — проводить сканирование или проверку циклично.

Erase Delays — стирать сектора, в которых обнаружены задержки чтения.
Снова нажимаем F4 для запуска сканирования. MHDD сканирует накопители блоками. Для
накопителей IDE/SATA один блок равен 255 секторам (130 560 байт).
Процесс сканирования
Вот как работает сканирование:
1. MHDD посылает команду VERIFY SECTORS с номером LBA (номер сектора) и номером
секторов в качестве параметров.
2. Накопитель поднимает флаг BUSY.
3. MHDD запускает таймер.
4. После того как накопитель выполнил команду, он опускает флаг BUSY.
5. MHDD вычисляет затраченное накопителем время и выводит соответствующий блок на
экран. Если встретилась ошибка (bad block), программа выводит букву, которая описывает
ошибку.
MHDD повторяет шаги 1–5 до конечного сектора. Если нужен протокол сканирования, его всегда
можно найти в файле log/mhdd.log. Во время сканирования ты можешь увидеть много
прямоугольников разного цвета.
Чтобы ты не сильно пугался, привожу выдержку из справки:
Наличие красных (>500 ms) блоков на полностью здоровом накопителе недопустимо.
Если они есть, необходимо произвести стирание (erase) всей поверхности диска и, если это не
помогло, избавиться от задержек, можно делать выводы, что данный накопитель перестал быть
достаточно надежным.
Буквенно-символьные блоки, например x, S и т.п., недопустимы: они говорят о наличии
bad-блоков на поверхности.
Первое, что должно быть сделано, — это полная очистка поверхности командой erase.
Если это не помогло, то scan с включенной опцией EraseWaits.
Если bad-блоки так и не исчезли, следует запустить scan с включенной опцией Remap.
Восстанавливаем
Если сканирование выявило ошибки, первое, что необходимо сделать, — скопировать все данные
с накопителя (если они, конечно, тебе нужны). В моем случае это было неактуально. Затем нужно
полностью очистить поверхность при помощи команды ERASE, которая стирает каждый сектор на
накопителе.
Выполнение команды ERASE
Накопитель пересчитает поля ECC для каждого сектора.
Это помогает избавиться от так называемых soft-bad-блоков.
Если стирание не помогло, запускаем сканирование с включенной опцией REMAP.
Процесс ремапа
Если видишь, что каждый блок содержит ошибку, не пытайся стирать накопитель или сканировать
с включенной опцией REMAP. Скорее всего, у накопителя повреждена служебная область, и это
не может быть исправлено стандартными командами MHDD.
Да, этот диск умер окончательно.
Это к слову о том, что если диск начинает сыпаться, то доверять ему нельзя, особенно если
появляются хардварные бэды.
Ремап сможет помочь тогда, когда диск еще не начал активно сыпаться, но на поверхности
возникли дефекты.
В любом случае, даже если починить удалось, используй такой диск только для некритичных
данных и ни в коем случае не как основной.
Download