Команда zonecfg, описанная на справочной странице zonecfg(1M), позволяет выполнять следующие действия:
создание конфигурации зоны;
проверка наличия всей требуемой информации;
Сохранение параметров конфигурации неглобальной зоны.
Команда zonecfg также позволяет сохраняемым образом определить параметры управления ресурсами для глобальной зоны.
При настройке зоны с помощью утилиты zonecfg можно воспользоваться подкомандой revert, позволяющей отменить настройку ресурса. См. Откат конфигурации зоны.
Сценарий для создания в системе нескольких зон представлен в Сценарий для настройки множественных зон.
Процедуру просмотра конфигурации неглобальной зоны приведены в Просмотр конфигурации неглобальной зоны.
Следует отметить, что для создания собственной неглобальной зоны требуются только свойства zonename и zonepath. Прочие ресурсы и свойства являются необязательными. Некоторые дополнительные ресурсы также требуют выбора одного из возможных вариантов, таких как использование ресурса dedicated-cpu или capped-cpu. Для получения информации о доступных свойствах и ресурсах команды zonecfg см. Конфигурационные данные зоны.
Для выполнения этой процедуры необходимо иметь роль глобального администратора в глобальной зоне.
Перейдите в режим суперпользователя или воспользуйтесь ролью главного администратора (Primary Administrator).
Инструкции по созданию роли и ее назначению пользователю приведены в разделе Using the Solaris Management Tools With RBAC (Task Map) в System Administration Guide: Basic Administration.
Создайте конфигурацию зоны с использованием выбранного имени зоны.
В этом примере используется имя my-zone.
global# zonecfg -z my-zone |
Если эта зона настраивается впервые, выводится следующее системное сообщение:
my-zone: No such zone configured Use 'create' to begin configuring a new zone. |
Создайте новую конфигурацию зоны.
В этой процедуре используются настройки по умолчанию от Sun.
zonecfg:my-zone> create |
Задайте путь зоны (в данной процедуре /export/home/my-zone ).
zonecfg:my-zone> set zonepath=/export/home/my-zone |
Не помещайте zonepath на ZFS для более ранних версий, чем Solaris 10 10/08.
Задайте значение автоматической загрузки.
Если установлено значение true , зона автоматически загружается при загрузке глобальной зоны. Следует отметить, что для автоматической загрузки зон также необходимо включить службу зон svc:/system/zones:default . Значение по умолчанию – false.
zonecfg:my-zone> set autoboot=true |
Установите сохраняемые загрузочные аргументы для зоны.
zonecfg:my-zone> set bootargs="-m verbose" |
Выделите один ЦП этой зоне.
zonecfg:my-zone> add dedicated-cpu |
Проверьте стандартный набор полномочий.
zonecfg:my-zone> set limitpriv="default,sys_time" |
Эта команда дает возможность установить системные часы в значение по умолчанию.
Задайте класс планирования FSS.
zonecfg:my-zone> set scheduling-class=FSS |
Добавьте ограничение памяти.
zonecfg:my-zone> add capped-memory |
Установите значение для ограничения памяти.
zonecfg:my-zone:capped-memory> set physical=50m |
Установите ограничение подкачки.
zonecfg:my-zone:capped-memory> set swap=100m |
Установите ограничение по блокированной памяти.
zonecfg:my-zone:capped-memory> set locked=30m |
Завершите определение ограничений памяти.
zonecfg:my-zone:capped-memory> end |
Добавьте файловую систему.
zonecfg:my-zone> add fs |
Задайте точку монтирования для файловой системы (в этой процедуре используется /usr/local).
zonecfg:my-zone:fs> set dir=/usr/local |
Эта команда определяет, что /opt/zones/my-zone/local из глобальной зоны монтируется в настраиваемой зоне как /usr/local.
zonecfg:my-zone:fs> set special=/opt/zones/my-zone/local |
Файловая система/usr/local будет доступна для чтения и записи в неглобальной зоне.
Укажите тип файловой системы (в этой процедуре используется lofs).
zonecfg:my-zone:fs> set type=lofs |
Типом определяется способ взаимодействия ядра с файловой системой.
Завершите определение файловой системы.
zonecfg:my-zone:fs> end |
При добавлении нескольких файловых систем повторите этот этап.
Добавьте именованный набор данных ZFS sales в пул устройств хранения данных tank.
zonecfg:my-zone> add dataset |
(Только для зоны с унаследованными каталогами) Добавьте совместно используемую файловую систему, т.е. систему, смонтированную в петлевом режиме из глобальной зоны.
Не выполняйте этот этап для создания зоны без унаследованных каталогов, которая не имеет совместно используемых файловых систем. Случай зон без унаследованных каталогов описан в Требования к дисковому пространству.
zonecfg:my-zone> add inherit-pkg-dir |
Эта команда определяет, что /opt/sfw из глобальной зоны монтируется в настраиваемой зоне в режиме только для чтения.
zonecfg:my-zone:inherit-pkg-dir> set dir=/opt/sfw |
База данных пакетов зоны обновляется для отображения пакетов. Эти ресурсы не могут быть изменены или удалены после того, как зона была установлена с помощью команды zoneadm.
Завершите определение 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
(Дополнительно) При создании зоны с эксклюзивным IP задайте ip-type.
zonecfg:my-zone> set ip-type=exclusive |
На этапе add net будет определен только тип физического устройства.
Добавьте сетевой интерфейс.
zonecfg:my-zone> add net |
(Только в случае общего IP) Задайте IP-адрес для сетевого интерфейса (в данной процедуре 192.168.0.1).
zonecfg:my-zone:net> set address=192.168.0.1 |
Укажите тип физического устройства для сетевого интерфейса. В этой процедуре используется устройство hme.
zonecfg:my-zone:net> set physical=hme0 |
Solaris 10 10/08: (дополнительно, только общий IP) Установите для сетевого интерфейса маршрутизатор по умолчанию. В данной процедуре используется значение .
zonecfg:my-zone:net> set defrouter=10.0.0.1 |
Завершите определение.
zonecfg:my-zone:net> end |
При добавлении нескольких сетевых интерфейсов повторите этот этап.
Добавьте устройство.
zonecfg:my-zone> add device |
Установите подходящее устройство (в данной процедуре /dev/sound/* ).
zonecfg:my-zone:device> set match=/dev/sound/* |
Завершите определение устройства.
zonecfg:my-zone:device> end |
При добавлении нескольких устройств повторите этот этап.
Добавьте элемент управления ресурсами для всей зоны с использованием имени свойства.
zonecfg:my-zone> set max-sem-ids=10485200 |
При добавлении нескольких элементов управления ресурсами повторите этот этап.
Добавьте комментарий с использованием типа ресурса attr.
zonecfg:my-zone> add attr |
Проверьте конфигурацию зоны "zone".
zonecfg:my-zone> verify |
Зафиксируйте конфигурацию зоны.
zonecfg:my-zone> commit |
Выйдите из команды zonecfg.
zonecfg:my-zone> exit |
Следует отметить, что даже в том случае, если в запросе явно не вводится commit, операция commit автоматически выполняется при вводе exit или при обнаружении EOF.
Команда zonecfg также позволяет использовать несколько подкоманд, заключенных в кавычки и разделенных символом точки с запятой, в одной команде интерпретатора команд.
global# zonecfg -z my-zone "create ; set zonepath=/export/home/my-zone" |
Для установки зафиксированной конфигурации зоны см. Установка и начальная загрузка зон.
Этот сценарий можно использовать для настройки и загрузки нескольких зон. Сценарий принимает следующие параметры:
количество создаваемых зон;
префикс zonename;
каталог, используемый в качестве базового каталога.
Для выполнения сценария необходимо обладать полномочиями глобального администратора в глобальной зоне. Глобальный администратор в глобальной зоне имеет полномочия суперпользователя или роль главного администратора (Primary Administrator).
#!/bin/ksh # # Copyright 2006 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # #ident "%Z%%M% %I% %E% SMI" if [[ -z "$1" || -z "$2" || -z "$3" ]]; then echo "usage: $0 <#-of-zones> <zonename-prefix> <basedir>" exit 2 fi if [[ ! -d $3 ]]; then echo "$3 is not a directory" exit 1 fi nprocs=`psrinfo | wc -l` nzones=$1 prefix=$2 dir=$3 ip_addrs_per_if=`ndd /dev/ip ip_addrs_per_if` if [ $ip_addrs_per_if -lt $nzones ]; then echo "ndd parameter ip_addrs_per_if is too low ($ip_addrs_per_if)" echo "set it higher with 'ndd -set /dev/ip ip_addrs_per_if <num>" exit 1 fi i=1 while [ $i -le $nzones ]; do zoneadm -z $prefix$i list > /dev/null 2>&1 if [ $? != 0 ]; then echo configuring $prefix$i F=$dir/$prefix$i.config rm -f $F echo "create" > $F echo "set zonepath=$dir/$prefix$i" >> $F zonecfg -z $prefix$i -f $dir/$prefix$i.config 2>&1 | \ sed 's/^/ /g' else echo "skipping $prefix$i, already configured" fi i=`expr $i + 1` done i=1 while [ $i -le $nzones ]; do j=1 while [ $j -le $nprocs ]; do if [ $i -le $nzones ]; then if [ `zoneadm -z $prefix$i list -p | \ cut -d':' -f 3` != "configured" ]; then echo "skipping $prefix$i, already installed" else echo installing $prefix$i mkdir -pm 0700 $dir/$prefix$i chmod 700 $dir/$prefix$i zoneadm -z $prefix$i install > /dev/null 2>&1 & sleep 1 # spread things out just a tad fi fi i=`expr $i + 1` j=`expr $j + 1` done wait done i=1 while [ $i -le $nzones ]; do echo setting up sysid for $prefix$i cfg=$dir/$prefix$i/root/etc/sysidcfg rm -f $cfg echo "network_interface=NONE {hostname=$prefix$i}" > $cfg echo "system_locale=C" >> $cfg echo "terminal=xterms" >> $cfg echo "security_policy=NONE" >> $cfg echo "name_service=NONE" >> $cfg echo "timezone=US/Pacific" >> $cfg echo "root_password=Qexr7Y/wzkSbc" >> $cfg # 'l1a' i=`expr $i + 1` done i=1 para=`expr $nprocs \* 2` while [ $i -le $nzones ]; do date j=1 while [ $j -le $para ]; do if [ $i -le $nzones ]; then echo booting $prefix$i zoneadm -z $prefix$i boot & fi j=`expr $j + 1` i=`expr $i + 1` done wait done |
Для выполнения этой процедуры необходимо иметь роль глобального администратора в глобальной зоне.
Перейдите в режим суперпользователя или воспользуйтесь ролью главного администратора (Primary Administrator).
Инструкции по созданию роли и ее назначению пользователю приведены в разделе Using the Solaris Management Tools With RBAC (Task Map) в System Administration Guide: Basic Administration.
Проверьте конфигурацию зоны.
global# zonecfg -z zonename info |