Solaris 10 Containers. Конфигурирование зон


Автор: Юрий Кажаров
Оригинал: solaris-center.ru - Центр Solaris технологий

В статье описываются возможности, конфигурирование и администрирование инновационной технологии виртуальных зон Solaris Zones, которая появилась в новой версии операционной системы - Solaris 10.

Версия для печати

Введение

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

Технология √ Sun Dynamic System Domains, доступная на серверах среднего и высшего уровней, уже много лет как эффективно используется при организации современных высокодоступных информационных систем. Суть ее заключается в разделении аппаратных ресурсов SPARC-серверов на несколько независимых подсистем, каждая из которых, содержит собственную версию операционной системы.

К сожалению, технология организации аппаратных динамических доменов жестко привязана к линейке серверов Sun Fire midrange- и high-end- уровней и недоступна на серверах начального уровня и системах на платформе х86.

Здесь на ╚помощь╩ приходит инновационная технология √ Solaris Containers, которая является одной из наиболее значимых возможностей новой версии операционной системы √ Solaris 10.

Имея обобщенное название √ N1 Grid Containers, данная технология состоит из двух компонентов: контейнеров (Solaris Containers) и зон (Solaris Zones).

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

Использование зон дает возможность создавать на одном сервере до 8192 виртуальных операционных систем - полностью изолированных, со своим пространством памяти, файловой системой и запущенными процессами. Пользователи в разных зонах могут отличаться друг от друга, и суперпользователь root из одной зоны может не иметь привилегий в другой зоне. Фактически это набор независимых виртуальных серверов Solaris 10, запущенных на одном аппаратном сервере.

Причем, важно отметить, данная технология не зависит от используемой аппаратной платформы и может применяться на всей линейке SPARC-серверов, 64-разрядных системах AMD Opteron и на платформе х86.

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

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

Технология зон

Технология зон внесла серьезные изменения в организационную структуру операционной системы Solaris 10. Если ранее установленная система Solaris единолично использовала все аппаратные ресурсы, то с применением технологии виртуализации ситуация кардинально изменилась.

Во-первых, аппаратные ресурсы теперь тоже представлены в виде неких виртуальных устройств, которые распределяются между существующими зонами, а также, и между самими процессами, разделенными механизмами контейнеров. В качестве примера можно посмотреть информацию об имеющихся в системе процессорах √ они ╚виртуальные╩:

 

# psrinfo -v

Status of virtual processor 0 as of: 01/09/2005 15:16:54
on-line since 01/09/2005 15:11:38.
The sparcv9 processor operates at 1002 MHz,
and has a sparcv9 floating point processor.

Status of virtual processor 1 as of: 01/09/2005 15:16:54
on-line since 01/09/2005 15:11:37.
The sparcv9 processor operates at 1002 MHz,
and has a sparcv9 floating point processor.
#

 

Во-вторых, операционная система Solaris теперь разделена на два типа зон: глобальная зона (global zone) и не-глобальные зоны (non-global zone).

Глобальная зона √ это именно та копия системы, которую вы устанавливаете непосредственно с дистрибутива на ваш сервер. Эта зона создается автоматически при инсталляции и неизменно присутствует в вашей системе. Фактически она несет на себе две функциональные обязанности:

  • Общесистемное администрирование
  • Является базовой зоной для создаваемых non-global зон

Только эта зона может быть загружена с аппаратных ресурсов системы, и все вопросы конфигурирования аппаратных устройств (добавление, динамическая реконфигурация и тд.), настройка таблиц маршрутизации, а также, создание и управление non-global зонами √ доступны только с нее.

Глобальная зона всегда имеет идентификатор ID=0 и имя global.

Non-global зоны √ являются виртуальными копиями вашей системы. Создаются они только с глобальной зоны и унаследуют от нее ряд параметров и установленных продуктов. Каждая такая зона функционирует самостоятельно со своими сетевыми адресами, пользователями, сервисами и тд. Все процессы, протекающие в любой из зон, полностью изолированы и от глобальной зоны и от остальных non-global зон. Зоны могут взаимодействовать между собой только через сетевые сервисы.

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

