Отказоустойчивость
Отказоустойчивость — это свойство технической системы, программного обеспечения или информационной сети сохранять свою работоспособность (полностью или частично) при возникновении отказов отдельных компонентов, оборудования или программных модулей. Отказоустойчивость является одним из ключевых аспектов надёжности и живучести систем, особенно в критически важных областях, таких как авиация, ядерная энергетика, телекоммуникации и финансовый сектор.
Основные понятия и классификация
Отказоустойчивость не является абсолютной характеристикой. Она измеряется способностью системы выполнять заданные функции при наличии определённого количества и типов отказов. Различают несколько уровней и подходов к обеспечению отказоустойчивости.
Классификация по степени сохранения функциональности
- Полная отказоустойчивость (Fault Tolerance): Система продолжает работать в полном объёме, без потери производительности или функциональности, даже при отказе одного или нескольких компонентов. Это достигается за счёт полного резервирования.
- Грациозная деградация (Graceful Degradation): При отказе компонентов система продолжает работать, но с пониженной производительностью или ограниченным набором функций. Например, отказ одного процессора в многопроцессорной системе может привести к снижению общей вычислительной мощности, но не к полной остановке.
- Отказоустойчивость с переключением (Failover): Система имеет резервный компонент, который автоматически активируется при отказе основного. Время переключения может варьироваться от миллисекунд до нескольких минут, в течение которых система может быть недоступна.
Классификация по типу резервирования
Основой отказоустойчивости является резервирование (избыточность) — введение в систему дополнительных ресурсов сверх минимально необходимых.
- Аппаратное резервирование: Дублирование физических компонентов (блоки питания, жёсткие диски, сетевые интерфейсы, процессоры, серверы целиком). Примеры: RAID-массивы, кластеры серверов, источники бесперебойного питания (ИБП) с резервированием N+1.
- Программное резервирование: Использование избыточных программных модулей, алгоритмов или копий данных. Включает в себя репликацию баз данных, контрольные точки, журналирование транзакций, версионирование конфигураций.
- Информационное резервирование: Хранение избыточных данных (например, контрольные суммы, коды коррекции ошибок — ECC, избыточное кодирование в RAID).
- Временное резервирование: Выделение дополнительного времени на выполнение операций для повторных попыток при сбоях (тайм-ауты, механизмы повторной передачи в сетях).
- Функциональное резервирование: Возможность выполнения одной функции разными способами или разными компонентами.
История развития
Концепция отказоустойчивости начала активно развиваться в середине XX века с появлением первых сложных электронных вычислительных машин и систем управления. Одним из пионеров в этой области считается американский инженер и математик Джон фон Нейман, который в 1956 году опубликовал работу «Вероятностная логика и синтез надёжных организмов из ненадёжных компонентов». В ней он заложил теоретические основы построения надёжных систем из ненадёжных элементов.
В СССР и России значительный вклад в теорию и практику отказоустойчивости внесли разработки в области космической и авиационной техники. Например, в системе управления полётом космического корабля «Восток» использовалось трёхкратное резервирование бортовых вычислителей с мажоритарным голосованием. В 1960-1970-х годах в Институте проблем управления РАН (Москва) под руководством академика В.М. Глушкова велись работы по созданию отказоустойчивых вычислительных систем для управления промышленными объектами и оборонными системами. В 1980-х годах в СССР были разработаны и внедрены отказоустойчивые многопроцессорные вычислительные комплексы серии «Эльбрус», которые использовали резервирование и аппаратный контроль.
Методы и архитектуры обеспечения отказоустойчивости
Мажоритарное голосование (N-модульное резервирование)
Один из классических методов. Система содержит несколько (обычно 3 или 5) идентичных модулей, выполняющих одну и ту же операцию. Результаты их работы сравниваются специальным устройством — мажоритарным элементом (голосователем). Результат, полученный от большинства модулей, считается правильным. Этот метод эффективен против случайных сбоев, но не защищает от систематических ошибок (например, ошибки в программном обеспечении, которая проявится одинаково на всех модулях).
Кластеризация
Объединение нескольких серверов (узлов) в кластер, который для внешних клиентов выглядит как единый ресурс. Различают два основных типа кластеров:
- Active-Passive (активный-пассивный): Активный узел обрабатывает все запросы, пассивный находится в режиме ожидания и берёт на себя нагрузку только при отказе активного. Это обеспечивает высокую отказоустойчивость, но не увеличивает производительность.
- Active-Active (активный-активный): Все узлы кластера одновременно обрабатывают запросы, распределяя нагрузку между собой. При отказе одного узла его нагрузка перераспределяется на остальные. Это даёт и отказоустойчивость, и масштабирование производительности.
Репликация данных
Создание и поддержка нескольких копий данных на разных физических носителях или в разных географически распределённых центрах обработки данных (ЦОД). Используется в системах управления базами данных (СУБД), файловых системах и облачных хранилищах. Репликация может быть синхронной (все копии обновляются одновременно) или асинхронной (обновление с задержкой). Синхронная репликация обеспечивает более высокую целостность данных, но может снижать производительность.
Избыточное кодирование (RAID)
Массивы независимых дисков с избыточностью (RAID — Redundant Array of Independent Disks) — одна из самых распространённых технологий аппаратной отказоустойчивости в системах хранения данных. Различные уровни RAID (например, RAID 1, RAID 5, RAID 6, RAID 10) обеспечивают сохранность данных при отказе одного или нескольких дисков за счёт зеркалирования или чётности.
Применение в различных отраслях
Авиация и космонавтика
Самолёты и космические аппараты имеют многократно резервированные системы управления полётом, гидравлические системы, авионику. Например, в самолётах Boeing 777 используется трёхканальная система управления полётом (triplex), а в Airbus A380 — четырёхканальная (quadruplex). Отказ одного канала не приводит к потере управляемости.
Ядерная энергетика
Системы управления и защиты ядерных реакторов проектируются с высочайшим уровнем отказоустойчивости. Используются многоканальные системы с мажоритарным голосованием, независимые источники питания, дублированные датчики и исполнительные механизмы. В России на АЭС с реакторами ВВЭР-1200 применяются системы безопасности на основе трёх независимых каналов.
Телекоммуникации
Оборудование операторов связи (коммутаторы, маршрутизаторы, базовые станции) имеет резервированные блоки питания, сетевые интерфейсы и процессоры. Сами сети строятся с избыточными связями (топология сети с резервированием), чтобы при обрыве одного кабеля трафик автоматически перенаправлялся по другому пути (протоколы STP, RSTP, OSPF).
Финансовый сектор
Банковские системы, платёжные шлюзы и биржевые терминалы требуют круглосуточной доступности. Для этого используются географически распределённые ЦОДы, синхронная репликация баз данных, кластеризация серверов и резервирование каналов связи. В России требования к отказоустойчивости банковских систем регулируются Банком России.
Критика и ограничения
Несмотря на очевидные преимущества, отказоустойчивость имеет ряд ограничений:
- Стоимость: Резервирование оборудования и программного обеспечения значительно увеличивает капитальные затраты (CAPEX) и эксплуатационные расходы (OPEX) на обслуживание, электроэнергию и охлаждение.
- Сложность: Отказоустойчивые системы сложнее в проектировании, развёртывании и администрировании. Высокая сложность сама по себе может быть источником ошибок, особенно в конфигурациях и сценариях переключения.
- Не защищает от всех типов отказов: Отказоустойчивость неэффективна против систематических ошибок (баги в ПО, одинаковые на всех копиях), ошибок оператора, а также против катастрофических событий, затрагивающих сразу все резервированные компоненты (пожар, наводнение, землетрясение). Для защиты от последних используется географическое распределение.
- Проблема «ложного срабатывания»: В системах с мажоритарным голосованием возможна ситуация, когда исправный модуль ошибочно признаётся неисправным (ложное срабатывание), что может привести к излишнему переключению на резерв и снижению общей надёжности.
Источники
- Нейман Дж. фон. Вероятностная логика и синтез надёжных организмов из ненадёжных компонентов. — В кн.: Автоматы. — М.: ИЛ, 1956.
- Глушков В.М., Игнатьев М.Б., Мясников В.А. и др. Отказоустойчивые вычислительные системы. — М.: Наука, 1985.
- ГОСТ Р 27.102-2021. Надёжность в технике. Надёжность объекта. Термины и определения.
- Половко А.М., Гуров С.В. Основы теории надёжности. — СПб.: БХВ-Петербург, 2006.
- Tanenbaum A.S., van Steen M. Distributed Systems: Principles and Paradigms. — Pearson, 2007.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →