Note-1

Created Friday 21 February 2019

Краткое описание зон

Зона обеспечивает уровень абстракции, отделяющий приложения от физических атрибутов компьютера, на котором они развернуты. В качестве примеров этих атрибутов можно привести пути к физическим устройствам. .................. https://docs.oracle.com/zones.intro-1/index.html

Контейнер Solaris - Полная среда выполнения для приложений. В контейнер входят управление ресурсами и технология разбиения программного обеспечения на зоны "Solaris Zones".

Solaris Containers общее название технологии виртуализации на уровне операционной системы включающая в себя Solaris Zones, представлена корпорацией Sun Microsystems в 2005 для Solaris 10, имеет еще более общее название N1 Grid Containers.

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

  • Что такое зона? Зона - это абстракция виртуальной операционной системы, которая обеспечивает защищенную среду, в которой работают приложения. Приложения защищены друг от друга, чтобы обеспечить программную изоляцию ошибок. Чтобы упростить управление несколькими приложениями и их средами, они сосуществуют в одном экземпляре операционной системы и обычно управляются как один объект.

  • Что такое контейнер? Контейнер – это легковесная виртуализация и изоляция ресурсов на уровне операционной системы, это среда в которой используется средство управления ресурсами операционной системы. На практике слова «зона» и «контейнер» взаимозаменяемы. Зоны Oracle Solaris, развивались от проектов к зонам и ранее известны как контейнеры, это более гибкая и регулируемая система распределения ресурсов операционной системы и построение более "замысловатых" схем сетевой защиты(безопасности) .

Полное определение звучит так;

Зона, которая включает функции управления ресурсами, называется контейнером. (контейнеры в Solaris–управление ресурсами и зонами ст.240 PDF )

Контейнер Solaris – Полная среда выполнения для приложений. В контейнер входят управление ресурсами и технология разбиения программного обеспечения на зоны "Solaris Zones". (контейнеры в Solaris – управление ресурсами и зонами ст. 25 PDF)

Зоны Solaris позволяют создавать полностью виртуальную ОС для изолирования процессов как на уровне файловой системы, так и не уровне процессов сети. Процессы, запущенные в не глобальной зоне, не могут обращаться или взаимодействовать с процессами из других зон. И даже информация о реальных устройствах, например, имена локальных дисков, является недоступной для процессов, запущенных в не глобальных зонах. Если защита не глобальной зоны повреждена, то другие зоны все равно находятся в безопасности. Кроме того, процессы в этих зонах работают под разными ограничениями (установленными администратором по средствам RBAC). Не глобальные зоны могут быть перезапущены независимо от других зон, таким образом, зона может быть восстановлена или перестроена без необходимости выключения всей системы и остановки приложений в других зонах. На примере FreeBSD Jail, как и разобравшись в принципах виртуализации на уровне операционной системы, можно достичь детального понимания, что такое Solaris contaner/zone.

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

Концепция управления ресурсами и распределения ресурсов между различными наборами приложений развивалась от проектов к зонам. Зоны – это логическое продолжение проектов. По сути дела, если проект – это совокупность процессов, которым могут выделяться некие ресурсы (в том числе и в монопольное распоряжение), то зона – это виртуальная копия системы, в которой запущен определенный набор служб. В отличие от проектов, зоны предоставляют высокий уровень изоляции приложений друг от друга: приложения из одной зоны никак не могут взаимодействовать с приложениями из другой зоны, за исключением обмена данными через сеть.

Зона имеет свое файловое пространство, свой каталог /etc со своими настройками и, следовательно, свой список пользователей, своего администратора root, свой набор служб и так далее. Зона - это контейнер приложения, который поддерживается средой выполнения операционной системы. Фактически, зона – это виртуальная машина.

Зоны бывают двух типов:

  • глобальная зона (она всегда одна – это тот экземпляр системы, который загружается при старте global zone);

  • неглобальные зоны (это все остальные зоны non-global zone);

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

1. Общесистемное администрирование

2. Является базовой зоной для создаваемых non-global зон

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

Non-global зоны – являются виртуальными копиями вашей системы. Создаются они

только с глобальной зоны и унаследуют от нее ряд параметров и установленных продуктов, что является существенным моментом в планировании архитектуры программного комплекса в целом(чем и является Solaris container/zone), это inherit-pkg-dir, зоны с унаследованными (т.е. смонтированные из глобальной зоны в режиме "только для чтения") и без унаследованных каталогов. Не глобальная зона не требует при создании дублирования всей операционной системы Solaris и файлов с библиотеками. Дублируются только несколько зависимых системных бинарных файлов и конфигурационные файлы. Большинство системных библиотек используются совместно глобальной и не глобальной зонами. По умолчанию, каталоги /usr, /lib, /platform и /sbin являются унаследованными.

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

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

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

Смысл зон в том, что:

    • зона гарантирует идеальную изоляцию приложений – процессы одной зоны не влияют на процессы в других зонах;

    • зона обеспечивает изолированную среду не только для приложений, но и для системных служб внутри себя – в каждой зоне есть свои файлы настроек

    • Solaris позволяет настроить изолированную среду внутри зоны так, чтобы запускать в ней "неродные" приложения – исполняемые файлы Linux или приложения, ранее установленные

Зону можно создать и настроить ее свойства командой zonecfg, управлять ею следует с помощью zoneadm

К зоне с настроенным сетевым интерфейсом можно подсоединиться с помощью ssh, а можно воспользоваться программой zlogin, если вы работаете в глобальной зоне и хотите подключиться к не глобальной зоне. Файловая система не глобальной зоны может быть совершенно независимой от глобальной зоны (такие зоны называются зонами без унаследованных каталогов – whole root zone), а может содержать "унаследованные" каталоги, т.е. смонтированные из глобальной зоны в режиме "только для чтения".