Функциональные возможности non-global зон довольно широки:

  • Безопасность. Поскольку зоны полностью изолированы, то в случае ╚взлома╩ в одной из зон, злоумышленник не сможет получить доступа ко всем ресурсам системы, ограничившись лишь областью поврежденной им зоны.
  • Изоляция. Полная изоляция процессов и пользователей между зонами позволяет одновременно на одном сервере запускать несколько копий какого-нибудь сервиса для обработки запросов из разных доменов.
  • Виртуализация. В дополнении к совместному использованию аппаратных ресурсов системы, позволяет также, скрыть информацию о физических устройствах и параметрах глобальной зоны.
  • Универсальность. Используя ресурсы глобальной зоны, максимально упрощаются процедуры администрирования как системы в целом, так и отдельных зон в частности. Установка патчей и других программных продуктов в глобальной зоне, автоматически распространяется на все non-global зоны.

Создание, изменение, удаление и управление зонами осуществляет ╚глобальный╩ администратор, а вот администрирование внутри non-global зоны доступны только ╚локальному╩ администратору конкретной зоны.

Таблица функциональных особенностей зон

Глобальная зона (global zone)

Не-глобальная зона (non-global zone)

ID всегда равен 0

ID назначается системой когда зона загружается

Одна копия Solaris ядра, с которой система загружается и функционирует

Не содержит собственного ядра, использует компоненты ядра глобальной зоны

Содержит полную инсталляцию системы Solaris и других продуктов

Может содержать только необходимую часть системы Solaris, взятую из глобальной зоны

Использует установленные в глобальной зоне продукты

Может содержать дополнительные программные продукты

Может содержать дополнительные программные продукты, даже не установленные в глобальной зоне

Содержит конфигурационную информацию для глобальной зоны

Содержит настройки только для данной зоны

Полный контроль над всеми устройствами и файловыми системами

Возможность только пользоваться предоставленными устройствами

Содержит информацию и параметры non-global зон

Не содержит информации о других зонах

Создание, изменение, удаление и управление non-global зонами

Не может создавать, изменять, удалять и управлять зонами, даже собственной

Любая non-global зона может находится в одном из шести функциональных состояний:

  • Configured √ это состояние означает, что установлены все необходимые параметры для данной зоны
  • Incomplete √ это состояние устанавливается до тех пор, пока не будет корректно завершена процедура инсталляции (или удаления) зоны
  • Installed √ зона корректно инсталлирована в системе, необходимые продукты установлены в ее корневой путь. Виртуальная система в этом состоянии только установлена √ не ╚запущена╩
  • Ready √ в этом состоянии ╚запускается╩ виртуальная система: ядро запускает необходимые процессы, ╚поднимаются╩ виртуальные сетевые интерфейсы, монтируются файловые системы и конфигурируются выделенные устройства. На этом этапе зоне назначается уникальный ID. Пользовательские процессы в зоне пока не запущены.
  • Running √ в это состояние зона переходит когда в ней запустится первый пользовательский процесс (init)
  • Shutting down или Down √ состояние остановки функционирования данной зоны

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

 

Установка зон. Подготовительные вопросы и конфигурирование

