Чтобы рассуждать о применении данного метода, для начала необходимо уяснить общую идеологию функционирования микропрограмм накопителей. На сегодняшний день почти во всех моделях жестких дисков микропрограммы имеют модульную структуру, в которой некоторый участок кода содержится в ПЗУ на плате контроллера, а основной участок кода и оверлеев, необходимых для функционирования накопителя, располагается в служебной зоне (группа треков, неиспользуемых при формировании пользовательской зоны, как правило, с меньшей плотностью для обеспечения большей стабильности операций чтения/записи). Часть микрокода в ПЗУ должна обеспечить первичные проверки состояния узлов накопителя, выполнить тест буферного ОЗУ, произвести опрос головок, подключенных к коммутатору, согласно карты головок, выполнить запуск двигателя с последующей калибровкой и тестом головок и при успешном прохождении тестирования произвести загрузку основной микропрограммы накопителя из служебной зоны с инициализацией системы трансляции.
При неисправности одной или нескольких головок либо повреждениях серворазметки многие накопители не выполняют загрузку микропрограммы полностью, и, соответственно, доступа к пользовательским данным нет. В таких случаях обычно рекомендована операция пересадки донорского БМГ и/или подготовки накопителя-донора для выполнения Hot Swap, но не всегда эти методы целесообразны для пользователя, исходя из немалой стоимости работ. Немалое число накопителей можно запустить с проинициализированной системой трансляции, обойдя некоторые тестовые процедуры инициализации, одна из которых – калибровочный тест. Прежде, чем приступить к модификациям микрокода накопителя, необходимо убедиться, что старт накопителя с одной или несколькими неисправными головками не приведет к стремительной деградации поверхностей пластин, для этого необходимо произвести вскрытие накопителя и осмотр головок под микроскопом. Если неисправные либо неиспользуемые при эксплуатации головки сильно повреждены и в процессе работы накопителя могут царапать поверхности, то их необходимо их удалить, либо принять меры по недопущению механического контакта поврежденных головок с поверхностями пластин, чтобы не провоцировать образование запилов.
После вышеописанных мероприятий можно приступать к модификации карты головок в ПЗУ, чтобы накопитель при прохождении калибровочного теста использовал только исправные головки. Кроме метода изменения карты головок в ПЗУ применяется метод коррекции карты головок в ОЗУ накопителя с последующей загрузкой микропрограммы. После успешного старта накопителя необходимо в ОЗУ изменить код микропрограммы для блокирования процедур обслуживания дефектов, которые могут привести к аварийному завершению работы накопителя. После этого провести анализ зонного распределения накопителя и вычитывать участки из LBA диапазона читаемые исправными головками. В некоторых случаях имеет смысл возвращать в карту головок в ОЗУ головки, не прошедшие калибровочный тест, так как непрохождение данного теста не всегда означает невозможность чтения данных.
После выполнения частичного вычитывания необходимо непрочитанные области заполнить узнаваемым паттерном и далее произвести анализ регулярных выражений, характерных для определенных типов файлов, содержащихся в техническом задании, а также произвести поиск структур файловых систем. При необходимости определить корректные границы разделов, критически важные параметры файловых систем и восстановить записи таблицы разделов и загрузочных секторов файловых систем, чтобы была возможность корректного использования найденных структур файловых систем. После выполнения комплекса анализов полученный результат следует очистить от файлов, содержащих внутри паттерн вместо оригинальных данных пользователя.
Павел Янчарский
Перепечатка материалов разрешена только с указанием активной ссылки на оригинал статьи