Александр Минаков

Появление технологии логических разделов для систем IBM eServer pSeries значительно расширило возможности аппаратного обеспечения в развертывании приложений и обслуживании рабочих нагрузок. Разбиение на логические разделы (Logical PARtitioning, LPAR) обеспечивает пользователям большую гибкость, позволяя одновременно запускать несколько независимых копий операционной системы на одном сервере. Но хотя подобная гибкость обеспечивает ряд преимуществ с точки зрения бизнес-процессов, возникает несколько вопросов, касающихся обеспечения безопасности и защиты копий ОС, работающих в столь тесном соседстве.

Разумеется, безопасность была в числе наиболее приоритетных критериев при разработке систем pSeries LPAR (как и при реализации LPAR в других серверных продуктах IBM). Мы рассмотрим здесь некоторые аспекты ее обеспечения.

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

Защита LPAR на аппаратном уровне

Существует всего несколько довольно простых механизмов LPAR, реализованных посредством комплекса специальных аппаратных регистров и выверенных программно-аппаратных средств, называемых гипервизором (hypervisor).

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

Fig.1
Рис. 1. Адресация памяти и устройств ввода-вывода.

Адресация реального режима

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

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

В начале работы каждого раздела программно-аппаратные средства LPAR присваивают ему уникальные значения адреса реального режима - смещение (offset) и диапазон (range), а затем устанавливают оба параметра в регистрах для каждого процессора раздела. Эти величины отображаются на диапазон значений адресов физической памяти, который был выделен в исключительное распоряжение данного раздела. Когда программы раздела получают доступ к инструкциям и данным в режиме реальной адресации, аппаратное обеспечение перед обращением к физической памяти автоматически добавляет к каждому адресу значение смещения реального режима. Таким образом, каждая модель программирования логического раздела обеспечивает доступ к физическому адресу 0, даже при том, что адреса переназначаются в другой диапазон. Аппаратная логика предотвращает изменения этих регистров кодом операционной системы, выполняющимся в разделе. Любая попытка получить доступ по реальному адресу за пределами назначенного диапазона приводит к возникновению исключительного прерывания адресации (addressing exception interrupt), которое в данном разделе обрабатывается обработчиком прерываний ОС.

Режим виртуальной адресации

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

Если приложения получают доступ к инструкциям и данным в режиме виртуальной адресации, они "не знают", что их адреса транслируются системой управления виртуальной адресацией при помощи таблиц трансляции страниц PTT (Page Translation Tables). Эти таблицы располагаются в системной памяти, и каждый раздел имеет свою собственную таблицу страниц подкачки. Процессоры используют PTT для конвертирования виртуального адреса программы в физический в том случае, если эта страница была отображена на физическую память. Если страница была перемещена из физической памяти на диск, операционная система получает код ошибки отсутствия страницы (page fault). Таблицы трансляции страниц подкачки - отнюдь не новое понятие: они используются в OC AIX 5L и входят в серверную архитектуру pSeries.

Однако в системах LPAR эти таблицы управляются по-разному. В режиме non-LPAR ОС AIX 5L, например, создает и непосредственно поддерживает записи таблицы, используя реальный режим адресации для доступа к таблицам. В работе с логическими разделами PTT размещаются в специальных областях физической памяти, доступных для гипервизора. Другими словами, таблица страниц раздела располагается за пределами диапазона адресов реального режима раздела. Регистр, предоставляющий процессору физический адрес из своей таблицы, также защищен при помощи аппаратно реализованной логики, и поэтому программы раздела не могут его модифицировать - это доступно только гипервизору.

Когда ОС требуется создать отображение страниц, она должна выполнить специальный системный вызов (hypervisor service call) на одном из процессоров, который переносит выполнение в программу гипервизора. Программа гипервизора создает запись в таблице от имени раздела и перед тем, как сохранить ее, добавляет логическое смещение к физическому. Программы раздела также могут запрашивать гипервизор для модификации или удаления существующих записей таблицы. Записи таблицы отображаются только на специфические диапазоны физической памяти, называемые диапазонами логических адресов (logical address regions), которые были назначены этому разделу.

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