Установка виртуальных зон может быть представлена в следующей последовательности:

  1. Определение и установка базовой системы. Очень важный предварительный этап, поскольку от корректно установленной базовой системы зависит не только то, какими впоследствии будут образованы виртуальные зоны, но и работоспособность всей системы в целом. Здесь важно правильно определиться со списком устанавливаемых продуктов, которые будут нужны для работы системы. Конечно, всегда можно будет доставить или, наоборот, удалить какие-либо продукты, но это потребует дополнительного анализа, средств и времени. Поэтому еще при инсталляции базовой системы строго следите за тем, что устанавливаете. Рекомендуется, также, после инсталляции и перед конфигурированием зон, провести ╚пропатчивание╩ системы и настроить основные параметры для глобальной зоны. Все это существенно повысит надежность и безопасность вашей системы в целом.
  2. Определение количества non-global зон и их функциональное назначение. Виртуальные зоны, которые вы создаете, предназначены для разделения критически важных сервисов. Зоны могут создаваться на любой системе, где установлена операционная система Solaris 10. Количество зон и, соответственно, запущенные в них процессы, определяются в зависимости от конкретно поставленных задач и от аппаратных мощностей вашего сервера (каждая зона использует приблизительно 150-200Мб дискового пространства для корневой системы и около 40Мб оперативной памяти). Продумайте, какие сервисы будут в созданных зонах, какие будут продублированы для повышения производительности или надежности. Необходимо, также, составить список конфигурационных параметров для каждой зоны: название, сетевые адреса, файловые системы, устройства, пользователи и тд. После этого как все эти параметры обозначены, можно приступать к этапу конфигурирования зон.
  3. Конфигурирование зоны. Используя команду zonecfg, администратор глобальной зоны создает виртуальные зоны и устанавливает для них необходимые конфигурационные параметры. Данную процедуру можно выполнять либо в интерактивном режиме, либо указав все параметры в командной строке, разделив их знаком ╚;╩.
  4. Инсталляция зоны. После конфигурирования, администратор глобальной зоны проверяет корректность установленных параметров и, с помощью команды zoneadm, инсталлирует виртуальные зоны. Кстати, этой командой осуществляется, также, управление состоянием виртуальной зоны.
  5. Запуск зоны. После того, как зона была инсталлирована, необходимо к ней подключиться с помощью команды zlogin, и задать ряд параметров для завершения инсталляции системы: региональные установки, службу имен, пароль администратора root для данной зоны. После этого зона запускается и переходит в состояние √ running.
  6. Администрирование зоны и конфигурирование сервисов. Этот этап можно разделить на две самостоятельные части √ администрирование зоны (установка/удаление дополнительных продуктов, установка ╚заплаток╩) и конфигурирование сервисов, которые планировалось использовать в данной зоне. Настройка сервисов производится так же, как это делается и в случае работы с ╚обычной╩ - не виртуальной системой.

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

Можно, также, использовать и виртуальные файловые системы. Создайте файл размером планируемой виртуальной системы, и, используя технологию lofi, создайте виртуальную файловую систему, затем сконструируйте в ней ufs (unix file systems) и далее подмонтируйте, как и ╚обычную╩ файловую систему. Таким образом, вы получите в результате ╚полную виртуализацию╩ системы, что существенно повысит уровень ее безопасности.

Теперь рассмотрим, как конфигурировать виртуальные зоны на следующем примере:

  #zonecfg -z zone1 *1 -описание см. ниже
zone1: No such zone configured
Use 'create' to begin configuring a new zone.

zonecfg:zone1> create
*2

zonecfg:zone1> set zonepath=/virtual/1
*3

zonecfg:zone1> set autoboot=true
*4

zonecfg:zone1> add fs
*5
zonecfg:zone1:fs> set dir=/mnt
zonecfg:zone1:fs> set special=/data
zonecfg:zone1:fs> set type=lofs
zonecfg:zone1:fs> add options [nodevices,logging]
zonecfg:zone1:fs> end

zonecfg:zone1> add inherit-pkg-dir
*6
zonecfg:zone1:inherit-pkg-dir> set dir=/opt/sfw
zonecfg:zone1:inherit-pkg-dir> end

zonecfg:zone1> add net
*7
zonecfg:zone1:net> set address=192.168.1.100
zonecfg:zone1:net> set physical=bge0
zonecfg:zone1:net> end

zonecfg:zone1> add device
*8
zonecfg:zone1:device> set match=/dev/pts*
zonecfg:zone1:device> end

zonecfg:zone1> add attr
*9
zonecfg:zone1:attr> set name=comment
zonecfg:zone1:attr> set type=string
zonecfg:zone1:attr> set value=■Example zone■
zonecfg:zone1:attr> end

zonecfg:zone1> verify *10

zonecfg:zone1> commit
*11

zonecfg:zone1> exit
*12

 

1) Запускаем команду zonecfg с указанием имени нашей будущей зоны. Поскольку зона еще не существует, нам рекомендуется ее создать.

2) Создаем зону.

3) Указываем, где будем размещать зону.

4) Зона должна автоматически загружаться, когда загружается глобальная зона.

5) Задаем дополнительно монтируемые в виртуальной зоне файловые системы. В данном примере я указываю, что каталог /data из глобальной зоны будет смонтирован в моей виртуальной зоне в каталог /mnt.

6) Задаем дополнительные пути с программными продуктами, которые будут подключены в виртуальной зоне. Все разделы будут смонтированы с правами √ ╚только чтение╩. По умолчанию к зоне подключаются из глобальной системы следующие разделы:

  • /lib
  • /platform
  • /sbin
  • /usr

