Guía de administración de sistemas: administración de recursos y contenedores de Oracle Solaris y zonas de Oracle Solaris

Configuración, verificación y confirmación de una zona

Utilice el comando zonecfg que se describe en la página del comando man zonecfg(1M) para llevar a cabo las acciones siguientes.

El comando zonecfg también puede utilizarse para especificar de forma persistente la configuración de administración de recursos para la zona global.

Mientras configura una zona con la utilidad zonecfg, puede utilizar el subcomando revert para deshacer la configuración de un recurso. Consulte Cómo deshacer una configuración de zona.

En Secuencia para configurar varias zonas se facilita una secuencia para configurar múltiples zonas en el sistema.

Para ver la configuración de una zona no global, consulte Cómo visualizar la configuración de una zona no global.

ProcedureCómo configurar la zona

Los únicos elementos necesarios para crear una zona no global nativa son las propiedades zonename y zonepath. Otros recursos y propiedades son opcionales. Asimismo, algunos recursos opcionales precisan seleccionar entre alternativas, por ejemplo elegir entre el recurso dedicated-cpu o el recurso capped-cpu. Consulte Datos de configuración de zonas para obtener información sobre las propiedades y los recursos de zonecfg.

Para llevar a cabo este procedimiento, debe ser el administrador global de la zona global.

  1. Conviértase en superusuario o asuma el rol de administrador principal.

    Para crear el rol y asignarlo a un usuario, consulte Using the Solaris Management Tools With RBAC (Task Map) de System Administration Guide: Basic Administration.

  2. Configure una zona con el nombre que ha elegido.

    En este ejemplo de procedimiento se utiliza el nombre my-zone.


    global# zonecfg -z my-zone
    

    Si es la primera vez que ha configurado esta zona, aparecerá el mensaje de sistema siguiente:


    my-zone: No such zone configured
    Use 'create' to begin configuring a new zone.
  3. Cree la nueva configuración de zona.

    Este procedimiento utiliza la configuración predeterminada.


    zonecfg:my-zone> create
    
  4. Defina la ruta de zona /export/home/my-zone en este procedimiento.


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

    No coloque zonepath en el ZFS en las versiones anteriores a Solaris 10 10/08.

  5. Establezca el valor de inicio automático.

    Si se configura como true, la zona se iniciará automáticamente al iniciar la zona global. En el caso de las zonas que se inician automáticamente, también debe activarse el servicio de zonas svc:/system/zones:default. El valor predeterminado es false.


    zonecfg:my-zone> set autoboot=true
    
  6. Defina los argumentos de inicio persistentes para una zona.


    zonecfg:my-zone> set bootargs="-m verbose"
    
  7. Dedique una CPU a esta zona.


    zonecfg:my-zone> add dedicated-cpu
    
    1. Defina el número de CPU.


      zonecfg:my-zone:dedicated-cpu> set ncpus=1-2
      
    2. (Opcional) Configure la importancia.


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

      El valor predeterminado es 1.

    3. Finalice la especificación.


      zonecfg:my-zone:dedicated-cpu> end
      
  8. Revise el conjunto de privilegios predeterminado.


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

    Esta línea añade la posibilidad de configurar el reloj del sistema con el conjunto de privilegios predeterminado.

  9. Defina la clase de planificación como FSS.


    zonecfg:my-zone> set scheduling-class=FSS
    
  10. Añada un límite de memoria.


    zonecfg:my-zone> add capped-memory
    
    1. Defina el límite de memoria.


      zonecfg:my-zone:capped-memory> set physical=50m
      
    2. Defina el límite de memoria de intercambio.


      zonecfg:my-zone:capped-memory> set swap=100m
      
    3. Establezca el límite de memoria bloqueada.


      zonecfg:my-zone:capped-memory> set locked=30m
      
    4. Finalice la especificación del límite de memoria.


      zonecfg:my-zone:capped-memory> end
      
  11. Añada un sistema de archivos.


    zonecfg:my-zone> add fs
    
    1. Defina el punto de montaje para el sistema de archivos /usr/local en este procedimiento.


      zonecfg:my-zone:fs> set dir=/usr/local
      
    2. Especifique que /opt/zones/my-zone/local en la zona global se montará como /usr/local en la zona que se está configurando.


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

      En la zona no global, el sistema de archivos /usr/local podrá leerse y escribirse.

    3. Especifique el tipo de sistema de archivos lofs en este procedimiento.


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

      El tipo indica el modo en que interactúa el núcleo con el sistema de archivos.

    4. Finalice la especificación del sistema de archivos.


      zonecfg:my-zone:fs> end
      

    Este paso puede realizarse más de una vez para añadir más de un sistema de archivos.

  12. (Opcional) Configure el hostid.


    zonecfg:my-zone> set hostid=80f0c086
    
  13. Añada un conjunto de datos ZFS denominado sales en la agrupación de almacenamiento tank.


    zonecfg:my-zone> add dataset
    
    1. Especifique la ruta al conjunto de datos ZFS sales.


      zonecfg:my-zone> set name=tank/sales
      
    2. Finalice la especificación de dataset.


      zonecfg:my-zone> end
      
  14. (Sólo para zonas raíz dispersas) Añada un sistema de archivos compartido que esté montado en bucle desde la zona global.

    No realice este paso para crear una zona raíz completa, que no tiene ningún sistema de archivos compartido. Consulte la descripción de las zonas raíz completas de Espacio en el disco necesario.


    zonecfg:my-zone> add inherit-pkg-dir
    
    1. Especifique que /opt/sfw en la zona global se montará en modo de sólo lectura en la zona que se está configurando.


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

      Nota –

      La base de datos de empaquetamiento de la zona se actualiza para reflejar los paquetes. Estos recursos no se pueden modificar ni eliminar una vez se ha instalado la zona utilizando zoneadm.


    2. Finalice la especificación de inherit-pkg-dir.


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

    Este paso puede realizarse más de una vez para añadir más de un sistema de archivos compartido.


    Nota –

    Si desea crear una zona raíz completa pero se han añadido recursos de sistemas de archivos compartidos predeterminados utilizando inherit-pkg-dir, debe eliminar estos recursos inherit-pkg-dir predeterminados utilizando zonecfg antes de instalar la zona:

    • 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


  15. (Opcional) Si está creando una zona de IP exclusiva, configure ip-type.


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

    Nota –

    En el paso add net sólo se especificará el tipo de dispositivo físico.


  16. Añada una interfaz de red.


    zonecfg:my-zone> add net
    
    1. (Sólo IP compartida) Defina la dirección IP para la interfaz de red 192.168.0.1 en este procedimiento.


      zonecfg:my-zone:net> set address=192.168.0.1
      
    2. Establezca el tipo de dispositivo físico para la interfaz de red, el dispositivo hme en este procedimiento.


      zonecfg:my-zone:net> set physical=hme0
      
    3. Solaris 10 10/08: (opcional, sólo IP compartida) en este procedimiento defina el enrutador predeterminado para la interfaz de red, 10.0.0.1 en este procedimiento.


      zonecfg:my-zone:net> set defrouter=10.0.0.1
      
    4. Finalice la especificación.


      zonecfg:my-zone:net> end
      

    Este paso puede realizarse más de una vez para añadir más de una interfaz de red.

  17. Añada un dispositivo.


    zonecfg:my-zone> add device
    
    1. Defina la coincidencia del dispositivo /dev/sound/* en este procedimiento.


      zonecfg:my-zone:device> set match=/dev/sound/*
      
    2. Finalice la especificación del dispositivo.


      zonecfg:my-zone:device> end
      

    Este paso puede realizarse más de una vez para añadir más de un dispositivo.

  18. Añada un control de recurso de zona utilizando el nombre de propiedad.


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

    Este paso puede realizarse más de una vez para añadir más de un control de recurso.

  19. Añada un comentario utilizando el tipo de recurso attr.


    zonecfg:my-zone> add attr
    
    1. Defina el nombre como comment.


      zonecfg:my-zone:attr> set name=comment
      
    2. Defina el tipo como string.


      zonecfg:my-zone:attr> set type=string
      
    3. Configure el valor como un comentario que describe la zona.


      zonecfg:my-zone:attr> set value="This is my work zone."
      
    4. Finalice la especificación del tipo de recurso attr.


      zonecfg:my-zone:attr> end
      
  20. Verifique la configuración de zona para la zona.


    zonecfg:my-zone> verify
    
  21. Confirme la configuración de zona para la zona.


    zonecfg:my-zone> commit
    
  22. Cierre el comando zonecfg.


    zonecfg:my-zone> exit
    

    Aunque no haya escrito explícitamente commit en el indicador, se intenta automáticamente llevar a cabo commit al escribir exit o en caso de que finalice el archivo.

Uso de varios subcomandos desde la línea de comandos

Consejo –

El comando zonecfg también admite varios subcomandos, entre comillas y separados por puntos y coma, de la misma invocación de shell.


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

Dónde proseguir

Consulte Instalación e inicio de zonas para instalar la configuración de zona confirmada.

Secuencia para configurar varias zonas

Puede utilizar esta secuencia para configurar e iniciar varias zonas en el sistema. La secuencia adopta los parámetros siguientes:

Para ejecutar la secuencia, debe ser el administrador global de la zona global. El administrador global tiene privilegios de superusuario en la zona global o asume el rol de administrador principal.


#!/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

ProcedureCómo visualizar la configuración de una zona no global

Para llevar a cabo este procedimiento, debe ser el administrador global de la zona global.

  1. Conviértase en superusuario o asuma el rol de administrador principal.

    Para crear el rol y asignarlo a un usuario, consulte Using the Solaris Management Tools With RBAC (Task Map) de System Administration Guide: Basic Administration.

  2. Visualice la configuración de una zona.


    global# zonecfg -z zonename info