У разных моделей винчестеров совместимость плат электроники сильно неодинакова, некоторые требуют (при замене) совпадения всех цифр в номере модели, некоторые соглашаются работать только с «родственным» контроллером. А некоторые могут не работать даже при полном совпадении всех букв и цифр и тогда приходится перебирать одного донора за другим в надежде найти подходящий.
Теперь поиски доноров серьезно осложняются и индивидуальными настройками диска, которые характеризуются адаптивами. Нашествие адаптивов началось сравнительно недавно. До этого индивидуальные настройки диска сводились к высокоуровневым наслоениям, никак не препятствующим чтению информации на физическом уровне. Перестановка плат могла привести к невозможности работы с диском средством операционной системы, но данные всегда было можно прочитать посекторно стандартными ATA-командами, программами BIOS (INT 13/02) или, на худой конец, на уровне физических адресов в технологическом режиме. Но плотность информации неуклонно росла и нормативы допусков ужесточались а, значит, усложнялся и удорожался производственный цикл. В промышленных условиях невозможно изготовить два абсолютно одинаковых жестких диска. В характеристиках аналоговых элементов (катушек, резисторов, конденсаторов) неизбежно возникает разброс, следствием которого становится рассогласование коммутатора/предусилителя. Но с этим еще как-то можно бороться. Сложнее справится с неоднородностью магнитного покрытия, влекущего непостоянность параметров сигнала головки в зависимости от угла поворота позиционера. Таким образом, производитель должен был:
- либо уменьшить плотность информации до той степени, при которой рассогласованиями можно пренебречь (но в этом случае для достижения той же емкости придется устанавливать в диск больше пластин, что удорожает конструкцию и вызывает свои проблемы);
- либо улучшить качество производства (но это настолько нереально, что при современном уровне развития науки, экономики и техники даже не обсуждается);
- либо калибровать каждый жесткий диск индивидуально, записывая на него так называемые адаптивные настройки (вот по этому пути производители и пошли).
Состав и формат адаптивных настроек меняется от модели к модели. В грубом приближении сюда входят: ток записи, усиление канала, профиль эквалайзера, напряжение смещения для каждой головки, таблица коррекции параметров каждой головки для каждой зоны и т.д. и т.п.
Без своих родных адаптивов жесткий диск просто не будет работать. Даже если случится чудо и чужие адаптивы все-таки подойдут (а чудес, как известно, не бывает) информация будет считываться очень медленно и с большим количеством ошибок.
Подобрать адаптивы нереально, рассчитать их в «домашних» условиях - тоже. Но ведь как-то же эти адаптивы возникают? Чисто теоретически, для заполнения таблицы адаптивов не нужно ничего, кроме самого винчестера и некоторые модели жестких дисков даже содержали в прошивке специальную программу Self-Scan, как раз и предназначенную для этих целей. Да, она действительно рассчитывает адаптивы, но... при этом уничтожает всю содержащуюся на жестком диске информацию, что делает ее непригодной для наших целей.
Адаптивы могут храниться как на самом диске в служебной зоне (и тогда смена плат проходит «на ура», но не работает Hot Swap), либо в микросхеме FLASH-ROM, которую перед заменой плат следует перепаять. Сейчас диски без адаптивов практически вообще не встречаются.
Проблемы происходят и от модулей (и часто от информации, зашитой в ПЗУ), уникальных для каждого экземпляра винчестера и настраиваемых строго индивидуально.
В частности, каждый жесткий диск имеет как минимум два списка дефектов - P-list (от Primary - первичный) и G-list (от Grow - растущий). В P-list заносятся номера дефектных секторов, обнаруженные еще на стадии заводского тестирования, а G-list формируется самим жестким диском в процессе его эксплуатации.
Если запись в сектор происходит с ошибкой, сбойный сектор переназначается другим сектором, взятым из резервной области. Некоторые жесткие диски поддерживают список «подозрительных секторов» (если сектор начинает читаться не с первого раза, он замещается, а информация о замещении сохраняется либо в отдельном списке, либо в G-list'е).
Все эти процессы протекают скрыто от пользователя. Специальный модуль, называемый транслятором, переводит физические адреса в номера логических блоков или виртуальные цилиндры-головки-сектора и внешне нумерация секторов не нарушается.
Все работает нормально до тех пор, пока P/G-list'ы не оказываются разрушенными или на гермоблок устанавливается плата с чужими настройками. Если P/G-list'ы хранятся во FLASH-ROM (а часто так и бывает), файловая система оказывается полностью неработоспособной, ведь трансляция адресов нарушена. И хотя на секторном уровне все читается нормально, но совершенно непонятно, какой сектор какому файлу принадлежит.
Различные винчестеры имеют различное число замещенных секторов. В некоторых замещенных секторов может не быть вообще, на некоторых их количество может доходить до нескольких тысяч.