Внешний жесткий диск Seagate FreeAgent Go 500Gb верой и правдой служил своей владелице, но в один из не самых лучших для него дней стал жертвой человеческих эмоций, когда владелица в пылу семейной драмы швырнула устройство в объект, вызывающий у нее сильное раздражение – в своего мужа. Муж серьезно не пострадал, а вот с накопителем дела обстояли хуже. При подключении в USB порт компьютера накопитель издавал тихие жужжащие звуки и не начинал вращение вала.
рис. 1
В таком состоянии внешний жесткий диск поступил в нашу лабораторию восстановления данных. Визуальный осмотр не выявляет каких-либо деформаций самого бокса. Учитывая, что в предыстории значится удар, такой накопитель подлежит обязательному вскрытию в условиях ламинарного бокса без каких-либо попыток включения во избежание дальнейших разрушений. Из бокса извлекается жесткий диск Seagate ST9500325AS (Momentus 5400.6), представитель семейства Wyatt. Корпус винчестера без деформаций и вмятин на крышке. Проводим мероприятия по удалению пыли из всех возможных мест и отправляемся в ламинарный бокс. Сняв крышку, обнаруживаем, что блок магнитных головок находится вне парковочной рампы.
рис. 2
С использованием съемников осуществляем вывод БМГ на рампу. Далее извлекаем БМГ и тщательно осматриваем все 4 слайдера и подвески под микроскопом на предмет деформаций и наличия посторонних частиц. Также осматриваем рециркуляционный фильтр и поверхность верхней пластины в месте залипания БМГ. В нашем случае установлено, что деформаций подвесок нет, загрязнения слайдеров отсутствуют. На поверхности пластины присутствует «пятно» с повреждением, которое невозможно увидеть невооруженным глазом. На рециркуляционном фильтре отсутствуют металлические частицы. Повреждений пластиковой парковочной рампы нет, перекоса пакета дисков нет.
По результатам данного осмотра установлено, что допустимо осуществить попытку чтения оригинальным блоком магнитных головок, но необходимо учитывать наличие повреждений у внешнего края пластин. Устанавливаем блок магнитных головок обратно в накопитель и производим сбор. Зная, что накопитель подвергся ударной нагрузке, выполним замену оригинальной печатной платы 100536286 Rev E, на заведомо исправную плату накопителя-донора с переносом ПЗУ. Данная мера рекомендуема, чтобы не получить неприятных сюрпризов из-за потенциально возможных микротрещин.
Подключаем накопитель к SATA порту и терминалу и подаем питание. В нашем случае накопитель начал вращение вала без какого-либо биения. Послышался нормальный звук калибровочного теста и через несколько секунд накопитель сообщил о своей готовности к обмену данными в регистрах.
рис. 3
В терминале также нормальный лог старта накопителя с отключенным дополнительным протоколированием событий.
Rst 0x08M
(P) SATA Reset
Сразу же в ОЗУ накопителя необходимо найти модуль конфигурации HDD (ID=0x2A) и убрать оттуда все ключи, которые ответственны за запуск процедур оффлайн сканирования, автономного и отложенного скрытия дефектов, а также отключить процедуры автореаллокации при чтении и записи. Эта мера необходима, чтобы накопитель при обнаружении проблем не пытался запускать процедуры обслуживания дефектов, так как они приведут к длительной задержке БМГ над проблемным участком, что может спровоцировать лавинообразное разрушение (запиливание пластины). Структура модуля 0x2А (system file FC36608F) достаточно проста (порядок записи параметров достаточно очевиден). При исследовании (исследования проводились и продолжают проводиться для всех накопителей F3 архитектуры) главной сложностью было установление назначения каждого из параметров и допустимые значения. Использование современных версий комплекса PC3000 существенно упрощает процедуру правки значений.
Резервируем микропрограмму накопителя (ПЗУ, модули, “system files”). Проверяем на тестовых модулях, которые не важны для функционирования накопителя, способность записи и чтения записанного каждой из головок. Удостоверившись в корректной работе всех головок, перейдем к оценке качества их чтения в пользовательской зоне. Для этого построим карту зонного распределения в границах всего логического пространства (от 0 до 976 773 167 сектора LBA диапазона). Оценив размер мини-зон, можно сделать вывод, что для оценки читабельности головок в данном экземпляре достаточно непрерывно прочесть около 300 000 секторов в конце логического пространства, около 450 000 секторов в середине и около 600 000 в начале диска (зная о наличии повреждения пластин, начало диска не тестируем).
Удостоверившись в возможности чтения всеми головками, настроим параметры чтения: UDMA режим, таймаут операции чтения не более 500 миллисекунд, при отсутствии готовности программный сброс и пропуск мини-зоны. Построив список мини-зон в обратном порядке, приступим к последовательному чтению мини-зон (созданию посекторной копии).
рис. 4
99% логического пространства были прочитаны без каких-либо затруднений. Начиная с LBA 6 541 ххх по головке №1, обнаружилась первая задержка. Чтение было немедленно прервано и накопитель отправлен в sleep режим (парковка головок на рампу, остановка вала, но микропрограмма остается загруженной в ОЗУ жесткого диска. Перестроим список зон в прямой порядок и приступим к последовательному чтению.
рис. 5
С LBA 2 518 ххх также обнаружилась задержка чтения по головке №1. Также быстро отправляем накопитель в спящий режим. Проводим грубую оценку границ дефектной зоны и размер 6 541 000 – 2 518 000= 4 023 000, что примерно равно 2 GB.
Дальнейший анализ проводим исключительно копии на исправном накопителе. Оценим содержимое LBA 0.
рис. 6
Значение 0x07 по смещению 0x1C2 сообщает нам о том, что тип раздела NTFS (или ExFAT).
Значение 0x00000800 по смещению 0x1C6 информирует о том, что раздел начинается с сектора 2 048.
Значение 0x3A384800 по смещению 0x1CA говорит, что длина раздела 976 766 976 секторов.
Перейдем к сектору 2 048
рис. 7
Из параметров NTFS видим, что сектор 512 байт, секторов в кластере 8, размер кластера 512*8=4096 байт. MFT располагается с кластера 0x00000000000C0000 (786 432) или с сектора 6 293 504 (786 432*8+2048). MFT Mirror находится в кластере 0x0000000000000002 (2) или берет начало с сектора 2 064 (2*8+2048).
Зная границы дефектообразования, можем заметить, что с высокой вероятностью на область с MFT придутся дефекты. Для этого оценим первую запись MFT (в MFT Mirror, которая дублирует первые 4 записи MFT так как она прочитана). В нашем случае этот файл расположен в виде одного фрагмента, начиная с сектора 6 293 504 и протяженностью 277 092 сектора.
рис. 8
Обратим внимание, что основные затруднения в чтении были зафиксированы по головке №1, поэтому начнем чтение с зоны по головке №0. Пробудим накопитель из спящего режима и прочитаем фрагмент MFT по нулевой головке. В данном случае это не вызвало затруднений и позволило получить более 75% важнейшей структуры. Далее используем PIO режим для лучшего контроля операций чтения и попытаемся прочесть оставшиеся 68 400 секторов из проблемной зоны. Манипулируя размерами прыжков, таймаутами ожидания готовности, размером блока при чтении в несколько проходов, производим чтение проблемного участка. В области MFT остается 18 непрочитанных секторов, которые по расположению повторяются (цикличность соответствует SPT для этих зон), что свидетельствует о царапине на этой пластине.
Снова отправив накопитель в спящий режим, произведем анализ записей в MFT на копии и оценим расположение файлов, чтобы понимать, какие из них попадают в дефектную зону. Обнаруживается порядка 50 пострадавших файлов. Сверяемся с техническим заданием и выясняем, что можно отбросить из сценария вычитывания более 35 файлов. Для остальных построим цепочки их расположения и отсортируем в порядке следования.
При чтении заметим, что кроме проблем на поверхности, читаемой первой головкой, обнаруживаются проблемы по поверхности, читаемой головкой №3. Исключим чтение цепочек по проблемным поверхностям и прочитаем участки по поверхностям 0 и 2.
Далее попытаемся возобновить чтение проблемных цепочек головками №1 и №3, и менее, чем через 30 секунд из накопителя раздается достаточно громкий стук. Пытаемся подать сброс, но накопитель не реагирует и продолжает стучать. Принимаем решение об отключении питания. Повторное включение питание начинается со стука из накопителя. Отключаем питание и делаем вывод о развитии деградационных процессов вследствие чтения поврежденной зоны.
Отправляемся в ламинарный бокс и осматриваем произошедшее. Верхняя поверхность выглядит идеально, но под микроскопом обнаруживается начавшийся лавинообразный процесс разрушения пластины (запил). Наличие металлических частиц на слайдерах №1 и №3 уточняет диагноз.
Из посекторной копии создаем файловую копию с переносом файлов, имеющих недочитанные фрагменты, в отдельную папку (с оригинальной иерархией). Также уточненно проводим анализ MFT, чтобы понимать, к чему привела потеря 18 секторов. Из анализа повреждений можно однозначно установить, что утеряно не более 7 файлов. К сожалению, Bitmap также находится в дефектной зоне, и его содержимое не может быть использовано для анализа.
При приемке результата владелица диска осталась довольна результатом (более 99,9% нужных данных) и посчитала, что нет нужды проводить дополнительный анализ регулярных выражений для поиска пропавших файлов из-за повреждений MFT.
В качестве заключения хочу обратить внимание многих пользователей, что не все так просто в случае накопителей у которых «головки» залипли вне парковочной рампы. И насколько порой опасны предложения людей, далеких от понимания принципов работы накопителя на жестких магнитных дисках, самостоятельно вскрыть устройство и вывести головки, а далее используя dd из Linux или WinHex под Windows выполнить «безопасную» посекторную копию. Если бы к накопителю, описанному в публикации, были бы применены подобные меры, то он бы превратился в труп без возможности восстановления данных при чтении второго гигабайта.
Предыдущая публикация: Немного реверс-инжиниринга USB flash на контроллере SK6211
Публикация вне habrahabr: Восстановление данных с неисправного HDD WD4000FYYZ-01UL1B1
Автор: Янчарский Павел