<<
>>

Обработка ошибок

Производители дисков часто преодолевают технологические ограничения за счет увеличения линейной плотности битов. Дорожка посредине 5,25-дюймового диска имеет длину окружности около 300 мм.
Если в дорожке 300 секторов по 512 байт, то линейная плотность записи может составлять около 5000 бит/мм, если принять во внимание тот факт, что часть пространства теряется на заголовки, коды ECC и промежутки между секторами. Запись плотностью 5000 бит/мм требует исключительной однородности материала подложки и высококачественного оксидного покрытия. К сожалению, производство диска с такими параметрами не может обойтись без дефектов. По мере совершенствования технологии производства и доведения ее до бездефектного выхода готовой продукции при такой плотности записи разработчики дисков с целью увеличения емкости носителя переходят к более высокой плотности. В результате чего снова появляются дефекты.

Производственные дефекты проявляются в сбойных секторах, из которых неверно считывается только что записанная информация.

Если дефект весьма незначителен и составляет, скажем, всего несколько бит, то сбойный сектор может использоваться при условии постоянной корректировки ошибок с помощью ECC-кода. При более существенных размерах скрыть дефект уже невозможно.

Существуют два основных подхода к решению проблемы сбойных блоков: обработка таких блоков в контроллере или их обработка средствами операционной системы. При первом подходе еще до выпуска диска с предприятия он проходит тестирование, и на него записывается список сбойных секторов. Каждый сбойный сектор заменяется одним из запасных секторов.

Существует два способа подобной замены. На рис. 5.22, а показана отдельная дорожка диска, имеющая 30 рабочих и два запасных сектора. Определено, что сектор 7 является

сбойным.

Контроллер может переопределить один из запасных секторов и сделать его сектором 7 (рис. 5.22, б). Другой способ заключается в сдвиге всех секторов на одну позицию (рис. 5.22, в). В обоих случаях контроллер должен знать, где какой сектор находится. Он должен учитывать эту информацию во внутренних таблицах (по одной на каждую дорожку) или переписывать заголовки, присваивая переопределенным секторам другие номера. Способ перезаписи номеров в заголовках, показанный на рис. 5.22, в, будет более затратным (поскольку должны быть переписаны 23 заголовка), но в конечном счете он обеспечит более высокую производительность, так как за один оборот диска можно будет прочитать всю дорожку.

Ошибки могут проявляться и в процессе использования уже после установки накопителя. Первой оборонительной линией против ошибок, нескорректированных с помощью кода ECC, выступает попытка повторного чтения. Некоторые ошибки считывания носят случайный характер, то есть вызваны пылинками, попавшими под головку, и исчезают при повторной попытке. Если контроллер замечает повторное проявление ошибки при чтении конкретного сектора, он может переключиться на использование запасного сектора еще до того, как считываемый сектор окончательно выйдет из строя. При этом данные не будут потеряны, а операционная система и пользователь не заметят никакой проблемы. Обычно способ, показанный на рис. 5.22, б, должен использоваться в том случае, когда все остальные секторы могут уже содержать данные. Применение способа, показанного на рис. 5.22, в, потребует не только перезаписи всех заголовков, но и копирования всех данных.

Ранее уже отмечалось, что есть два основных подхода к обработке ошибок: вести их обработку в контроллере или в операционной системе. Если контроллер не способен четко перенумеровать секторы ранее рассмотренными способами, то операционная система должна сделать это на программном уровне. Это означает, что сначала она должна получить список сбойных секторов либо путем чтения его с диска, либо за счет самостоятельного тестирования всего диска.

После того как она узнает все о сбойных секторах, она сможет создать таблицы перенумерации. Если операционная система захочет воспользоваться способом, показанным на рис. 5.22, в, она должна сдвинуть все данные в секторах с 7-го по 29-й на один сектор.

Если перенумерацией секторов занимается операционная система, то она должна оградить файлы и списки свободных блоков или двоичные матрицы от появления в них

сбойных секторов. Это можно сделать путем создания секретного файла, состоящего из всех сбойных секторов. Если этот файл не будет входить в состав файловой системы, то пользователи не смогут случайно его прочитать (или, что еще хуже, удалить).

Но остается еще одна проблема: создание резервных копий. Если резервное копирование диска осуществляется в пофайловом режиме, то очень важно, чтобы служебная программа резервного копирования не пыталась скопировать файл, составленный из сбойных блоков. Чтобы предотвратить такую возможность, операционная система должна настолько скрыть файл сбойных блоков, чтобы его не смогла найти даже служебная программа резервного копирования. Если резервное копирование диска проходит в посекторном, а не пофайловом режиме, то будет очень трудно, если вообще возможно, предотвратить чтение сбойных секторов в процессе создания резервной копии. Остается лишь надеяться, что программа резервного копирования догадается отказаться от копирования сектора после десяти неудачных попыток и продолжит копирование других секторов.

