Сложность задач, стоящих перед ИТ-службами в ситуации неотвратимого наступления Internet-бизнеса, заставляет сегодня искать пути консолидации компьютерных ресурсов. Возникает необходимость одновременно поддерживать нескольких критичных для компании приложений, вводить в действие новые решения и при этом держать все под неусыпным контролем, гарантируя высокую доступность конфигурации, обеспечивающей бизнес. При этом очень желательно не увеличивать затраты на ИТ и всеми силами сдерживать рост сложности системы.
К счастью, эти трудности оказываются вполне преодолимы, если прибегнуть к «новым мэйнфреймам» - высокопроизводительным Unix-серверам, допускающим работу в режиме разбиения на системные разделы.
Исследования International Data Corp. показывают, что консолидация людских ресурсов, процессов и оборудования дает ИТ-подразделению семикратное сокращение расходов только на управление персоналом. Консолидация полнофункциональных серверов в единой системе - а именно этого позволяет добиться технология разбиения - дает возможность построить надежный, обладающий высоким уровнем готовности, производительный центр данных, эффективно управляемый и способный адаптироваться к изменению бизнес-требований.
«Новые мэйнфреймы» были упомянуты не случайно - впервые системное разбиение было реализовано именно на этих машинах. Сейчас корпорация IBM перенесла созданную для System 390 технологию логического разбиения (LPAR) на свои серверы AS/400, а ведущие производители Unix-серверов: Compaq, Sun Microsystems, SGI, Hewlett-Packard, Fujitsu Siemens Computers предлагают в рамках одного SMP-сервера собственные решения для поддержки нескольких независимых серверных систем - каждая со своими процессорами, памятью, дисками и экземпляром операционной системы. Получают распространение механизмы создания независимых программных разделов, обеспечивающих распределение и управление ресурсами для разных приложений и групп пользователей.
Что есть разбиение?
Разработанная для мэйнфреймов концепция разбиения предусматривает сегментирование ресурсов системы, создание в той или иной степени изолированных друг от друга разделов, обеспечивающих независимую работу разных приложений на одной машине с практически нулевой вероятностью их влияния друг на друга. Ошибки в работе приложения, функционирующего в одном разделе, не отразятся на работе прикладных систем в других разделах, а поскольку каждый раздел содержит все необходимые компьютерные ресурсы, исключаются конфликты между этими приложениями по доступу к памяти, подсистеме ввода-вывода и т.д.
Такой подход позволяет оптимально распределять ресурсы приложениям, исходя из их потребностей, за счет чего растет производительность приложений. Разбиение обеспечивает хорошую масштабируемость, упрощает управление конгломератом серверов (все они объединены в одном «железном ящике»), делает прикладную среду более безопасной (аппаратные сбои и ошибки приложения изолируются в разделе), снижает затраты на аппаратное обеспечение.
Для современных SMP-серверов практикуются два типа разбиения - системное и разбиение на уровне ресурсов приложений.
Системные разделы
Системное разбиение (system partitioning) позволяет создать на одном аппаратном сервере несколько разделов, каждый из которых представляет собой полнофункциональную серверную систему и работает под управлением собственного экземпляра ОС. Системный раздел включает все ресурсы, необходимые для автономной работы ОС - процессоры, оперативную память, устройства ввода-вывода. В ряде случаев наличие нескольких одновременно работающих экземпляров ОС существенно облегчает жизнь. Помимо уже неоднократно упомянутой консолидации по сути автономных систем под одной «крышей», позволяющей снизить расходы и повысить управляемость системы, системные разделы дают возможность одновременно с работающим приложением тестировать новые версии приложений или осуществлять миграцию к новым версиям ОС и приложений.
Кроме того, системные разделы - это механизм изоляции важных корпоративных приложений, решающих задачи разных подразделений. Провайдеры услуг, в особенности их новый класс - провайдеры приложений, должны не только обеспечивать своих клиентов определенной квотой корпоративных ресурсов, но и гарантировать недоступность этих ресурсов для приложений, обслуживающих других клиентов. Данная проблема также эффективно решается с помощью системных разделов.
С помощью специального программного обеспечения (например, TruCluster Server для серверов Compaq) можно также построить внутренний кластер системных разделов, который гарантирует необходимый уровень доступности отдельных разделов или системы в целом.
Что в итоге? Объединение в одном сервере стадий выполнения, разработки и тестирования разных приложений, которое обеспечивается системным разбиением, означает более эффективное использование компьютерных ресурсов. Изоляция аппаратных и программных сбоев рамками раздела делает систему в целом более надежной. Возможность поддержки специфических требований к защите критичного приложения в данном разделе делает более безопасной информационную инфраструктуру. Консолидация серверов в одной аппаратной системе уменьшает потребность в поддержке разных платформ и соответственно снижает затраты компании на информационную инфраструктуру.
Вообще говоря, для разбиения сервера на разделы необходимо его сначала выключить. Однако основные производители таких систем реализуют более продвинутую возможность - динамическое разбиение, создание аппаратных разделов без перезагрузки системы. В случае статического разбиения системные ресурсы, которые войдут в раздел (процессоры, память, шины ввода-вывода), определяются до запуска ОС, а их конфигурация не может быть изменена в ходе работы. Поддержка динамических разделов позволяет администратору создавать и удалять разделы, а также менять состав их ресурсов в оперативном режиме. При добавлении ресурсов к системному разделу ядро и драйверы операционной системы распознают появление новых ресурсов и выполняют переход к состоянию, в котором они могут использоваться. Во время динамического удаления ресурсы становятся недоступны для приложений, работающих в данном разделе, что уменьшает нагрузку на процессор, оперативную память и количество ресурсов ввода-вывода. Надо отметить, что сокращение числа доступных устройств ввода-вывода может привести к нарушению нормальной работы приложения или драйвера устройства, если они будут пытаться продолжать взаимодействие с физически удаленным устройством. Поэтому необходим специальный дизайн многопоточных соединений с устройствами ввода-вывода и продуманный алгоритм их использования приложениями.
Динамическое разбиение сервера обеспечивает динамическое управление рабочей нагрузкой - конфигурацию системы можно менять в зависимости от ситуации, передавая приложениям в период пиковой нагрузки дополнительное число процессоров. Sun, Compaq и НР уже поддерживают технологию динамического разбиения своих серверных систем, а в серверах Fujitsu Siemens реализация динамического разбиения запланирована в конце текущего года.
Где и как разбиение серверов приносит пользу
Разбиение серверов для выполнения на одной физической аппаратной системе нескольких экземпляров ОС или их разных версий имеет ряд важных потенциальных применений. Прежде всего это эффективное средство консолидации серверных систем, снижающее затраты по сравнению с поддержкой нескольких автономных серверов. Администратор получает возможность с единой консоли управлять, по сути, независимыми системами и оптимально распределять ресурсы приложениям в разных разделах. В семействе серверов Primepower, например, управляющие продукты отвечают за загрузку и останов системы, мониторинг ошибок аппаратных конфигураций и системных состояний, инсталляцию различного ПО и предоставляют унифицированный набор средств анализа для системных настроек отдельных доменов. Если реализовано динамическое разбиение, приложение сможет получать дополнительные ресурсы (процессоры и память) в те периоды цикла эксплуатации, когда потребность в них возрастает (рис. 2). Благодаря этому система станет производительней без ущерба для работы остальных задач.
Одним из основных преимуществ архитектуры серверов со средствами системного разбиения является возможность отделить среду работающих приложений от процессов разработки и тестирования новых приложений. Как правило, для того чтобы распараллелить эксплуатацию и тестирование, компания вынуждена приобретать автономные физические системы для каждой задачи. Но если в работе используются критичные приложения с высокими требованиями к производительности, надежности и доступности аппаратных платформ, такой подход выливается в значительные траты - приходится поддерживать два мощных сервера или два кластера.
Разбиение сервера обеспечивает гораздо более простое и экономичное решение. Системные разделы изолированы друг от друга и гарантируют, что приложения в разных разделах не смогут повлиять друг на друга или использовать ресурсы из другого раздела. Кроме того, поддержка разных версий одной ОС или разных операционных систем в разных разделах, как в серверах AlphaServer GS, позволяет с минимальными затратами на аппаратуру организовать одновременное выполнение текущих бизнес-приложений и разработку и тестирование прикладных систем под управлением более продвинутых версий ОС (рис.3). Аналогично можно, не прерывая эксплуатации рабочей системы в одном разделе, осуществлять миграцию к новой версии ОС или приложения, тестируя ее в другом системном разделе.
Динамическое системное разбиение может использоваться для сопровождения и восстановления в оперативном режиме. Если определенные серверные компоненты вызывают опасения, администратор сможет специально для них создать новый раздел и заняться диагностикой и разрешением проблемы в изолированном разделе, не затрагивая работы остальных приложений. Динамическое разбиение делает возможным «горячую замену» таких критичных компонентов, как процессоры и модули оперативной памяти, в то время как в обычных серверах замена неисправных модулей без выключения системы осуществляется, как правило, только для дисков в массиве RAID.
С другой стороны, с помощью разделов можно качественно повысить надежность машины, объединив системные разделы в кластер. Такая интересная возможность реализована в серверах AlphaSever GS. Для приложения, которое выполняется на такой машине, можно будет гарантировать самый высокий уровень доступности, поскольку сбой аппаратуры в одном разделе не повлияет на другие. Кластеризацию системных разделов, как и кластеризацию автономных серверов поддерживает специальное ПО TruCluster Server, интегрированное с ОС Tru64 UNIX. Оно обеспечивает автоматическую балансировку нагрузки и поддерживает единую файловую систему для всего кластера. Балансировка осуществляется путем динамического перераспределения клиентских соединений - администратор определяет, какой раздел обладает потенциалом обрабатывать наибольшее число соединений и при необходимости меняет нагрузку на серверы или разделы в оперативном режиме. Тем самым обеспечивается максимальная производительность приложения и оптимальное использование ресурсов. А реализация технологии единого образа системы упрощает и удешевляет управление кластером.
TruCluster Server позволяет объединять в кластер не только системные разделы одной машины, но и системные разделы на разных серверах. Если приложение становится более требовательным к ресурсам и надежности, кластер из системных разделов может быть динамически расширен путем добавления в него новых разделов.
Разбиение сервера позволит реализовать на одной машине проекты разных корпоративных подразделений или пользовательских групп.
Другой пример - провайдер приложений (Application Service Provider — ASP) предоставляет, например, услуги пяти клиентам. Каждому из них требуется автономный сервер, информация разных клиентов должна быть изолирована друг от друга, а у приложений не может возникать конфликтов по доступу к данным. С другой стороны, провайдеру нужно иметь резервы для дальнейшего расширения своего бизнеса, обслуживания новых клиентов, увеличения объема предоставляемых ресурсов. Разбиение сервера позволяет решить обе задачи без лишних затрат. Провайдер создает пять системных разделов, например, на сервере GS320, получает пять изолированных логических систем, каждая из которых работает под управлением собственного экземпляра Linux и может выполнять собственное приложение. С появлением новых клиентов могут быть созданы дополнительные разделы, а на расширение потребности приложений в ресурсах администратор системы оперативно ответит увеличением соответствующего раздела в динамическом режиме.
Разделение приложений
Разделение приложений - удобный механизм управления компьютерными ресурсами в условиях, когда ИТ-подразделение не просто обеспечивает работу систем и сетей, а предоставляет бизнес-подразделениям конкретные информационные услуги. Возможность логически закрепить за данным приложением или группой пользователей необходимые ресурсы упростит выполнение соглашений об уровне обслуживания, которые все чаще становятся основой для взаимодействия ИТ-службы с другими корпоративными подразделениями. Например, в Tru64 UNIX возможно дополнительное сегментирование ресурсов для определенных приложений и пользовательских групп. Наборы ресурсов для рабочих областей приложений, контролируемых одним экземпляром операционной системы, выделяются в «прикладные разделы» (application resource partition). Разделение приложений дополняет системное разбиение и допустимо только в строго определенных аппаратных границах - на одном автономном сервере, в серверном кластере или в одном системном разделе. Следующий уровень разбиения обеспечивает так называемое «планирование классов» (class scheduling) - сегментирование ресурсов прикладного раздела на несколько прикладных или пользовательских классов.
В основе разделения приложений лежит выделение некоторого числа процессорных блоков QBB на сервере или в системном разделе в процессорный набор (processor set). Предположим, на сервере AlphaServer выделены два набора процессоров - PSET0 и PSET1 (рис.4).
Каждый процессорный набор относится к одному прикладному разделу. Приложение и пользователи, которым выделен раздел с набором PSET0, не смогут использовать ресурсы прикладного раздела с набором PSET1 и наоборот. Это означает, что если для выполнения соглашения об уровне обслуживания администратор должен гарантировать приложению определенное множество ресурсов сервера, он может выделить данному приложению прикладной раздел с набором PSET0, и работа пользователей в разделе с набором PSET1 никак не повлияет на производительность критичного приложения из другого раздела.
При этом процессорные наборы способны изменяться динамически - системный администратор или специальная утилита мониторинга нагрузки с необходимыми привилегиями могут перемещать процессоры между наборами. Если, например, приложение в разделе с набором PSET1 в период пиковой нагрузки потребует увеличение компьютерной мощности, часть ресурсов из PSET0 может быть переназначена разделу с набором PSET1, а по истечении этого периода они будут возвращены в PSET0.
Планирование классов - следующий уровень программного разбиения. В некоторых операционных системах имеется возможность назначать часть процессорного набора группе пользователей и/или приложений. Изначально классом по умолчанию считаются все пользователи или приложения, для которых предназначены все ресурсы данного процессорного набора. Затем возможно явное выделение части ресурсов группе пользователей или приложений, которые составят класс.
Помимо выделения процессорных наборов, в ряде ОС можно ограничить предоставляемый объем виртуальной или физической памяти и тем самым ограничить возможности приложения по памяти в данном прикладном разделе. Операционная система также поддерживает средство управления пропускной способностью, которое ограничивает сетевой трафик приложения на уровне порта. Наконец, допускается установление квот на дисковое пространство для прикладного раздела или класса, ограничивающее возможности использования файловой системы. Ограничения могут быть программными или аппаратными. В первом случае система выдает предупреждение о превышении квоты, а аппаратное ограничение сводится к запрету записи в файлы.
Разбиение на прикладные разделы позволяет управлять приложением, когда оно расходует слишком много процессорного времени или использует чрезмерный объем оперативной памяти. Например, могут быть предусмотрены средства управления ресурсами, позволяющие выделить процессор для исключительного использования конкретным приложением, ограничить сетевой трафик, исходящий или поступающий на определенные порты, предотвратить избыточность объемов дискового пространства, выделенного пользователю, ограничить число процессов, которые он может создать и т.п.
Разделение приложений - это прежде всего возможность гибко управлять ресурсами приложений для разных бизнес-задач. Разбиение на уровне приложений позволяет повысить их производительность, поскольку сокращается вероятность конфликтов за ресурсы. Появляется возможность распределить нагрузку системы, переназначая ресурсы для балансировки нагрузки. Поведение приложений становится более предсказуемым, что немаловажно для обеспечения качества информационного обслуживания. Кроме того, разделение приложений может стать важным фактором для обеспечения высокого уровня доступности приложений. Если сбой системы в целом или системного раздела связан с риском для любого приложения оказаться в условиях дефицита ресурсов, то разбиение на прикладные разделы в совокупности с кластеризацией гарантирует, что критичное приложение всегда будет обеспечено той квотой ресурсов, которая ему необходима, и всегда будет работать в нормальном режиме.
Вернемся теперь к примеру с провайдером приложений. Предположим, один из клиентов этой компании - университет, каждый факультет которого хочет иметь собственную прикладную систему. Чтобы избежать конкуренции приложений за ресурсы и в то же время не платить за отдельные физические системы, провайдер предлагает реализовать для этого клиента дополнительное разбиение на уровне приложений. Каждому факультету нужна определенная квота ресурсов, оговоренная соглашением об уровне обслуживания. Например, приложение физического факультета потребует 60% компьютерных мощностей (в рамках выделенного университету системного раздела сервера), система экономического факультета задействует 30% ресурсов, а приложение факультета иностранных языков - 10%. Средства разделения приложений позволят выделить разным приложениям необходимые процессорные наборы сервера, причем объем ресурсов может быть изменен динамически, если потребности приложений изменятся. Например, если в некоторый период физический факультет использует только 40% процессорной мощности, оставшиеся 20% могут быть переданы факультету иностранных языков, чтобы обеспечить оптимальное использование процессоров сервера.
Один сервер перед армией приложений и ОС
Разбиение - мощный инструмент для достижения таких глобальных целей, стоящих перед ИТ, как снижение затрат, упрощение управления системами, повышение уровня безопасности, повышение доступности систем и приложений. Главные преимущества разбиения -возможность консолидировать корпоративные серверы и одновременно запускать несколько важных процессов (разные корпоративные приложения, разработка и тестирование новых систем), обеспечив оптимальное использование системных ресурсов. Разбиение Unix-серверов открывает новые возможности построения многофункциональных центров обработки данных, необходимых для поддержки Internet-компаний, провайдеров услуг, ЕRP-систем для крупных корпораций.
В старших моделях семейства серверов Primepower компании Fujitsu Siemens Computers возможно создание от 4 до 15 системных разделов в зависимости от модели. Каждый раздел включает одну или несколько системных плат и управляется собственным экземпляром ОС Solaris. Приложения, выполняющиеся в разных разделах, никак не влияют друг на друга, а аппаратные или программные ошибки в одном разделе не отражаются на работе других.
В сервере Sun Enterprise 10000 поддерживается создание динамических системных доменов (dynamic system domain). Домен создается на базе одной или нескольких системных плат, получая в свое распоряжение собственный центральный процессор, память, ввод-вывод, сетевые ресурсы и экземпляр ОС Solaris. Плата управления и системная шина сервера разделяются всеми доменами, поэтому сбои только в этих аппаратных компонентах могут повлиять на работоспособность нескольких доменов. В остальных случаях неисправности в работе системных ресурсов домена никак не затронут другие разделы.
Полностью изолированы между собой и данные разных доменов. Специальная процедура «доменной фильтрации» обеспечивает перемещение информации по системной шине в соответствии с определенными правилами. Передача данных между активизированными доменами запрещена, в этом случае поддерживается только внутренний трафик данных для каждого домена.
Работа домена под управлением автономного экземпляра Solaris обеспечивает полную изоляцию приложений. Домен «экранирован» от любых программных ошибок в других доменах, и аварийные ситуации в операционной системе или аварийное завершение программы никак не повлияют на работу приложений в других доменах.
Hewlett-Packard предлагает технологию виртуального разбиения (virtual partition) для серверов Класса L (до 2 разделов), Класса N (до 4 разделов) и для сервера Superdome (до 32 виртуальных разделов). Для создания виртуальных разделов в стек системного программного обеспечения серверов добавлен дополнительный уровень - монитор виртуальных разделов (Virtual Partition Monitor), который отвечает за разделение аппаратных ресурсов и дает возможность экземпляру операционной системы HP-UX 11i каждого раздела работать так, как будто эта ОС находится на автономном сервере с тем объемом ресурсов, которые выделены данному разделу (рис. 1). Об элементах аппаратуры сервера, принадлежащих другому разделу, данному экземпляру операционной системы ничего не известно.
Рис. 1. Монитор виртуальных разделов - дополнительный уровень системного ПО серверов НР |
Принципы системного разбиения реализованы в новой линейке Alpha-серверов Compaq. В зависимости от общего числа процессоров SMP-серверы AlphaServer GS80, GS160 и GS320 допускают разбиение на 2, 4 или 8 динамических системных разделов. Каждый из разделов включает в себя один или несколько блоков Quad Building Block (QBB). QBB - базовый функциональный блок серверов семейства AlphaServer GS, включающий 4 процессора Alpha, 4 модуля памяти общей емкостью 32 Гбайт и 8 шин PCI. Межсоединения между QBB в системах старшего класса реализуются с помощью высокоскоростного иерархического коммутатора.
Системный раздел сервера семейства AlphaSever GS может работать под управлением собственного экземпляра ОС Tru64 UNIX, ОpenVMS или Linux. Существуют три основных конфигурации системных разделов:
- все разделы работают под управлением одной и той же версии ОС. Этот вариант обеспечивает создание на одном сервере комбинированной среды, в которой разные приложения находятся на разных стадиях: в работе, в разработке или в тестировании, и при этом не мешают друг другу;
- разные разделы работают под управлением разных версий одной и той же ОС. Здесь обеспечивается поддержка унаследованных приложений или параллельное с работой бизнес-приложений тестирование новых версий ОС, баз данных или приложений;
- разные разделы работают под управлением разных ОС. Это базовая конфигурация для консолидации серверов и гибкого управления рабочей нагрузкой, обеспечивающего изоляцию приложений для разных бизнес-задач.
Изоляция операционных систем и приложений и невозможность ошибкам в одном разделе влиять на нормальную работу других дает возможность, с одной стороны, разделить ресурсы одной системы для решения разных бизнес-задач, а с другой, объединить на одном сервере разные процессы - производственные прикладные системы, тестирование новых версий системного и прикладного ПО, разработку новых приложений.
Разбиение на мэйнфреймах
Одновременная работа нескольких различных операционных систем на одной физической машине впервые была реализована IBM в середине 70-х для мэйнфреймов архитектуры S/370. Разработанная для этого программная технология виртуальной машины пользователя (Virtual Machine — VM) совершенствуется и эксплуатируется по сей день. ОС VM/ESA организует работу пользователя таким образом, что он не имеет доступа к реальным ресурсам вычислительной системы. Все супервизорные команды управления ресурсами перехватывает Управляющая Программа (Control Program), которая и обращается к физическим компонентам машины - процессору, оперативной памяти, каналам ввода/вывода.
В начале 90-х технология разделения физических ресурсов была адаптирована и погружена в микрокод процессора, став таким образом внутренней функцией сервера S/390. Новая функция позволяет разделить с помощью инженерных настроек физические ресурсы сервера и поддерживать до 15 логических разделов (Logical Partition - LPAR) на одной машине. Пользователь работает в среде виртуальной машины, где он может загрузить любую операционную систему архитектуры S/390 (MVS, OS/390,TKS и др.) или Linux, либо использовать ее как ПК, что обеспечивается специальной операционной системой CMS. С точки зрения пользователя каждый раздел LPAR является отдельным сервером S/390 и имеет независимые от других разделов ресурсы. Современная версия VM/ESA v.4.r.2 поддерживает все современные стандарты передачи и обработки данных, сохраняя при этом возможность работы с унаследованными приложениями.
В 2000 году архитектура S/390 была дополнена специальной функцией - S/390 Virtual Image Facility for Linux (VIF), которая позволяет эксплуатировать сотни операционных систем LINUX на одном сервере S/390 непосредственно, без использования ОС архитектуры S/390. Такой интерес к Linux объясняется широким применением серверов S/390 в качестве платформы для выполнения Internet-приложений, консолидации серверов, электронной коммерции. Например, компания Dimension Enterprises эксплуатирует на одном сервере S/390 400 систем Linux на виртуальных машинах VM/ESA. Эта же компания провела работу по консолидации 250 систем Linux, работающих с телекоммуникационными приложениями на одном сервере под управлением VIF, что позволило заменить 25 Unix-серверов.