Все это имеет и более древнее название (или более новое) - "Контейнерная виртуализация", виртуализация на уровне операционной системы Лекции 12-13

anet

The anet resource automatically creates a temporary vNIC (virtual network interface controller) interface for the exclusive-IP zone when the zone boots. The vNIC удаляется, когда зона останавливается.

Настройка зоны

https://docs.oracle.com/cd/E19253-01 <-------------------------

https://www.opennet.ru/docs/RUS/solaris_zones/

https://habr.com/------------>

Building Virtual Networks

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

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

    1. Configured – это состояние означает, что установлены все необходимые параметры для данной зоны

    2. Incomplete – это состояние устанавливается до тех пор, пока не будет корректно завершена процедура инсталляции (или удаления) зоны

    3. Installed – зона корректно инсталлирована в системе, необходимые продукты установлены в ее корневой путь. Виртуальная система в этом состоянии только установлена – не «запущена»

    4. Ready – в этом состоянии «запускается» виртуальная система: ядро запускает необходимые процессы, «поднимаются» виртуальные сетевые интерфейсы, монтируются файловые системы и конфигурируются выделенные устройства. На этом этапе зоне назначается уникальный ID. Пользовательские процессы в зоне не запущены.

    5. Running – в это состояние зона переходит когда в ней запустится первый пользовательский процесс (init)

  1. Shutting down или Down – состояние остановки функционирования данной зоны

  2. Перевод зоны в перечисленные выше состояния осуществляются «глобальным»

  3. администратором с помощью команд администрирования виртуальных зон.

Для создания собственной не глобальной зоны требуются только свойства zonename и zonepath. Прочие ресурсы и свойства являются необязательными. Некоторые дополнительные ресурсы также требуют выбора одного из возможных вариантов, таких как использование ресурса dedicated-cpu или capped-cpu.

Ресурсы команды zonecfg : см. Конфигурационные данные зоны.

Настройка зоны

1. Перейдите в режим суперпользователя или воспользуйтесь "соответствующей" ролью.

2. Создайте конфигурацию зоны с использованием выбранного имени зоны.В этом примере используется имя "my-zone".

global# zonecfg -z my-zone

Если эта зона настраивается впервые, выводится следующее системное сообщение:

my-zone: No such zone configured

Use 'create' to begin configuring a new zone.

3. Создайте новую конфигурацию зоны. В этой процедуре будут использаваны настройки по умолчанию от Sun.

zonecfg:my-zone> create

4. Задайте путь зоны (здесь /export/home/my-zone ).

zonecfg:my-zone> set zonepath=/export/home/my-zone

Не помещайте zonepath на ZFS для более ранних версий, чем Solaris 10 10/08.

5. Задайте значение автоматической загрузки. Если установлено значение true , зона автоматически загружается при загрузке глобальной зоны. Следует отметить, что для автоматической загрузки зон также необходимо включить службу зон svc:/system/zones:default . Значение по умолчанию – false.

zonecfg:my-zone> set autoboot=true

6. Установите сохраняемые загрузочные аргументы для зоны.

zonecfg:my-zone> set bootargs="-m verbose"

7. Выделите один ЦП этой зоне.

zonecfg:my-zone> add dedicated-cpu

7.1 Задайте количество ЦП.

zonecfg:my-zone:dedicated-cpu> set ncpus=1-2

7.2 (Дополнительно) Задайте важность.

zonecfg:my-zone:dedicated-cpu> set importance=10

Значение по умолчанию – 1.

7.3 Завершите определение.

zonecfg:my-zone:dedicated-cpu> end

8. Проверьте стандартный набор полномочий.

zonecfg:my-zone> set limitpriv="default,sys_time"

Эта команда дает возможность установить системные часы в значение по умолчанию.

9. Задайте класс планирования FSS.

FSS (Fair Share Scheduler ст. 117) Планировщик долевого распределения

Класс планирования, позволяющий распределять процессорное время на основе долей.

Доли определяют часть ресурсов ЦП компьютера, выделяемых под проект.

zonecfg:my-zone> set scheduling-class=FSS

10. Добавьте ограничение памяти.

zonecfg:my-zone> add capped-memory

10.1 Установите значение для ограничения памяти.

zonecfg:my-zone:capped-memory> set physical=50m

10.2 Установите ограничение подкачки.

zonecfg:my-zone:capped-memory> set swap=100m

10.3 Установите ограничение по блокированной памяти.

zonecfg:my-zone:capped-memory> set locked=30m

10.4 Завершите определение ограничений памяти.

zonecfg:my-zone:capped-memory> end


11. Добавьте файловую систему.

zonecfg:my-zone> add fs

11.1 Задайте точку монтирования для файловой системы (в этой процедуре используется /usr/local).

zonecfg:my-zone:fs> set dir=/usr/local

11.2 Эта команда определяет, что /opt/zones/my-zone/local из глобальной зоны монтируется в настраиваемой зоне как /usr/local.

zonecfg:my-zone:fs> set special=/opt/zones/my-zone/local

Файловая система/usr/local будет доступна для чтения и записи в не глобальной зоне. Ограничение размера зоны

11.3 Укажите тип файловой системы (в этой процедуре используется lofs).

zonecfg:my-zone:fs> set type=lofs

Типом определяется способ взаимодействия ядра с файловой системой.

11.4 Завершите определение файловой системы.

zonecfg:my-zone:fs> end

При добавлении нескольких файловых систем повторите этот этап.

12. Добавьте именованный набор данных (общее название следующих объектов ZFS: клонов, файловых систем, снимков или томов) "ZFS sales" в пул устройств хранения данных "tank".

***Data set - набор данных, также иногда используется транслитерация «Датасет»

zonecfg:my-zone> add dataset

12.1 Укажите путь к набору данных ZFS sales.

