Основным источником неприятностей при ремонте являются модули (и, довольно часто, информация, прошитая в ПЗУ), которые уникальны для каждого экземпляра винчестера и настраиваются строго индивидуально. В частности, каждый жесткий диск имеет, как минимум, два списка дефектов — первичный список, или P-list (Primary list) и растущий список, или G-list (Growing list). В P-list заносятся номера дефектных секторов, обнаруженные еще на стадии заводского тестирования, a G-list формируется самим жестким диском в процессе его эксплуатации. Если запись в сектор происходит с ошибкой, сбойный сектор переназначается другим сектором, взятым из резервной области. Некоторые жесткие диски поддерживают список "подозрительных секторов": если сектор начинает читаться не с первого раза, он замещается, а информация о замещении сохраняется либо в отдельном списке, либо в G-list.
Все эти процессы протекают скрытно от пользователя. Специальный модуль, называемый транслятором, переводит физические адреса в номера логических блоков или виртуальные номера CHS (цилиндр-головка-сектор), и внешне нумерация секторов не нарушается. Все работает нормально до тех пор, пока P- или G-списки не оказываются разрушенными, или пока на гермоблок не устанавливается плата с чужими настройками. Если P/G-списки хранятся во FLASH-ROM (а часто так и бывает), файловая система оказывается полностью неработоспособной, ведь трансляция адресов нарушена! При этом, хотя на секторном уровне все читается нормально, становится совершенно непонятно, какой сектор какому файлу принадлежит.
К счастью, восстановить транслятор довольно просто, поскольку практически все файловые структуры (да и сами файлы) имеют характерные последовательности байт (сигнатуры). Для начала нужно очистить таблицы транслятора (сгенерировать пустые P/G-списки), в противном случае сектора, помеченные у донора как замещенные, не смогут быть прочитаны на акцепторе. Различные винчестеры имеют различное число замещенных секторов. В некоторых винчестерах замещенных секторов может не быть вообще, в то время как на других их количество может доходить до нескольких тысяч. Формат P/G-списков варьируется от одной модели к другой, и для работы с ним лучше всего применять PC-3000. В экстренных случаях, если в вашем распоряжении нет PC-3000, можно применить утилиты от производителей винчестера и дать команду ATA unassign.
Затем необходимо просканировать весь диск на предмет поиска характерных сигнатур и занести их "физические" адреса в список. Естественно, эти адреса не являются "физическими" в подлинном смысле этого слова. На самом деле они представляют собой логические адреса без переназначенных секторов.
На данном этапе, исследуя служебные структуры файловой системы (каталоги, MFT), мы определяем номера кластеров подчиненных структур. Переводим кластеры в сектора и создаем еще один список. В результате будет получено два списка, между которыми прослеживается четкая корреляция. Первый список как бы "растягивается" вдоль второго. Иными словами, каждый переназначенный сектор увеличивает расхождение между последующими "физическими" и логическими адресами на единицу. Проделав необходимые математические вычисления, можно рассчитать необходимую поправку и частично восстановить транслятор. Слово "частично" используется потому, что целевые адреса замещенных секторов остаются неизвестными, а это значит, что в восстанавливаемых данных образуются "дыры". Тем не менее, большая часть информации все же будет возвращена из небытия. Аппаратно-программный комплекс PC-3000 автоматически восстанавливает транслятор, используя довольно продвинутые алгоритмы, которые постоянно совершенствуются. Кстати, при желании утилиту для восстановления транслятора можно написать и самостоятельно, но для этого нужно быть настоящим профессионалом.
К сожалению, ни PC-3000, ни другие аппаратно-программные комплексы не всемогущи. Например, ни один из них не способен восстанавливать адаптивы. Адаптивы начали доминировать сравнительно недавно. До этого индивидуальные настройки диска сводились к высокоуровневым наслоениям, никак не препятствующим чтению информации на физическом уровне. Перестановка плат могла привести к невозможности работы с диском средствами операционной системы, но данные всегда было можно прочитать посекторно стандартными командами ATA или, на худой конец, на уровне физических адресов в технологическом режиме.
Но плотность информации неуклонно росла, нормативы допусков ужесточались, а это значит, что усложнялся и дорожал производственный цикл. В промышленных условиях невозможно изготовить два абсолютно одинаковых жестких диска. Справиться с неоднородностью магнитного покрытия, влекущего за собой непостоянство параметров сигнала головки в зависимости от угла поворота позиционера, чрезвычайно сложно. Таким образом, производитель должен выбрать один из перечисленных ниже путей.
1. Уменьшить плотность информации до той степени, при которой рассогласованиями можно пренебречь. Однако в этом случае для достижения той же емкости придется устанавливать в диск больше пластин, что удорожает конструкцию и вызывает новые проблемы.
2. Улучшить качество производства. Это хороший вариант, но при современном уровне развития науки, технологий и экономики он настолько нереален, что даже не обсуждается.
3. Индивидуально калибровать каждый жесткий диск, записывая на него так называемые адаптивные настройки. Именно этот вариант и был выбран производителями, что и привело к появлению адаптивов.
Состав и формат адаптивов меняется от модели к модели. В грубом приближении, в состав адаптивов входят: ток записи, усиление канала, профиль эквалайзера, напряжение смещения для каждой головки, таблица коррекции параметров каждой головки для каждой зоны и т.д., и т.п. Без своих "родных" адаптивов жесткий диск просто не будет работать! Даже если произойдет чудо, и "чужие" адаптивы все-таки подойдут (а чудес, как известно, не бывает), то информация будет считываться крайне медленно и с большим количеством ошибок. Подобрать адаптивы нереально, рассчитать их в "домашних" условиях — тоже. Но ведь как-то же эти адаптивы возникают? Чисто теоретически для заполнения таблицы адаптивов не нужно ничего, кроме самого винчестера, и некоторые модели жестких дисков даже содержат в прошивке специальную программу Self Scan, как раз и предназначенную для этих целей. Да, она действительно рассчитывает адаптивы, но… при этом уничтожает всю содержащуюся на жестком диске информацию, что делает ее непригодной для наших целей.
Адаптивы могут храниться как на самом диске в служебной зоне (и тогда смена плат проходит на ура, но не работает hot-swap), либо в микросхеме FLASH-ROM, которую перед заменой плат следует перепаять. Диски без адаптивов встречаются все реже и реже, можно сказать, что практически вообще не встречаются.
Часть II
Автоматическое и ручное восстановление данных с жестких дисков
Глава 5
Основные концепции ручного восстановления данных
Долгое время главным козырем противников NTFS был следующий аргумент — чем вы будете ее восстанавливать в случае, если она окажется поврежденной? А ведь повреждения файловой системы возникают достаточно часто! При всей своей надежности файловая система NTFS не застрахована от потрясений. Ошибки оператора, вирусы, сбои питания, зависания ОС, дефекты поверхности, отказ электроники — любой из этих факторов может стать причиной повреждения, а то и разрушения файловой системы. С каждым днем человечество все сильнее и сильнее зависит от компьютеров, объемы жестких дисков стремительно растут, а с ними растет и ценность содержащихся на них данных, потеря которых зачастую невосполнима.
Спрос рождает предложение, и на рынке информационных услуг постоянно появляются фирмы, специализирующиеся на восстановлении данных. К сожалению, действительно квалифицированных специалистов можно встретить лишь в некоторых из них. Многие из них лишь создают видимость кипучей деятельности, выставляя астрономические счета при посредственном качестве восстановления. Но время кустарей уже ушло. Рабочая атмосфера изменилась. Хакеры разобрались со строением NTFS и документировали ее ключевые структуры. Начал формироваться достойный инструментарий для ручного восстановления. За минувшее время накопился огромный опыт по борьбе за спасение данных, частью которого я и хочу поделиться с читателями.
Что делать в случае катастрофической потери данных
Прежде всего — не паникуйте! Заниматься восстановлением можно только на трезвую голову. Непродуманные, лихорадочные действия только усугубляют ваше и без того незавидное положение.
Не используйте никаких автоматизированных утилит, если полностью в них не уверены. Последствия такого "лечения" могут быть катастрофическими, а результаты "восстановления" — необратимыми. То же самое относится и к "специалистам", обитающим в фирмах непонятного происхождения и орудующим все теми же автоматизированными утилитами, которыми вы можете воспользоваться и без них. Некоторые пытаются создавать необходимый инструментарий самостоятельно. Чаще всего он оказывается неработоспособным еще с рождения, но зато какая гордость для фирмы! Какое впечатляющее средство демонстрации собственной крутизны! Часто маркетологи этих фирм абсолютно необоснованно заявляют, что разработка их фирмы превосходит все имеющиеся утилиты вместе взятые, как коммерческие, так и условно-бесплатные. Но поверьте, что хорошо известные и давно представленные на рынке утилиты (например, GetDataBack) тоже писали отнюдь не профаны, причем делалось это при непосредственном участии разработчиков оригинального драйвера NTFS, хорошо знающих все его тонкости и особенности поведения. Это лучшее из того, что есть на рынке, и пока еще никому не удалось их превзойти!