Модернизация вычислительного кластера для параллельного выполнения операционных систем Linux и MS Windows

УДК 004.45

МОДЕРНИЗАЦИЯ ВЫЧИСЛИТЕЛЬНОГО КЛАСТЕРА ДЛЯ ПАРАЛЛЕЛЬНОГО ВЫПОЛНЕНИЯ ОПЕРАЦИОННЫХ СИСТЕМ

LINUX И MS WINDOWS

Д.Г. Ермаков, к.ф.-м.н.., старший научный сотрудник; А.Ю. Берсенев, аспирант

В статье представлено решение задачи модернизации ПО суперкомпьютера с массово-параллельной архитектурой для выполнения на одном аппаратном кластере одновременно двух различных операционных систем (Linux и MS Windows HPC Server), при этом каждая размещена на своем наборе узлов (логическом кластере). Описывается процесс установки ОС MS Windows и средств HPC Pack на узлы кластера с учетом использования двух DHCP-серверов. Частной особенностью решения является отсутствие подключения Infiniband (Application Network) на головном узле под управлением ОС Linux, что и определяет необходимость использования двух DHCP-серверов. Отмечены и проблемы, выявленные при установке Windows HPC Server и пакета русскоязычного интерфейса.

Рассмотрены следующие подходы к организации выбора ОС при ее загрузке на узлы кластера: выбор загружаемой системы оператором, чередование, создание общего загрузочного раздела и выбор запускаемой ОС путем записи в файл на этом диске, загрузка по сети с выбором загружаемой ОС DHCP-сервером. Обосновывается выбор способа с загрузкой по сети с выбором загружаемой ОС DHCP-сервером. Описываются некоторые особенности реализации данного способа. Перечислены скрипты, требуемые для управления переключением узлов, и их функции. Отмечается, что основные скрипты выполняются на стороне головного узла Linux. Для обращения к этим скриптам со стороны головного узла Windows применено расширение средств PowerShell на основе набора командлетов SSH from PowerShell, использующих библиотеку SSH.NET. Решение обеспечивает оперативное переключение узлов между логическими кластерами Linux и Windows.

Ключевые слова: суперкомпьютер, высокопроизводительные кластерные системы, двойная загрузка кластера, гибридный кластер, HPC, High-performance computing, MS Windows Server 2008 HPC Edition, Linux, Microsoft HPC Pack, RedHat, Scientific Linux, Hybrid OS Cluster, Dual-Boot.

COMPUTING CLUSTER UPGRADE FOR SIMULTANEOUS EXECUTION OF LINUX AND MS WINDOWS OS Ermakov D.G., Ph.D.

Abstract. The task of upgrading the software of a massively parallel supercomputer for the simultaneous execution of two different operating systems (Linux and Microsoft Windows HPC Server) at the same hardware cluster, each of them at its own node set (logical cluster) is completed. The process of installing Microsoft Windows and HPC Pack tools on cluster nodes using two DHCP servers is described. One of the features of the proposed solution is the absence of the Infiniband (Application Network) connection at the headend under Linux, which makes it necessary to use two DHCP servers. The problems revealed in the course of installing the Windows HPC Server and the Russian interface package are mentioned.

The following approaches to organizing the choice of an operating system loaded to the cluster nodes are considered: the choice of the loaded system by an operator, alternation, creation of a common boot sector and choice of the loaded operating system by recording a file on this disk, and network loading with the choice of the operating system by a DHCP server. The latter approach is proved to be to most appropriate, some peculiarities of its implementation are described. The scripts that control the node switching and their functions are listed. It is mentioned that the main scripts are executed at the Linux headend. The access to these scripts from the Windows headend is provided by extending PowerShell tools by means of the SSH cmdlet set from PowerShell that uses the SSH.NET library. The proposed solution provides a quick switching of nodes between the Linux and Windows logical clusters.

Keywords: High-performance computing, MS Windows Server 2008 HPC Edition, Microsoft HPC Pack, Linux, RedHat, Scientific Linux, Hybrid OS Cluster, Dual-Boot, Upgrade, PowerShell, SSH.

Высокопроизводительные кластерные системы (HPC - High-performance computing) используются в основном в научной среде для инженерно -научных расчетов. Для этой среды характерно применение технологий на основе свободно распространяемого ПО с открытым исходным кодом. Базовой ОС здесь является семейство ОС Linux. Суперкомпьютеры, размещенные в Институте математики и механики (ИММ) УрО РАН, работают под управлением двух близких разновидностей ОС Linux - RedHat 6.3 и Scientific Linux 6.3.

