image

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

Впервые об отказоустойчивости начали говорить в XIX веке — еще до появления первых ЭВМ. В 1837 году английский математик и изобретатель Чарльз Бэббидж опубликовал научную работу, где упомянул отказоустойчивость — fault tolerance — математических вычислений.

Мы решили поговорить об этом подробнее — рассказать об отказоустойчивых системах, разработанных во времена, когда не было привычных суперкомпьютеров, дата-центров и всего интернета.

Нишевая тема


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

В контексте ЭВМ термин «отказоустойчивость» в определенной степени близок к исходному. Однако современные очертания данное направление принимало постепенно. Во времена первых компьютеров оно не пользовалось популярностью. Оборудование стоило дорого, а удвоение или даже утроение вычислительных модулей в целях резервирования усложняло проектирование. Дублирование систем было нецелесообразно для большинства применений, поэтому инженеры уделяли внимание подходам, позволяющим быстро обнаружить и устранить неисправности.

image
Источник

Надежность была постоянной проблемой. В первом компьютере общего назначения ENIAC использовались стандартные радиолампы, которые перегорали практически ежедневно. Сначала на выяснение того, какая именно трубка перегорела среди 18 000 компонентов, уходили часы, но в итоге команда разработала систему «предиктивного технического обслуживания» и мониторинга, позволяющую сократить это время до 15 минут.

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

image
Источник

Простота обслуживания также была отличительной чертой релейной системы FACOM 128B, которую запустили в конце 50-х в Японии. Все благодаря интересному подходу к работе с числами. Любую цифру от нуля до девяти можно было представить всего двумя битами (двоично-пятеричное кодирование), что облегчало поиск «залипших» реле [если количество активных битов не равно двум, значит что-то не в порядке].

В то время FACOM 128B использовали для проектирования гражданских самолетов и потребительской электроники, и несколько минут даунтайма под замену пары компонентов не были чем-то критичным. Но как быть с системами, перебой в работе которых недопустим? Компьютер должен обладать способностью к самодиагностике и самовосстановлению. В таких случаях у инженеров не было выхода, и они все-таки прибегали к резервированию.

image
Источник

Первой отказоустойчивой установкой был компьютер SAPO, разработанный в Чехословакии и запущенный в 1956 году. Компьютер в значительной степени состоял из реле, а его основу составляли три параллельно подключенных алгоритмических модуля. Система продолжала работу даже в случае сбоя на одном из них. Каждый блок проводил вычисления независимо, а корректный результат определялся путем голосования.

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

Долгожители в космосе


image
Источник

Резервирование — норма в космических разработках. Вопросы отказоустойчивости инженеры решали еще в 60–70-х годах. Стандартное требование, которое предъявляли к вычислительным системам того времени, — безотказная работа на протяжении 5–10 лет с вероятностью 95%.

На исключительную стойкость был ориентирован бортовой компьютер орбитальной станции Orbiting Astronomical Observatory (OAO), запущенной в 1968 году. Надежность обеспечивал механизм маскировки ошибок — fault masking — на уровне транзисторов, когда при отказе одного компонента, нагрузка переводилась на вспомогательный.

Другой пример — компьютер JSTAR в аппаратах серии «Вояджер», отправленных к рубежам солнечной системы в 1977 году. Он состоял из набора заменяемых функциональных модулей со своими декодерами и генераторами последовательностей. За обнаружение ошибок и восстановление отвечал специальный процессор TARP — Test and Repair Processor. Он автоматически перенаправлял электропитание на резервные модули памяти, если в основных возникали неполадки. В то же время TARP сам был трехкратно зарезервирован. Имелись и программные механизмы отказоустойчивости. Все машинные слова в JSTAR — данные и инструкции — были закодированы кодами с контролем ошибок (error detecting codes).

Немного иной подход к резервированию применили для вычислительной системы на борту «Шаттла». Четыре компьютера выполняли одни и те же команды, а затем выбирали корректный результат путем голосования. Пятый был контрольным — он решал ту же задачу с помощью иного набора операций.

image
Источник

Похожую схему реализовали советские инженеры в космическом аппарате «Буран». Система управления посадкой состояла из четырех независимых вычислительных каналов и компаратора. Последний сравнивал результаты на выходе и отбрасывал отличающиеся.

Отказоустойчивые системы проникали и в другие летательные аппараты. В период с 1968 по 1970 годы группа инженеров разработала первый в мире микропроцессор для реактивных истребителей — MP944. Он стал частью центрального компьютера CADC, который контролировал движущиеся элементы летательного аппарата и отвечал за отображение информации для пилота. Установка была зарезервирована и имела встроенные механизмы самотестирования.

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

Высокая доступность


Одним из первых подобных проектов были электронные коммутационные системы (ESS) для телефонных звонков. Телекоммуникационные компании предъявляли к ним строгие требования — не более двух часов простоя за сорок лет. Специализированное ПО идентифицировало ошибки и сообщало о необходимости замены электронных компонентов.

Эти системы постоянно развивали, а к 1982 году свет увидело пятое поколение. В основу установки легла распределенная система, управляемая отказоустойчивым компьютером 3B20D. Среди инноваций специалисты того времени выделяли возможность продолжать работу при дуплексном отказе накопителей (за счет резервирования дисков), а также автономную начальную загрузку после устранения неисправности.

