Кластерные системы Linux
Обзор многопроцессорных вычислительных систем. Появление кластерных систем и их преимущества перед традиционными архитектурами вычислительных сетей. Linux как ОС для кластерных систем. Построение простого кластера на примере linux-проекта Beowulf.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 13.01.2012 |
Размер файла | 716,3 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Введение
Кластерные системы различных классов, работающие на Linux, используются в различных образовательных и научных учреждениях, проводящих сложные вычисления, а также в коммерческих компаниях для выполнения ресурсоемких задач. К примеру, кластеры на Linux есть в Центре суперкомпьютерных вычислений Российской академии наук, Московском физико-техническом институте, ведущих научно-исследовательских институтах России и мира.
В проводимых в последнее время исследованиях Linux показывает высочайшие результаты горизонтальной масштабируемости, т.е. в увеличении вычислительной мощности за счет кластеризации серверов. Кроме того, Linux постоянно совершенствуется в области вертикальной масштабируемости (увеличения мощности отдельного сервера) и в настоящее время поддерживает 32-процессорные системы. IBM использует и расширяет возможности Linux и в своих проектах по построению суперкомпьютеров.
Подразделение IBM Research недавно закончила работу над своим суперкластером RoadRunner. Его производительность превысила 1 петафлоп и был преодолен барьер в 1 квадрилион операций в секунду! Благодаря таким высоким возможностям Linux обеспечивает тот уровень гибкости, который необходим компаниям для удовлетворения своих растущих требований сегодня и в перспективе.
Кластерные системы получили высокую степень развития, это демонстрирует тот факт, что на сегодняшний день в списке 500 самых мощных компьютеров мира из 20 первых мест 11 занимают кластерные системы. Министерство обороны США использует кластер из 256 серверов IBM x330 для повышения точности прогнозов погоды. Энергетическая компания Royal Dutch Shell добилась производительности, измеряемой в терафлопах, объединив в кластер с помощью Linux свыше одной тысячи серверов xSeries™. Как отметил эксперт по суперкомпьютерам Фрэнк Джилфивер (Frank Gilfeather) из университета Нью-Мексико: «Кластеры Linux будут определять будущее суперкомпьютеров, и компании должны понять, каким образом эта технология может им помочь».
1. Параллельные вычисления, как предпосылки создания вычислительных систем
Многие задачи требуют вычислений с большим количеством операций, которые занимают значительные ресурсы даже современной технике, более того, можно с уверенностью считать, что каких бы скоростей ни достигла вычислительная техника всегда найдутся задачи, на решение которых потребовалось значительное время. Многие из таких сложных задач требуют, чтобы результат был получен за как можно меньшее время или даже строго ограниченное. К таким задачам, например, относится прогнозирование погоды, обработка изображений и распознание образов при управлении техникой. С другой стороны представляет большую техническую проблему уменьшение времени исполнения каждой операции в микропроцессоре.
В наше время круг задач, требующих для своего решения применения мощных вычислительных ресурсов, постоянно расширяется. Это связано с тем, что произошли фундаментальные изменения в самой организации научных исследований. Вследствие широкого внедрения вычислительной техники, значительно усилилось направление численного моделирования и численного эксперимента. Численное моделирование, заполняя промежуток между физическими экспериментами и аналитическими подходами, позволило изучать явления, которые являются либо слишком сложными для исследования аналитическими методами, либо слишком дорогостоящими или опасными для экспериментального изучения. При этом численный эксперимент позволил значительно удешевить процесс научного и технологического поиска. Стало возможным моделировать в реальном времени процессы интенсивных физико-химических и ядерных реакций, глобальные атмосферные процессы, процессы экономического и промышленного развития регионов и т.д. Очевидно, что решение таких масштабных задач требует значительных вычислительных ресурсов.
Мощности современных процессоров вполне достаточно для решения элементарных шагов большинства задач, а объединение нескольких десятков таких процессоров позволяет быстро и эффективно решать многие поставленные задачи, не прибегая к помощи мэйнфреймов и суперкомпьютеров.
Такой подход носит название параллельных вычислений. Несмотря на кажущуюся простоту решения оно является подчас весьма нетривиальной задачей по проектированию вычислительной техники и разработки алгоритмов. Первая проблема кроется в том, что для того, чтобы задачу можно было решить с помощью параллельных вычислений алгоритм её решения должен допускать распараллеливание, мало того, далеко не каждая задача может быть решена параллельным алгоритмом. Другой же, не менее важной проблемой является построение системы, на которой бы возможна была реализация параллельных вычислений.
2. Обзор основных многопроцессорных вычислительных систем
2.1 Архитектура SMP
Первыми архитектурами построения вычислительных систем являются симметричные мультипроцессорные системы (SMP) и массивно-параллельные системы (MPP).
SMP (symmetric multiprocessing) - симметричная многопроцессорная архитектура. Особенность таких систем является то, что она состоит из массива общей памяти и нескольких однородных процессоров.
Рисунок 1 - Схематический вид SMP-архитектуры
Для формирования общедоступной, масштабируемой, системы памяти в SMP системах, чаще всего используется способ, который заключается в организации доступа к памяти с помощью специального масштабируемого канала процессоры-память. Каждая из операций доступа к памяти интерпретируется как группа последовательных операций по шине процессоры-память. Каждый из процессоров имеет одну или несколько собственных кэш-памятей.
SMP архитектуру можно представить в виде одного компьютера с несколькими равноправными процессорами, одной памятью, одной подсистемой ввода/вывода и одной операционной системой. Каждый из процессоров может делать все, что и другие процессоры смежные с ними. Все процессоры имеют доступ ко всему адресному пространству памяти, могут выполнять любые операции ввода/вывода, а также могут прерывать работу других процессоров .
Главные недостатками SMP-систем:
· необходимость организации канала память-процессоры, который требует высокую пропускную способность;
· низкая масштабируемость систем с общей памятью;
· относительная дороговизна.
Из преимуществ SMP-систем можно назвать:
· простота и универсальность для программирования, так как SMP не накладывает ограничений на модель программирования, следствием этого стало существование эффективных средств автоматического распараллеливания;
· SMP-системы просты в эксплуатации.
2.2 Архитектура MPP
MPP(massive parallel processing) - массивно-параллельная архитектура с разделенной памятью. MMP строится из однородных вычислительных узлов, т.к. память физически разделена, при этом система состоит из отдельных модулей, которые содержат один или несколько процессоров, локальную операционную память (ОП), коммуникационные процессоры (рутеры) или сетевые адаптеры, жесткие диски и/или другие устройства I/O.
Рисунок 2 - Схематический вид MPP-архитектуры
К системе возможно добавление специальных устройства I/O и управляющих узлов. Все узлы связаны коммуникационной средой, построенной, например, на основе коммутатора или высокоскоростной сети.
Главное преимущество MPP это - хорошая масштабируемость, т.к. каждый процессор в данной архитектуре работает только в пространстве своей локальной памяти. Это приводит тому, что пропадает необходимость в пошаговой (тактовой) синхронизации процессоров.
Из недостатков MPP можно выделить:
· отсутствие общей памяти, при этом скорость межпроцессорного обмена заметно снижается. Это также требует специальной техники программирования для реализации обмена сообщениями между процессорами;
· процессоры используют ограниченный объем локальной памяти;
· вследствие этих недостатков возникает потребность использования системных ресурсов, что приводит к высокой стоимости программного обеспечения для массивно-параллельных систем.
2.3 Появление кластерных систем и их преимущества перед традиционными архитектурами вычислительных сетей
Традиционные архитектуры SMP, MPP, а также векторные параллельные системы развиваются достаточно быстрыми темпами. Растет производительность, повышается отказоустойчивость и надежность. Но у всех этих перечисленных архитектур есть один существенный недостаток - цена на созданные системы, часто высокая и недоступная для широкого круга пользователей таких систем - научно-исследовательских, военных и образовательных организаций. Усложнения программных и аппаратных составляющих системы, которые требуются для обеспечения роста темпов производительности, и привели к их высокой стоимости. Кроме того постоянно возрастает потребность в вычислительных ресурсах во многих отраслях практической деятельности, для ее обеспечения не хватает производительности и ресурсов суперкомпьютерных систем, построенных на традиционных архитектурах .
Создание вычислительных систем на основе кластеров задумывалось с целью понижения стоимости программных и аппаратных средств за счет использования в своей архитектуре относительно дешевых технологий, таких как Linux, Ethernet, персональных компьютеров (PC), которые к тому времени стали широко распространятся. Более того решились проблемы нехватки вычислительных ресурсов .
Использование дешевых, массовых технологий стало возможно благодаря прогрессу в области развития компонентов простых вычислительных систем, таких как, центральные микропроцессоры, оперативная память, каналы связи, коммуникационных среды, операционные системы.
Привлекательной чертой кластерных технологий является то, что они позволяют для достижения необходимой производительности объединять в единые вычислительные системы компьютеры самого разного типа, начиная от персональных компьютеров и заканчивая мощными суперкомпьютерами. Широкое распространение кластерные технологии получили как средство создания систем суперкомпьютерного класса из составных частей массового производства, что значительно удешевляет стоимость вычислительной системы. В частности, одним из первых был реализован проект COCOA, в котором на базе 25 двухпроцессорных персональных компьютеров общей стоимостью порядка $100000 была создана система с производительностью, эквивалентной 48-процессорному Cray T3D стоимостью несколько миллионов долларов США.
Если рассматривать кластерные системы с архитектурной точки зрения, то они являются развитием базовых составляющих технологий систем с массовым параллелизмом. Поэтому прослеживалась связь с прогрессом в области сетевых и кластерных технологий, что способствовало созданию эффективных и дешевых коммуникационных решений. Это все в целом и предопределило быстрое внедрение и развитие кластерных вычислительных систем. Также развитию кластерных систем способствовали и другие факторы.
Благодаря высокой степени резервирования и возможности географического разнесения вычислительных мощностей, входящих в состав одной системы, кластеры обладают повышенной отказоустойчивостью, и могут быть устойчивы к локальным природным бедствиям, а также катастрофам другого рода
Преимущества кластера наряду с обычными компьютерами, работающими независимо, очевидны. Благодаря специально разработанным диспетчерским системам пакетной обработки данных, можно распределять задачу на все узлы кластера и использовать для решения задачи ресурсы всей системы. От правильного выбора системного программного обеспечения, его установки и конфигурации зависит как общая производительность кластерной системы, так и её надёжность, удобство пользовательского интерфейса, который также в немалой степени косвенно определяет эффективность выполнения вычислений. Отдельные вычислительные узлы кластера работают под собственной локальной копией операционной системы, в качестве которой в большинстве случаев выбирают один из дистрибутивов ОС Linux, Windows, NetWare, Solaris или UNIX. Для централизованного управления кластерными системами как единым вычислительным массивом, в данный момент используются специализированные системы управления кластерами. Такая система позволяет осуществлять централизованное управление и мониторинг кластера, осуществлять перераспределение потоков задач, выделение под них ресурсов.
кластер архитектура linux
3. Основы кластерных систем
Кластер -- это модульная многопроцессорная система, созданная на базе стандартных вычислительных узлов, соединенных высокоскоростной коммуникационной средой.
Кластерные системы имеют ряд преимуществ перед набором независимых компьютеров. Во-первых, разработано множество диспетчерских систем пакетной обработки заданий, позволяющих послать задание на обработку кластеру в целом, а не какому-то отдельному компьютеру. Эти диспетчерские системы автоматически распределяют задания по свободным вычислительным узлам или буферизуют их при отсутствии таковых, что позволяет обеспечить более равномерную и эффективную загрузку компьютеров. Во-вторых, появляется возможность совместного использования вычислительных ресурсов нескольких компьютеров для решения одной задачи.
3.1 Виды кластеров
Существуют три основных вида кластеров: Fail-over (отказоустойчивые), Load-balancing (балансировочные, распределяющие нагрузку) и High Performance Computing (высокопроизводительные вычислительные).
Отказоустойчивые кластеры представляют собой два или более связанных по сети компьютера с дополнительным выделенным контрольным (heartbeat) соединением между ними. Это выделенное соединение между машинами используется для мониторинга состояния сервисов: как только заданный сервис на одной машине выходит из строя, то другая начинает выполнять её функции.
Концепция балансировочных кластеров заключается в том, что если, допустим, приходит запрос к веб-серверу, то кластер сначала определяет наименее загруженную машину, а затем направляет к ней запрос. Довольно часто балансировочный кластер выполняет и функции отказоустойчивого кластера, хотя для этого и требуется большее количество узлов.
Последний вид - вычислительный кластер, используется специально для центров обработки информации, которым необходима максимально возможная производительность. К подобным системам относится система Beowulf, разработанная именно для исследовательских центров, нуждающихся в большой скорости вычислений. В таких системах также присутствует некоторая функция балансировочных кластеров: для повышения производительности они стараются распределить процессы на большее количество машин. Только в данном случае процесс распараллеливается на части, которые выполняются на многих машинах одновременно, вместо того чтобы выполняться друг за другом по очереди.
3.2 Модели кластеров
Существует несколько технологий реализации параллельных вычислений: (N)UMA, DSM, PVM и MPI - всё это различные схемы параллельных вычислений. Некоторые из них уже реализованы аппаратно, другие только в программном, а некоторые - и в том, и в другом виде.
(N)UMA: здесь машины пользуются разделяемым доступом к памяти, в которой они могут выполнять свои программы. В ядре Linux реализована поддержка NUMA, позволяющая получать доступ к разным областям памяти. При этом задача ядра использовать ту память, которая находится ближе к процессору, работающему с ней.
DSM уже реализована не только в программном виде, но и в аппаратном. Основная концепция DSM в организации абстрактного слоя для физически распределённой памяти.
Технологии PVM и MPI наиболее часто упоминаются, когда речь заходит о GNU/Linux Beowulf кластерах.
MPI - это открытая спецификация библиотеки передачи сообщений. Самой популярной реализацией MPI является MPICH. Второй по популярности после MPICH можно назвать LAM, также являющейся свободной реализацией MPI.
PVM - ещё один родственник MPI, широко используемый при создании Beowulf. PVM работает как пользовательская программа, поэтому никаких изменений в ядро системы вносить не нужно - выходит, что любой пользователь с минимальными правами может запустить PVM.
3.3 Концепция кластерных систем
Рисунок 1 - Кластерная система
Кластер функционирует как единая система, то есть для пользователя или прикладной задачи вся совокупность вычислительной техники выглядит как один компьютер. Именно это и является самым важным при построении кластерной системы.
Первые кластеры компании Digital были построены на машинах VAX. Эти машины уже не производятся, но все еще работают на площадках, где были установлены много лет назад. И наверное самое важное то, что общие принципы, заложенные при их проектировании, остаются основой при построении кластерных систем и сегодня.
К общим требованиям, предъявляемым к кластерным системам, относятся:
1) Высокая готовность
2) Высокое быстродействие
3) Масштабирование
4) Общий доступ к ресурса
5) Удобство обслуживания
Естественно, что при частных реализациях одни из требований ставятся во главу угла, а другие отходят на второй план. Так, например, при реализации кластера, для которого самым важным является быстродействие, для экономии ресурсов меньше внимания придают высокой готовности.
3.3.1 Разделения кластеров по распределению программно-аппаратных ресурсов
В общем случае кластер функционирует как мультипроцессорная система, поэтому, важно понимать классификацию таких систем в рамках распределения программно-аппаратных ресурсов. Рассмотрим её на примере рисунков
Рисунок 2 - Тесно связанная мультипроцессорная система
Рисунок 3 - Умеренно связанная мультипроцессорная система
Рисунок 4. Слабо связанная мультипроцессорная система
3.3.2 Разделение на High Avalibility и High Performance системы
В функциональной классификации кластеры можно разделить на "Высокоскоростные" (High Performance, HP), "Системы Высокой Готовности" (High Availability, HA), а также "Смешанные Системы".
Высокоскоростные кластеры используются для задач, которые требуют значительной вычислительной мощности. Классическими областями, в которых используются подобные системы, являются:
1) обработка изображений: рендеринг, распознавание образов
2) научные исследования: физика, биоинформатика, биохимия, биофизика
3) промышленность (геоинформационные задачи, математическое моделирование)
Рисунок 5 - Высокоскоростной кластер
Кластеры, которые относятся к системам высокой готовности, используются везде, где стоимость возможного простоя превышает стоимость затрат, необходимых для построения кластерной системы, например:
1) биллинговые системы
2) банковские операции
3) электронная коммерция
4) управление предприятием, и т.п....
Сегодня в мире распространены несколько типов систем высокой готовности. Среди них кластерная система является воплощением технологий, которые обеспечивают высокий уровень отказоустойчивости при самой низкой стоимости. Отказоустойчивость кластера обеспечивается дублированием всех жизненно важных компонент. Максимально отказоустойчивая система должна не иметь ни единой точки, то есть активного элемента, отказ которого может привести к потере функциональности системы. Такую характеристику как правило называют - NSPF (No Single Point of Failure, - англ., отсутствие единой точки отказа).
Рисунок 6. Кластерная система высокой готовности с отсутствием точек отказов
Смешанные системы объединяют в себе особенности как первых, так и вторых. Позиционируя их, следует отметить, что кластер, который обладает параметрами как High Performance, так и High Availability, обязательно проиграет в быстродействии системе, ориентированной на высокоскоростные вычисления, и в возможном времени простоя системе, ориентированной на работу в режиме высокой готовности.
Рисунок 7 - Высокоскоростной отказоустойчивый кластер
3.3 Общие принципы построения кластерной архитектуры
Как уже было сказано раньше вычислительный кластер -- это совокупность компьютеров, объединенных в рамках некоторой сети для решения одной задачи (рис.8), которая для пользователя представляется в качестве единого ресурса. Такую концепцию кластера впервые предложила и реализовала в начале 80-х корпорация Digital Equipment, которая и по сей день развивает эту технологию.
Рисунок 8 - Вычислительный кластер
Понятие "единый ресурс" означает наличие программного обеспечения, дающего возможность пользователям, администраторам и прикладным программам считать, что имеется только одна сущность, с которой они работают - кластер.
Например, система пакетной обработки кластера позволяет послать задание на обработку кластеру, а не какому-нибудь отдельному компьютеру. Более сложным примером являются системы баз данных. Практически у всех производителей систем баз данных имеются версии, работающие в параллельном режиме на нескольких машинах кластера. В результате приложения, использующие базу данных, не должны заботиться о том, где выполняется их работа. СУБД отвечает за синхронизацию параллельно выполняемых действий и поддержание целостности базы данных.
Компьютеры, образующие кластер, -- так называемые узлы кластера всегда относительно независимы, что допускает остановку или выключение любого из них для проведения профилактических работ или установки дополнительного оборудования без нарушения работоспособности всего кластера.
В качестве вычислительных узлов в кластере обычно используются однопроцессорные персональные компьютеры, двух- или четырехпроцессорные SMP-серверы. Каждый узел работает под управлением своей копии операционной системы, в качестве которой чаще всего используются стандартные операционные системы: Linux, NT, Solaris и т.п. Состав и мощность узлов может меняться даже в рамках одного кластера, давая возможность создавать неоднородные системы. Выбор конкретной коммуникационной среды определяется многими факторами: особенностями класса решаемых задач, необходимостью последующего расширения кластера и т.п. Возможно включение в конфигурацию специализированных компьютеров, например, файл-сервера, и, как правило, предоставлена возможность удаленного доступа на кластер через Internet.
Из определения архитектуры кластерных систем следует, что она включает в себя очень широкий спектр систем. Рассматривая крайние точки, кластером можно считать как пару ПК, связанных локальной 10-мегабитной сетью Ethernet, так и вычислительную систему, создаваемую в рамках проекта Cplant в Национальной лаборатории Sandia: 1400 рабочих станций на базе процессоров Alpha, связанных высокоскоростной сетью Myrinet.
Таким образом видно, что различных вариантов построения кластеров очень много. При этом в архитектуре кластера большое значение имеют используемые коммуникационные технологии и стандарты. Они во многом определяют круг задач, для решения которых можно использовать кластеры, построенные на основе этих технологий.
4. Linux как ОС для кластерных систем
4.1 Обеспечение параллельных вычислений операционной системой Linux
С точки зрения ядра операционной системы поддержка кластеров и распределенных систем заключается в эффективной работе с сетью, что выражается во взаимодействии с сетевым процессором. Собственно, сейчас практически любой компьютер является многопроцессорным, кроме центрального процессора есть еще микропроцессоры видеоплат, дисков и сетевых плат. Каждый из процессоров работает со своей собственной операционной системой, которая должна корректно взаимодействовать с ядром Linux. Так, в первом драйвере для платы Gigabit Ethernet каждый полученный по сети пакет вызывал прерывание центрального процессора и, в результате, могла возникнуть ситуация, когда прерываний генерировалось так много, что процессор был полностью загружен их обработкой. В следующих версиях эта проблема была решена путем компоновки пакетов в большие блоки. Тем не менее, разработчикам программного обеспечения постоянно приходится помнить о «многопроцессорности» даже однопроцессорного компьютера.
В ОС Linux имеется все необходимое для построения кластеров стандартными средствами -- достаточно для нескольких компьютеров сделать единую файловую систему, например, с помощью NFS, и уже можно задействовать такие стандартные для Unix механизмы взаимодействия процессов, как сокеты и разделяемые файлы. Собственно для составления кластера нужно немного -- балансировка нагрузки на узлы кластера с перемещением процессов с одного узла на другой. Именно этим и занимается свободно распространяемый пакет Beowulf, который пользуется большой популярностью у создателей кластеров.
Рисунок 9 - Системная архитектура кластера высокой надежности
Системная архитектура, приведенная на рис.9, не имеет внутренних одиночных точек отказа. Вне зависимости от того, что выйдет из строя в кластере, система продолжит функционировать. И хотя отказ репликационного канала приведет к невозможности синхронизации данных, это не вызовет отказа всего кластера, значит это не одиночная точка отказа. (Здесь мы рассматриваем реплицирующую систему, однако часто используются и разделяемые диски. Плюсы и минусы каждого варианта будут рассмотрены ниже). Как можно понять из схемы, даже физическое уничтожение первичной системы не повлияет на работоспособность кластера и он продолжит функционировать.
Подсистема реплицирующая данные между двумя удаленными дисками любого типа через сеть реализует очень недорогое хранилище без одиночных точек отказа.
В некоторых решениях представляемых на IT рынке, в отличие от этой технологии, применяются разделяемые диски. Это обычно очень дорогие дисковые массивы RAID с несколькими подключениями, с двойными контроллеры RAID (например, IBM ServeRAID), разделяемые диски с интерфейсом fiber-channel, высокоуровневые хранилища класса IBM Enterprise Storage Server или другие EMC-решения высокого уровня. Эти системы сравнительно дороги (начиная от 50.000$ до миллионов долларов).
Но лишь в наиболее дорогих решениях нет внутренних одиночных точек отказа.
Текущая, почти стандартная для Linux файловая система Extended-2 (ext2) вполне стабильна и работоспособна на одиночной машине. Однако в случае отказа узла файловая система не будет размонтирована корректно, что приведет к занимающей существенное время проверке файловой системы на узле, принимающим ее. Кроме того, нет гарантии, что автоматическая проверка и исправление файловой системы найдет и устранит все ошибки.
Все это плохо отражается на системы высокой доступности, когда пользователь ожидает, что принимающий узел запуститься через несколько секунд (в крайнем случае - минут) без ошибок и без вмешательства оператора. Таким образом, для обеспечения нормального функционирования системы высокой доступности необходима файловая система, работающая по механизму транзакций, основанная на журнализации (Log-structured file system).
Программное обеспечение Кластера Высокой Надежности следит за состоянием серверов в кластере, обычно используя механизм сердцебиения. Этот механизм немного напоминает своей работой процесс Linux init, но для всего кластера. Он отвечает за запуск и останов сервисов, таким образом, что каждый сервис в один момент времени выполняется где-то в кластере.
Механизм сердцебиения использует скрипты аналогично стандартному init для запуска и останова сервисов. Управление ресурсами происходит на основе групп. Ресурсы одной группы всегда выполнятся на одной и той же системе в кластере. В дополнение к обычным скриптам сервисов (как nfsserver и dhcpd), механизм сердцебиения управляет IP адресами с помощью специальных скриптов. Группы ресурсов задаются в конфигурационных файлах.
Как указывалось выше, подсистема репликации удаленных дисков, обеспечивает передачу каждого записанного на первичный диск блока данных ко вторичному диску. Т.е. на ее уровне выполняется обычное зеркалирование данных с одной машины на другую в реальном времени. Первичная система задается с помощью утилиты. Устройство подсистемы репликации представляет собой ресурс, который необходимо запускать или останавливать(делать первичным или вторичным) по мере надобности.
Следует отметить, что на кластере нужно исполнять приложения, которые уже написаны с учетом параллельных вычислений и «знают», что разные части программы будут выполняться на разных узлах кластера. Основные стандартные компоненты современных многоуровневых систем, как правило, соответствуют этим требованиям. Так сервер Apache каждый запрос отрабатывает отдельным потоком, и может быть эффективно использован как на одной SMP-машине, так и на сбалансированном по нагрузке кластере. Серверы приложений и баз данных, такие как WebSphere, DB2, Oracle, MySQL, Postgress, также могут быть сконфигурированы с учетом многопроцессорности (а иногда -- и многокомпьютерности), что позволяет запускать их на кластере и балансировать нагрузки на каждый узел.
Авторами книги «Параллельные вычисления» Валентином и Владимиром Воеводиными была проведена большая работа по изучению существующих программ, написанных на языке Фортран для решения задач минимизации, линейной алгебры и математической физики. На основе этого исследования ими была разработана теория изучения и выделения параллельной структуры программ для определенного ими линейного класса алгоритмов. Оказалось, что среди 12 тыс. строк, изученных ими алгоритмов, к линейному классу можно свести около 90-95% текстов. Таким образом, постепенно появляются теоретические основы для выделения параллельной структуры алгоритмов с последующей их реализацией в виде параллельных программ. В то же время часто в бизнес-приложениях решаются комбинаторные задачи, которые связаны с изучением небольшой выборки из достаточно большого массива информации.
Собственно, многие ресурсоемкие задачи представляют собой достаточно короткие фрагменты кода, обрабатывающие небольшую выборку данных из большого массива. Такие фрагменты можно выносить на удаленные компьютеры в отдельные потоки и только выдавать им новые порции данных, получать и обрабатывать результат. Именно так и устроено большинство распределенных вычислительных систем, например, seti@home. В них есть центральный сервер, раздающий задания множеству клиентов, получающий и обрабатывающий результаты. Клиенты в большинстве своем работают только в фоновом режиме при минимальной загрузке центрального процессора. Хотя все приложения, которые требуют распределенных вычислений, индивидуальны, имеется базовый набор компонентов, позволяющих упростить создание необходимой инфраструктуры. В качестве примера можно привести свободно распространяемый пакет Globus Toolkit, который позволяет разрабатывать кроссплатформные распределенные системы. Таким образом, для Linux как для наиболее распространенного представителя семейства Unix сегодня имеется полный спектр решений для параллельных вычислений.
Для взаимодействия процессов, принадлежащих одному приложению, но работающих на разных узлах кластера можно использовать как стандартные для Unix механизмы взаимодействия: потоки, трубы, разделяемые файлы, так и специализированные библиотеки передачи сообщений. Для Linux самыми популярными из таких библиотек являются PVM и MPI, хотя они могут обеспечивать взаимодействие компонентов, работающих под управлением разных операционных систем. Если приложение написано с их использованием, то оно идеально подходит для работы на кластере.
Поговорим более подробно про коммуникационную библиотеку PVM.
PVM должна быть установлена на всех узлах кластера. Вся параллельная машина состоит из демона pvmd и консоли pvm. Назначение опций запуска демона можно узнать, выполнив команду man pvmd.
Для запуска консоли необходимо запустить на центральной машине демон pvmd и выполнить команду pvm. С помощью консоли будет происходить управление всем кластером.
Команду conf показывает конфигурации кластера. Например можно увидеть:
Листинг
pvm> conf
conf
1 host, 1 data format
HOST DTID ARCH SPEED DSIG
dhsilabs 40000 LINUX 1000 0x00408841
Из листинга 1 видно, что сейчас кластер состоит из одной машины - центрального узла, который работает под управлением Linux. Можно добавить в кластер еще два узла. Добавление узлов осуществляется с помощью команды:
add hostname
После успешного добавления узла в кластер он должен быть отображен в списке узлов кластера. Теперь уже можно запускать программы, которые поддерживают PVM. Примеры таких программ можно найти в каталоге $PVM_ROOT/bin/$PVM_ARCH/. Можно запустить самую простую программу - hello. Прежде чем запустить ее, нужно сделать несколько замечаний:
Вы не можете запускать процессы прямо из консоли pvm. Консоль служит лишь для управления кластером.
Запуск задачи осуществляется обычным способом - из консоли операционной системы. Но «распараллеливаться» будут лишь те процессы, которые поддерживают pvm. С помощью команды spawn также можно породить задачу (см. ниже)
При запуске hello вы должны увидеть сообщение
hello, world from hostname,
где hostname - это узел кластера. Другими словами все узлы кластера должны поприветствовать вас.
Более интересной является программа gexample. После запуска нужно ввести два аргумента: n и число процессоров. Не вдаваясь в математические подробности, она рассчитывает сумму от 1 до n и факториал числа n. Второй аргумент определяет количество процессоров, которые будут задействованы в вычислении. В нашем случае второй аргумент равен трем. Просмотреть список всех задач можно с помощью команды ps -a. Эту команду нужно вводить в консоли pvm, а не в консоли операционной системы! Породить задачу можно также с помощью команды spawn, которая подробно рассмотрена ниже. Назначение всех команд консоли pvm представлено в таблице 1.
Таблица 1. add hostname
Команда |
Описание |
|
add hostname |
Добавляет узел в кластер |
|
alias |
Определяет псевдоним для команды |
|
conf |
Выводит текущую конфигурацию кластера |
|
delete hostname |
Удаляет узел из кластера |
|
halt |
Останавливает кластер (точнее завершает процесс pvmd - узлы при этом не выключаются, а продолжают работать) |
|
help [command] |
Выводит список всех команд или краткую справку по указанной команде |
|
id |
Выводит идентификатор процесса pvm (консоли) |
|
jobs |
Выводит список выполняемых задач |
|
kill TID (task id) |
«Убивает» задачу |
|
mstat host, tid |
Показывает состояние узлов |
|
ps -a |
Выводит список всех задач параллельной машины |
|
pstat task-tid |
Показывает состояние задачи |
|
reset |
Сброс - завершаются все задачи |
|
setenv |
Отображает или устанавливает переменные окружения |
|
sig signum task |
Посылает сигнал задаче |
|
spawn [opt] a.out |
Порождает задачу. |
|
trace |
Устанавливает/отображает маску трассировки событий. Более подробное объяснение вы найдете в документации. |
|
unalias |
Удаляет ранее созданный псевдоним команды |
|
version |
Отображает версию библиотеки libpvm |
В таблице 1 описаны не все команды консоли pvm, обо всех остальных можно прочитать, введя команду man pvm.
Одна из самых интересных команд - spawn. Данная команда порождает задачу. С ее помощью можно указать некоторые параметры задачи, например, узел, на котором она должна выполняться.
spawn [opt] a.out
a.out - любой исполнимый бинарный файл - программа, которая даже не поддерживает библиотеку libpvm. Для таких программ также можно указать, на какой машине она будет выполняться. В среде Windows параметр a.out - это exe или com - файл.
Можно указать такие параметры команды spawn.
Таблица 2
Параметр |
Описание |
|
-(count) |
Число задач. По умолчанию - 1. |
|
-(host) |
Определяет узел, на котором будет выполняться задача |
|
-(ARCH) |
Задает архитектуру узлов, на которых будет выполняться задача. |
|
-? |
Включает отладку (debugging) |
|
-> |
Перенаправляет стандартный вывод задачи на консоль |
|
->file (*) |
Перенаправляет стандартный вывод задачи в файл |
|
->>file (*) |
Дописывает стандартный вывод задачи в файл |
4.2 Выбор Linux для кластерных систем
При выборе операционной системы для кластерной системы основываются прежде всего на рекомендациях разработчиков программного обеспечения. Однако, если есть выбор, то при прочих равных условиях предпочтение чаще всего отдают Linux.
Под Linux доступно огромное количество серверного ПО, компиляторов, библиотек, средств отладки и пр. Большое количество программного обеспечения имеется в свободном доступе, для многих программ есть исходные коды и обширная документация. Плюсом Linux является "прозрачность" для пользователя и системного администратора, что позволяет быстрее и проще разрешать все возникающие проблемы.
Основой кластера является не операционная система, а коммуникационная среда (PVM, MPI), обеспечивающая возможность частям параллельной программы, выполняющимся на разных компьютерах, эффективно взаимодействовать между собой. Рассмотренные ранее средства для построения кластера (PVM, MPI) имеют реализации как для операционных систем семейства UNIX (Linux, FreeBSD и т.п.), так и для систем фирмы Майкрософт. Поэтому, в принципе кластер может работать под Windows, причем трудозатраты на установку коммуникационной среды будут такими же как и в варианте с UNIX, то есть небольшими. Основная трудность заключается в том, что под Winodws администраторам сложнее научиться параллельные программы.
Следует заметить, что подавляющее большинство более-менее серьезных кластеров в мире работает все же в среде UNIX. Важно так же заметить что поскольку библиотеки для параллельных вычислений MPICH/MPI являются кроссплатформенными, то выбор операционной системы (Windows vs Linux) не важен. Однако следует и учесть тот факт, что Linux является заметно менее ресурсоемкой системой. Например при использовании PelicanHPC GNU Linux система занимает в оперативной памяти не более 40Мб! Вся остальная память доступна параллельной программе. Это очень важный фактор в том случае, когда кластер используется с целью моделирования процессов на как можно более подробной сетке.
Специалисты также отмечают один немаловажный аспект, проявляющийся при попытке перенести свою работу из Windows в Linux. Имеются в виду психологический и административный факторы. Человек, приходящий в мир Linux, испытывает чувство растерянности и неуверенности в том, что он сможет найти в новой системе привычные для него инструменты. Но давно прошли те времена, когда работа в UNIX была уделом компьютерных гуру, разговаривающих на непонятном языке и пишущих программы в машинных кодах. Современный уровень развития Linux позволяет чувствовать себя пользователю не менее комфортно, чем в Windows.
В настоящее время основной операционной системой, используемой во всем мире, является операционная система Windows. При всех достоинствах системы ей присущи некоторые недостатки, существенно затрудняющие ее использование в кластерных системах. К таким недостаткам можно отнести:
1) малую защищенность системы от неквалифицированных действий пользователей;
2) подверженность системы различного рода "взломам" при сетевом использовании и подверженность вирусам;
3) неустойчивость работы системы, проявляющаяся в зависаниях и потере информации;
4) большая стоимость лицензий на использование систем;
5) закрытость операционной системы, затрудняющая написание программ в ее среде;
6) большие требования к возможностям компьютера (память, быстродействие);
7) частая смена версий ОС (примерно каждые два года).
Использование Linux в качестве базовой операционной системы для построения кластера позволит:
1) более эффективно использовать имеющиеся вычислительные средства;
2) снизить затраты на обслуживание всей системы (благодаря возможностям к гибкой настройки и четкого отслеживания прав доступа различных пользователей);
3) решить проблемы с необходимостью приобретения лицензий на используемое ПО;
4) сделать работу компьютеров в сети более надежной и устойчивой;
4.3. Примеры LINUX - кластеров
4.3.1 Проект BEOWULF
Одним из проектов развития параллельных распределенных вычислений является Beowulf, целью которого является применение технологии распределенных вычислений на сетях кластеров широко распространенных персональных ЭВМ. Основанием для такого проекта являлась широкое распростанение ПЭВМ, их дешивизна и увеличившаяся в достаточной степени производительность. В результате выполнения этого проекта на различных задачах была продемонстрирована пиковая производительность кластеров из 16 ПЭВМ доходящая до 1 Гоп/сек и суммарная емкость дискового простанства существенно превышающая возможности сравнимых по стоимости единичных ЭВМ.
Проект возник в научно-космическом центре NASA - Goddard Space Flight Center (GSFC), точнее в созданном на его основе CESDIS (Center of Excellence in Space Data and Information Sciences).
Проект Beowulf начался летом 1994 года сборкой в GSFC 16-процессорного кластера (на процессорах 486DX4/100MHz, 16MB памяти и 3 сетевых адаптера на каждом узле, 3 "параллельных" Ethernet-кабеля по 10Mbit). Данный кластер, который и был назван "Beowulf", создавался как вычислительный ресурс проекта Earth and Space Sciences Project (ESS).
Beowulf это мультикомпьютерная архитектура, которая предназначена для проведения параллельных вычислений. Такая система обычно состоит из одного server node (сервера) и нескольких (в самом простом случае - одного) client nodes (клиента), которые соединены между собой сетью Ethernet. Параллельная структура Beowulf строится из обычных общеупотребимых аппаратных средств, таких как персональные компьютеры класса IBM PC, стандартные Ethernet-адаптеры и маршрутизаторы. Комплекс работает под операционной системой Linux.
Отказ от использования каких-либо специальных hardware-компонентов делает архитектуру Beowulf легко воспроизводимой и имеющей уникальное соотношение быстродействие/стоимость В число программных компонентов Beowulf кроме ОС Linux входят так же Parallel Virtual Machine (PVM) и Message Passing Interface (MPI). Сервер кластера управляет работой всего кластера и обслуживает файловые системы клиентских машин. Машина-сервер выполняет так же роль консоли кластера и моста в остальной intranet/internet. Крупные системы Beowulf могут иметь больше одного сервера и/или иметь несколько узловых машин (клиентов), посвященных исключительно выполнению отдельных задач, например консоль кластера или станция мониторинга системы. В болшинстве случаев клиенты кластера - очень тупые и несамостоятельные машины. И чем тупее они, тем лучше для кластера. Клиенты конфигурируются и управляются сервером кластера и делают только то, что он им задает. В случае бездисковой конфигурации клиенты не знают даже их IP-адреса или имена до тех пор, пока пока их не установит сервер. Одно из главных отличий между Beowulf и Cluster of Workstations (COW) является то, что Beowulf ведет себя больше как одиночная машина нежели чем как много рабочих станций. В большинстве случаев клиенты не имеют мониторов и клавиатур и доступны только через remote login или, возможно, через serial terminal.
Другими словами, клиентские машины кластера выступают в роли просто дополнительных процессоров и модулей памяти.
Beowulf это не специальный пакет программ, новая сетевая топология или новая версия ядра. Beowulf - это технология кластеризации Linux-машин, технология формирования виртуального параллельного суперкомпьютера. Хотя имеются много программных пакетов, таких как kernel modifications, PVM- и MPI-библиотеки, и средства конфигурации, делающие архитектуру Beowulf быстрее, легче в настройке, и намного более годным к употреблению, Вы можете построить машину класса Beowulf, используя только стандартную дистрибуцию Linux без каких-либо дополнительных пакетов программ. Если у Вас есть два сетевых компьютера с расшаренным через NFS файловой системой /home, и вы доверяете этим компьютерам запускать друг у друга remote shells (rsh), тогда можно сказать, что у Вас есть простейшая двухнодовая Beowulf машина.
Кластер состоит из отдельных машин (узлов) и объединяющей их сети (коммутатора). Кроме ОС, необходимо установить и настроить сетевые драйверы, компиляторы, ПО поддержки параллельного программирования и распределения вычислительной нагрузки.
4.3.2 Проект Mosix
Mosix - это пакет кластерообразующих программ, предназначенный для расширения ядра Linux . Расширенное ядро позволяет создавать кластеры любых размеров на базе семейства x86, Pentium процессоров. Для запуска приложений в Mosix кластере не требуется их модификация или перекомпиляция , а также не нужны дополнительные библиотеки. Ядром Mosix управляют адаптивные алгоритмы распределения ресурсов, эти алгоритмы используют приоритетное перемещение процессов, чтобы назначать и переназначать процессы среди узлов, выбирая наилучший среди доступных узлов, по признаку наименьшей занятости. Проще говоря, Mosix распределяет процессы на разные узлы кластера, при этом процесс мигрирует на наименее занятый узел.
Mosix начинался на компьютерах PDP-11 в 1977/79 годах и назывался:"UNIX with Satellite Processors" в качестве ОС использовалась Bell Lab's Unix Level 6 В 1981-83/84 годах вышли две версии под названием MOS на PDP-11 и CADMUS/PCS MC68K под обновленной ОС Bell Lab's Unix 7 с BSD 4.1. В 1987/88 вышел NSMOS на NS32332 и ОС AT&T Unix system V release 2 Также в 1988 году появилась версия под VAX, для которой впервые было использовано название MOSIX, использовалась таже ОС что и для NSMOS Первая реализация на семействе X86/Pentium появилась в 1992/93 под BSD/OS. Новая реинкарнация на X86/Pentium вышла уже на LINUX в 1998/99.
Программный пакет openMosix позволяет превратить в кластер компьютеры под управлением GNU/Linux, объединённые в сеть. Такой кластер позволит автоматически балансировать нагрузку на узлах, при этом новые узлы могут присоединяться или покидать кластер без прерывания его работы. Нагрузка на узлы распределяется исходя из скорости соединения и мощностей процессоров.
Поскольку openMosix является частью ядра и полностью совместим с Linux, то и все пользовательские программы, файлы и прочие ресурсы будут работать также, как и раньше, без каких-либо изменений. Простой пользователь даже не заметит разницы между Linux и openMosix системой. В целом картину можно представить, как будто весь кластер работает как одна (быстрая) GNU/Linux система.
ОpenMosix представляет собой патч для ядра Linux, который, тем не менее, обеспечивает полную совместимость с платформой IA32. Благодаря внутреннему механизму балансировки нагрузки процессы могут мигрировать на другие узлы кластера. В результате получается выигрыш в производительности при использовании ресурсов нескольких машин. К тому же кластер постоянно самостоятельно пытается оптимизировать обработку процессов (естественно, что администратор системы может вмешаться в процесс автобалансировки в любое время).
Такой механизм прозрачной миграции процессов позволяет представить кластер как одну большую SMP-систему с множеством процессоров на доступных узлах кластера (конечно, следует учитывать и количество процессоров в двух и четырёх процессорных системах). К тому же openMosix предоставляет оптимизированную файловую систему (oMFS) для HPC-приложений, которая, в отличие от NFS, поддерживает кэширование, отметки о времени и ссылки.
Миграция процессов. ОpenMosix позволяет запустить процесс на одной машине, а потом обнаружить, что фактически он выполняется на другой машине кластера. Каждый процесс имеет свой собственный UHN, на котором он был создан.
Миграция означает, что процесс разделяется на две части: пользовательскую и системную. Пользовательская часть будет перемещена на другой узел, в то время как системная останется на UHN. Системная часть иногда называется представительским процессом: такой процесс отвечает за разрешение большинства системных вызовов. Задачей же openMosix является поддержка связи между этими двумя процессами.
Файловая система openMosix (oMFS).OMFS является частью openMosix и позволяет обеспечить доступ к удалённым файловым системам кластера точно также, как и к любым другим смонтированным файловым системам. Таким образом, можно, к примеру, файловые системы всех узлов смонтировать в /mfs, и в результате получится, что содержимое /home третьего узла доступно с любой машины в каталоге /mfs/3/home. И Mosix, и openMosix поддерживают кластерную файловую систему MFS с опцией DFSA (Direct File System Access), что позволяет получить доступ ко всем локальным и удалённым файловым системам узлов в Mosix или openMosix кластере.
4.3.3 Проект Avalon
В 1998 году в Лос-аламосской национальной лаборатории астрофизик Michael Warren и другие ученые из группы теоретической астрофизики построили суперкомпьютер Avalon, который представляет из себя Linux-кластер на базе процессоров DEC Alpha/533MHz. Avalon первоначально состоял из 68 процессоров, затем был расширен до 140. В каждом узле установлено 256MB оперативной памяти, EIDE-жесткий диск на 3.2GB, сетевой адаптер от Kingston (общая стоимость узла - $1700). Узлы соединены с помощью 4-х 36-портовых коммутаторов Fast Ethernet и расположенного "в центре" 12-портового коммутатора Gigabit Ethernet от 3Com.
Общая стоимость Avalon - $313 тыс., а его производительность по LINPACK (47.7 GFLOPS) позволила ему занять 114 место в 12-й редакции списка Top500 (рядом с 152-процессорной системой IBM SP2). 70-процессорная конфигурация Avalon по многим тестам показала такую же производительность, как 64-процессорная система SGI Origin2000/195MHz стоимость которой превышает $1 млн.
В настоящее время Avalon активно используется в астрофизических, молекулярных и других научных вычислениях. На конференции SC'98 создатели Avalon представили доклад, озаглавленный "Avalon: An Alpha/Linux Cluster Achieves 10 Gflops for $150k" и заслужили премию по показателю цена/производительность ("1998 Gordon Bell Price/Performance Prize").
4.3.4 Современный Linux-кластер IBM Roadrunner
Право называться самым быстрым компьютером в мире получил IBM Roadrunner - суперкомпьютер, установленный в Национальной Лаборатории Лос Аламоса (США). Производительность Roadrunner достигла 1,026 петафлопс (пиковая - 1,376 петафлопс), что позволяет называть его первым компьютером, преодолевшим барьер в 1 квадриллион операций с плавающей точкой в секунду.
Также разработчики называют его первым гибридным суперкомпьютером, в котором согласованно работают процессоры Cell BE и AMD Opteron.
Roadrunner состоит из двухсот семидесяти восьми шкафов IBM BladeCenter (каждый размером с холодильник), "напичканных" 6562 двухъядерными чипами AMD Opteron, 12240 процессорами IBM PowerXCell 8i и модулями памяти с общей емкостью 98 терабайт. Для объединения всех компонентов в единую систему было использовано около десяти тысяч соединений Infiniband и Gigabit Ethernet, что потребовало более 88 километров кабелей. Вся аппаратура занимает площадь 483 квадратных метров и весит почти 227 тонн.
Подобные документы
Основные понятия операционных систем. Современное оборудование компьютера. Преимущества и недостатки операционной системы Linux. Функциональные возможности операционной системы Knoppix. Сравнительная характеристика операционных систем Linux и Knoppix.
реферат [1,5 M], добавлен 17.12.2014История создания и общая характеристика операционных систем Windows Server 2003 и Red Hat Linux Enterprise 4. Особенности установки, файловых систем и сетевых инфраструктур данных операционных систем. Использование протокола Kerberos в Windows и Linux.
дипломная работа [142,7 K], добавлен 23.06.2012UNIX - одна з найпопулярніших в світі операційних систем. Ключеві риси Linux. Порівняльні характеристики 32-розрядних операційних систем. Поверхневий огляд характеристик ядра Linux. Програмні характеристики: базові команди і утиліти, мови програмування.
курсовая работа [33,3 K], добавлен 07.12.2010Понятие операционной системы. Фундаментальные особенности Linux. Обзор основных качеств. Программное и аппаратное обеспечение, безопасность системы. Преимущества ОС - общественная доступность проекта, открытость, бесплатность, развитая оболочка.
реферат [63,2 K], добавлен 09.01.2011Приклади популярних файлових систем, а також їх класифікація. Механізм просторового запису файлів. Система ISO 9660 для оптичних накопичувачів. Режими журналювання. Порівняння файлових систем Windows XP та Linux. Поняття жорсткого посилання в Linux.
реферат [30,2 K], добавлен 07.06.2014Linux – одна из наиболее популярных распространяемых бесплатно операционных систем. Работа с базовым ограниченным набором программ по умолчанию. Характеристика основных программ, которые расширяют возможности операционной системы Linux для пользователя.
презентация [486,5 K], добавлен 09.10.2013Понятие и внутренняя структура операционных систем, их классификация и разновидности, предъявляемые требования, этапы становления и развития, функциональные особенности. Описание и назначение базовых компьютерных систем: DOS, Windows, Linux, Mac.
курсовая работа [44,9 K], добавлен 14.12.2013Основные моменты истории операционных систем, связывающих аппаратное обеспечение и прикладные программы. Характеристика операционной системы Microsoft Windows Seven, анализ операционной системы Linux. Преимущества и недостатки каждой операционной системы.
курсовая работа [63,0 K], добавлен 07.05.2011Базовые инструменты Linux Shell и Make. Скриптовый язык Shell. Make как утилита, автоматизирующая процесс преобразования файлов из одной формы в другую. Встраиваемые системы Buildroot и OpenWrt на базе Linux. Переменные и блоки define BuildPackage.
курсовая работа [27,4 K], добавлен 19.01.2016Понятие и сущность операционных систем, особенности их возникновения. История создания операционной системы Linux, ее основные характеристики, сетевые возможности. Анализ бизнес-модели производства и распространения "свободного" программного обеспечения.
реферат [35,8 K], добавлен 05.04.2010