Лекция № 13
Надежность программ (окончание)
Методы и средства отказоустойчивости
Fault tolerance – быстрое (полу)автоматическое восстановление системы после отказа. Идеал - это восстановление в латентном периоде отказа, когда отказал элемент, но еще не система и отказ еще никак не проявился вовне. Из-за иерархического строения систем (система N уровня является элементом N+1 уровня) уровней отказоустойчивости (ОУ) может быть тоже несколько. Два общих принципа ОУ:
Средства ОУ – общие для аппаратных и программных отказов; часто даже не производится детальная диагностика, где именно произошел отказ
ОУ всегда достигается путем введения избыточности, т.е. резервирования
Фазы управления ОУ:
Контроль исправности – обнаружение отказавших элементов
Оценка повреждения при обнаружении неисправности
Восстановление путем задействования резервов
Контроль: фоновый прогон тестов аппаратуры или программ; контрольные суммы кодов (в т.ч. контроль четности), дублирование аппаратуры / данных со сравнением – все это приводит к избыточности. Оценка размера области, содержащей ошибки, - в пространстве (область памяти, компоненты, устройства) или во времени, поскольку точный момент повреждения может быть неизвестен.
Виды резервирования для контроля и восстановления
Структурное: аппаратная избыточность – дублирование, троирование, многократное резервирование – горячий и холодный резервы.
Простое дублирование – средство контроля (рис. 13-2, а). Мажоритарная схема – троирование (рис. 13-2, б): однократная ошибка маскируется.
Рис 13-1. Некоторые варианты структурного резервирования
Горячий означает постоянно включенный и работающий резерв; холодный – включается на замену отказавшего модуля. NB: Бортовой вычислитель космичекого корабля Аполлон – троирован, у Шаттла – четверирован. Вопросы 1, 2.
Информационное: избыточность в представлении данных:
а) избыточное кодирование
коды с обнаружением ошибки (четность, циклическая сумма) Вопрос 3.
коды с исправлением ошибки (код Хэмминга, циклический код)
б) дублирование или многократное резервирование данных в памяти (на дисках)
Программное (program diversity): аналог структурного, но модули не аппаратные, а программные. Вопрос 4.
Временное: повторение вычислений, начиная с некоторого запомненного прошлого состояния – контрольной точки (checkpoint) или, иначе, точки восстановления (restore or recovery point). Возврат к точке восстановления называется откатом (rollback). Такой точкой является, в частности, резервная копия (backup copy) файла. Например, Word может создавать ее автоматически.
Вопросы 5 - 7.
Поддержка ОУ требует затрат памяти и дополнительного кода. Например, ПО электронных АТС фирмы AT&T на 60% состоит из программ ОУ. Временное резервирование, для возможности отката, требует либо периодического запоминания точки восстановления, либо запоминания проделанных действий, начиная с некоторого момента. Последнее в современных базах данных и файловых системах называется журнализацией событий; в системном журнале запоминаются все транзакции – последовательности операций при обработке одного запроса (журнал – аналог стека Undo/Redo в Word’е). A для того, чтобы противодействовать отказам во время выполнения транзакции, она делается атомарной (т.е, неделимой). Атомарная транзакция или выполняется корректно, или вовсе не выполняется.
Три примера отказоустойчивых программно-аппаратных систем
1. Спецификация RAID
RAID – Redundant Array of Independent Disks – избыточный массив независимых дисков. Спецификация впервые предложена университетом Беркли. Цель – повышение производительности и ОУ дисковых подсистем. Устойчивость – по отношению как искажения блоков данных на дисках, так и отказов дисков / контроллеров в целом. Производительность повышается благодаря обмену с несколькими дисками одновременно. Контроль исправности диска – с помощью контрольных сумм блоков. Восстановление – с помощью дублирования блоков и контроля четности. Различные варианты (комбинации) “распыления” блоков файла по дискам, их дублирования и контроля называются уровнями RAID. Стандартизовано 6 уровней, из которых наиболее употребительны 0, 1, 3 и 5 уровни.
RAID 0 – параллельные диски: блоки «распыляются» по нескольким параллельно работающим дискам. Производительность возрастает, надежность уменьшается.
RAID 1 – зеркальные диски: блоки файла дублируются на разных дисках. Специальный RAID-контроллер считывает обе копии и выдает только те блоки, которые прошли контроль исправности (без такого контроллера процесс эмулируется программно). Необходимый объем дискового оборудования удваивается. Система работоспособна даже при полностью отказавшем одном диске.
RAID 3 – параллельные диски + контрольный диск четности:
Чтение 1 - ОТКАЗ
!
D 1