Note-1
Created Friday 21 February 2019
Зоны
Введение в технологию Solaris Zones (ст. 225)
Zones and Containers FAQ <----------------
https://ru.bmstu.wiki/Solaris_Containers
https://docs.oracle.com/--FIREWALL
https://docs.oracle.com/cd/E53394_01 <-------------- Zone Configuration Data
Краткое описание зон
Зона обеспечивает уровень абстракции, отделяющий приложения от физических атрибутов компьютера, на котором они развернуты. В качестве примеров этих атрибутов можно привести пути к физическим устройствам. .................. 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://www.google.com/images/icons/product/drive-32.png)
![](https://www.google.com/images/icons/product/drive-32.png)
![](https://www.google.com/images/icons/product/drive-32.png)
![](https://www.google.com/images/icons/product/drive-32.png)
![](https://www.google.com/images/icons/product/drive-32.png)
Настройка зоны
https://docs.oracle.com/cd/E19253-01 <-------------------------
https://www.opennet.ru/docs/RUS/solaris_zones/
https://habr.com/------------>
Создание, изменение, удаление и управление зонами осуществляет «глобальный» администратор, администрирование внутри non-global зоны доступны только «локальному» администратору конкретной зоны.
Любая non-global зона может находится в одном из шести функциональных состояний:
Configured – это состояние означает, что установлены все необходимые параметры для данной зоны
Incomplete – это состояние устанавливается до тех пор, пока не будет корректно завершена процедура инсталляции (или удаления) зоны
Installed – зона корректно инсталлирована в системе, необходимые продукты установлены в ее корневой путь. Виртуальная система в этом состоянии только установлена – не «запущена»
Ready – в этом состоянии «запускается» виртуальная система: ядро запускает необходимые процессы, «поднимаются» виртуальные сетевые интерфейсы, монтируются файловые системы и конфигурируются выделенные устройства. На этом этапе зоне назначается уникальный ID. Пользовательские процессы в зоне не запущены.
Running – в это состояние зона переходит когда в ней запустится первый пользовательский процесс (init)
Shutting down или Down – состояние остановки функционирования данной зоны
Перевод зоны в перечисленные выше состояния осуществляются «глобальным»
администратором с помощью команд администрирования виртуальных зон.
Для создания собственной не глобальной зоны требуются только свойства 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:~$
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 + ~.) ..и выходит не в глобальную зону, а вообще закрывает сессию
$ 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/
С 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)
=========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 is an easy to install Apache distribution
pkg install amp <-----------------> Solaris 11 Express SAMP installation
AMP Stack for Web Application Development and Deployment
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
![](https://www.google.com/images/icons/product/drive-32.png)
ст.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 - Механизм масштабирования на стороне приема) — Это технология, которая равномерно распределяет нагрузку по обработке данных между ядрами процессора, позволяя оптимизировать производительность.