zonecfg:my-zone> set name=tank/sales

12.2 Завершите определение dataset.

zonecfg:my-zone> end

Наборы данных, добавленные в зону с помощью ресурса добавления набора данных, не подпадают под действие политики MWAC. Зоны, которым делегированы дополнительные наборы данных, имеют полный контроль над этими наборами данных. Наборы данных платформы видны, но их данные и их свойства доступны только для чтения (если зона не загружена для чтения/записи). MWAC - (Mandatory Write Access Control) Обязательный контроль доступа к записи

How to Add a ZFS Dataset to a Running Zone

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

zonecfg:my-zone> add inherit-pkg-dir

13.1 Эта команда определяет, что /opt/sfw из глобальной зоны монтируется в настраиваемой зоне в режиме только для чтения.

zonecfg:my-zone:inherit-pkg-dir> set dir=/opt/sfw

Примечание – База данных пакетов зоны обновляется для отображения пакетов. Эти ресурсы не могут быть изменены или удалены после того, как зона была установлена с помощью команды zoneadm.

13.2 Завершите определение inherit-pkg-dir.

zonecfg:my-zone:inherit-pkg-dir> end

При добавлении нескольких совместно используемых файловых систем повторите этот этап.

Примечание – Если требуется создать зону без унаследованных каталогов, но ресурсы совместно используемых файловых систем по умолчанию добавлялись при помощи inherit-pkg-dir, следует удалить их значение по умолчанию inherit-pkg-dir с помощью команды zonecfg до установки зоны:

zonecfg:my-zone> remove inherit-pkg-dir dir=/lib

zonecfg:my-zone> remove inherit-pkg-dir dir=/platform

zonecfg:my-zone> remove inherit-pkg-dir dir=/sbin

zonecfg:my-zone> remove inherit-pkg-dir dir=/usr

14. (Дополнительно) При создании зоны с эксклюзивным IP задайте ip-type.

zonecfg:my-zone> set ip-type=exclusive set ip-type=shared

Примечание – На этапе add net будет определен только тип физического устройства.

15. Добавьте сетевой интерфейс.

zonecfg:my-zone> add net

15.1 (Только в случае общего IP) Задайте IP-адрес для сетевого интерфейса (в данной процедуре 192.168.0.1).

zonecfg:my-zone:net> set address=192.168.0.1

15.2 Укажите тип физического устройства для сетевого интерфейса. В этой процедуре используется устройство hme.

zonecfg:my-zone:net> set physical=hme0

15.3 Solaris 10 10/08: (дополнительно, только общий IP) Установите для сетевого интерфейса маршрутизатор по умолчанию. В данной процедуре используется значение .

zonecfg:my-zone:net> set defrouter=10.0.0.1

15.4 Завершите определение.

zonecfg:my-zone:net> end

При добавлении нескольких сетевых интерфейсов повторите этот этап.

16. Добавьте устройство.

zonecfg:my-zone> add device