Доступ к пространству адресов ввода-вывода

Помимо отображения адресов виртуальных страниц памяти на физическую память раздела ОС может заставить вызовы гипервизора отобразить адреса таблицы страниц (page table addresses) на физические регистры и буферизовать адресные пространства на адаптерах PCI. Драйверы устройств считывают данные и записывают их непосредственно в эти регистры и буферы адаптеров: именно так они настраивают операции ввода-вывода для устройств на шине PCI и управляют ими.

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

Адресация DMA

Операции прямого доступа к памяти PCI-адаптера ввода-вывода (DMA, Direct Memory Access) перемещают данные между адаптерами ввода-вывода и системной памятью, при этом применяется механизм перераспределения памяти, сходный с механизмом для таблиц страниц памяти. Аппаратно реализованный мост с шиной PCI транслирует адреса, генерируемые устройствами ввода-вывода, в адреса физической памяти.

Мост ввода-вывода осуществляет эту трансляцию с помощью данных управления трансляцией (ТСЕ, Translation Control Entry). Эта запись также хранится в физической памяти; как и таблицы страниц, она находится в области физических адресов системной памяти, недоступной для разделов и доступной для гипервизора. Однако, в отличие от таблиц страниц подкачки, записи ТСЕ не привязаны ни к одному из разделов. С помощью вызова гипервизора программы разделов могут создавать, модифицировать или удалять записи ТСЕ для определенных адаптеров PCI, назначенных для соответствующего раздела. Гипервизор добавляет к адресу DMA, предоставленному программой раздела, смещение физического адреса (physical address offset). Когда мост ввода-вывода (I/O bridge) транслирует DMA-адрес адаптера ввода-вывода в адрес физической памяти, результирующий адрес попадает в адресное пространство физической памяти, выделенное для этого раздела.

Защита LPAR за счет программно-аппаратных средств

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

Гипервизору доверяется создание сред разделов, это единственная программа, имеющая непосредственный доступ к специальным регистрам процессора и записям таблицы трансляции адресов. Программы раздела не могут иметь доступ к инструкциям или данным гипервизора иначе, чем под контролем сервисных процедур гипервизора (hypervisor service calls), - эти процедуры составляют часть архитектуры процессора. Такие защитные меры позволяют гипервизору выполнять свои функции просто и четко, заключая тем самым среду каждой ОС в весьма компактное пространство, преодолеть границы которого невозможно.

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

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

LPAR и операционные системы

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

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

И наконец, аппаратное обеспечение серверов pSeries снабжено встроенными программными сервисами реального времени RTAS (Run-Time Abstraction Services) для обработки вызовов. В LPAR эти вызовы выполняют дополнительную проверку достоверности и виртуализацию ресурсов для среды с логическими разделами. Например, при том, что физически имеется всего по одной микросхеме энергонезависимой памяти и часов (питаемых от аккумулятора), благодаря RTAS каждый логический раздел видит свою собственную область энергонезависимой памяти и свои уникальные независимо настраиваемые часы. Вызовы RTAS выполняются внутри раздела под управлением ОС, но даже им запрещается доступ к чему-либо за пределами раздела без обращения к услугам гипервизора.

Предотвращение отказа в обслуживании

Как говорилось выше, гипервизор не позволяет разделам обращаться к ресурсам или данным, принадлежащим другим разделам. Но поскольку механизм LPAR действует поверх симметричной многопроцессорной архитектуры, некоторые ресурсы неявно обобществлены разделами. Задача гипервизора - разрешать разделам использование ресурсов коллективного пользования, а также ограничивать или запрещать доступ к этим ресурсам для других разделов. Примером служит сам гипервизор, который реализован как библиотека сервисов, совместно используемых разделами. Эти сервисы вызываются в пределах контекста ОС, выполняющейся в каждом разделе. Каждый сервисный запрос отсылается на конкретный процессор, с которого поступил вызов, поэтому вызовы гипервизора выполняются только на процессорах, принадлежащих вызвавшим их разделам. Следовательно, независимо от типа и частоты вызовов гипервизора, сделанных ОС, они не окажут никакого влияния на режим гипервизора или доступа в других разделах.

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

