Начиная с 50-х годов компьютеры активно используются в бизнесе, и их значение год от года возрастает. Коммерческие организации - банки, страховые компании, торговые и промышленные предприятия, а также государственные учреждения в своей деятельности во многом опираются на компьютерные средства обработки данных, предъявляя к ним повышенные требования по надежности и отказоустойчивости. Учитывая эти требования, многие производители компьютерных средств в свое время занялись разработкой более надежных систем, чем стандартные компьютеры. К тому моменту теоретические основы построения таких систем уже были известны и имелись некоторые прототипы, созданные в университетах. С начала 70-х ряд производителей начал выпуск так называемых кластеров - компания DEC была одной из первых, кто предложил свой кластер повышенной готовности, построенный на основе компьютеров серии PDP, а позже и другие фирмы - Pyramid [1], Stratus [2] и Tandem [3], выпустили аналогичные продукты.
- Pyramid. Основана в 1983 году. С момента создания занимает твердую позицию на рынке высоконадежных Unix-систем, раньше всех перешла на RISC-процессоры. Новая серия ее продуктов Reliant Cluster Architecture работает под управлением версии операционной системы Unix - Reliant Unix. Подобно продуктам Tandem, данные системы разрабатывались с целью обеспечения высокой масштабируемости. После объединения с Siemens-Nixdorf фирма продолжает поддерживать линию продуктов, позиционируемых на рынке высоконадежных и отказоустойчивых систем.
- Stratus. Создана в 1980 году. Начала свою деятельность с операционных систем, ориентированных на обработку транзакций и функционирующих на многопроцессорных компьютерах Stratus/32. В 80-х годах появились более усовершенствованные системы, среди них мэйнфреймы серии ХА400, 600 и 2000, а также FTX на базе RISC-процессоров. Традиционно в продуктах Stratus используются производные операционной системы Unix System V. Наиболее современными продуктами Stratus являются система Continuum 400 на базе PA-RISC с операционной системой HP-UX, работающей над промежуточным программным обеспечением, а также высоконадежный NT-кластер Radio Cluster. Среди клиентов Stratus - банки, правительственные учреждения, телефонные компании и промышленные предприятия.
- Tandem. Основана в 1974 году. Первой ее системой была NonStop I, базирующаяся на собственных CISC CPU (1976 год). В 1991 году была анонсирована первая RISC-система CLX2000, вслед за ней с 1993 года начат выпуск серии Himalaya K. Последними разработками на сегодня являются объявленные в 1996 году системы серии Himalaya S, основанные на ServerNet-технологии, предложенной Tandem. К числу современных продуктов относятся также Unix-системы серии Integrity и высоконадежные кластеры, работающие в среде NT. Клиентами Tandem являются банки, телекоммуникационные службы, торговые предприятия и государственные учреждения.
Другие производители - IBM, Hewlett-Packard, Sun Microsystems, Silicon Graphics и Data General также представляют на рынок высоконадежных систем свои продукты. Поскольку область отказоустойчивой обработки данных тесно связана с параллельными вычислениями, то следует также упомянуть такие инновационные архитектуры, как ccNUMA от Data General, Sequent и др.
Аппаратное и программное обеспечение Tandem NonStop
Очевидно, что прогресс в создании отказоустойчивой операционной системы невозможен без соответствующего развития аппаратной архитектуры. Поэтому, рассматривая эволюцию операционных систем, полезно отследить их связь с совершенствованием аппаратного обеспечения.
С момента своего создания в 1974 году Tandem специализируется в разработке отказоустойчивого аппаратного и программного обеспечения. Как и большинство тогдашних разработчиков мэйнфреймов, Tandem использовала в своих первых системах собственные CISC (complex instruction set computers) процессоры. К числу первых разработок Tandem относятся серии NonStop I, NonStop II, VLX, CLX и Cyclone; в последней был достигнут наибольший уровень масштабируемости. Операционные системы, работающие на аппаратуре указанных типов, назывались сначала TOS (Tandem Operating System), а затем - Guardian версий от А до С. Более подробную информацию о ранних моделях NSK можно найти в [4].
В начале 90-х годов Tandem решила перейти с собственных процессоров на стандартные RISC MIPS R3000 и R4000. Для облегчения переноса ОС был разработан специальный эмуляционный пакет, который подключался на нижнем уровне системного обеспечения. Эмулятор обеспечивал выполнение на RISC-процессорах старых компонентов ОС, а также прикладных программ, разработанных в системах, базирующихся на CISC. Поскольку Tandem широко использует партнерские связи, то для успешной работы при переходе на новый тип процессоров необходимо было добиться преемственности программного обеспечения. Через некоторое время большая часть компонентов ОС и прикладных программ была перенесена в новую среду путем перекомпиляции либо за счет полной или частичной переработки.
В 1993 году компания Tandem выпустила первые Himalaya-системы серии К1х. За исключением начальной модели, все системы базировались на MIPS R3000 (для малых моделей) и R4400/150 (для больших и средних моделей). Новая операционная система получила название NonStop Kernel и представляла собой дальнейшее расширение Guardian-90.
Два года спустя вышли системы следующего поколения - Himalaya K2x на базе процессоров R4400 с частотой от 150 до 200 МГц и операционная система NonStop Kernel версии D. В октябре 1996 года было анонсировано новое семейство Himalaya-серверов серии S7, основанных на ServerNet-архитектуре и работающих под управлением операционной системы - NonStop Kernel версии G.
На рис. 1 показана типичная архитектура систем Himalaya K и отражены способы взаимодействия с операционной системой. Нетрудно заметить, что все существенные компоненты системы дублируются. Эта мера гарантирует непрерывную работу до тех пор, пока по крайней мере один из дублируемых компонентов может функционировать.
Рис. 1. Архитектура систем серии Himalaya K
На уровне операционной системы NonStop Kernel организует дублирование системных и прикладных процессов таким образом, чтобы при возникновении неустойчивых ошибок в программном обеспечении сохранялась по крайней мере одна копия процесса. В случае аварийного завершения основного процесса сразу же без уведомления конечного пользователя управление переходит к резервному процессу, который продолжает вычисления. Затем создается новый резервный процесс и вводится в режим резервирования. Основной и резервный процессы всегда назначаются на разные CPU, так что выход из строя одного из процессоров не приводит к сбою всей системы. Поскольку второй CPU используется также для выполнения других процессов, данный подход существенно отличается от известных методов автоматического восстановления, в которых резервные компоненты большую часть времени остаются не занятыми. При таком подходе средства обеспечения постоянной готовности комбинируются с параллельными вычислениями.
Как уже отмечалось, к концу 1996 года было выпущено новое поколение серверов Himalaya серии S7. Их архитектурную основу составляет высокоскоростная системная сеть ServerNet, в которой в отличие от классической архитектуры Фон Неймана, где потоки данных передаются и обрабатываются через процессор, все основные компоненты системы снабжены специальным интерфейсом, обеспечивающим непосредственную пересылку данных от одного периферийного устройства к другому. Это позволяет освободить CPU от непродуктивной нагрузки и использовать его мощности для решения других задач.
На рис. 2 приведена принципиальная схема архитектуры ServerNet. Прямые линии связи между дисками и каналами ввода/вывода обеспечивают непосредственную передачу больших объемов данных без вовлечения CPU. Преимущества этого типа архитектуры наиболее ощутимы в таких приложениях, как системы поддержки принятия решения, оперативно-доступные архивы и т. д.
Рис. 2. Принципиальная схема архитектуры ServerNet
Более подробную информацию о ServerNet можно найти в [5,6].
ОС NonStop Kernel
NonStop Kernel - операционная система, основанная на обработке сообщений. Используя параллельные вычисления в многопроцессорной системе, расширяемой до более 4000 CPU, NonStop Kernel обеспечивает высокую производительность, позволяющую поддерживать обработку большого количества одновременных транзакций. Ее модульная структура гарантирует масштабируемость, высокоуровневую универсальность и прозрачность относительно количества систем, соединенных вместе через сети Expand [7] или TorusNet [8]. Модульность также позволяет облегчить перенос операционной системы на новые аппаратные платформы. На рис. 3 показана общая структура уровней NSK.
Рис. 3. Подсистемы NonStop Kernel
Особенности ОС
Параллелизм. NonStop Kernel опирается на многопроцессорную аппаратную архитектуру, поэтому она должна поддерживать параллельную обработку на всех уровнях: на системном, на уровне промежуточного программного обеспечения и на уровне прикладных программ. В архитектуре систем сери Himalaya отсутствует общая память, поэтому на каждом процессоре работает своя копия ОС. В нее включены процессы, выполняющие функции распределения ресурсов, управления памятью, межпроцессорного и межпроцессного взаимодействия и т. д. Процессы управления внешними устройствами не копируются на каждом процессоре, а работают только на тех процессорах, к которым физически подключено данное устройство. Обмен данными между CPU выполняется с помощью сообщений, которые передаются по дублируемой межпроцессорной шине Dynabus. Технология TorusNet позволяет объединять до 224 процессоров, а использование сети -Expand до 4080 процессоров.
Отказоустойчивость. NSK - отказоустойчивая операционная система. Безостановочное функционирование системы достигается за счет развитого механизма автоматического восстановления после сбоя. Если какой-либо процесс сконфигурирован как отказоустойчивый, то в системе всегда существуют две его копии, которые размещаются на физически различных процессорах. Одна копия является активным процессом, а другая - резервным. Если основной процесс прерывается из-за неустойчивых сбоев в работе аппаратного или программного обеспечения, то резервный процесс берет на себя функции основного и продолжает вычисления с точки прерывания. Поскольку содержимое памяти обоих процессов полностью совпадает, то второй процессор имеет такой же доступ ко всем системным ресурсам, как и основной, поэтому никаких дополнительных мер для восстановления прерванного процесса не требуется. Операционная система сразу же создает на другом CPU новый резервный процесс, так что резервное дублирование процессов сохраняется. На рис. 4 приведена схема реализации данного механизма.
Рис. 4. Обеспечение отказоустойчивости с использованием основных и резервных процессов
Откат транзакций при сбое достигается следующим способом. При выполнении транзакций на чтение/запись из базы данных применяется механизм восстановления, который использует контрольные следы для гарантии целостности базы. Надо отметить, что механизм восстановления не применим для обработки устойчивых сбоев программного обеспечения. Такие сбои всегда являются следствием ошибок программирования, и для их исправления требуются изменения в самом коде.
Персоналии (Personalities). Принимая во внимание современные тенденции разработки открытых программных средств, Tandem решила сделать NonStop Kernel также открытой системой. При этом для обеспечения совместимости своих ОС сверху вниз и сохранения их прежних свойств компания выбрала концепцию персоналий. Персоналия - это набор прикладных программных интерфейсов (API) и системных программных средств. На рис. 5 показано, как персоналии взаимодействуют с остальной частью системы.
Рис. 5. Open System Services
В NSK имеются две персоналии - Guardian (стандартный собственный интерфейс) и открытые средства Open System Services (OSS), представляющие собой реализацию Unix с POSIX.2 и прикладными API-интерфейсами, согласованными с XPG4. OSS использует свою иерархическую файловую систему поверх файловой системы Guardian, а для обеспечения доступа к средствам OSS из Guardian и наоборот применяется специальный синтаксис. Доступ к файлам Guardian из OSS осуществляется через специальный каталог /G. Для обращения к ресурсам Expand-сети с других узлов служит каталог /E. Этот подход аналогичен концепции суперкорневого каталога, используемой в системах Microsoft Network, NetWare 4 и различных Unix-реализациях.
Для организации взаимодействий между процессами в OSS доступна полная библиотека Berkeley Socket Library, а для обеспечения прямого доступа Unix- и ПК-клиентов к файлам OSS используется NFS-сервер. Кроме того, стандартные FTP-средства передачи Unix-файлов также включены в состав системы и в качестве сервера, и в качестве клиента.
Сетевые средства. Операционная система NonStop Kernel поддерживает широкий набор сетевых средств, основные из которых перечислены в таблице 1. Все эти средства могут быть сконфигурированы как отказоустойчивые.
Поддержка модели клиент-сервер. Tandem NSK поддерживает модель клиент-сервер, основанную на принципах "инициатор запроса (requester)/сервер". Обычно клиент посылает запрос к известному серверу, например SQL-серверу базы данных. Сервер обрабатывает запрос и посылает клиенту ответ. Если ввести дополнительные экземпляры сервера (которые могут быть добавлены и динамически), то можно распределить нагрузку в среде клиент-сервер среди доступных процессоров и тем самым увеличить максимально возможную пропускную способность и минимизировать время отклика. Дальнейшим логическим расширением является модель клиент-сервер, функционирующая в гетерогенной сети. Для реализации данной модели обеспечивается поддержка широкого набора пользовательских рабочих станций, управляемых разнообразными операционными системами и средами (MS Windows, Windows 95, NT, различными модификациями Unix). Сервер удаленных запросов Tandem RSC обеспечивает указанные возможности в сетях перечисленных типов.
Языки программирования. Tandem NSK поддерживает следующие языки программирования: Си, C++, Cobol, Pascal, Basic, и TAL (Transaction Application Language). Компилятор языка Си является также стандартным в специализациях OSS. Существует несколько расширений, предназначенных для разработки различных приложений клиент-сервер, например для доступа к NonStop SQL-базам данных, диспетчерам транзакций и серверным классам, выполняемым на хост-компьютере NSK. Специальный отладчик CodeView позволяет выполнять отладку на уровне исходных текстов основного программного обеспечения с использованием ПК, работающих под управлением Windows.
Системный интерфейс. Обычно на системном терминале используется командный интерфейс. В среде Guardian язык TACL (Tandem Advanced Command Language) выступает в качестве оболочки; аналогичную роль в OSS-среде выполняет слегка модифицированный Korn Shell. Большинство системных команд имеет средства оперативной помощи и может выполняться как в интерактивном, так и пакетном режиме. Команды позволяют управлять всеми подсистемами на всех уровнях (аппаратном, сетевом, на уровне драйверов и т. д.). Для работы с терминалами типа 6530 в полноэкранном (блочном) режиме используются специальные управляющие последовательности, реализованные терминалами фирмы Tandem или эмуляторами на различных рабочих станциях.
Большинство операторских задач по поддержке операционной системы NSK может быть автоматизировано с привязкой к определенным событиям или к определенному времени суток. Программное обеспечение коллектора системных событий гарантирует, что все события, порождаемые системой, сохраняются в центральной базе данных для немедленного или отложенного просмотра. Большинство задач по конфигурированию системы и ее управлению может выполняться в оперативном режиме и не требует приостановки работы системы. NSK обеспечивает удаленный контроль и поддержку через синхронную модемную связь или SNMP/CMIP.
Дальнейшее развитие NonStop Kernel
Операционная система NonStop Kernel постоянно развивается для того, чтобы соответствовать изменениям в аппаратной архитектуре и учесть требования рынка, обеспечить поддержку новых типов приложений. Значительные изменения в настоящий момент связаны, во-первых, с архитектурой ServerNet, а во-вторых, относятся к области промежуточного программного обеспечения, где тесная интеграция с Windows NT нацелена на разработку ServerWare-продуктов.
ServerNet. Системы Himalaya, основанные на ServerNet, имеют новый интерфейс системной конфигурации, который позволяет добавлять и удалять целые подсистемы без остановки работы всей системы. Все стандартные каналы ввода/вывода и шина Dynabus заменяются связью через ServerNet. Хотя NSK полностью поддерживает эту новую архитектуру, она продолжает сохранять старые возможности, обеспечивающие преемственность для уже существующих приложений. Кроме новых команд и функций, а также возросшей производительности конечные пользователи не почувствуют никаких других изменений в работе своих приложений.
ServerWare. Учитывая расширение рынка NT-серверов и стремясь сделать NSK-системы более открытыми, Tandem возвела ServerWare в разряд своих основных продуктов на уровне промежуточного программного обеспечения. ServerWare занимает промежуточное положение между операционной системой и прикладными программами, предоставляя универсальный интерфейс приложений. Эти приложения в скором времени будут выполняться совершенно независимо от того, какие именно аппаратные средства работают в гетерогенной сети. На рис. 6 показано, какое место занимает промежуточное программное обеспечение ServerWare в сетевой структуре системы.
Рис. 6. Промежуточный уровень программного обеспечения
Основная задача ServerWare - предоставить приложениям средства обработки транзакций, базы данных и среды передачи сообщений. Такие продукты для систем Himalaya уже существуют довольно давно, теперь они будут перенесены на серверы Windows NT для обеспечения поддержки более широкого класса систем. Для достижения указанных целей Tandem заключила в 1996 году долговременное стратегическое соглашение с фирмой Microsoft.
***
В данной статье представлен обзор отказоустойчивой операционной системы NonStop Kernel, основанной на обработке сообщений, нацеленной на параллельную работу с транзакциями и обслуживание баз данных. За свою более чем двадцатилетнюю историю развития NSK претерпела многочисленные изменения. В частности, разработка персоналии Open System Services и универсального связующего программного обеспечения, предоставляющего возможности гладкой интеграции NSK-машин с Windows NT-серверами.
Серверы Tandem находят применение в приложениях, где требуется высоконадежная и непрерывная работа вычислительных систем. К таким приложениям относятся финансовые службы: банки; правительственные учреждения; телекоммуникационные компании; службы, предоставляющие транспортные услуги, и т. д.
Фолькер Хаманн - технический консультант Tandem Computers. Ранее работал в отделе информационных систем компании Unisys и в Институте вычислительной техники при Венском технологическом университете.
1. http://www.pyramid.com. May 1997.
2. http://www.stratus.com. May 1997.
3. Tandem Computers, Inc.: . May 1997.
4. J. Bartlett: A NonStop Kernel, Eighth Symposium on Operating System Principles, Dec. 1981.
5. W. E. Baker, R. W. Horst, D.P. Sonnier, W. J. Watson: A Flexible ServerNet-based Fault-Tolerant Architecture, Proc. of 25th International Symposium on Fault-Tolerant Computing, Pasadena, CA, June 27-30 1995.
6. Tandem Computers: Breakthrough Technology for the Coming Generation of Applications, White Paper, Tandem Computers, Inc., 1995.
7. Expand Product Description, Tandem Computers, 1995.
8. TorusNet Product Description, Tandem Computers, 1995.
Что такое отказоустойчивость?
Традиционно, даже среди экспертов, существует путаница в терминологии и определениях, относящихся к области отказоустойчивой обработки данных. Фактически каждый производитель использует свою собственную терминологию, а рекламные буклеты пестрят пышными выражениями, типа "высокая надежность", "отказоустойчивость" и т. д. Несмотря на то что в академической теории систем имеются совершенно ясные определения, они как-то не приживаются в популярной литературе.
- High availability (HA) - высокая надежность. В HA-системах технические средства обычно не бывают полностью отказоустойчивыми. На определенном уровне аппаратного обеспечения надежность достигается за счет RAID и механизмов автоматического восстановления, хорошо известных в области кластеризации. Высоконадежные кластеры обычно состоят из двух или более одинаковых вычислительных узлов, соединенных в локальную сеть через высокоскоростные линии связи. Часть узлов является резервной и обычно находится в неактивном состоянии, но в случае появления стандартного сообщения о сбое они сразу же включаются в работу. Программные средства кластеризации или связующее программное обеспечение распределенной среды гарантируют восстановление работы приложения на вновь активизированном вычислительном узле. Таким образом, в НА-системах обеспечение надежности достигается за счет программных средств и избыточных ресурсов.
- Fault resilience - быстрая восстанавливаемость после сбоя, нечувствительность к ошибкам. Это понятие может рассматриваться как промежуточное между высокой надежностью и отказоустойчивостью. Надежность оборудования выше, чем в первом случае, однако не все компоненты системы полностью защищены от сбоев.
- Fault-tolerance (FT) - отказоустойчивость. Система может называться отказоустойчивой только в том случае, если ни один из ее компонентов не может привести к нарушению работоспособности системы в целом. Сказанное относится как к аппаратному, так и к программному обеспечению, и в не меньшей степени касается прикладных программных средств. Совершенно очевидно, что даже без учета экономических факторов стопроцентную отказоустойчивость обеспечить невозможно. Поэтому обычно коэффициент надежности уменьшается до 99% или 99,5% для достижения компромисса между отказоустойчивостью и стоимостью системы.