Существует альтернативное ПО для организации вычислительных кластеров высокой производительности [1]. Это продукты Microsoft Windows HPC Server и Microsoft HPC Pack (http://www.mic-rosoft.com/hpc/en/us/default.aspx). Использование этой ОС несколько снижает порог вхождения в суперкомпьютерные вычисления для пользователей невысокой квалификации. Вычислительный кластер, работающий под управлением этой ОС, обладает следующими специфическими возможностями:

- пакетный запуск консольных (пакетных) приложений для ОС Windows (в первую очередь .NET приложений);

- возможность отправки пакетных задач на выполнение прямо с рабочего места пользователя через оболочку Job Manager при помощи мастера (на английском языке);

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

- возможность постановки заданий в очередь, просмотра очереди и получение результатов через веб-интерфейс на основе MS SharePoint;

- возможность ускорения вычислений в среде MS Excel 2010 за счет распределения вычислительной нагрузки на узлы HPC Server 2008 при помощи XLL-макросов и возвращения результатов в Excel (интерактивные HPC вычисления);

- возможность расширения кластера за счет узлов, получаемых из облака MS Windows Azure.

Двойная загрузка кластера

С вводом в строй в ИММ УрО РАН расширенного варианта суперкомпьютера «УРАН» появилась возможность выделения части аппаратных средств кластера предыдущего поколения МВС-ИММ (UM64) с целью проведения экспериментов.

Это позволит некоторым пользователям выполнять в пакетном режиме задачи, предназначенные для работы под управлением ОС MS Windows. Одним из таких экспериментов стало развертывание на нескольких выделенных узлах кластера ПО MS Windows Server 2008 R2 HPC Edition.

Основная задача развертывания состояла в отработке технологии двойной загрузки (Linux/Windows) физических узлов кластера и в обеспечении их миграции между логическими кластерами Linux/Windows.

Развертывание средств Windows Server 2008 R2 HPC Edition

Базовые принципы организации двойной загрузки описаны в [2, 3], однако каждая конкретная реализация имеет свои особенности. В данном случае это отсутствие подключения головного узла Linux к Application Network (рис. 1).

Перед установкой ПО на физический кластер выполнено пробное развертывание макета кластера на наборе виртуальных машин аналогично тому, как это описано в [4, 5].

Для развертывания Windows-кластера была выделена группа из 7 узлов кластера UM64 (один головной и 6 вычислительных узлов), каждый в следующей конфигурации:

и JL и -о о £ тз и Si s fi J rtinux Worker Node 2|— tinux Worker Node N|—1

Private Network

Enterprise Network

Adive Directory Workstations

Рис. 1. Исходная конфигурация кластера UM64

- два процессора Dual Core AMD Opteron™ Processor 285 (2,6 ГГц);

- оперативная память 8 Гб;

- два сетевых адаптера NetXtreme BCM5715 Gigabit Ethernet, один InfiniBand: Mellanox Technologies MT25204.

Ввиду того что дисковая подсистема должна обеспечивать возможность установки двух ОС (рис. 2), а минимальные требования для Windows HPC Server - 50 Гб, под экспериментальный сегмент кластера с двойной загрузкой были использованы узлы с емкостью дисков 150 Гб.

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

ляемых в Windows-кластер по одному, можно было обойтись полностью ручной установкой всего нужного ПО. Однако одной из задач была отработка технологии развертывания ПО на большой кластер, в связи с чем все работы для организации развертывания выполнены в автоматическом режиме. С этой целью были подготовлены файлы описания узлов кластера, преобразованные при помощи PowerShell-скрипта из данных, сохраненных на этих узлах, под ОС Linux (файл NodeConfi-gurationFile.xml). Так как на узлах должны быть установлены две различные ОС, был подготовлен файл описания C:\Program Files\Microsoft HPC Pack 2008\Data\InstallShare\Config\diskpart.txt для разбиения и распределения дисков, выполняющийся во время установки ОС Windows. Организован файл ответов автоматической установки ОС MS Windows (autounattend.xml), обеспечивающий установку значений таких параметров, как часовой пояс (правильная установка значения часового пояса важна, иначе узлы не смогут подключиться к контроллеру домена из-за несоответствия значения даты-времени на вновь установленной системе узла кластера и контроллере домена Active Directory) и локализации. Подготовлены драйверы устройств (в данном случае это драйверы SATA и InfiniBand) и дополнительное ПО (runtime library C++ MS Visual Studio 2010). Была также подготовлена автоматическая установка пакета русификации (пакет многоязыкового интерфейса пользователя Windows Server 2008 R2 - Win-dows6.1-KB2483139-x64-ru-RU.exe), однако позднее выявлены проблемы, связанные с установкой этого пакета.

После подготовки всех необходимых файлов с помощью стандартного мастера HPC Pack создан образ ОС со всеми дополнительными компонентами для автоматической установки по сети.

Для данной установки требуется работающий на головной машине Windows-кластера DHCP-сервер. Таким образом, в Private Network оказываются два DHCP-сервера, выполняющихся одновременно (второй DHCP-сервер для Private Network выполняется на головной машине Linux-кластера). Для предотвращения конфликтов на обоих DHCP-серверах были зарезервированы IP-адреса для MAC-адресов узлов, входящих в соответствующую часть аппаратного кластера (Windows или Linux), и запрещена выдача адресов, отличных от выделенных. Заметим, что после установки ОС Windows на все узлы в случае, когда не планируется добавление новых узлов с автоматической установкой ОС по сети, сервер служб развертывания Windows и DHCP-сервер, обслуживающий Private network, могут быть остановлены. Для Application Network на основе Infiniband в Windows-кластере DHCP-сервер сохраняется, так как в отличие от Linux-кластера поверх Infiniband используется и протокол TCP/IP.

После установки необходимого ПО на все узлы Windows-кластера была выполнена проверка его работоспособности. В ходе опытной эксплуатации Windows-кластера были выявлены некоторые недостатки.

• Проблема удаления с последующим возвращением узла в кластер. Если удалить узел из кластера, а потом опять попытаться добавить его с тем же именем (никаких аппаратных изменений в узел не вносилось), то не удастся установить на узел Template с ОС. То есть для узла нужно будет сгенерировать новое имя.

• Проблема русификации. По умолчанию интерфейс системы англоязычный. Если установить пакет русскоязычного интерфейса на узлы кластера и включить русский как язык пользовательского интерфейса, Cluster Manager перестает отображать информацию о состоянии таких узлов. Задания на узлах, несмотря на это, запускаются и выполняются. Если на вычислительном узле вернуть английский как язык интерфейса, отображение состояния этого узла восстанавливается.

Установка Linux второй системой на узлы кластера

Наличие двух DHCP-серверов создает проблему для автоматической установки Linux как второй системы на узлы с уже установленной ОС MS Windows. Механизм загрузки по сети при получении нескольких ответов от DHCP-серверов завершался с ошибкой безопасности. Для оперативной автоматической установки Linux простейшее решение - выключение головного узла Windows-кластера, на котором выполняется DHCP-сервер.

Для переключения вычислительного узла между логическими кластерами требуется загрузка соответствующей ОС. Были рассмотрены следующие подходы к организации выбора ОС:

- чередование; при очередной перезагрузке узла будет загружена ОС, отличная от только что использованной; например, если узел кластера работал под управлением ОС Windows, то при очередной перезагрузке на нем запустится ОС Linux, и наоборот, в случае перезагрузки узла, работающего под управлением ОС Linux, на нем будет запущена ОС Windows;

- выбор загружаемой системы оператором на этапе загрузки и запуск последней использовавшейся ОС при долгом отсутствии нажатий на клавиши;

- создание общего загрузочного раздела и выбор запускаемой ОС путем записи в файл на этом диске;

- загрузка по сети с выбором загружаемой ОС DHCP-сервером.

Способ с чередованием требует постоянного наблюдения за тем, какая из ОС загружена на узле. В случае обнаружения на узле ОС, не соответ-

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

Выбор загружаемой системы оператором неудобен и трудоемок для него, особенно, если смена ОС производится достаточно часто.

Создание общего загрузочного раздела требует, чтобы формат файловой системы (ФС) на нем поддерживался обеими ОС. К сожалению, данному критерию удовлетворяют только ФС семейства FAT, но их использование усложняет автоматическое развертывание ОС, так как использование FAT в качестве загрузочного диска требует установки нестандартного загрузчика, который не поддерживается популярными дистрибутивами Linux. Использование других файловых систем требует установки экспериментальных драйверов, которые обычно находятся в состоянии, не пригодном для серьезного использования.

Поэтому был выбран подход, связанный с загрузкой по сети, как наиболее простой для администрирования и развертывания.

Выбор ОС при загрузке по сети

Отвечающий на запросы о загрузке по сети DHCP-сервер расположен на головном узле Linux-кластера, как и TFTP-сервер с файлами, необходимыми для сетевой загрузки.

В ПЗУ сетевых карт современных компьютеров имеется PXE-код. Получив управление при старте системы, этот код запрашивает настройки сети и адрес TFTP-сервера у DHCP-сервера по протоколу BOOTP, получает оттуда исполнимый файл и передает ему управление. В качестве такого файла в рассматриваемом решении используется pxelinux - одна из самых популярных реализаций загрузчика, которая позволяет передавать управление ядру Linux, загрузив его с того же TFTP-сервера. При запуске pxelinux считывает свой файл конфигурации, в котором описан механизм загрузки конкретных ОС.

Для выбора ОС используется следующий конфигурационный файл DHCP-сервера:

group {

filename "um64_win/pxelinux.0";

host umu18 {hardware ethernet 00:18:F3:4E:5D:59;

fixed-address 192.168.1.18; }

host umu19 {hardware ethernet 00:18:F3:4E:5D:43;

fixed-address 192.168.1.19; }

}

group {

filename "um64_linux/pxelinux.0";

host umu20 {hardware ethernet 00:18:F3:4E:5D:39;

fixed-address 192.168.1.20; }

host umu21 {hardware ethernet 00:18:F3:4E:5E:21;

fixed-address 192.168.1.21; }

host umu22 {hardware ethernet 00:18:F3:4E:5D:79;

fixed-address 192.168.1.22; }

host umu23 {hardware ethernet 00:18:F3:4E:5E:33;

fixed-address 192.168.1.23; }

}

В данном примере um64_win/pxelinux.0 и um64_linux/pxelinux.0 - это пути к исполняемым файлам, рассмотренным выше. В каталоге um64_win в конфигурационном файле описана загрузка с ОС Windows, а в um64_linux - с ОС Linux. То есть в данном примере на узлах umu18 и umu19 будет загружаться ОС Windows, а umu20, umu21, umu22, umu23 - Linux.

Таким образом, чтобы изменить ОС, загружаемую на узле, нужно переместить соответствующую узлу строку в другую группу и перезапустить DHCP-сервер или оповестить его об изменении конфигурационного файла.

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

При загрузке ОС Windows HPC Server управление передается загрузчику, находящемуся непосредственно на жестком диске узла кластера.

Для переключения узлов подготовлен набор скриптов, выполняющих определенные операции.

• Скрипт № 1 переносит узлы из группы Windows узлов в группу Linux (редактирует файл dhcpd.conf).

• Скрипт № 2 выполняет обратную операцию - переносит узлы из группы Linux в группу Windows (редактирует файл dhcpd.conf).

• Скрипт № 3 маскирует узлы во всех группах (помечает как комментарий) для того, чтобы на такие узлы можно было произвести по сети установку ОС MS Windows (редактирует файл dhcpd.conf).

• Скрипт № 4 выполняет операцию, обратную действиям, выполняемым скриптом № 3 (редактирует файл dhcpd.conf).

• Скрипт № 5 выдает информацию о текущем распределении узлов по группам.

• Скрипт № 6 запускает перезагрузку на Linux-узлах кластера.

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

Для переключения узлов между системами с головной машины Windows-кластера (UM64W) подготовлен скрипт PowerShell, имеющий два параметра. Первый - список узлов, над которыми должна быть выполнена операция, и второй - имя операции. В соответствии с указанной операцией PowerShell-скрипт по протоколу SSH вызывает соответствующий скрипт на головной машине Linux-кластера (UM64). В случае перемещения узлов из Windows-кластера в Linux скрипт тоже выполняет соответствующие стандартные ко-

мандлеты Windows HPC, переводящие указанные в списке узлы в состояние offline и запускающие перезагрузку этих узлов (Set-HpcNodeState и Restart-HpcNode). Для доступа к головной машине Linux и вызова на ее стороне управляющих скриптов на головной машине Windows используется набор командлетов SSH from PowerShell (http://www.powershelladmin.com/wiki/SSH_from_P owerShell_using_the_SSH.NET_library), построенный на основе библиотеки SSH.NET (http://sshnet. codeplex.com/).

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

В заключение отметим, что осуществлена модернизация кластера, обеспечившая возможность одновременной работы двух ОС (Linux и Windows) на одном физическом кластере за счет выделения каждой ОС своего подмножества узлов.

Литература

1. Келбли Дж., Линдси Д. Введение в Windows Compute Cluster Server // TechNet Magazine. 2008, февраль. URL: http://technet.microsoft.com/ru-ru/magazine/2008.02.ccs.aspx (дата обращения: 01.09.2012).

2. A Hybrid OS Cluster Solution: Dual-Boot and Virtualization with Windows HPC Server 2008 and Linux Bull Advanced Server for Xeon. Published: October 7, 2009, Dr. Patrice Calegari, HPC Application Specialist, BULL S.A.S., Thomas Varlet, HPC Technology Solution Professional, Microsoft. URL: http://technet.microsoft.com/en-us/library/ee621813(v=ws.10).aspx (дата обращения: 26.08.2012).

3. The Windows HPC Server 2008-based Cluster in a Linux Environment. URL: http://go.microsoft.com/fwlink/?LinkId= 135931 (дата обращения: 26.08.2012).

4. Русский блог по разработке для HPC. Развертывание Windows Server 2008 HPC в виртуальной среде. Ч. 1: Установка и настройка головного узла. URL: http://blogs.msdn.com/b/ru-hpc/archive/2009/09/11/windows-server-2008-hpc-1.aspx (дата обращения: 26.08.2012).

5. Русский блог по разработке для HPC. Развертывание Windows Server 2008 HPC в виртуальной среде. Ч. 2: Установка и настройка вычислительных узлов. URL: http://blogs.msdn. com/b/ru-hpc/archive/2009/09/12/windows-server-2008-hpc-2.aspx (дата обращения: 26.08.2012).

6. Integrating a Windows HPC Server 2008 Cluster into a Linux Environment, Microsoft Corp. Publ., 2008, September.

References

1. Kelbley J., Lindsey D. An Introduction to Windows Compute Cluster Server. TechNet Magazine. 2008, Feb. Available at: http://technet.microsoft.com/en-us/magazine/2008.02.ccs.aspx (accessed 01 September 2012).

2. A Hybrid OS Cluster Solution: Dual-Boot and Virtualization with Windows HPC Server 2008 and Linux Bull Advanced Server for Xeon, 2009, available at: http://technet.microsoft.com/ en-us/library/ee621813(v=ws.10).aspx (accessed 26 August 2012).

3. The Windows HPC Server 2008-based Cluster in a Linux Environment, available at: http://go.microsoft.com/fwlink/?LinkId= 135931 (accessed 26 August 2012).

4. Russkiy blog po razrabotke dlya HPC. Razvertyvanie Windows Server 2008 HPC v virtualnoy srede, chast 1: ustanovka i nastroyka golovnogo uzla [Russian blog about developing for HPC, part 1: installation and configuration of a headend]. Available at: http://blogs.msdn.com/b/ru-hpc/archive/2009/09/11/windows-server-2008-hpc-1 .aspx (accessed 26 August 2012).

5. Russkiy blog po razrabotke dlya HPC. Razvertyvanie Windows Server 2008 HPC v virtualnoy srede, chast 2: ustanovka i nastroyka vychislitelnykh uzlov [Russian blog about developing for HPC, part 2: installation and configuration of computational nodes], available at: http://blogs.msdn.com/b/ru-hpc/archive/2009/09/12/ windows-server-2008-hpc-2.aspx (accessed 26 August 2012).

6. Integrating a Windows HPC Server 2008 Cluster into a Linux Environment Microsoft Corporation, 2008.

УДК 004.02

АЛГОРИТМ ПРОВЕДЕНИЯ ПРЕДПРОЕКТНЫХ ИССЛЕДОВАНИЙ И МОДЕЛИРОВАНИЯ ИНФОРМАЦИОННЫХ СИСТЕМ

Д.В. Бутенко, к.т.н., доцент; А.С. Ананьев, аспирант; Л.Н. Бутенко, д.х.н., профессор

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

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