Solaris Containers (включая Solaris Zones) — реализация технологии виртуализации на уровне операционной системы, представленная корпорацией Sun Microsystems в 2005 для Solaris 10.
![](http://upload.wikimedia.org/wikipedia/commons/thumb/e/e0/SolarisZones-schema.png/220px-SolarisZones-schema.png)
Зоны работают как полностью изолированные виртуальные серверы внутри одного экземпляра операционной системы. Запуская множество служб на одной системе и помещая каждую из них в свой виртуальный контейнер, системный администратор может создать на одной машине такой же уровень защиты, как если бы все службы работали на разных машинах.
Терминология
правитьВ системе всегда существует одна зона, называемая глобальной («global zone»). Глобальная зона — это тот экземпляр операционной системы, который загружается при включении компьютера. Другие зоны известны как неглобальные («non-global zones»), или просто зоны. Термин «локальная зона» не рекомендуется употреблять, так как в этом контексте слово «локальная» не является антонимом слову «глобальная». Глобальная зона имеет возможность контролировать все процессы вне зависимости от того, в какой зоне они исполняются. Таким образом, в системе всегда есть глобальная зона и, возможно, неглобальные зоны. Если не оговорено особо, термин «зона» в этой статье будет относиться к неглобальным зонам.
Описание
правитьКаждая зона имеет своё имя в сети, виртуальные сетевые интерфейсы и системы хранения данных; не существует ограничения на минимум поддерживающего зону аппаратного обеспечения, кроме минимального дискового пространства, необходимого для сохранения уникальной конфигурации зоны. Особо следует отметить, что зона не нуждается в выделенном процессоре, памяти, физическом сетевом интерфейсе или HBA, хотя любой из них может быть выделен для зоны.
Каждая зона имеет систему защиты, которая не позволяет процессам взаимодействовать с процессами других зон или следить за ними. Для каждой зоны может быть создан собственный список пользователей. Система автоматически разрешает конфликты при использовании одинаковых идентификаторов пользователей в разных зонах; например, две зоны в системе могут иметь пользователя с ID 10000.
Зоне может быть приписан пул ресурсов (набор процессоров и память), чтобы гарантировать минимальное количество ресурсов. Зона может находиться в одном из следующих состояний:
- Configured: конфигурирование закончено и подтверждено
- Incomplete: переходное состояние между операциями install и uninstall
- Installed: пакеты были успешно установлены
- Ready: платформа готова к использованию
- Running: зона успешно загрузилась и работает
- Shutting down: зона в процессе выключения — это промежуточное состояние перед полной остановкой
- Down: зона остановлена
Некоторые программы не могут исполняться внутри неглобальной зоны; обычно это происходит из-за того, что приложению требуются привилегии, которые не могут быть предоставлены внутри контейнера. Так как зона не имеет собственного ядра (в отличие от аппаратной виртуальной машины), приложения, требующие непосредственной работы с функциями ядра, могут не работать в контейнере.
Ресурсы
правитьЗоны оказывают очень малое влияние на использование CPU и памяти. В настоящее время максимум 8191 неглобальная зона может работать внутри одного экземпляра операционной системы. Зоны могут занимать около 50 МБ объёма диска.
Branded zones
правитьХотя все зоны в системе разделяют одно общее ядро, существует возможность исполнять экземпляры операционных систем, отличных от системы в глобальной зоне. Для этого настраивают типизированные зоны (branded zones или BrandZ). Механизм BrandZ позволяет запускать в Solaris без перекомпиляции те приложения, которые были изначально скомпилированы для исполнения в других операционных системах.
Во время исполнения программы в типизированной зоне ядро Solaris обрабатывает полученные из этой зоны вызовы так, как их бы обработало ядро системы, «родной» для приложений из этой зоны.
Реализованы контейнеры для операционных систем Linux, Solaris 8, Solaris 9 и Solaris 10. Эмуляция Red Hat Enterprise Linux 3 доступна в Solaris на платформе x86. Для эмуляции необходимы библиотеки Red Hat 3 или эквивалентные библиотеки CentOS. Используя некоторые приёмы, можно эмулировать Debian[1].
Проект OpenSolaris s10brand использует механизм BrandZ для создания контейнеров для приложений под Solaris 10 в OpenSolaris. Результаты проекта интегрированы в OpenSolaris build 127.
Технически возможно реализовать поддержку зон для SuSE Linux, FreeBSD и Darwin на x86[2]. Однако вплоть до августа 2010 года сведений о случаях запуска этих систем в типизированных зонах не публиковалось.
Особенности реализации
правитьBranded zones не поддерживаются на архитектуре sun4us. Пакеты могут быть установлены на серверы Fujitsu PRIMEPOWER с Solaris 10, но попытка использования зон приведёт к ошибке.
Похожие технологии
правитьДругие реализации технологии виртуализации на уровне операционной системы включают OpenVZ/Virtuozzo, Linux-VServer, FreeBSD Jail, FreeVPS, Icore virtual accounts и AIX Workload Partitions.
Примечания
править- ↑ SunHelp.Ru : Поднимаем Debian Etch в BrandZ Архивировано 2 мая 2008 года.
- ↑ BrandZ/SCLA FAQ (Community Group brandz.brandz_lae_faq) — XWiki . Дата обращения: 19 сентября 2009. Архивировано из оригинала 6 сентября 2009 года.
См. также
правитьСсылки
правитьНа английском
править- Сообщество OpenSolaris Zones
- Solaris Containers FAQ
- Solaris Containers Learning Center
- Solaris Containers data sheet
- Moving Solaris 10 Zones