7) Устанавливаем сетевые устройства. Указываем для них сетевой адрес и ╚реальный╩ сетевой интерфейс, на который будет конструироваться наш виртуальный.

8) Добавляем доступ к устройствам. Я добавил все имеющиеся псевдо-терминальные устройства. По умолчанию виртуальной зоне предоставляется минимальный набор доступных устройств и вам необходимо вручную добавить доступ к тем устройствам, которые необходимы процессам в виртуальной зоне. Доступ к устройствам предоставляется ограниченным √ нет возможности не удалить устройство, не переконфигурировать его.

9) Задаем комментарии для данной зоны.

10) Проверяем правильность установленных параметров.

11) Сохраняем внесенные конфигурационные параметры зоны.

12) Выходим из интерактивного режима конфигурирования виртуальной зоны.

 

Если необходимо внести изменения в параметры зоны, воспользуйтесь интерактивным режимом ввода снова. Удалите изменяемый параметр (команда remove) и задайте его заново, но уже с новыми значениями. Сохраните изменения (команда commit) и проверьте правильность новой конфигурации (команда verify).

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

 

Установка зон. Инсталляция зоны

Все операции управления виртуальными зонами: инсталляция, загрузка, остановка, удаление и просмотр информации о состоянии зон, - осуществляются с помощью команды zoneadm. Эта команда выполняется только из глобальной зоны.

Проверим, перед тем, как приступить к инсталляции, состояние наших зон. Для этого выполним следующую команду:

 

# zoneadm list -vc

ID NAME STATUS PATH

0 global running /

- zone1 configured /virtual/1

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

Теперь можно приступить к процедуре инсталляции зоны:

 

# zoneadm -z zone1 install

Preparing to install zone <zone1>.

Creating list of files to copy from the global zone.

Copying <3368> files to the zone.

Initializing zone product registry.

Determining zone package initialization order.

Preparing to initialize <839> packages on the zone.

Initialized <839> packages on zone.

Successfully initialized zone <zone1>.

#

# zoneadm list -vc

ID NAME STATUS PATH

0 global running /

- zone1 installed /virtual/1

 

Наша зона успешно инсталлирована. Количество файлов и пакаджей, которые инсталлируются, зависит от того, в каком объеме была установлена базовая ╚глобальная╩ система. В моем случае система была установлена ╚по максимуму╩. Необходимо, однако, отметить, что не все программные продукты и конфигурационные параметры переносятся из глобальной зоны в виртуальную. Так, например, не переносятся продукты, которые были установлены в системе без использования технологии packages, или находящиеся на внешних устройствах √ CD, DVD, сетевые образы. Из конфигурационных параметров не переносятся:

  • данные, внесенные в базу /etc/passwd
  • данные, внесенные в базу /etc/group
  • конфигурационные параметры и ресурсы сервисов: DHCP, UUCP, sendmail, службы имен
  • установленные таблицы crontab, списки принтеров
  • системные логи, сообщения

Загрузим зону:

 

# zoneadm - z zone1 boot

# zoneadm list - vc

ID NAME STATUS PATH

0 global running /

2 zone1 running /virtual/1

 

Можно поздравить! √ зона успешно установлена и запущена в нашей системе. Если по какой-либо причине инсталляция зоны была прервана, то зона переходит в состояние - incomplete и для того, чтобы возобновить процедуру инсталляции необходимо выполнить ее ╚reset╩:

# zoneadm -z zone1 uninstall √F

 

Теперь необходимо подключиться к нашей зоне и довершить настройку ряда параметров для виртуальной системы Solaris 10, установленной в зоне. Данную процедуру можно исключить, а точнее автоматизировать, если создать в глобальной зоне конфигурационный файл /etc/sysidcfg и прописать туда все необходимые ╚локальные╩ параметры для конфигурирования виртуальной системы Solaris. Формат этого файла аналогичен тому, который используется в технологии установки системы √ JumpStart.

