Все проблемы такого типа возникают от модулей (или информации, прошитой в ПЗУ), уникальных для каждого экземпляра винчестера и настраиваемых строго индивидуально. Например, как уже отмечалось ранее, каждый жесткий диск имеет как минимум два списка дефектов — P-list (от Primary — первичный) и G-Iist (от Grown — растущий). В P-list заносятся номера дефективных секторов, обнаруженные еще на стадии заводского тестирования, а G-list формируется самим жестким диском в процессе его эксплуатации. Если запись в сектор происходит с ошибкой, сбойный сектор переназначается другим сектором, взятым из резервной области. Некоторые жесткие диски поддерживают список «подозрительных секторов»: если сектор начинает читаться не с первого раза, он замещается, а информация о замещении сохраняется либо в отдельном списке, либо в G-list. Все эти процессы протекают скрыто от пользователя. Специальный модуль (называемый транслятором), переводит физические адреса в номера логических блоков или виртуальные цилиндры головки-сектора, и внешне нумерация секторов не нарушается. Все работает нормально до тех пор, пока P/G-list не оказываются разрушенными, или на гермоблок устанавливается плата с чужими настройками. Если P/G-list хранятся во FLASH-ROM (а часто так и бывает), файловая система оказывается полностью неработоспособной, так как трансляция адресов нарушена. И хотя на секторном уровне все читается нормально, совершенно непонятно, какой сектор какому файлу принадлежит.
Восстановить работу транслятора возможно, поскольку практически все файловые структуры (да и сами файлы) имеют характерные последовательности байт (сигнатуры). Для начала нужно очистить таблицы транслятора (сгенерировать пустые P/G-list), в противном случае сектора, помеченные у донора как замещенные, не смогут прочитаться на акцепторе. Различные винчестеры имеют различное число замещенных секторов. В некоторых винчестерах замещенных секторов может не быть вообще, на некоторых их количество может доходить до нескольких тысяч. Формат P/G-list варьируется от одной модели к другой, и для работы с ним лучше всего применять РС-3000. В крайнем случае — утилиты от производителей винчестера (или команду unassign). Затем необходимо просканировать весь диск на предмет поиска характерных сигнатур и загнать их «физические» адреса в список (естественно, никакой физикой в подлинном смысле этого слова здесь и не пахнет — логические адреса без переназначенных секторов).
Теперь, исследуя служебные структуры файловой системы (каталоги, MFT), мы определяем номера кластеров подчиненных структур. Переводим кластеры в сектора и создаем еще один список. В результате у нас получается два списка, между которыми прослеживается четкая корреляция. Первый список как бы растягивается» вдоль второго. Другими словами, каждый переназначенный сектор увеличивает расхождение между последующими «физическими» и логическими адресами на единицу. Проделав необходимые математические вычисления, мы сможем рассчитать необходимую поправку и как бы восстановить транслятор. Но целевые адреса замещенных секторов остаются неизвестными, а, значит, в восстанавливаемых данных образуются «дыры», однако большая часть информации все же возвращается из небытия. РС-3000 автоматически восстанавливает транслятор, используя довольно продвинутые алгоритмы, которые постоянно совершенствуются.
1 комментарий
Подобрать адаптивы практически нереально, и рассчитать их в «домашних» условиях тоже нереально
Комментарии закрыты.