MAXTOR

6.3. Транслятор накопителей Maxtor

Транслятор — это такая программа, которая транслирует физические сектора в логические, с которыми работает операционная система. Так заведено во всех накопителях, что заводские дефекты скрываются при помощи исключения их из трансляции. Т.е. есть у нас физические сектора, следующие друг за другом P0,P1,P2,P3. Пусть LBA физического сектора P0 обозначено как L0. И, к примеру, сектор P2 дефектный. Так вот, координаты сектора записываются в таблицу P_LIST в место, специально отведенное для зоны, к которой относятся выбранные нами сектора P0-P3. Запись осуществляется не в явном виде Cyl,Head,Sec, а в специальном представлении. В таблице RZTBL увеличивается на 1 счетчик дефектных секторов для зоны, к которой относятся выбранные нами сектора P0-P3. В результате этого программа транслятора при обращении операционной системы к группе секторов, начиная с LBA0, производит следующее отображение:

  • LBA0 — P0
  • LBA1 — P1
  • LBA2 — P3 и т.д.

Отсюда видно, что сектор P2 оказывается удаленным из множества секторов LBA, доступных операционной системе.
Теперь рассмотрим случай, когда записи о том, что сектор P2 скрыт, нет. Это может произойти в случаях: записи таблиц транслятора от другого накопителя, операции HotSwap или стирании таблиц дефектов. Такая ситуация приведет к тому, что во множестве LBA, которое видит операционная система, появится сектор P2, но это еще не все! Ведь раньше LBA2 отображалось на P3, а теперь отображается на P2! Следовательно, все последующие номера секторов будут сдвинуты на 1. Так, к примеру, при попытке прочитать сектор,
расположенный за адресом LBA2, с директорией или таблицей FAT операционная система прочитает не сектор с директорией, а предыдущий сектор, в котором находится совершенно не верная информация.
В реальном накопителе число дефектов может доходить до нескольких тысяч (а иногда десятков тысяч) секторов. Следовательно, реальные расположения файлов, каталогов и таблиц файловой системы могут быть смещены от ожидаемого значения на многие сотни секторов.
Но вернемся к Maxtor. Данные программы транслятора находятся в следующих модулях: U_LIST (PN=37h), AT_PDL (PN=18h) и RZTBL (PN=78h). Накопитель формирует транслятор через промежуточную таблицу, имеющую PN=33h. В этой таблице дефекты указаны в их обычном представлении: цилиндр, головка, сектор. Существует возможность собрать таблицы транслятора из этой промежуточной таблицы при помощи команды «Пересчет транслятора«. Утилита отображает дефекты не напрямую, разбирая транслятор, а из этой таблицы. Поэтому, если переписать модули транслятора (например, от другого исправного накопителя), то утилита будет по-прежнему выдавать тот же список дефектов, что и до изменения модулей транслятора.
Скрытие дефектов в таблицу G-List осуществляется другим методом. Таблица G-List не производит исключения секторов из набора LBA. Она производит их замещение за счет резерва. Резерв находится за самым старшим LBA накопителя. Для примера, приведенного выше, имеем следующее отображение.

 

  • L0 — P0
  • L1 — P1
  • L2 — резервный сектор
  • L3 — P3 и т.д.

При этом при скрытии дефектов в G-List смещения секторов LBA не происходит. Потеря информации в таблице G-List никак не сказывается на восстановлении данных. Конечно, возможно возникновение такой ситуации, когда скрытый накопителем в G-List сектор мог содержать критичную для функционирования файловой системы информацию. Но возникновение такой ситуации маловероятно и рекомендуется очищать G- List, если в нем были скрыты дефекты, в процессе восстановления поврежденной служебной зоны накопителя для снятия информации.

Оставьте комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *