Практика
Каждая фирма, выпускающая винчестеры, обычно разрабатывает специальный софт для диагностики и обслуживания своих накопителей, размещая его в Сети для свободного использования. Иногда эти утилиты уже содержат в своем составе операционную систему (обычно это одна из разновидностей DOS), как, например, Sea Tool от Seagate или Drive Fitness Test от IBM (теперь уже Hitachi). А иногда это просто исполняемый файл, который нужно самому запустить из DOS, как у Maxtor (уже принадлежащей Seagate) или Fujitsu. Такой софт позволяет протестировать накопитель на наличие ошибок и при возможности исправить их. Среди методов исправления часто можно встретить функции очистки диска (заполнение его нулями с уничтожением всей информации), а также скрытия дефектов методом ремапа. Но мы не будем рассматривать фирменные утилиты - как мы узнали, эти программы делают вполне стандартные вещи: запись нулей и проверку поверхности. Поэтому обратим внимание на несколько очень неплохих альтернативных программ.
Итак, мы имеем такую забавную вещицу, какой является "бэдастый хард". Или хотим застраховать себя от "сюрпризов" и проверить его, пока он исправен. Для этого, прежде всего, скачиваем программу MHDD. Всем, у кого имеются древние винты объемом до 8.4 Гбайт, особенно старые Western Digital, рекомендуется иметь в хозяйстве программу HDD Utility для DOS.
Прежде всего, нужно подготовить диагностический софт и создать загрузочный диск с MS-DOS. Можно пожертвовать загрузочной дискетой Windows 9x, удалив с нее все файлы кроме io.sys, msdos.sys и command.com. На освободившееся место записываем исполняемый файл программы MHDD: mhdd2743.exe и файл конфигурации mhdd.cfg. Так как свободного места на дискете еще много, записываем на нее SMART-монитор smartudm.exe , и какой-нибудь файл-менеджер, например Volkov Commander. Он понадобится для просмотра содержимого отчетов работы программ. Для удобства все файлы размещаем в корневом каталоге дискеты. Как вариант - дискету можно вообще не создавать или использовать ее только для загрузки DOS, а все программы запускать прямо с основного винчестера, подключив проверяемый винт на другой канал. Записывать программы на CD, чтобы запускать их оттуда, не нужно - диск обязательно должен быть открыт для записи, так как программы будут создавать на нем логи работы, и потерпев при этом неудачу, попросту сглючат. После внимательного знакомства с описанием MHDD и SMARTUDM можно приступить к экзекуции. Для начала посмотрим SMART-информацию нашего накопителя (в дальнейшем это придется делать не раз).
Загружаемся с нашей дискеты, и если исследуемый винт висит на первичном IDE-канале, набираем в командной строке: a:smartudm, а если на вторичном - a:smartudm 1. Если в системе больше двух жестких дисков, то цифра может быть больше 1. Перед нами появится таблица, характеризующая состояние накопителя (Рис. 2).
Рис.2. График SMART-статуса жесткого диска для быстрой оценки его состояния
Каждая строчка таблицы - это один из параметров текущего состояния винта. Напротив каждого из них, в графе "Indicator", находится шкала, разбитая на три цветные зоны. По мере износа накопителя длина индикаторов уменьшается, так как все больше зеленых квадратиков в их правой части оказываются погашены. Остаются желтые и красные. Когда все зеленые квадратики в каком-либо индикаторе исчезнут, это означает, что винт выработал свой ресурс или неисправен. При этом рекомендуется сохранить важные данные, так как в любой момент винт может умереть совсем. Если остался только красный квадратик - винт уже находится в аварийном состоянии, и к дальнейшему хранению файлов непригоден.
Надпись "T.E.C. not detected" означает то, что текущее состояние винта в полном порядке. Если это не так, то будет выдано предупреждение, выделенное красным цветом. Посмотрев на цветную диаграмму, можно быстро оценить, какой именно SMART-атрибут вызвал такое недовольство программы. В случае большого количества бэдов им наверняка будет самый верхний (Raw Read Error Rate). Но эта информация приблизительная, а нам нужны абсолютные значения атрибутов, поэтому нажимаем [Enter] и видим примерно такую картинку (Рис. 3):
Рис.3. Расширенный SMART-статус жесткого диска (точные значения атрибутов)
Вот этот режим SMART-монитора и является основным, и по нему мы будем контролировать состояние накопителя при любых дальнейших действиях. Например, посмотрев значение атрибута 5 (Reallocated Sector Count), мы увидим содержимое пользовательского дефект-листа и сможем судить о том, удалось ли скрытие дефектов. При нажатии клавиши текущий SMART-лог сохраняется в файл. Нажав клавишу можно выйти из программы в DOS. Некоторые атрибуты контроллер обновляет "на лету", несколько раз в минуту, поэтому для получения наиболее достоверного результата, винт нужно протестировать, чем мы сейчас и займемся.
Выходим из SMART-монитора, и запускаем программу MHDD, введя в командной строке имя ее исполняемого файла. После загрузки следует сразу нажать комбинацию клавиш - программа просканирует шину и покажет список подключенных к системе накопителей. Выберите тот, который нужно проверить, введя в консоль нужную цифру от 1 до 10 (Рис. 4). Затем следует нажать [F2] для инициализации выбранного винта.
Рис.4. Инициализация винта по команде [F2]
После этих действий накопитель выдаст информацию о своем объеме, максимально поддерживаемом режиме DMA и многом другом. Программа MHDD видит винты целиком, совершенно не интересуясь их разбиением на разделы и типом файловых систем. Она увидит все IDE-винты, независимо от того, определены ли они в BIOS или нет. Даже если материнская плата не поддерживает накопители больших объемов, программа все равно их увидит на полную емкость, лишь бы жесткие диски были исправны. Если это произошло, можно приступать к проверке поверхности.
Для этого нажимаем [F4], и в верхней строчке появившегося меню ставим параметр (по умолчанию там стоит CHS). Переключение между режимами CHS и LBA осуществляется с помощью клавиши "пробел". Затем нажимаем [F4] второй раз. По экрану побегут серые прямоугольники. Это займет 10-30 минут, и абсолютно безопасно для хранящейся на винте информации, так как при этом происходит только чтение секторов. Вот что про этот режим написал автор программы в документации к ней:
"При выполнении проверки поверхности справа появится окно. В первой строке этого окна будет отображаться текущая скорость работы с поверхностью. В последней - два значения в процентах. Первое значение показывает процент выполнения текущего теста в заданном промежутке, а второе отображает, насколько далеко головки ушли от 0 цилиндра и пришли к последнему. В процессе тестирования поверхности один квадратик равен 255 секторам (при тестировании в режиме LBA), либо числу секторов в строке параметров HDD (обычно, 63 - при тестировании в режиме CHS). Чем "мутнее" квадратик - тем больше накопителю потребовалось времени для чтения этого блока секторов. Если пошли цветные квадратики - значит, накопитель не вписался в отведенный ему для работы промежуток времени. Цветными квадратиками отображается ненормальное состояние поверхности (но еще без BAD'ов). Чем ниже по меню цвет - тем больше накопителю понадобилось времени для чтения этого трудночитаемого участка. Красный цвет - признак того, что на этом месте уже почти сформировался BAD block. Вопросительный знак появляется при превышении максимального времени ожидания готовности. То есть, при появлении [?] можно считать, что накопитель "подвис" на этом месте и здесь явно присутствует либо серьёзный дефект поверхности, либо неисправен блок магнитных головок (БМГ). Всё, что ниже вопросительного знака - это ошибки (BAD block). Если они появляются в процессе тестирования, значит, на поверхности есть физические дефекты."
При наличии BAD-блоков, вместо квадратиков обычно появляются значки [x], очевидно символизирующие кресты. Если поверхность в порядке и без цветных квадратиков, а все SMART-атрибуты находятся в зеленой зоне, можно вздохнуть свободно: винт пока исправен.
Если же MHDD показал, что на поверхности имеются дефекты, а винт при этом "зависает" или издает скребущие звуки, значит проблемы есть. Но не будем думать сразу о плохом: ведь бэды могут быть логическими (софт-бэды), поэтому для начала устроим накопителю "прочистку мозгов" - выполним низкоуровневую запись нулей во все секторы. (Внимание! При этом вся информация будет уничтожена, поэтому копируем важные данные на другой диск). Программа MHDD имеет две команды для обнуления дисков: erase и aerase. Мы будем использовать первую, так как она работает быстрей.
Инициализируем винт, нажав клавишу [F2] (эту процедуру желательно делать перед любыми действиями), и вводим команду ERASE в консоль. Будьте очень внимательны при выборе накопителя, иначе по ошибке можно загубить свой рабочий винт: данные при этом теряются безвозвратно, и даже в ФСБ их уже не восстановят! Процедура очистки идет довольно медленно, занимая несколько десятков минут. Но в дальнейшем, немного разобравшись с программой, вы сможете стирать диск выборочно, введя начальный и конечный номер сектора перед запуском процедуры. Это очень удобно, если бэды находятся ближе к концу диска, а его начало безупречно.
Выполнив очистку, снова запускаем тест поверхности (нажав [F4] два раза или консольной командой SCAN). При этом контроллер винта должен пересчитать жизненно важные SMART-атрибуты, что сделает его SMART-статус более достоверным. Если бэдов больше нет, винт можно считать отремонтированным. Выходим из MHDD, запускаем наш SMART-монитор и смотрим на значение атрибута Reallocated Sector Count. Если оно после очистки не увеличилось, а дефекты исчезли - значит они были логическими. Если увеличилось - они были физическими, и контроллер произвел успешный ремап этих секторов. Если же наоборот, бэды остались, а значение атрибута Raw Read Error Rate катастрофически упало - все намного сложнее, и винт имеет серьезные повреждения. Будем пытаться лечить его дальше - делать ремап.
Возможно, вы уже успели заметить, что при однократном нажатии клавиши [F4] в MHDD появляется меню, содержащее дополнительные параметры сканирования (Рис. 5)
Рис.5. Настройки параметров сканирования и ремапа
Среди этих параметров есть функция ремапа. По умолчанию она выключена, но поставив на нее курсор и нажав "пробел", можно включить её (Remap: ON). В этом режиме MHDD будет пытаться вылечить дефектный сектор, всячески показывая контроллеру, что там имеется BAD и его нужно скрыть. При этом возле каждого успешно скрытого сектора возникает синий квадратик или надпись [ok]. После ликвидации всех бэдов нужно еще раз прогнать тест поверхности, выйти из MHDD и снова запустить SMART-монитор, убедившись в том, что значение Reallocated Sector Count увеличилось. Это означает, что ремап прошел успешно, без ошибок, и дефекты действительно были замещены из резерва.
Если вы по каким-то причинам не хотите терять информацию с испорченного винчестера, например, ее некуда сохранить - не отчаивайтесь. Можно попробовать не делать полное обнуление, а перейти сразу к ремапу с помощью MHDD. Информация с винта при этом не стирается, кроме, пожалуй, той, что была в самих бэдах (но ее все равно уже не вернуть). При нахождении бэдов, программа применит к ним те же меры, что и при обнулении - низкоуровневую запись, а следовательно, даже если бэды окажутся логическими, они с большой вероятностью могут быть исправлены. Точный результат зависит от реализации микрокода конкретной модели накопителя. Но если это не поможет, и дефекты не исчезнут - обнуление все же придется сделать, на всякий случай. В некоторых случаях может помочь только применение команды "aerase" (она обнуляет винт по другому алгоритму, но работает медленнее).
Программа MHDD постоянно дополняется и совершенствуется. Поэтому, посетив ее официальный сайт можно скачать ее самую последнюю версию.
Может случиться так, что даже после всех проведенных операций бэды останутся, а SMART покажет то, что ремап не происходит. Причин может быть несколько:
- винт очень старый, и его контроллер не поддерживает функцию Automatic Defect Reassignment. Например, винты фирмы вообще ремапу не поддаются. Лечится только специальными технологическими утилитами;
- у винта может быть переполнен G-list, и в нем больше нет места для новых дефектов. Это хорошо видно в SMART по завалу атрибута Reallocated Sector Count. Такой винт ремонтируется в условиях мастерской, путем переноса всех ремапов в P-list и последующего низкоуровневого форматирования;
- процедура автозамещения дефектов была отключена в самом винте. Фирменные утилиты некоторых накопителей позволяют это делать, и ими же можно вновь включить его. Это достаточно редкий случай;
- на винте может появиться особый, не поддающийся ремапу дефект. Например, если физически разрушен заголовок сектора, в котором сектор помечается как BAD, или сильно повреждены сервометки. Такой винт ремонтируется только в технологическом режиме, у хорошего специалиста;
- контроллер так и не смог поверить в то, что сектор действительно дефектный, так как он все-таки смог прочитать/записать его, пусть даже не с первой попытки. В этом случае ремап не произойдет. Ни одна программа скрытия дефектов никогда не пишет напрямую в дефект-листы. Это может сделать только сам контроллер, на основании своих наблюдений. Для того чтобы он "поверил" в то, что в данном месте имеется бэд, и скрыл его, иногда приходиться довольно долго это ему объяснять, всячески показывая проблемный сектор - многократно производить запись/чтение, до возникновения ошибки. Поэтому утилиты для ремапа никогда не скроют намечающийся дефект. Для того, чтобы это произошло, нужен только "настоящий" BAD. Такая "недоверчивость" сделана специально: ведь каждый перемещенный сектор ухудшает параметры накопителя, снижая его быстродействие. И скрыть 666 бэдов ремапом скорей всего не получится - размер пользовательского дефект-листа ограничен, и при определенном его значении (от десятков до нескольких сотен секторов, в зависимости от конкретной модели), винт заваливает себе SMART, сообщая о том, что ему пора в ремонт или на свалку.
Но не спешите выкидывать такой накопитель. Если он относительно современный, и не имеет переполненного дефект-листа (атрибут 5 в норме), надежда на ремап еще есть. Просто нужно попробовать применить к нему другую программу, имеющую большее количество циклов записи в дефектный сектор. К таким программам относится HDD Utility для DOS. Она работает немного иначе, чем MHDD: в ней функции проверки поверхности и ремапа разделены, и ремап производится на основе протокола, создаваемого при сканировании. По этому сначала запускаем проверку, пройдя цепочку: [Choose Drive] - [Read test] - [Hard read], а затем переходим к пункту [Choose Drive] - [Recovery] - [Remap defects-] (Рис. 6). Перед этим желательно ознакомиться с описанием этой программы, благо оно очень подробное и написано по-русски. Недостатки Hdd Utility - непонимание накопителей с объемом больше 8.4 Гбайт и отказ работать с некоторыми моделями (последнее связано с ограничением бесплатной версии). Но это не столь важно - "трудноремапящиеся" винты обычно имеют небольшую емкость - обычно это различные модели Western Digital емкостью 0.65-6.4 Гбайт. Для больших винтов можно применить программу HddSpeed v.2.4, в ней тоже есть функции ремапа (Try to repair/reallocate found defects) и русское описание (Рис. 6).
Рис.6. HDD Utility. Процесс скрытия дефектных секторов
Рис. 7: Ремап с помощью HddSpeed
Оценить реальное состояние накопителя по графику, полученному через его интерфейс, невозможно. Это объясняется тем, что при работе интерфейса неизбежно возникают задержки, так как контроллер винта, кроме передачи данных, выполняет множество других операций: преобразование физических адресов в LBA, дефект-менеджмент, запись внутренних SMART-логов, верификацию данных и вычисление их контрольных сумм, управление стратегией кэширования, термокалибровку и т.д. Поэтому этот метод пригоден только для приблизительной оценки винта, выявления грубых ошибок, и применяется только в быту. Это прекрасно понимают авторы тестировочных программ, указывая на невозможность использования их результатов в качестве любых доказательств. Наиболее достоверными считаются тесты под чистым DOS. В многозадачных средах ситуация хуже, так как любой фоновый процесс искажает временные интервалы, что препятствует верной оценке состояния накопителя.