Для того чтобы подключиться к зоне используется команда √ zlogin. В зависимости от используемого набора ключей она предоставляет различные типы доступа к виртуальной зоне:

  • опция √С, позволяет использовать консольный доступ к виртуальной системе. Опция необходима для подключения к зоне под пользователем root. Если ее не использовать, то вход в систему необходимо осуществлять только под ╚рядовым╩ пользователем
  • опция - l ╚имя пользователя╩, вход в виртуальную систему под ╚рядовым╩ пользователем
  • опция √ S, используется в критических ситуациях, когда невозможно войти в систему, используя вышеописанные опции.

 

И вот, как это все будет выглядеть практически:

 

# zlogin -C -e\@ zone1 *Опция √е задает Esc-последовательность для выхода из консоли (@.)

[Connected to zone 'zone1' console]

 

Select a Language

0. English

1. French

Please make a choice (0 - 1), or press h or ? 0 *Выбираем английский

 

Select a Locale

0. English (C - 7-bit ASCII)

1. Albania (ISO8859-2)

2. Bosnia (ISO8859-2)

3. Bulgaria (ISO8859-5)

4. Croatia (ISO8859-2)

5. Estonia (ISO8859-15)

6. Latvia (ISO8859-13)

7. Lithuania (ISO8859-13)

8. Macedonia (ISO8859-5)

9. Romania (ISO8859-2)

10. Russia (ANSI 1251)

11. Russia (ISO8859-5)

12. Russia (KOI8-R)

13. Russia (UTF-8)

14. Serbia (ISO8859-5)

15. Slovenia (ISO8859-2)

16. Turkey (ISO8859-9)

17. Turkey (UTF-8)

18. Go Back to Previous Screen

Please make a choice (0 - 18), or press h or ? 12 *Я устанавливаю KOI8-R

 

What type of terminal are you using?

1) ANSI Standard CRT

2) DEC VT52

3) DEC VT100

4) Heathkit 19

5) Lear Siegler ADM31

6) PC Console

7) Sun Command Tool

8) Sun Workstation

9) Televideo 910

10) Televideo 925

11) Wyse Model 50

12) X Terminal Emulator (xterms)

13) CDE Terminal Emulator (dtterm)

14) Other

Type the number of your choice and press Return: 12 *Терминал xterms

.

.

. *Отвечаете на все запрашиваемые вопросы

.

System identification is completed.

rebooting system due to change(s) in /etc/default/init

[NOTICE: zone rebooting]

 

SunOS Release 5.10 Version s10_55 64-bit *Система загружается

Copyright 1983-2004 Sun Microsystems, Inc. All rights reserved.

Use is subject to license terms.

Hostname: zone1

The system is coming up. Please wait.

starting rpc services: rpcbind done.

syslog service starting.

Creating new rsa public/private host key pair

Creating new dsa public/private host key pair

The system is ready.

 

zone1 console login: root *Вход в виртуальную систему

Password:

Jan 9 16:08:10 zone1 login: ROOT LOGIN /dev/console

Sun Microsystems Inc. SunOS 5.10 s10_55 May 2004

#

# uname √a *Посмотрим информацию о системе

SunOS zone1 5.10 s10_55 sun4u sparc SUNW,Sun-Fire-V210

#

# isainfo -v

64-bit sparcv9 applications

32-bit sparc applications

#

# prtconf √v *Как видим, информация о ресурсах √ скрыта!

System Configuration: Sun Microsystems sun4u

Memory size: 2048 Megabytes

System Peripherals (Software Nodes):

prtconf: devinfo facility not available

#

# df √h *Файловые разделы

Filesystem size used avail capacity Mounted on

/ 20G 159M 19G 1% /

/dev 20G 159M 19G 1% /dev

/lib 481M 77M 356M 18% /lib

/mnt 93M 1,0M 83M 2% /mnt

/opt/sfw 4,8G 78M 4,7G 2% /opt/sfw

/platform 481M 77M 356M 18% /platform

/sbin 481M 77M 356M 18% /sbin

/usr 3,8G 1,7G 2,1G 46% /usr

proc 0K 0K 0K 0% /proc

mnttab 0K 0K 0K 0% /etc/mnttab

fd 0K 0K 0K 0% /dev/fd

swap 3,4G 40K 3,4G 1% /var/run

swap 3,4G 16K 3,4G 1% /tmp

 

#

# ifconfig √a *Сетевые интерфейсы

lo0:1: flags=1000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4> mtu 8232 index 1

