Восстановление диска с поврежденными пластинами

Получил заказ из далекого города Новосибирска. Диск Seagate 7200.10 ST3500630AS не определяется в BIOS компьютера, нужно отремонтировать HDD и восстановить информацию. У себя в Новосибирске клиент обратился в фирму "Нэта", диск взяли на диагностику, но сделать ничего не смогли, т.к. не оказалось нужного диска-донора.

Поломанный HDD из Новосибирска

Заказчик связался со мной по ICQ, я попросил выслать скан верхней крышки с наклейкой, чтобы выяснить, какой диск подойдет на запчасти. Нужных винчестеров у меня оказалось два. Диск переслали экспресс-почтой и, по факту получения, я провел диагностику. При подаче питания диск раскручивал двигатель с характерным посторонним шумом, который свидетельствовал о так называемых "запилах" т.е. физических повреждениях поверхности пластин. Данные с такого диска достать очень непросто. Для более детальной оценки возможности восстановления нужно вскрыть гермозону HDD, и провести оценку состояния фильтра внутренней рециркуляции воздуха, mr-элементов головок чтения-записи и поверхностей пакета платтеров винчестера.

У ST3500630AS три двухсторонних диска и 6 голов. Под верхней головой поверхность без деформаций, фильтр был более-менее чистый.

Фильтр внутренней рециркуляции

Анализ состояния головок под микроскопом показал физические повреждения четырех из них. Соответственно, минимум четыре поверхности пластин из 6-ти имеют радиальные царапины. Было принято решение демонтировать пакет дисков целиком, для визуальной оценки физических повреждений на поверхностях, скрытых от внешнего осмотра.

Сразу было ясно, что демонтаж блока дисков в будущем обернется серьезными проблемами по центровке. Три пластины на оси отцентровать идеально можно только в заводских условиях. Но делать было нечего - ставить комплект рабочих голов не имея представления о том, где и как расположены повреждения на пластинах - значит гарантированно вывести его из строя.

Демонтаж показал ожидаемую картину - на четырех поверхностях радиальные царапины в зоне парковки.

Радиальная царапина

Еще одна

И еще

Разрушен магнитный слой и мелкодисперсная пыль рассеяна по пластинам и гермозоне. Часть осела на фильтре, но остальная масса пыли представляет потенциальную угрозу. Прежде чем приступать к операции по смене блока голов, необходимо вымыть пластины в специальном растворе, высушить и перенести их в чистую гермозону диска-донора.

Следующий шаг - ограничить доступ блоку голов в зону парковки, в противном случае донорские головы при старте моментально "сгорят" от трения. Далее - центровка пластин. Во-первых по вертикальной оси, а во-вторых - относительно друг друга на плоскости. Для центровки на плоскости перед демонтажом были проставлены метки с помощью микрометра. Для вертикальной центровки нужен специальный девайс, который регистрирует отклонения при вращении и помогает их устранить.

Несмотря на все старания, идеальной центровки не получилось, и диск при старте выдал следующий лог в диагностический порт:

Reset
8192k x 16 DRAM
GALAXY - 1_Disk S-7A 12-08-06_16:41

Buzz HM SFI
!
$SFI
AMR

(P)SATA Reset
$SFI
AMR
$$$SFI

DiskAccess ReadSector EC=47 at ffffffff.00.0002

Failed sys sect. write! Nwt Er 13 RdWr 15f7b.00.0002
DiskAccess ReadSector EC=47 at ffffffff.00.0002

Read Ver Retrys
DiskAccess ReadSector EC=43 at ffffffff.00.0002

Read Ver Retrys
DiskAccess ReadSector EC=47 at ffffffff.00.0002

Read Ver Retrys
DiskAccess ReadSector EC=47 at ffffffff.00.0002

Read Ver Retrys
DiskAccess ReadSector EC=47 at ffffffff.00.0002

Read Ver Failure!
DiskAccess ReadSector EC=47 at ffffffff.00.022b
Failed sys sect. write! Nwt Er 00 RdWr 15f7d.00.022b
DiskAccess ReadSector EC=47 at ffffffff.00.0080
DiskAccess ReadSector EC=47 at ffffffff.00.0080
Unable To Load Overlay 01|000A

В таком состоянии диск не выходит в готовность по интерфейсу. Пользовательскую область можно читать, но через технологический порт и с очень невысокой скоростью, что для восстановления объема данных свыше 100 мегабайт - уже не приемлемо. Для того, чтобы вывести диск на интерфейс и читать в режиме UDMA, необходимо было провести самостоятельные исследования микропрограммы. Потому как существующие на данный момент коммерческие продукты такой возможности не имеют.

Строка "Unable To Load Overlay 01|000A" дословно переводится как "невозможность загрузить оверлей 01". Но, как говорится, на заборе тоже много чего написано, а за ним - дрова. На деле это строка говорит о том, что диск не может выгрузить 0-й оверлей по причине того, что "залочилась" запись. При этом физически и 0-й и 1-й оверлеи нормально читаются.

Следовательно, для устранения строки "Unable To Load Overlay" нужно внести правку в микропрограмму, отвечающую за базовые функции винчестера. За базовые стартовые операции при старте у Seagate отвечают ПЗУ и аппликейшн код. Существуют два способа отключения "Unable To Load Overlay" и вывода диска на интерфейс. Грубый способ: правка в один байт, чтобы поставить заглушку на функцию, и продвинутый способ: анализ запроса оверлея и расширенная модификация функции.

После внесения необходимых изменений в микрокод, диск вышел на интерфейс и я получил возможность скопировать нужную пользовательскую информацию. Восстановленные файлы я запаковал в многотомный архив и положил в спец. раздел к себе на ftp, после чего выслал заказчику линки на скачивание.

Как можно понять из описания, работа по восстановлению данных с зацарапанного HDD весьма непростое мероприятие. Тем не менее, стоимость услуги строго соответствует заявленной политике скидок междугородним клиентам - какой бы ни была сложность data recovery, стоимость восстановления информации останется в пределах от тридцати пяти до ста евро.

По факту выполнения работы я получил очередного довольного заказчика, который согласился стать моим представителем в Новосибирске и Новосибирской области.