16.1 Установите подходящее устройство (в данной процедуре /dev/sound/* ).

zonecfg:my-zone:device> set match=/dev/sound/*

16.2 Завершите определение устройства.

zonecfg:my-zone:device> end

При добавлении нескольких устройств повторите этот этап.

17. Добавьте элемент управления ресурсами для всей зоны с использованием имени свойства.

zonecfg:my-zone> set max-sem-ids=10485200

При добавлении нескольких элементов управления ресурсами повторите этот этап.

id -p посмотреть параметры

18. Добавьте комментарий с использованием типа ресурса attr.

zonecfg:my-zone> add attr

18.1 Задайте имя comment.

zonecfg:my-zone:attr> set name=comment

18.2 Задайте тип string.

zonecfg:my-zone:attr> set type=string

18.3 Задайте значение комментария, который описывает зону.

zonecfg:my-zone:attr> set value="This is my work zone."

18.4 Завершите определение типа ресурса attr.

zonecfg:my-zone:attr> end

19. Проверьте конфигурацию зоны "zone".

zonecfg:my-zone> verify

20. Зафиксируйте конфигурацию зоны.

zonecfg:my-zone> commit

21. Выйдите из команды zonecfg.

zonecfg:my-zone> exit

Следует отметить, что даже в том случае, если в запросе явно не вводится commit, операция commit автоматически выполняется при вводе exit или при обнаружении EOF.

Команда zonecfg также позволяет использовать несколько под команд, заключенных в кавычки и разделенных символом точки с запятой, в одной команде интерпретатора команд.

global# zonecfg -z my-zone "create ; set zonepath=/export/home/my-zone"

zonecfg:zone1> create

https://docs.oracle.com/zone/index.html

http://www.enote-vl.ru/resources/articles/212-solaris-zones

Solaris 11.4

Запускаем команду zonecfg с указанием имени нашей будущей зоны.

- создание или удаление конфигурации зоны;

- добавление ресурсов к определенной конфигурации;

- настройка свойств ресурсов, добавляемых в конфигурацию;

- удаление ресурсов из определенной конфигурации;

- запрос или проверка конфигурации;

- сохранение параметров конфигурации;

- возврат к предыдущей конфигурации;

- переименование зоны;

Поскольку зона еще не существует, нам рекомендуется ее создать.

# zonecfg -z zone1

zone1: No such zone configured

Use 'create' to begin configuring a new zone.

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

zonecfg:zone1> create

Может оказаться удобным ключ -t (creat -t zone1) , ...и отредактировать

Ресурс anet автоматически создает временный интерфейс VNIC для зоны с эксклюзивным IP при загрузке зоны. VNIC удаляется, когда зона останавливается.

Удаление параметра anet: (содержит название сети, mac адрес, mtu и так далее):

remove anet <-----для Sol.11.4

set ip-type=shared (set ip-type=shared)

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

zonecfg:zone1> set zonepath=/export/home/zone1

Зона должна автоматически загружаться, когда загружается глобальная зона.Если установлено значение true , зона автоматически загружается при загрузке глобальной зоны, для автоматической загрузки зон также необходимо включить службу зон svc:/system/zones:default . Если не надо, то =false.

zonecfg:zone1> set autoboot=true - false

LOFS (Loopback Virtual File System) Файловые системы, в петлевом режиме

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

Если надо задаем дополнительно монтируемые в виртуальной зоне файловые системы. В данном примере указано, что каталог /opt/csw из глобальной зоны будет смонтирован в нашей виртуальной зоне в каталог /mnt, порядок такой же как и в стандартной команде mount: определить (если надо создать) точку монтирования, задать командой set special=(то что монтируем).

zonecfg:zone1> add fs

zonecfg:zone1:fs> set dir=/mnt

задаем точку монтирования здесь это будет: /mnt

zonecfg:zone1:fs> set special=/opt/csw

задаем, что каталог/opt/csw из глобальной зоны, будет смонтирован в /mnt в настраиваемой зоны и в итоге: /opt/csw глобальной зоны будет доступен для чтения и записи в не глобальной зоне.

zonecfg:zone1:fs> set type=lofs

zonecfg:zone1:fs> add options [nodevices,logging]

zonecfg:zone1:fs> end

Еще пример:

zonecfg:myzone3> add fs

zonecfg:myzone3:fs> set dir=/opt/local

zonecfg:myzone3:fs> set special=/usr/local

zonecfg:myzone3:fs> set type=lofs

zonecfg:myzone3:fs> add options [ro,nodevices]

zonecfg:myzone3:fs> end

zonecfg:myzone3> add fs

zonecfg:myzone3:fs> set dir=/mnt

zonecfg:myzone3:fs> set special=/dev/dsk/c0t0d0s7

zonecfg:myzone3:fs> set raw=/dev/rdsk/c0t0d0s7

zonecfg:myzone3:fs> set type=ufs

zonecfg:myzone3:fs> end

zonecfg:myzone3> add fs

zonecfg:myzone3:fs> set dir=/opt/sfw

zonecfg:myzone3:fs> set special=/opt/sfw

zonecfg:myzone3:fs> set type=lofs

zonecfg:myzone3:fs> add options [ro,nodevices]

zonecfg:myzone3:fs> end

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

Задаем дополнительные пути с программными продуктами, которые будут подключены в виртуальной зоне. Все разделы будут смонтированы с правами –«только чтение». По умолчанию к зоне подключаются из глобальной системы следующие разделы:

/lib

/platform

/sbin

/usr

zonecfg:zone1> add inherit-pkg-dir

zonecfg:zone1:inherit-pkg-dir> set dir=/opt/sfw

zonecfg:zone1:inherit-pkg-dir> end

PS** (похоже в Solaris_11 ресурса "inherit-pkg-dir" вообще не существует ....?, до Solaris10 включительно есть ( на 1020 г.) ...Unfortunately, "inherit-pkg-dir" was an important part of "sparse-root" local zones, which was incompatible with IPS packaging ideology, so it was cut out of OpenSolaris Indiana as well as its descendants (OpenIndiana, Solaris 11). https://openindiana.org/)

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

(zonecfg:zone1> set ip-type=shared)

zonecfg:zone1> add net (remove net physical=NIC)

https://docs.huihoo.com/solaris/11.2/html/E36813/gicom.html

zonecfg:zone1:net> set address=192.168.1.100/24

zonecfg:zone1:net> set defrouter=192.168.1.1 (optional)

zonecfg:zone1:net> set physical=net0 e1000g0

zonecfg:zone1:net> end

Добавляем доступ к устройствам. Ниже добавлены все имеющиеся pts устройства. По умолчанию виртуальной зоне предоставляется минимальный набор доступных устройств и вам необходимо вручную добавить доступ к тем устройствам, которые необходимы процессам в виртуальной зоне. Доступ к устройствам предоставляется ограниченным – нет возможности не удалить устройство, не переконфигурировать его. www.thegeekdiary.com/adding-new-resources-to-a-running-zone-online/

zonecfg:zone1> add device

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

zonecfg:zone1:device> end

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

zonecfg:zone1> add attr

zonecfg:zone1:attr> set name=comment

zonecfg:zone1:attr> set type=string

zonecfg:zone1:attr> set value="Example zone"

zonecfg:zone1:attr> end

С помощью команды info можно посматривать установленные параметры.

zonecfg:zone1> info

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

zonecfg:zone1> verify

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

zonecfg:zone1> commit

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

zonecfg:zone1> exit



# zonecfg -z zone1 info

# zlogin zone1

# zlogin -l user zone1

# zlogin zone1 shutdown

# zlogin zone1 shutdown -y -g0 -i0

(root@zone1:~# halt , shutdown -y -g0 -i0)

# zoneadm -z zone1 halt

# zoneadm -z zone1 boot

# zoneadm -z zone1 reboot

# zoneadm list -iv list [list_options] -- Отображение названия текущих зон или указанной зоны, если указано.

# zoneadm list -iv По умолчанию перечисляет все рабочие зоны. Если вы используете эту под команду с параметром zoneadm –z zonename, она перечисляет только указанную зону, независимо от ее состояния. В этом случае опции –i и –c запрещены. Если не указаны ни опции -i, ни -c, отображаются все рабочие зоны.

The following list_options are supported:

–c Показать все настроенные зоны. Эта опция переопределяет опцию -i.

–i Показать все установленные зоны.

–p Запросить машинный анализируемый вывод. Выходной формат представляет собой список строк, по одной на зону, с полями, разделенными двоеточиями. Эти поля: zoneid:zonename:state:zonepath:uuid:brand:ip-type:\ r/w:file-mac-profile

Если zonepath содержит встроенные двоеточия, они могут быть экранированы обратной косой чертой («\:»), которая может быть обработана с помощью функции shell read (1) с переменной среды IFS. Значение uuid назначается libuuid (3LIB), когда зона установлена, и полезно для идентификации той же зоны, когда она присутствует (или переименована) в альтернативных средах загрузки. Любое программное обеспечение, которое анализирует выходные данные команды «zoneadm list -p», должно иметь возможность обрабатывать любые поля, которые могут быть добавлены в будущем.

Опции –v и –p являются взаимоисключающими. Если ни –v, ни –p не используются, в списке отображается только имя зоны.

–v

Отображение подробной информации, включая имя зоны, идентификатор, текущее состояние, корневой каталог, тип бренда, тип ip и параметры

Опции –v и –p являются взаимоисключающими. Если ни –v, ни –p не используются, в списке отображается только имя зоны.



# zonecfg -z zone1 delete -F

Using the zonecfg Command to Revert or Remove a Zone Configuration

Перестанавливая зону с тем же именем понадобится удалить устройство с диска (и все с ним связанное): тут

# zoneadm list -iv # zoneadm list -cv

root@solaris:~# zonecfg

Use 'create' to begin configuring a new zone.

zonecfg> info

No such zone exists

Use 'create' to begin configuring a new zone.

zonecfg>

Сервисы установки: https://docs.oracle.com/cd/E37838_01

$ installadm create-service (-y без вопросов)

@solaris:/export/home# installadm list

Service Name Status Arch Type Secure Alias Aliases Clients Profiles Manifests

------------ ------ ---- ---- ------ ----- ------- ------- -------- ---------

default-i386 on i386 pkg no yes 0 0 0 1

solaris11_4-i386 on i386 pkg no no 1 0 0 1

zoneadm -z zone1 install

...........................................................

Не стоит выполнять этот этап вечером когда интернет загружен будет постоянная ошибка 502 Bad Gateway возможно сервера Oracle загружены в это время, но слава богу есть кэш (как и сеансовый уровень OSI) и раза с 5-го "все будет хорошо".

Installation: Succeeded

done.

Done: Installation completed in 1224.302 seconds.

Next Steps: Boot the zone, then log into the zone console (zlogin -C) to complete the configuration process.

Log saved in non-global zone as /export/home/zone1/root/var/log/zones/zoneadm.20200210T105236Z.zone1.install

zoneadm -z zone1 boot

zlogin -C zone1

Только команда zlogin с параметром -C может использоваться для входа в зону, которая не находится в рабочем состоянии, для дальнейшей инсталяции.

zone1 console login: user

Password:

Oracle Corporation SunOS 5.11 11.4 Aug 2018

user@zone1:~$

user@zone1:~$ ping -s 8.8.8.8

(-s метка времени, если просто ping 8.8.8.8 ,то 8.8.8.8 is alive - живой)

(-I <интервал> ping через заданный интервал ping -I 5 8.8.8.8)

PING 8.8.8.8: 56 data bytes

64 bytes from dns.google (8.8.8.8): icmp_seq=0. time=24.820 ms

64 bytes from dns.google (8.8.8.8): icmp_seq=1. time=21.883 ms

64 bytes from dns.google (8.8.8.8): icmp_seq=2. time=21.039 ms

64 bytes from dns.google (8.8.8.8): icmp_seq=3. time=19.958 ms

^C

----8.8.8.8 PING Statistics----

4 packets transmitted, 4 packets received, 0% packet loss

round-trip (ms) min/avg/max/stddev = 19.958/21.925/24.820/2.085

user@zone1:~$

Not enough space

Cause:

This message indicates that the system is running many large applications simultaneously and has run out of swap space (virtual memory).

zlogin - войти в зону (из глобальной зоны или по ssh: ssh user@192.168.x.xxx)

zlogin [ -CE ] [ -e c ] [ -l username ] zonename

zlogin [ -ES ] [ -e c ] [ -l username ] zonename utility [ аргумент ] ...

Три режима:

  • Interactive Mode - В этом режиме zlogin создает новый псевдо-терминал для использования в сеансе входа в систему.

  • Non-Interactive Mode - ............

  • Console Mode - Если указана опция -C, пользователь подключается к устройству консоли зоны, а zlogin работает в режиме консоли. Консоль зоны доступна, когда зона находится в установленном состоянии. Соединения с консолью постоянны при перезагрузке зоны.

Options The following options are supported:

-C

Connects to the zone console.

-e c

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

-E

Отключает возможность доступа к расширенным функциям или отключения от входа в систему с помощью символа escape-последовательности.

-l username

Указывает другое имя пользователя для зоны входа в систему. Если вы не используете эту опцию, имя пользователя зоны будет «root». Эта опция недопустима, если указана опция -C.

-S

“Safe” login mode. zlogin does minimal processing and does not invoke login(1) or su(1M). The -S option can not be used if a username is specified through the -l option, and cannot be used with console logins. This mode should only be used to recover a damaged zone when other forms of login have become impossible.

Escape Sequences

Lines that you type that start with the tilde character (~) are “escape sequences”. The escape character can be changed using the -e option.

~.

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

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


How to Exit a Non-Global Zone

To disconnect from a non-global zone, use one of the following methods.

To exit the zone non-virtual console:

zonename# exit

To disconnect from a zone virtual console, use the tilde (~) character and a period:

zonename# ~.

...на практике это работает сразу(не медля) после нажатия ENTER (ENTER + ~.) ..и выходит не в глобальную зону, а вообще закрывает сессию

https://docs.oracle.com/cd/E36784_01

https://docs.oracle.com/cd/E19253-01/820-2979/

$ ssh user@192.168.1.222

Password:

Last login: Sat Feb 15 14:42:10 2020 from 192.168.1.201

Oracle Corporation SunOS 5.11 11.4 Aug 2018

user@solaris:~$ roles

zonemng,root

user@solaris:~$ su zonemng

Password:

zonemng@solaris:~$ zlogin -l user zone2

[Connected to zone 'zone2' pts/2]

Last login: Sat Feb 15 18:00:00 2020 on pts/2

Oracle Corporation SunOS 5.11 11.4 Aug 2018

user@zone2:~$

pkg install apache-24 (стоит по умолчанию)

pkg install vim (стоит по умолчанию)

svcadm enable apache24 (запустить)

http://192.168.1.100/

# zonecfg -z zone1

Use 'create' to begin configuring a new zone.

zonecfg:zone1> create

create: Using system default template 'SYSdefault'

zonecfg:zone1> remove anet

zonecfg:zone1> set ip-type=shared

zonecfg:zone1> set zonepath=/export/home/zone1

zonecfg:zone1> set autoboot=false

zonecfg:zone1> add net

zonecfg:zone1:net> set address=192.168.1.151/24

zonecfg:zone1:net> set physical=net0

zonecfg:zone1:net> end

zonecfg:zone1> add device

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

zonecfg:zone1:device> end

zonecfg:zone1> add attr

zonecfg:zone1:attr> set name=comment

zonecfg:zone1:attr> set type=string

zonecfg:zone1:attr> set value='wordpress'

zonecfg:zone1:attr> end

zonecfg:zone1> info

zonecfg:zone1> verify

zonecfg:zone1> commit

zonecfg:zone1> exit

#

Проверить состояние:

@solaris:~# zoneadm list -iv

ID NAME STATUS PATH BRAND IP

0 global running / solaris shared

1 zone1 running /export/home/zone1 solaris shared

- zone2 installed /export/home/zone2 solaris shared

@solaris:~#

Зоны могут быть удалены или переустановлены под тем же именем с различным содержанием. Зоны также могут быть переименованы без изменения содержимого. По этим причинам UUID является более надежным дескриптором (описателем), чем имя зоны. global# zoneadm list -p

root@solaris:~# zoneadm list -p

0:global:running:/::solaris:shared:-:none:

1:zone1:running:/export/home/zone1:bd34b07b-e59a-461a-a5d1-98af04764fba:solaris:shared:-:none:

root@solaris:~# zoneadm -z zone1 -u bd34b07b-e59a-461a-a5d1-98af04764fba list -v

ID NAME STATUS PATH BRAND IP

1 zone1 running /export/home/zone1 solaris shared

root@solaris:~#

=========== удаляются/редактируются примерно так: ========

zonecfg -z zone1

zonecfg:zone1> info

fs 0:

dir: /opt/local

special: /usr/local

type: lofs

options: []

fs 1:

dir: /opt/sfw

special: /opt/sfw

type: lofs

options: [

zonecfg:zone1> remove fs 0

zonecfg:zone1> remove fs 1

zonecfg:zone1> info

zonecfg:zone1> commit

zonecfg:zone1> exit

Откат или удаление конфигурации зоны при помощи команды zonecfg

========== как и добавляются ===============

zonecfg -z zone1

zonecfg:zone1> add fs

zonecfg:zone1:fs> set dir=/opt/csw

zonecfg:zone1:fs> set special=/opt/csw

zonecfg:zone1:fs> set type=lofs

zonecfg:zone1:fs> end

zonecfg:zone1> verify

zonecfg:zone1> commit

zonecfg:zone1> end

И в результате все устанавлимое в /opt/csw в глобальной зоне, будет загружаться при старте и в не глобальную зону.

==== добавить "набор данных (dataset)" в работающую зону =====

https://docs.oracle.com/cd/E37838_01/html/

# zfs create rpool/dataset

# zfs unmount rpool/dataset

# zonecfg -z zone1 -r

zonecfg:zone1> add dataset

zonecfg:zone1:dataset> set name=rpool/dataset

zonecfg:zone1:dataset> end

zonecfg:zone1> info dataset

dataset 0:

name: rpool/dataset

alias: dataset

zonecfg:zone1> commit

zone 'zone1': Checking: Adding dataset name=rpool/dataset

zone 'zone1': Applying the changes

zonecfg:zone1> exit

root@solaris:~#

========== Смена IP и маски в зонах Solaris 10 ========

Входим в конфигурацию зоны:

# zonecfg -z zone1

zonecfg:zone1> info или

(# zonecfg -z zone1 info)

(# zonecfg -z zone1 info net)

(# zonecfg -z zone1 info device)

( # zonecfg -z zone1 info fs ...и тд)

net:

address: 192.168.100

physical: net0

defrouter: 192.168.192.1

Выбираем необходимый адаптер:

zonecfg:zone1> select net physical=net0

Убеждаемся что это он:

zonecfg:zone1:net> info

net:

address: 192.168.1.100

physical: net0

defrouter: 192.168.1.1

Устанавливаем IP адрес и необходимую нам маску:

zonecfg:meinzone:net> set address=192.168.1.101/24

Проверяем:

zonecfg:zone1:net> info

net:

address: 192.168.1.101/24

physical: net0

defrouter: 192.168.1.1

Сохраняем:

zonecfg:zone1:net> end

zonecfg:zone1> commit

zonecfg:zone1> exit

Перезагружаем зону(еще лучше делать все это в не рабочей зоне)

#zoneadm -z zone1 reboot

root@zone1:/etc/apache2/2.4/samples-conf.d# ls

autoindex.conf manual.conf ssl.conf

dav.conf mpm.conf userdir.conf

default.conf multilang-errordoc.conf vhosts.conf

info.conf php5.6.conf

languages.conf proxy-html.conf

Apache Php phpMyAdmin


# pkg install php-56

(проще поставить; AMP (Apache + MySQL + PHP) # pkg install amp)

# pkg install /web/php-71 (так лучше)

После установки пакетов php SMF необходимо остановить веб-сервер Apache и скопировать php56.ini в /etc/apache2/2.4/conf.d:

# svcadm disable svc:/network/http:apache24

# cd /etc/apache2/2.4/samples-conf.d

# ls

autoindex.conf manual.conf ssl.conf

dav.conf mpm.conf userdir.conf

default.conf multilang-errordoc.conf vhosts.conf

info.conf php5.6.conf

languages.conf proxy-html.conf

# cp php5.6.conf /etc/apache2/2.4/conf.d/php5.6.conf

Чтобы включить расширения PHP, раскомментируйте нужные строки в файле extensions.ini, расположенном в /etc/php/5.6/conf.d:

# cd /etc/php/5.6/conf.d

# vim extensions.ini

;extension=ldap.so

extension=mbstring.so

;extension=mysql.so

;extension=mysqli.so

;extension=opcache.so

extension=openssl.so

;extension=pcntl.so

для использования с mysql и phpmyadmin раскоментировать:

;extension=mysql.so

;extension=mysqli.so

Cнова запустить Apache:

# svcadm enable svc:/network/http:apache24

# svcs | grep svc:/network/http:apache24

online - 19:40:58 879 svc:/network/http:apache24

или;

#svcs -v apache24

STATE NSTATE STIME CTID FMRI

online - 13:21:29 276 svc:/network/http:apache24

man pages section 1: User Commands - svcs(1)

Создадим файл ndex.php:

# cd /var/apache2/2.4/htdocs

# mkdir maintest

# cd maintest

# touch index.php

# vim index.php

<?php

print_r (phpinfo());

?>

http://192.168.1.100/maintest/index.php

PS*** https://devanswers.co/problem-php-7-2-phpmyadmin-warning-in-librariessql-count/

http://os-solaris.ru/?p=1006

С PHP 7_2 могут быть проблемы совместимости, поэтому скачать с офицального сайта;

https://www.phpmyadmin.net/downloads/

wget https://files.phpmyadmin.net/phpMyAdmin/5.0.1/phpMyAdmin-5.0.1-all-languages.zip

...,порядок установки такой же как из CSW.

pkgadd по умолчанию недоступен в Solaris 11 (zones), но его можно установить:

# pkg install SUNWpkgcmds (зато vim по default)

http://pkg.oracle.com/solaris/release/en/index.shtml


=========phpMyAdmin====https://www.newalive.net/phpmyadmin.html ========

Установить из CSW https://www.opencsw.org/packages/phpmyadmin/

pkgadd -d http://get.opencsw.org/now

/opt/csw/bin/pkgutil -U

/opt/csw/bin/pkgutil -y -i phpmyadmin

/usr/sbin/pkgchk -L CSWphpmyadmin # list files

Скопировать папку: cp -r /opt/csw/share/www/phpmyadmin /var/apache2/2.4/htdocs/

cd /var/apache2/2.4/htdocs/phpmyadmin

vim config.sample.inc.php, отредактировать (все удалить оставить):

<?php

/* External Server #1 */

$i++;

$cfg['Servers'][$i]['verbose'] = 'solaris';

$cfg['Servers'][$i]['host'] = '192.168.1.150';

$cfg['Servers'][$i]['connect_type'] = 'tcp';

$cfg['Servers'][$i]['extension'] = 'mysqli';

$cfg['Servers'][$i]['auth_type'] = 'cookie';

$cfg['Servers'][$i]['AllowNoPassword'] = false;

переименовать config.sample.inc.php в config.inc.php

Если ошибки с паролем и пользователем, то назначит(переставить) пароль root

для mysql: https://qna.habr.com/q/439469 https://sqlinfo.ru/articles/info/16.html

root@zone1:~# svcadm disable mysql

root@zone1:~# cd /etc/mysql/5.6

root@zone1:/etc/mysql/5.6# ls

my.cnf

root@zone1:/etc/mysql/5.6# vim my.cnf

дописать строку: skip-grant-tables (потом закоментировать) после чего:

# svcadm enable mysql

root@zone1:/etc/mysql/5.6# mysql -u root

mysql>

обновить пароль root:

UPDATE mysql.user SET authentication_string=PASSWORD('<новый пароль>'), plugin='mysql_native_password' WHERE User='root' AND Host='localhost';

FLUSH PRIVILEGES;

root@zone1:~# svcadm disable mysql

root@zone1:~# svcs | grep mysql

root@zone1:~# svcadm enable mysql

root@zone1:~# svcs | grep mysql

online 13:18:45 svc:/application/database/mysql:version_56

root@zone1:~# svcadm restart mysql

root@zone1:~#

root@zone1:~# svcadm disable apache24

root@zone1:~# svcadm enable apache24

root@zone1:~# svcs | grep apache24

online 14:33:14 svc:/network/http:apache24

root@zone1:~#

http://192.168.1.100/phpmyadmin/

Выбрать English язык (что бы не было; JSON encoding failed malformed utf-8 characters)

.....и это от того, что надо создать "человеческий" config.inc.php, а не config.sample.inc.php : https://mb4.ru/phpmyadmin-blowfish-secret.html

prstat - report active process statistics

SYNOPSIS

prstat [-acDHJLmNRrtTv] [-d u | d] [-C psrsetlist] [-h lgrplist]

[-j projlist] [-k tasklist] [-n ntop[,nbottom]]

[-p pidlist] [-P cpulist] [-s key | -S key ]

[-u euidlist] [-U uidlist] [-z zoneidlist] [-Z]

[interval [count]]

-T (-J)

Report information about processes and tasks. In this mode prstat

displays separate reports about processes and tasks at the same

time.

-Z

Report information about processes and zones. In this mode, prstat

displays separate reports about processes and zones at the same

time.

-s (key)

There are five possible key values:

cpu Sort by process CPU usage. This is the default.

time Sort by process execution time.

size Sort by size of process image.

rss Sort by resident set size.

pri Sort by process priority.

zonemng@solaris:~$ prstat -Zs size

PID USERNAME SIZE RSS STATE PRI NICE TIME CPU PROCESS/NLWP

2076 root 133912K 123244K sleep 59 0 0:00:39 0.244% sstored/14

1420 root 61180K 57640K sleep 59 0 0:00:18 0.000% svc.configd/22

2092 webservd 31688K 3452K sleep 59 0 0:00:00 0.000% httpd/28

.............................................................

1957 root 31584K 14940K sleep 59 0 0:00:00 0.000% fmd/14

2079 webservd 31192K 11480K sleep 59 0 0:00:00 0.003% httpd/1

1418 root 27648K 16436K sleep 59 0 0:00:04 0.000% svc.startd/13

..............................................................

2084 nobody 12792K 1780K sleep 59 0 0:00:00 0.000% httpd.prefork/1

ZONEID NPROC SWAP RSS MEMORY TIME CPU ZONE

1 53 336892K 289752K 13.82% 0:01:05 1.071% zone1

0 87 541100K 416552K 19.87% 0:01:22 10.74% global

Total: 137 processes, 1274 lwps, load averages: 0.48, 0.53, 0.33

https://habr.com/ru/post/351298/

XAMPP кроссплатформенная сборка веб-сервера

XAMPP Solaris / 1.7.7

XAMPP is an easy to install Apache distribution

pkg install amp <-----------------> Solaris 11 Express SAMP installation

AMP Stack for Web Application Development and Deployment

http://building-amp-stack-on-solaris-10-part-1

https://freeradius.org/

Solaris + AMP (Apache + MySQL + PHP) – это набор популярных приложений с открытым исходным кодом, которые оптимизированы для работы в ОС Solaris. Среди них: Web-сервер Apache, система управления базами данных MySQL, система управления объектно-реляционными базами данных PostgreSQL, инструментальные средства разработки Sun, а также Perl, PHP и Python и другие технологии на базе открытого исходного кода.

root@zone1:~# pkg install amp

Packages to install: 10

Mediators to change: 1

Services to change: 1

Create boot environment: No

Create backup boot environment: No

DOWNLOAD PKGS FILES XFER (MB) SPEED

Completed 10/10 304/304 146.7/146.7 500k/s

PHASE ITEMS

Installing new actions 495/495

Updating package state database Done

Updating package cache 0/0

Updating image state Done

Creating fast lookup database Done

Updating package cache 1/1

PHP "активировать" в Apache

root@zone1:/etc/apache2/2.4# vim httpd.conf

<IfModule mime_module>

AddType application/x-httpd-php .php

AddType application/x-httpd-php-source .phps

Services

svcs – lists all currently installed services

svcadm enable mysql – Enable a newly installed service

svcs | grep mysql

online 19:38:51 svc:/application/database/mysql:version_56

svcs | grep apache24

online 19:21:04 svc:/network/http:apache24

svcadm restart mysql – Restart the service

root@zone1:/etc/apache2/2.4# svcadm restart svc:/network/http:apache24

root@zone1:~# svcadm restart apache24

root@zone1:~# svcadm restart http

root@zone1: echo "AddHandler application/x-httpd-php .php" >> /etc/apache2/2.4/httpd.conf

root@zone1:/etc/apache2/2.4# vim httpd.conf

<Directory>

DirectoryIndex index.html index.php

root@zone1:~# ps -ef | grep '/httpd'

http://192.168.1.100/index.php

Configuration File (php.ini) Path /etc/php/5.6

Loaded Configuration File /etc/php/5.6/php.ini

http://192.168.1.100/phpmyadmin/setup/index.php

ст.694 (733) Getting Started with Zones

ст.734 (772) Branded Zones

Project

Консолидация серверов

Средства управления проектами и задачами (ст.44)

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

Для определения порядка, в котором производится просмотр имен компьютеров в базе данных /etc/hosts и в службах NIS, NIS+ и DNS, система Solaris использует файл /etc/nsswitch.conf.

(/etc/inet/nsswitch.conf – вместо host.conf в других UNIX'ах – указание порядка опроса name сервера и файла hosts)

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

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

Идентификаторы задач (ст.50)

Каждая успешная регистрация в проекте создает новую задачу, содержащую процесс регистрации. Задача – совокупность процессов, представляющая собой набор работ во времени. Задачу также можно рассматривать как "компонент рабочей нагрузки". Каждой задаче автоматически присваивается идентификатор. Каждый процесс участвует в одной задаче, а каждая задача связана с одним проектом.

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

Задача создается при каждом присоединении проекта. Задачи создаются следующими действиями, командами и функциями:

    • login

    • cron

    • newtask

    • setproject

    • su

Одним из следующих методов можно создать так называемую "финализированную" задачу (finalized task) .

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

    • Можно использовать команду newtask с опцией - F.

    • Для проекта в базе данных project службы имен можно установить атрибут task.final. Все задачи, создаваемые в данном проекте командой setproject, имеют флаг TASK_FINAL.

Для получения дополнительной информации см. login(1), newtask(1), cron(1M), su(1M) и справочные страницы setproject(3PROJECT).

Для получения учетных данных по процессам может использоваться подсистема расширенного учета. Данные агрегируются на уровне задачи.

Команды, используемые с проектами и задачами

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

Receive-Side Scaling (RSS - Механизм масштабирования на стороне приема) — Это технология, которая равномерно распределяет нагрузку по обработке данных между ядрами процессора, позволяя оптимизировать производительность.