inet 127.0.0.1 netmask ff000000

bge0:1: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2

inet 192.168.1.100 netmask ffffff00 broadcast 192.168.1.255

#

# exit *Выходим из зоны  

zone1 console login:  

zone1 console login: @. *Выходим из консоли

[Connection to zone 'zone1' console closed]

#

 

 

Администрирование зон

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

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

Таким образом, можно составить небольшую таблицу команд, которые используются для управления состоянием зоны:

Действие

Используемая команда

Остановка работы зоны

# zlogin zone1 shutdown

Остановка работы зоны без выполнения init-скриптов

# zoneadm -z zone1 halt

Загрузка зоны

# zoneadm -z zone1 boot

Перезагрузка зоны

# zoneadm -z zone1 reboot

Удаление корневого раздела зоны

# zlogin zone1 shutdown

# zoneadm -z zone1 uninstall √F

Полное удаление зоны

# zlogin zone1 shutdown

# zoneadm -z zone1 uninstall √F

# zonecfg -z zone1 delete -F

 

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

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

Одним из основных вопросов администрирования системы является установка дополнительных продуктов (packages) и установка ╚заплаток╩ (patches). В силу специфики технологии Solaris Zones, только часть продуктов, установленных в глобальной зоне, наследуются виртуальной системе. Тем не менее, информация о ряде продуктов, может передаваться в зону. Для того чтобы определить ╚видимость╩ того или иного продукта, используются параметры √ SUNW_PKG_ALLZONES и SUNW_PKG_HOLLOW, которые и определяют, как будет устанавливаться в системе данный package. Первый из них определяет возможные варианты установки, а второй, область видимости данного продукта. Посмотреть данные параметры можно с помощью команды pkgparam, например:

# pkgparam package_name SUNW_PKG_ALLZONES

 

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

Если вы устанавливаете продукты из глобальной зоны, то вы можете:

  • Установить package в глобальную зону, но только при условии, что параметр SUNW_PKG_ALLZONES=false. В противном случае, продукт не установиться. Для этого необходимо в глобальной зоне выполнить команду:

    # pkgadd √d /cdrom/cdrom0/directory √G package_name

  • Установить package во все зоны, включая глобальную. Для этого необходимо выполнить следующее:

    # pkgadd √d /cdrom/cdrom0/directory package_name

  • Если package уже установлен в глобальной зоне, его можно портировать в виртуальные зоны:

    # pkgadd √d /cdrom/cdrom0/directory √Z package_name

 

Можно установить package только в конкретную виртуальную зону. Для этого процедуру его добавления необходимо проводить в виртуальной системе с правами администратора этой зоны и обязательным условием является выполнение требования - SUNW_PKG_ALLZONES=false. Команда, в этом случае, будет следующая:

zone1# pkgadd √d /cdrom/cdrom0/directory package_name

 

Удаление продуктов проходит по схожей системе:

  • Для удаления package из всех зон, параметр SUNW_PKG_ALLZONES должен быть установлен в true. Команда удаления будет выглядеть так:

    # pkgrm package_name

  • Для удаления package из всех виртуальных зон, параметр SUNW_PKG_ALLZONES должен быть установлен в false. Команда удаления будет выглядеть так:

    # pkgrm -Z package_name

  • Для удаления package из конкретной виртуальной зоны, параметр SUNW_PKG_ALLZONES должен быть установлен в false:

    zone1# pkgrm package_name

 

Заплатки (patches), так же, как и packages, могут устанавливаться и удаляться в разных комбинациях:

  • Установка патча в глобальную зону будет выглядеть следующим образом:

    # patchadd patch_id

  • Установка патча в глобальную зону и во все виртуальные:

    # patchadd -Z patch_id

  • Установка патча в конкретной виртуальной зоне выполняется ее администратором и требует, чтобы параметр SUNW_PKG_ALLZONES был установлен в false, во всех продуктах, входящих в этот patch. Команда будет выглядеть следующим образом:

    zone1# patchadd patch_id

а его удаление:

zone1# patchrm patch_id

 

 

Заключение

С полной информацией о технологии Solaris Containers можно ознакомиться на сайте http://docs.sun.com, в материалах Solaris 10, ⌠System Administration Guide: Solaris Containers √ Resource Management and Solaris Zones■.