Низкоуровневый ремонт. Чиним жесткий диск с MHDD - «Хакер»
Содержание статьи
Disk
boot failure, insert system disk and press enter. Надпись, от которой
по спине начинается шествие легионов мурашек, каждая сама размером с
жесткий диск. По закону подлости происходит это, когда ничто не
предвещает беды. Но не спеши судорожно перезапускать систему — это игра в
русскую рулетку. Лучше загрузиться с другого носителя и взяться за
тщательную проверку. Поможет в этом испытанный инструмент — MHDD.
Введение
Если SMART показывает проблемы, чаще всего это означает одно: диск вот-вот начнет сыпаться, и повлиять может даже лишняя загрузка ОС. Следующее, что нужно понять, — это софтверные на нем «бэды» или хардварные. Если хардварных не так много, то диск еще можно попытаться вернуть к жизни.Думаю, ты слышал о таких продуктах, как MHDD и Victoria. Они незаменимы для низкоуровневой работы с жестким диском и помогут тебе совершить великие подвиги в восстановлении и диагностике. О Victoria «Хакер» уже писал пару выпусков назад, теперь настало время разобраться со второй — архаичной, но по-прежнему мегаполезной утилитой.
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:\
— путь к диску.
![SMART подопытного диска](https://xakep.ru/wp-content/uploads/2016/11/1478591751_9b68_smart.png)
Готовимся
Первоначально диск должен инициализироваться программой, что вполне логично. После этого производится сканирование поверхности, которое дает понимание текущего положения дел: MHDD покажет состояние поверхности харда. Затем нужно будет отформатировать диск и провести проверку еще раз. Обычно на этом этапе софт-бэды пропадают, и остаются только хардварные. Далее можно будет выполнить процедуру REMAP, чтобы бэд-блоки переназначить в служебную область.Главная проблема в том, что служебная область не резиновая, и даже после всех операций за диском нужно смотреть. Если бэд-блоки продолжают появляться, то диск, как ни старайся, уже не жилец. Но в более удачных случаях этот способ должен помочь. Как показывает практика, после ремапа диск может проработать еще очень много времени и даже пережить соседей по корзине. В другие разы он умирает сразу же после перезагрузки — тут уж как повезет, и предсказать эффект практически невозможно.
Не убий
Угробить диск значительно проще, чем восстановить его. К примеру, каждому известно (или должно быть известно), что к печальным последствиям ведет отсоединение шлейфа во время работы. Также крайне не рекомендуем бездумно переключать флаги и выполнять команды в MHDD. Внимательно читай документацию и не начинай что-то делать, если до конца не понимаешь, к чему это может привести.Чтобы диск, подключенный на первый канал, точно отображался, нужно подредактировать конфиг mhdd.cfg, который лежит в папке CFG.
PRIMARY_ENABLED=TRUE
![USB Tools](https://xakep.ru/wp-content/uploads/2016/11/1478591777_b705_hptools.jpg)
![Определяем наш жесткий диск](https://xakep.ru/wp-content/uploads/2016/11/1478591784_a9d5_detect.jpg)
Сканируем
Чтобы выполнить сканирование, набираем SCAN и жмем ENTER или используем F4. Появится меню, из которого можно изменить часть настроек. По умолчанию начальный сектор равен нулю (стартовый сектор). Конечный сектор равен максимально возможному (конец диска). Все деструктивные по отношению к пользовательским данным функции (Remap, Erase Delays) по умолчанию выключены.![Начинаем сканирование](https://xakep.ru/wp-content/uploads/2016/11/1478591817_3882_scan.jpg)
- 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 — стирать сектора, в которых обнаружены задержки чтения.
![Процесс сканирования](https://xakep.ru/wp-content/uploads/2016/11/1478591827_e640_scan_run.jpg)
- MHDD посылает команду
VERIFY SECTORS
с номером LBA (номер сектора) и номером секторов в качестве параметров. - Накопитель поднимает флаг BUSY.
- MHDD запускает таймер.
- После того как накопитель выполнил команду, он опускает флаг BUSY.
- MHDD вычисляет затраченное накопителем время и выводит соответствующий блок на экран. Если встретилась ошибка (bad block), программа выводит букву, которая описывает ошибку.
Наличие красных (>500 ms) блоков на полностью здоровом накопителе
недопустимо. Если они есть, необходимо произвести стирание (erase) всей
поверхности диска и, если это не помогло, избавиться от задержек, можно
делать выводы, что данный накопитель перестал быть достаточно надежным.
Буквенно-символьные блоки, например
x
, S
и т.п., недопустимы: они говорят о наличии bad-блоков на поверхности.
Первое, что должно быть сделано, — это полная очистка поверхности
командой erase. Если это не помогло, то scan с включенной опцией
EraseWaits. Если bad-блоки так и не исчезли, следует запустить scan с
включенной опцией Remap.
Восстанавливаем
Если сканирование выявило ошибки, первое, что необходимо сделать, — скопировать все данные с накопителя (если они, конечно, тебе нужны). В моем случае это было неактуально. Затем нужно полностью очистить поверхность при помощи командыERASE
, которая стирает каждый сектор на накопителе.![Выполнение команды ERASE](https://xakep.ru/wp-content/uploads/2016/11/1478591850_de1d_erase.jpg)
![Процесс ремапа](https://xakep.ru/wp-content/uploads/2016/11/1478591859_495c_remap.jpg)
Внимательный читатель, посмотрев на картинки сканирования диска, вероятно, присвистнул и сокрушенно покачал головой. Да, мой диск, пока я писал статью, умер окончательно. Количество хардварных бэдов превысило все допустимые пределы, и к набиванию последних строк статьи он уже хрустел, как трактор «Беларусь». Это к слову о том, что если диск начинает сыпаться, то доверять ему нельзя, особенно если появляются хардварные бэды. Ремап сможет помочь тогда, когда диск еще не начал активно сыпаться, но на поверхности возникли дефекты. В любом случае, даже если починить удалось, используй такой диск только для некритичных данных и ни в коем случае не как основной.
О чем сигнализируют индикаторы
- BUSY — накопитель занят и на команды не реагирует;
- WRFT — ошибка записи;
- DREQ — накопитель жаждет обменяться данными с внешним миром;
- ERR — возникла ошибка в результате какой-либо операции.
- AMNF — Address Mark Not Found — обращение к какому-то конкретному сектору не удалось. Скорее всего, означает, что сектор поврежден. Однако сразу после включения накопителя как раз наоборот — свидетельствует об отсутствии проблем и сообщает об успешном выполнении внутренней диагностики;
- T0NF — Track 0 Not Found — не найден нулевой трек;
- ABRT — Abort, команда отвергнута;
- IDNF — Sector ID Not found;
- UNCR — Uncorrectable Error, ошибка, не скорректированная кодом ECC. Скорее всего, в этом месте логический бэд-блок.
![](https://xakep.ru/wp-content/themes/engine/img/www-icon.jpg)
WWW
FAQ по MHDD на официальном сайте
Документация MHDD
https://xakep.ru/2016/11/08/mhdd/