Но источниками ошибок могут быть не только сбойные секторы. Случаются также ошибки позиционирования блока головок, вызванные проблемами механического характера. Контроллер отслеживает позицию блока головок самостоятельно. Для изменения позиции он выдает команду двигателю блока головок на перемещение этого блока к новому цилиндру. Когда блок головок переместится в нужную позицию, контроллер фактически считывает номер текущего цилиндра из заголовка первого подошедшего под головку сектора. Если блок головок находится в неверной позиции, то возникает ошибка позиционирования.

Большинство контроллеров жестких дисков исправляют ошибки позиционирования автоматически, но большинство устаревших контроллеров гибких дисков, которые использовались в 1980-1990-х годах, просто устанавливали бит ошибки, а все остальное возлагали на драйвер устройства, который справлялся с этой ошибкой путем выдачи команды на перекалибровку — recalibrate, перемещающую блок головок как можно дальше к внешней границе диска и устанавливающую текущую дорожку в контроллере в качестве нулевой. Обычно это приводило к решению проблемы, а если нет, то привод подлежал ремонту[28].

Очевидно, что контроллер представляет собой небольшой специализированный компьютер, у которого есть программное обеспечение, переменные, буферы и, время от времени, ошибки. Иногда редко встречающаяся последовательность событий, к примеру прерывание на одном приводе в сочетании с командой recalibrate на другом, вызывает сбой и заставляет контроллер войти в цикл или утратить контроль за своими действиями. Разработчики контроллеров обычно рассчитывают на худшее и оставляют на чипе один контакт, подача сигнала на который заставляет контроллер забыть обо всем, что он делал, и перезапуститься. Если все средства исчерпаны, драйвер может установить бит, выдающий этот сигнал и перезапускающий контроллер. Если и это не поможет, то драйвер может лишь выдать сообщение и отказаться от дальнейших попыток исправить ситуацию.

При перекалибровке диска возникает непривычный шум, не вызывающий особого беспокойства. Но есть такая ситуация, при которой перекалибровка вызывает проблему: речь идет о системах, работающих в режиме реального времени. Когда видео воспроизводится (или обслуживается) с жесткого диска или файлы с жесткого диска записываются на Blu-ray-диск, очень важно, чтобы биты поступали с жесткого диска с постоянной скоростью. В таких обстоятельствах перекалибровка приведет к разрыву потока данных, поэтому ее выполнение неприемлемо. Для этих целей можно воспользоваться специальными приводами, которые называются аудиовидеодисками, или AV-дисками (Audio Visual disks), на которых никогда не производится перекалибровка.

Интересно, что весьма убедительно продемонстрировал совершенство контроллера дисков голландский хакер Йерун Домбург (Jeroen Domburg), взломавший современный контроллер диска с целью запуска на нем специального кода. Оказалось, что контроллер диска оборудован достаточно мощным многоядерным (!) ARM-процессором и его ресурсов вполне хватает для запуска Linux. Если злоумышленники так же взломают ваш жесткий диск, они смогут увидеть и изменить все данные, переносимые на диск или с диска. От инфекции невозможно избавиться даже путем переустановки операционной системы, поскольку инструментом злоумышленника будет сам контроллер диска, который будет служить ему лазейкой. Можно также собрать стойку из сломанных жестких дисков, взятых в местном центре утилизации, и бесплатно создать собственный вычислительный кластер.

5.4.5.

<< | >>
Источник: Э. ТАНЕНБАУМ Х. БОС. СОВРЕМЕННЫЕ ОПЕРАЦИОННЫЕ СИСТЕМ Ы 4-е ИЗДАНИЕ. 2015

Еще по теме Обработка ошибок:

  1. МЕТОД ПРОБ И ОШИБОК
  2. Источниками ошибок являются
  3. 13. Не бойтесь исправления своих ошибок
  4. ИЗБАВЬТЕСЬ ОТ СВОИХ ОШИБОК, А НЕ ПОВТОРЯЙТЕ ИХ
  5. Выводы. Если вы хотите, чтобы он достиг успеха - остерегайтесь этих ошибок
  6. ИНФОРМАЦИЯ: ОБРАБОТКА ПОСЛЕДОВАТЕЛЬНАЯ (
  7. ИНФОРМАЦИЯ: ОБРАБОТКА ПАРАЛЛЕЛЬНАЯ
  8. Статистическая обработка.
  9. ТЕОРИЯ УРОВНЕЙ ОБРАБОТКИ
  10. Обработка материалов
  11. Обработка результатов
  12. ГЛАВА ДЕВЯТАЯ ОБРАБОТКА ИНФОРМАЦИИ В УМЕ
  13. Алгоритм обработки результатов.
  14. ДАННОЕ: ОБРАБОТКА СТАТИСТИЧЕСКАЯ
  15. Обработка материала
  16. Пример обработки протокола.
  17. Обработка ответов