Руководство по системному администрированию: контейнеры в Solaris - управление ресурсами и зонами

Глава 32 Настройка типизированной зоны lx (задачи)

В этой главе описывается настройка типизированной зоны lx в системе с архитектурой x64 или x86. Процесс в основном совпадает с процедурой настройки зоны Solaris. Для настройки типизированной зоны не требуется ряд свойств.

Планирование и настройка типизированной зоны lx (карта задач)

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

Задача 

Описание 

Инструкции 

Планирование стратегии зоны 

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

  • Оценка доступности дискового пространства для хранения файлов в зоне.

  • Если также используются функции управления ресурсами, необходимо определить, как зона должна соответствовать границам управления ресурсами.

  • Если используются пулы ресурсов, в случае необходимости их следует настроить.

См. Требования к системе и необходимое дисковое пространство и Использование пулов ресурсов в зонах.

Определение имени и пути для зоны. 

Определение наименования зоны исходя из соглашений по присвоению имен. Рекомендуется использовать путь в файловой системе ZFS. Если и исходный путь zonepath , и целевой путь zonepath располагаются в ZFS и находятся в одном пуле, команда zoneadm clone позволяет автоматически клонировать зону с помощью ZFS.

См. Типы ресурсов и свойств и Руководство по администрированию файловых систем ZFS Solaris .

Получение и настройка IP-адресов для зоны. 

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

См. Определение имени узла зоны и получение сетевого адреса и System Administration Guide: IP Services.

Определение необходимости монтирования файловых систем в зоне. 

Рассмотрение требований приложений. 

Для получения дополнительной информации см. Файловые системы, монтируемые в зонах.

Определение сетевых интерфейсов, которые должны быть доступны в зоне 

Рассмотрение требований приложений. 

Для получения дополнительной информации см. раздел Сетевые интерфейсы с общим IP.

Определение необходимости изменения набора полномочий глобальной зоны по умолчанию 

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

См. Типы ресурсов и свойств и Полномочия в неглобальных зонах.

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

Создание конфигурации для зоны с помощью команды zonecfg.

См. Настройка, проверка и сохранение параметров типизированной зоны lx.

Проверка и сохранение параметров сконфигурированной зоны 

Определение корректности указанных ресурсов и параметров в гипотетической системе. 

См. Настройка, проверка и сохранение параметров типизированной зоны lx.

Настройка типизированной зоны lx

Команда zonecfg, описанная на справочной странице zonecfg(1M), позволяет выполнять следующие действия:


Совет –

Если заранее известно, что для установки приложений в типизированной зоне lx будут использоваться компакт-диски или диски DVD, при начальной настройке типизированной зоны в глобальной зоне необходимо установить для компакт-дисков или дисков DVD доступ только для чтения при помощи команды add fs. После этого в типизированной зоне можно будет установить продукт с компакт-диска или диска DVD.


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

Сценарий, позволяющий настраивать множественные зоны в системе, представлен в разделе Сценарий для настройки нескольких типизированных зон lx.

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


Совет –

После успешной настройки типизированной зоны рекомендуется создать копию конфигурации зоны. В будущем зону можно будет восстановить с этой резервной копии. Ниже показан вывод конфигурации зоны lx-zone в файл от имени суперпользователя или главного администратора. В этом примере используется файл с названием lx-zone.config.


global# zonecfg -z lx-zone export > lx-zone.config

Для получения дополнительной информации см. Восстановление отдельной неглобальной зоны.


ProcedureНастройка, проверка и сохранение параметров типизированной зоны lx

