Восстановление жестких дисков
|
Жесткие диски (винчестеры), как электромеханические устройства, являются одним из самых ненадежных компонентов современного компьютера. |
Несмотря на то, что в большинстве случаев срок службы последних соизмерим, и даже превосходит время их эксплуатации до момента морального устаревания и замены более новыми моделями, все же отдельные экземпляры выходят из строя в течение первых месяцев эксплуатации. |
Выход жесткого диска из строя - самое худшее, что может случиться с вашим компьютером, так как при этом часто необратимо теряются накопленные на нем данные. |
Если резервная копия по какой-то причине отсутствует, то суммарный ущерб от поломки заметно превышает номинальную стоимость современных винчестеров. |
Многие фирмы, пользуясь ситуацией, предлагают свои услуги по восстановлению информации с вышедшего из строя накопителя. |
Очевидно, это обходится недешево и целесообразно только тогда, когда на диске находилось что-то действительно ценное. |
В противном случае легче просто смириться с потерей. |
Ремонт жестких дисков требует специального оборудования и практически невозможен в домашних условиях. |
Так, например, для вскрытия контейнера необходима особо чистая от пыли комната. |
Казалось бы, положение безнадежно и нечего даже помышлять о восстановлении поломанного диска в домашних условиях. |
Но, к счастью, не все поломки настолько серьезны, и во многих случаях можно обойтись для ремонта подручными (а иногда чисто программными) средствами. |
Один из самых частых отказов винчестеров фирмы WESTERN DIGITAL (а также и некоторых других) выглядит следующим образом: жесткий диск не опознается BIOS, а головки при этом отчетливо стучат. |
Скорее всего, по какой-то причине не работает блок термокалибровки, и устройство не может обеспечить нужный зазор между головкой и рабочей поверхностью "блина". |
Обычно это происходит при отклонении от нормального температурного режима эксплуатации, например, в зимнее время, когда жесткие диски в плохо отапливаемых помещениях "выстывают" за ночь (при температуре 18...210С жесткий диск часто может исправно функционировать и с испорченным механизмом термокалибровки). |
Попробуйте дать поработать винчестеру в течение нескольких часов, чтобы он прогрелся, при этом рано или поздно винчестер попадает в необходимый диапазон температур и работоспособность (возможно, временно) восстанавливается. |
Разумеется, первым делом нужно скопировать всю информацию, поскольку работоспособность такого диска уже не гарантируется. |
То же можно рекомендовать и в отношении устаревших моделей без термокалибровки; часто они оказываются зависимыми от температурного режима, и с ростом износа винчестера эта зависимость проявляется все сильнее. |
Вторым по распространенности отказом является выход из строя модуля диагностики при полной исправности остальных компонентов. |
Как это ни покажется парадоксальным, но полностью рабочий винчестер не проходит диагностику. |
Разные BIOS могут различно реагировать на такую ситуацию, но все варианты сводятся к одному - жесткий диск не определяется и не "чувствуется". |
Однако на уровне портов ввода/вывода устройство (функционирует отлично. |
Заметим, что существуют такие материнские платы (особенно среди новых моделей), которые, обнаружив ошибку микроконтроллера винчестера, просто отключают питание жесткого диска. |
Несложно написать для испорченного таким образом винчестера драйвер, который обеспечит работу с диском через высокоуровневый интерфейс Int 0x13. |
Например, следующая процедура обеспечивает посекторное чтение и запись через порты ввода/вывода для первого жесткого диска в CHS режиме. |
LBA mode для упрощения понимания не поддерживается. Необходимую техническую информацию обычно можно найти на сайте производителя вашего жесткого диска. |
Этот фрагмент может служить вполне работоспособным ядром для драйвера 16-ти разрядного режима. |
Для упрощения понимания не включена задержка после каждого обращения к порту. |
В зависимости от соотношений скорости вашего процессора и контроллера диска эта задержка может и не потребоваться (в противном случае рекомендуется читать регистр статуса Ox1F7, дожидаясь готовности контроллера). |
При этом не следует спешить с заменой такого жесткого диска на новый, с подобной неисправностью можно успешно работать не год и не два. |
Последнее, правда, лишь при условии, что все используемое программное обеспечение не будет конфликтовать с нестандартным драйвером. |
Писать драйвер, скорее всего, придется вам самому, поскольку не известно ни одной коммерческой разработки в этом направлении, а все любительские разработки выполнены в основном "под себя". |
Так, например, драйвер от KPNC hddFix3a поддерживает только винчестеры PRIMARY MASTER до пятисот мегабайт и не работает в среде Windows 95 (разработан на год раньше ее появления). |
Более легкий, но не всегда осуществимый путь - запретить тестирование жестких дисков BIOS или, по крайней мере, игнорировать результаты такового. |
Как это осуществить, можно прочесть в руководстве на материнскую плату (или обратиться за помощью к службе технической поддержки фирмы-производителя, поскольку в руководствах пользователя такие тонкости нередко опускают). |
Например, попробуйте установить "Halt on" в "Never" или перезаписать Flach BIOS, модифицировав его так, чтобы тот не выполнял подобную проверку. |
Если Вам повезет, жесткий диск заработает! |
Однако иногда все же происходят и аппаратные отказы. |
Например, у винчестеров фирм SAMSUNG и CONNER отмечены случаи отказа модуля трансляции мультисекторного чтения/записи. |
Если это не будет обнаружено внутренним тестом устройства, то такой жесткий диск вызовет зависание операционной системы на стадии ее загрузки. |
Для предотвращения этого достаточно добавить в CONFIG.SYS ключ MULTI-TRACK=OFF и отключить аналогичные опции в BlOS. |
При этом, проиграв в скорости, все же можно заставить жесткий диск сносно работать. |
Понятно, что эксплуатировать восстановленный таким образом диск длительное время нерационально по причине потери быстродействия. |
Лучше приобрести новый, на который и скопировать всю информацию. |
С другой стороны, такой жесткий диск все же остается полностью рабочим и успешно может служить, например, в качестве резервного. |
На том же CONNERe эпизодически выходит из строя блок управления позиционированием головок, так что последние уже не могут удержаться на дорожке и при обращении к следующему сектору немного "уползают". |
При этом считывание на выходе дает ошибочную информацию, а запись необратимо затирает соседние сектора. |
Бороться с этим можно позиционированием головки перед каждой операцией записи/чтения, обрабатывая за один проход не более сектора. |
Понятно, что для этого необходимо вновь садиться за написание собственного драйвера. |
К счастью, он достаточно простой (можно использовать аппаратное прерывание от жесткого диска Int 0x76 IRQ14, вставив в тело обработчика команду сброса контроллера. |
В данном случае подразумевается, что контроллер используемого жесткого диска проводит рекалибровку головки во время операции сброса. |
Некоторые модели этого не делают. В этом случае придется прибегнуть к операции позиционирования головки (функция ОхС дискового сервиса 0x13). |
Первые модели от вторых можно отличить временем, требуемым на сброс контроллера. |
Понятно, что электроника "сбрасывается" мгновенно, а позиционирование головки требует хоть и не большого, но все же заметного времени. |
Современные модели с поддержкой кэширования этого часто не делают или "откладывают" операции с головкой до первого к ней обращения. |
Разумеется, в этом случае кэширование придется выключить. |
Большинство BIOS позволяет это делать без труда, и нет нужды программировать контроллер самостоятельно. |
В другом случае вышедший из строя блок позиционирования (трансляции) подводит головки вовсе не к тому сектору, который запрашивался. |
Например, головки могли физически сместиться с оси, "уползая" в сторону. |
Разумеется, этот дефект можно скорректировать программно, достаточно проанализировать ситуацию и логику искажения трансляции. |
Многие модели позиционируют головку, используя разметку диска, что страхует от подобных поломок (к сожалению, сейчас от такого подхода большинство фирм отказались, выигрывая в скорости). |
Конечно, все описанные программные подходы в действительности не устраняют неисправность, а только позволяют скопировать с казалось бы уже нерабочего винчестера ценные и еще не сохраненные данные. |
При этом ни к чему писать универсальный драйвер для Win32 и защищенного режима. |
Вполне можно ограничиться DOS-режимом. |
Для копирования файлов последнего должно оказаться вполне достаточно, конечно за исключением тех случаев, когда диск был отформатирован под NTSF или другую, не поддерживаемую MS-DOS, систему. |
К счастью, для многих из них есть драйверы, которые позволяют "видеть" подобные разделы даже из "голой" MS-DOS. |
В крайнем случае, можно ограничиться посекторным копированием на винчестер точно такой же топологии. |
При этом совершенно не имеет значения используемая файловая система и установленная операционная система. |
Посекторно скопировать диск на винчестер с иной топологией трудно, но возможно. |
Дело в том, что многие современные контроллеры жестких дисков позволяют пользователю менять трансляцию произвольным образом. |
Для этого необходимо приобрести винчестер, поддерживающий LBA-режим (а какой из современных жестких дисков его не поддерживает?). |
При этом он может быть даже большего объема, нежели исходный, но это никак не помешает копированию. |
Другой вопрос, что без переразбиения скопированный таким образом диск не "почувствует" дополнительных дорожек и следует запустить Norton Disk Doctor, который устранит эту проблему. |
Достаточно часто нарушается вычисление зон предкомпенсации. |
Дело в том, что плотность записи на разных цилиндрах не одинакова, так как линейная скорость растет от центра диска к периферии. |
Разумеется, гораздо легче постепенно уплотнять записи, нежели искать некий усредненный компромисс. |
На всех существующих моделях плотность записи изменяется скачкообразно и на последних моделях программно доступна через соответствующие регистры контроллера. |
При этом значения, выставленные в BIOS, практически любой жесткий диск (с интерфейсом IDE) просто игнорирует. |
Предыдущие модели не имели с этим проблем, и только винчестеры, выпущенные в течение последних двух лет, склонны к подобным поломкам. |
Скорее, даже не к поломкам, а к сбоям, в результате которых искажается хранимая где-то в недрах жесткого диска информация. |
Если контроллер позволяет ее программно корректировать, то считайте, что ваш жесткий диск спасен. |
Конечно, придется пройти сквозь мучительные попытки угадать оригинальные значения, однако это можно делать и автоматическим перебором до тех пор, пока винчестер не начнет без ошибок читать очередную зону. |
Помните, что любая запись на диск способна нарушить низкоуровневую разметку винчестера, после чего последний восстановлению не подлежит и его останется только выкинуть. |
Производите только чтение секторов! |
Если же контроллер не позволяет программно управлять предкомпенсацией, то еще не все потеряно. |
Попробуйте перед каждым обращением делать сброс контроллера, а точнее, его рекалибровку (команда Ixh). |
В некоторых случаях это срабатывает, поскольку с целью оптимизации скорости обмена предкомпенсацией обычно управляет не один блок. |
И, кроме того, иногда контроллер кэша не учитывает предкомпенсацию, а его сброс реализует последнюю аппаратно. |
К сожалению, это по большей части догадки и результаты экспериментов автора, так как техническая документация фирм-производителей по этому поводу не отличается полнотой, а местами содержит противоречия. |
Можно испытать и другой способ - попробовать перезаписать микрокод контроллера (команда 92h). |
Конечно, это доступно только для специалистов очень высокого класса, но ведь доступно! |
Заметим, что не все контроллеры поддерживают такую операцию. |
С другой стороны, это и хорошо, так как уменьшает вероятность сбоя и не дает некорректно работающим программам (вирусам в том числе) испортить дорогое устройство. |
Жесткие диски от SAMSUNG обладают еще одной неприятной особенностью - часто при подключении шлейфа "на лету", при включенном питании, они перестают работать. |
Внешне это выглядит так: индикатор обращения к диску постоянно горит, но диск даже не определяется BIOS, или определяется, но все равно не работает. |
Близкое рассмотрение показывает, что на шине пропадает сигнал готовности устройства. |
В остальном контроллер остается неповрежденным. |
Разумеется, если не обращать внимание на отсутствие сигнала готовности, то с устройством можно общаться, делая вручную необходимые задержки (поскольку физическую готовность устройства уже узнать не представляется возможным, приходится делать задержки с изрядным запасом времени). |
При этом, к сожалению, придется отказаться от DMA-mode (а уж тем более ultra-DMA) и ограничиться PIO 1 (с небольшим риском - PIO 2) режимом. |
Конечно, писать соответствующий драйвер вам придется опять самостоятельно. |
Разумеется, скорость обмена в режиме PIO 1 по сегодняшним меркам совершенно неудовлетворительна и не годится ни для чего другого, кроме как копирования информации со старого на новый винчестер, но некоторые "нечистоплотные" продавцы компьютерной техники как-то ухитряются устанавливать подобные экземпляры на продаваемые машины. |
Будьте осторожны! |
Учитывая, что написание подобных драйверов для Win32 - трудоемкое занятие, большинство ограничивается поддержкой одной лишь MS-DOS, и вовсе не факт, что компьютер, демонстрирующий загрузку win95, содержит исправный, а не реанимированный подобным образом жесткий диск. |
У жестких дисков фирмы SAMSUNG при подключении "налету" может появляться другой неприятный дефект - при запросах на чтение контроллер периодически "повисает" и не завершает операцию. |
В результате "замирает" вся операционная система (впрочем, Windows NT с этим справляется, но, вероятно, не всегда). |
На первый взгляд может показаться, что с этого винчестера несложно скопировать ценные файлы, но при попытке выполнить это выясняется, что диск "зависает" все чаще и чаще и копирование растягивается до бесконечности. |
Однако если выполнить сброс контроллера, то можно будет повторить операцию. |
Это можно сделать аппаратно, подпаяв одну кнопку на линию сброса и статуса. |
Последнее нужно для указания на ошибочную ситуацию, чтобы операционная система повторила незавершенную операцию. |
Если этого не сделать, то часть секторов не будет реально прочитана (записана). |
Или можно выполнять сброс автоматически, например, по таймеру. |
Чтобы не сталкиваться с подобной ситуацией, никогда не следует подсоединять/отсоединять винчестер при включенном питании. |
Очень часто это приводит к подобным ошибкам, хотя производители других фирм, по-видимому, как-то от этого все же защищаются, ибо аналогичной ситуации у них практически не встречается. |
Все же не стоит искушать судьбу... |
От аппаратных ошибок теперь перейдем к дефектам поверхности. |
Заметим сразу, что последнее встречается гораздо чаще и проявляется намного коварнее. |
Обычно это ситуация, в которой мало что можно предпринять. |
Но достичь главной цели - спасти как можно больше уцелевших данных - довольно часто удается. |
Возьмем такую типичную ситуацию как ошибка чтения сектора. |
Маловероятно, чтобы сектор был разрушен целиком. |
Чаще всего "сыплется" только какая-то его часть, а все остальные данные остаются неискаженными. |
Существуют контроллеры двух типов. |
Первые, обнаружив расхождение контрольной суммы считанного сектора, все же оставляют прочитанные данные в буфере и позволяют их извлечь оттуда, проигнорировав ошибку чтения. |
Вторые либо очищают буфер, либо просто не сбрасывают внутренний кэш, в результате чего все равно прочитать буфер невозможно. |
На практике обычно встречаются последние. |
При этом сброс кэша можно инициировать серией запросов без считывания полученных данных. |
Кэш при этом переполняется, и наиболее старые данные будут вытолкнуты в буфер. |
Остается их только прочесть. |
Конечно, - это крайне медленно, но, к сожалению, универсальной команды сброса кэша не существует. |
Разные разработчики реализуют это по-своему (впрочем, иногда это можно найти в документации на чипы, используемые в контроллере). |
WESTERN DIGITAL сообщает в техническом руководстве, что при длинном чтении сектора без повтора контроль сектора не выполняется, и он будет-таки, целиком помещен в буфер. |
Кстати, так и должно быть по стандарту. |
Увы, остальные фирмы от него часто отклоняются по разным соображениям. |
Остается определить, какие же из прочитанных данных достоверные, а какие нет (если этого не видно "визуально" - например, в случае текстового или графического файлов)? |
Разумеется, в подобных рамках задача кажется неразрешимой, но это не совсем так. |
Дело в том, что можно произвести не только короткое, но и длинное чтение (Ox22h req PlOin long with retry), для чего можно использовать следующую процедуру. |
При этом кроме собственно данных читаются также и корректирующие коды. Автоматическая коррекция не выполняется (хотя некоторые контроллеры это реализуют аппаратно и не могут отключить автокоррекцию; в документации этот момент, кстати, не уточняется). |
Как правило, используются корректирующие коды Рида-Соломона, хотя последнее не обязательно. |
Математические законы позволяют не только определить место возникновения сбоя, но и даже восстановить несколько бит. |
При больших разрушениях можно определить только место сбоя, но достоверно восстановить информацию не удается. |
Модуляция при записи такова, что все биты, стоящие справа от сбойного, уже не достоверны. |
Точнее, не все, а только в пределах одного пакета. |
Обычно за один раз записывается от 3 до 9 бит (необходимо уточнить у конкретного производителя) и содержимое остальных пакетов, как правило, остается достоверным. |
Самое интересное, что зачастую сбойный пакет можно восстановить методом перебора! |
При этом можно даже рассчитать, сколько вариантов должно получиться. |
Учитывая хорошую степень "рассеяния" корректирующих кодов можно сказать, что не очень много. |
И таким образом можно восстановить казалось бы, безнадежно испорченные сектора, а вместе с ними и файлы, расположенные "поверх" последних. |
Выше были перечислены наиболее типичные случаи отказов жестких дисков, которые поддавались чисто программному восстановлению если уж не винчестера, то хотя бы хранимых на нем данных. |
Разумеется, что иногда жесткий диск выходит из строя полностью (например, при неправильно подключенном питании, скачках напряжения) от вибрации или ударов, а то и просто из-за откровенного заводского брака. |
Есть один старый проверенный способ - найти жесткий диск такой же точно модели и заменить электронную плату. |
К сожалению, последнее из-за ряда конструктивных особенностей все реже и реже бывает, возможно, а уж дефекты поверхности этот способ и вовсе бессилен вылечить. |
Поэтому, берегите свой жесткий диск и почаще проводите резервное копирование. |
Помните, что самое дорогое это не компьютер, а хранимая на нем информация! |