Управление LPAR

Гипервизор укрепляет границы между разделами и поддерживает целостность после того, как разделам выделены ресурсы и они инициализированы. Завершая обзор вопросов безопасности, посмотрим, как управляются разделы. Вместе с разбиением на логические разделы в серверах семейства pSeries появилась консоль управления оборудованием IBM HMC (Hardware Management Console).

Данное устройство обеспечивает дружественный интерфейс пользователя для управления аппаратными ресурсами как в локальном, так и в удаленном режиме доступа. Работу HMC иллюстрирует рис. 2. Подключенная к служебному процессору сервера pSeries консоль HMC посылает команды, которые управляют таблицами конфигурации LPAR, хранящимися в энергонезависимой оперативной памяти. Когда начинается работа раздела, гипервизор обращается к этим таблицам, чтобы узнать, какие ресурсы назначены тем или иным разделам. Эти таблицы не видны операционным системам, выполняющимся в разделах, только HMC и гипервизор могут их обновлять. Пользователь консоли HMC должен знать идентификатор и пароль, которые были созданы администратором HMC.

Fig.2 Рис. 2. Управление разделами.

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

  • регистрироваться локально на HMC со своим идентификатором и паролем;
  • использовать удаленный доступ по сети при помощи клиента системного управления на основе Web с шифрованием SSL при необходимости;
  • применять опции командной строки удаленно, используя специальные инструкции.

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

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

Тестирование и ратификация LPAR

Как заявляют представители IBM, дизайн LPAR серверов pSeries обеспечивает высокую степень безопасности и изоляции разделов, подтвержденную длительными тестированиями. Так, один из тестов состоит в том, что в нескольких разделах запускаются программы, вызывающие очень большую нагрузку, и одновременно в других разделах запускаются программы наблюдения; при этом в остающихся разделах выполняются обычные программы. В таких испытаниях ведется постоянный мониторинг среды на предмет наличия любых повреждений данных или других эффектов, вызванных тестовыми программами. Фактически эти программы, выполняя обкатку системы, совершают множество запрещенных операций, а также постоянно перезапускаются для поддержания непрерывности тестирования. Тестеры отмечают, что перед широким внедрением LPAR было выполнено многочасовое непрерывное тестирование, во время которого целостность данных в изолированных разделах сохранялась.

Семейство IBM LPAR

Технология LPAR для семейства IBM eServer pSeries базируется на возможностях микропроцессоров семейства PowerPC. На микропроцессорах этого семейства основана и линейка серверов IBM eServer iSeries, в которой возможность создания логических разделов присутствует с 1999 года.

Специалисты, знакомые с логическими разделами в серверах IBM eServer zSeries и S/390, могут обнаружить сходные подходы в том, как все операции доступа процессоров к памяти зависят от механизма перемещения. Так, в семействе zSeries используется смещение для каждого вычисления виртуального адреса (V=F), а не создание гипервизором трансляций от имени раздела. Для достижения максимальной производительности в микропроцессоре Power4 исключен этот добавочный шаг на каждой трансляции. Всякий раз, когда ОС хочет создать или модифицировать запись в таблице трансляций, в гипервизоре выполняется гораздо меньшее число инструкций, но действует все та же фундаментальная концепция. Семейство zSeries уже много лет оснащается функциями LPAR. В семействе pSeries первоначально не было предусмотрено виртуальных сетевых возможностей для обмена между разделами или функций гиперсокетов, которые существовали в моделях семейств iSeries и zSeries. Высокая степень интеграции поддерживается благодаря способности гипервизора создавать подобные соединения между разделами и управлять ими, допуская только соединения между заданными целевыми разделами.

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

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