Следует отметить, что использование типизированных зон lx в системе Trusted Solaris с включенными метками невозможно. Конфигурация не будет принята командой zoneadm.

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

  1. Перейдите в режим суперпользователя или воспользуйтесь ролью главного администратора (Primary Administrator).

    Инструкции по созданию роли и ее назначению пользователю приведены в разделе Using the Solaris Management Tools With RBAC (Task Map) в System Administration Guide: Basic Administration.

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

    В этом примере используется имя lx-zone.


    global# zonecfg -z lx-zone
    

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


    lx-zone: No such zone configured
    Use 'create' to begin configuring a new zone.
  3. Создайте новую конфигурацию зоны lx с использованием шаблона SUNWlx.


    zonecfg:lx-zone> create -t SUNWlx
    

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


    zonecfg:lx-zone> create -b
    zonecfg:lx-zone> set brand=lx
    
  4. Задайте путь зоны (в данной процедуре — /export/home/lx-zone).


    zonecfg:lx-zone> set zonepath=/export/home/lx-zone
    
  5. Установите значение автоматической загрузки.

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


    zonecfg:lx-zone> set autoboot=true
    
  6. Установите сохраняемые загрузочные аргументы для зоны.


    zonecfg:lx-zone> set bootargs="-i=altinit"
    
  7. Если в системе включены пулы ресурсов, с зоной необходимо связать пул.

    В этом примере используется пул по умолчанию с названием pool_default.


    zonecfg:lx-zone> set pool=pool_default
    

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

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


    zonecfg:lx-zone> set limitpriv="default,proc_priocntl"
    

    Для запуска процессов в классе реального времени используются полномочия proc_priocntl.

  9. Укажите пять долей ЦП.


    zonecfg:lx-zone> set cpu-shares=5
    
  10. Добавьте ограничение памяти.


    zonecfg:lx-zone> add capped-memory
    
    1. Установите значение для ограничения памяти.


      zonecfg:lx-zone:capped-memory> set physical=50m
      
    2. Установите ограничение подкачки.


      zonecfg:lx-zone:capped-memory> set swap=100m
      
    3. Установите ограничение по блокированной памяти.


      zonecfg:lx-zone:capped-memory> set locked=30m
      
    4. Завершите определение.


      zonecfg:lx-zone:capped-memory> end
      
  11. Добавьте файловую систему.


    zonecfg:lx-zone> add fs
    
    1. Задайте точку монтирования для файловой системы (в этой процедуре используется /export/linux/local ).


      zonecfg:lx-zone:fs> set dir=/export/linux/local
      
    2. Эта команда определяет, что /opt/local из глобальной зоны монтируется в настраиваемой зоне как /export/linux/local.


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

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

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


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

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

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


      zonecfg:lx-zone:fs> end
      

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

  12. Добавьте виртуальный сетевой интерфейс.


    zonecfg:lx-zone> add net
    
    1. Задайте IP-адрес в форме IP-адрес_зоны/маска. В этой процедуре используется адрес 10.6.10.233/24.


      zonecfg:lx-zone:net> set address=10.6.10.233/24
      
    2. Укажите тип физического устройства для сетевого интерфейса. В этой процедуре используется устройство bge.


      zonecfg:lx-zone:net> set physical=bge0
      
    3. Завершите определение.


      zonecfg:lx-zone:net> end
      

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

  13. Включите в этой зоне звуковое устройство из глобальной зоны с помощью типа ресурса attr.


    zonecfg:lx-zone> add attr
    
    1. Задайте имя audio.


      zonecfg:lx-zone:attr> set name=audio
      
    2. Задайте тип boolean.


      zonecfg:lx-zone:attr> set type=boolean
      
    3. Задайте значение true.


      zonecfg:lx-zone:attr> set value=true
      
    4. Завершите определение типа ресурса attr.


      zonecfg:lx-zone:attr> end
      
  14. Проверьте конфигурацию зоны "zone".


    zonecfg:lx-zone> verify
    
  15. Зафиксируйте конфигурацию зоны.


    zonecfg:lx-zone> commit
    
  16. Выйдите из команды zonecfg.


    zonecfg:lx-zone> exit
    

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

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

Совет –

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


global# zonecfg -z lx-zone "create -t SUNWlx; set zonepath=/export/home/lx-zone"

Дальнейшие действия

Для получения информации об установке фиксированной конфигурации зоны см. Установка и загрузка типизированных зон lx.

Сценарий для настройки нескольких типизированных зон lx

Этот сценарий можно использовать для настройки и загрузки нескольких зон в имеющейся системе. Сценарий принимает следующие параметры:

Для выполнения сценария необходимо обладать полномочиями глобального администратора в глобальной зоне. Глобальный администратор в глобальной зоне имеет полномочия суперпользователя или роль главного администратора (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" || -z "$4" ]]; then
    echo "usage: $0 <#-of-zones> <zonename-prefix> <basedir> <template zone>"
    exit 2
fi
if [[ ! -d $3 ]]; then
    echo "$3 is not a directory"
    exit 1
fi
state=`zoneadm -z $4 list -p 2>/dev/null | cut -f 3 -d ":"`
if [[ -z "$state" || $state != "installed" ]]; then
    echo "$4 must be an installed, halted zone"
    exit 1
fi

template_zone=$4

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 clone $template_zone > /dev/null 2>&1
	if [ $? != 0 ]; then
		echo configuring $prefix$i
		F=$dir/$prefix$i.config
		rm -f $F
		echo "create -t SUNWlx" > $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 -s -d /path/to/ISOs > /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
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

ProcedureПросмотр конфигурации типизированной зоны

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

  1. Перейдите в режим суперпользователя или воспользуйтесь ролью главного администратора (Primary Administrator).

    Инструкции по созданию роли и ее назначению пользователю приведены в разделе Using the Solaris Management Tools With RBAC (Task Map) в System Administration Guide: Basic Administration.

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


    global# zonecfg -z zonename info
    

Изменение, откат или удаление конфигураций зон

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