image
Источник

Другим примером раннего отказоустойчивого коммерческого решения был мейнфрейм S/360 — первый компьютер на рынке с поддержкой кодов исправления ошибок в памяти. Система проектировалась таким образом, чтобы отключение любого вспомогательного компонента — блока питания, охлаждения и сервисного процессора — не влияло на работоспособность.

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

Например, в нашем дата-центре GreenBushDC для размещения клиентского оборудования зарезервированы все инженерные системы, а дизельные генераторы могут работать на протяжении суток без дополнительного подвоза топлива и служить резервным источником энергии.

Отказоустойчивость современного дата-центра по стандартам Uptime Institute допускает простой на считанные часы в год. GreenBushDC получил сертификаты Tier III Design и Constructed Facility, которые гарантируют, что построенный в соответствии с сертифицированным проектом дата-центр прошел серию тестовых испытаний отказоустойчивости работы инженерных систем.

Резервирование касается и систем хранения данных. Провайдеры строят RAID-массивы из жестких дисков и твердотельных накопителей от разных производителей. Такой подход позволяет противостоять в том числе и случайным ошибкам, заложенным в прошивки систем хранения данных.




Комментарии (9)


  1. Matshishkapeu
    19.12.2022 21:57
    +3

    Любую цифру от нуля до девяти можно было представить всего двумя битами (двоично-пятеричное кодирование)

    Щито? Как двумя битами, у которых 4 состояния можно взаимно-однозначно закодировать 10 цифр? Никак, просто никак. Потому что в двоично-пятеричной системе цифра кодировалась СЕМЬЮ битами.

    https://en.m.wikipedia.org/wiki/Bi-quinary_coded_decimal

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


    1. victor_1212
      19.12.2022 22:37
      +6

      если правильно помню, FACOM 128B работал в десятичной системе, используя 7 бит для каждой десятичной цифры вместо 4х, но слегка необычное избыточное кодирование позволяло в состоянии "1" иметь не более 2х бит одновременно, что было важно для диагностики этого произведения искусства на реле, остальное нет желания комментировать

      ps

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

      см. https://habr.com/ru/company/1cloud/blog/484486/


      1. artemerschow
        20.12.2022 11:47

        Если честно, мне кажется, что из этой статьи (или её перепечатки) информацию и подглядели. Формулировки больше похожи на неё, чем на статью в «источнике».


        1. victor_1212
          20.12.2022 17:56

          > Формулировки больше похожи на неё, чем на статью в «источнике

          возможно потому что та первая статья вполне грамотная, на что было указано, вероятно в свое время на глаза попадалась и в памяти осталось про эту экзотику :)


    1. vkni
      20.12.2022 19:09
      +1

      (тоже полезный предмет, помогает писать не технические статьи, у меня вот СРЯ не было, поэтому пишу как падонки научили)

      Изящно у вас вышло: нетехнические пишется вместе. :-) :-) :-)


  1. ZekaVasch
    20.12.2022 08:54
    -2

    Трубка перегорела это "трубы горят"?


  1. Bedal
    20.12.2022 11:04

    Перевод вычитывался гуманитарием?


    1. vkni
      20.12.2022 19:08
      +1

      ChatGPT же.


  1. dolovar
    20.12.2022 11:56
    +1

    Простота обслуживания также была отличительной чертой релейной системы FACOM 128B, которую запустили в конце 50-х в Японии. Все благодаря интересному подходу к работе с числами. Любую цифру от нуля до девяти можно было представить всего двумя битами (двоично-пятеричное кодирование), что облегчало поиск «залипших» реле [если количество активных битов не равно двум, значит что-то не в порядке].
    Чтобы не отходить далеко от истории, возьму с первой страницы в гугле такой текст:
    Система счисления: двоично-пятеричная или bi-quinary

    Использовалась она человеками со времён древних Римов да Китаев в счётах, этот код был предложен американским математиком Джорджем Робертом Стибицем или Штибецем(George Robert Stibitz, 1904—1995) для релейной машины CNC Model 1, разработанной ещё до ВМВ, в краткий период с 1939 по 40 год, в Bell Laboratories. Эта система кодирования десятичных цифр когда каждый десятичный разряд представлялся двумя цифрами; одна из них являлась цифрой пятеричной системы и принимала значения от 0 до 4, другая – цифрой двоичной системы 0 или 1.

    Тогда люди ещё помнили, что человеку свойственно ошибаться, а его творениям ломаться. По этой самой причине использовали в Бэллах, Рэндах, да ИБМах разных от 5 до 7 бит на запись каждой десятичной цифры, потому как о контролепригодности думали! Bell Labs Relay Interpolator, или Bell Model II. производился серийно для ПУАЗО (прибора управления артиллерийским зенитным орудием) M-9. С помощью зенитных орудий, под бодрый стрёкот релюшек-щелкушек, М-9 пели гимн двоично-пятеричной системе счисления. Стилистику этого гимна можно решительно отнести к жанру дэт-металл.
    Соответственно, в двоично-пятеричной системе на каждый разряд идет две цифры, первая из которых реализовывалась не меньше чем 3 битами (от 4 до 6), а вторая 1 битом.
    И история двоично-пятеричного кодирования началась не в конце 50-х в Японии.