Systemverwaltungshandbuch: Oracle Solaris Container - Ressourcenverwaltung und Solaris Zones

So konfigurieren Sie eine lx Branded Zone

Mit dem in der Manpage zonecfg ausführlich beschriebenen Befehl zonecfg(1M) können Sie:


Tipp –

Wenn Sie im Voraus wissen, dass CDs oder DVDs zur Installation der Anwendungen in einer lx Branded Zone verwenden werden, stellen Sie bei der Erstkonfiguration der Branded Zone mit dem Befehl add fs schreibgeschützten Zugriff auf CD- oder DVD-Medien in der globalen Zone ein. Zur Installation eines Produkts in der Branded Zone können CDs oder eine DVD verwendet werden.


Beim Konfigurieren einer Zone mit dem Dienstprogramm zonecfg können Sie den Unterbefehl revert verwenden, um die Einstellung einer Ressource rückgängig zu machen. Lesen Sie dazu So setzen Sie eine Zonenkonfiguration zurück.

Ein Skript zur Konfiguration mehrerer Zonen auf einem System finden Sie unter Skript zur Konfiguration mehrerer lx Branded Zones.

Eine Anleitung, wie Sie die Konfiguration einer nicht-globalen Zone anzeigen, finden Sie unter So zeigen Sie die Konfiguration einer lx Branded Zone an.


Tipp –

Nachdem Sie die Branded Zone konfiguriert haben, sollten Sie eine Kopie der Zonenkonfiguration anlegen. Mit dieser Sicherungskopie können Sie die Zone ggf. zu einem späteren Zeitpunkt wiederherstellen. Als Superuser oder Primäradministrator drucken Sie die Konfiguration der Zone lx-zone in eine Datei. Im folgenden Beispiel wird eine Datei mit der Bezeichnung lx-zone.config verwendet.


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

Weitere Informationen finden Sie unter So stellen Sie eine einzelne nicht-globale Zone wieder her.


ProcedureSo konfigurieren, prüfen und übernehmen Sie eine lx Branded Zone

Sie können lx Branded Zones nicht auf einem Trusted Solaris-System verwenden, auf dem Labels aktiviert sind. Der Befehl zoneadm wird die Konfiguration nicht überprüfen.

Für dieses Verfahren müssen Sie als globaler Administrator bei der globalen Zone angemeldet sein.

  1. Melden Sie sich als Superuser an oder nehmen Sie die Rolle des Primäradministrators an.

    Informationen zum Erstellen von Rollen und Zuweisen von Rollen zu Benutzern finden Sie unter Using the Solaris Management Tools With RBAC (Task Map) in System Administration Guide: Basic Administration.

  2. Richten Sie eine Zonenkonfiguration mit dem von Ihnen gewählten Zonennamen ein.

    Im folgenden Beispiel wird der Name lx-zone verwendet.


    global# zonecfg -z lx-zone
    

    Wenn Sie diese Zone das erste Mal konfigurieren, wird die folgende Systemmeldung angezeigt:


    lx-zone: No such zone configured
    Use 'create' to begin configuring a new zone.
  3. Erstellen Sie die neue lx-Zonenkonfiguration mithilfe der Vorlage SUNWlx.


    zonecfg:lx-zone> create -t SUNWlx
    

    Alternativ können Sie eine leere Zone erstellen und das Brand explizit festlegen:


    zonecfg:lx-zone> create -b
    zonecfg:lx-zone> set brand=lx
    
  4. Legen Sie den Zonenpfad fest. Verwenden Sie in diesem Beispiel /export/home/lx-zone.


    zonecfg:lx-zone> set zonepath=/export/home/lx-zone
    
  5. Legen Sie einen autoboot-Wert fest.

    Wenn diese Eigenschaft auf true gesetzt ist, wird die Zone bei einem Neustart der globalen Zone automatisch gebootet. Beachten Sie, dass auch der Zonenservice svc:/system/zones:default aktiviert sein muss, damit Zonen automatisch gebootet werden können. Der Standardwert ist false.


    zonecfg:lx-zone> set autoboot=true
    
  6. Legen Sie die persistenten Boot-Argumente einer Zone fest.


    zonecfg:lx-zone> set bootargs="-i=altinit"
    
  7. Wenn Resource Pools auf dem System aktiviert sind, weisen Sie der Zone einen Pool zu.

    Im folgenden Beispiel wird der Standard-Pool mit der Bezeichnung pool_default verwendet.


    zonecfg:lx-zone> set pool=pool_default
    

    Da ein Resource Pool optional über eine zugewiesene Scheduling-Klasse verfügt, können Sie die Pools-Funktionen verwenden, um einer nicht-globalen Zone einen anderen Standard-Scheduler als den Systemstandard zuzuweisen. Anweisungen hierzu finden Sie unter So ordnen Sie einen Pool einer Scheduling-Klasse zu und Erstellen der Konfiguration.

  8. Überarbeiten Sie das Standard-Berechtigungsset.


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

    Die Berechtigung proc_priocntl dient zum Ausführen von Prozessen in der Echtzeitklasse.

  9. Stellen Sie fünf CPU-Shares ein.


    zonecfg:lx-zone> set cpu-shares=5
    
  10. Fügen Sie eine Memory Cap hinzu.


    zonecfg:lx-zone> add capped-memory
    
    1. Richten Sie die Memory Cap ein.


      zonecfg:lx-zone:capped-memory> set physical=50m
      
    2. Richten Sie eine Memory Cap für den Swap-Speicher ein.


      zonecfg:lx-zone:capped-memory> set swap=100m
      
    3. Richten Sie eine Memory Cap für den gesperrten Speicher ein.


      zonecfg:lx-zone:capped-memory> set locked=30m
      
    4. Beenden Sie die Spezifikation.


      zonecfg:lx-zone:capped-memory> end
      
  11. Fügen Sie ein Dateisystem hinzu.


    zonecfg:lx-zone> add fs
    
    1. Legen Sie den Einhängepunkt für das Dateisystem fest. Verwenden Sie in diesem Beispiel /export/linux/local.


      zonecfg:lx-zone:fs> set dir=/export/linux/local
      
    2. Legen Sie fest, dass /opt/local in der globalen Zone als /export/linux/local in der konfigurierten Zone eingehängt wird.


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

      In der nicht-globalen Zone besteht Schreib- und Lesezugriff für das Dateisystem /export/linux/local.

    3. Geben Sie den Dateisystemtyp an. Verwenden Sie in diesem Beispiel lofs.


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

      Der Typ gibt an, wie der Kernel mit dem Dateisystem interagiert.

    4. Beenden Sie die Dateisystemspezifikation.


      zonecfg:lx-zone:fs> end
      

    Dieser Schritt kann wiederholt ausgeführt werden, wenn mehrere Dateisysteme hinzuzufügen sind.

  12. Fügen Sie eine virtuelle Netzwerkschnittstelle hinzu.


    zonecfg:lx-zone> add net
    
    1. Legen Sie die IP-Adresse fest. Verwenden Sie dazu die folgende Syntax: IP-Adresse der Zone/Netzmaske. Verwenden Sie in diesem Beispiel 10.6.10.233/24.


      zonecfg:lx-zone:net> set address=10.6.10.233/24
      
    2. Legen Sie den reellen Gerätetyp für die Netzwerkschnittstelle fest. Verwenden Sie in diesem Beispiel das Gerät bge.


      zonecfg:lx-zone:net> set physical=bge0
      
    3. Beenden Sie die Spezifikation.


      zonecfg:lx-zone:net> end
      

    Dieser Schritt kann wiederholt ausgeführt werden, wenn mehrere Netzwerkschnittstellen hinzuzufügen sind.

  13. Aktivieren Sie mit dem Ressourcentyp attr ein in der globalen Zone vorhandenes Audiogerät für diese Zone.


    zonecfg:lx-zone> add attr
    
    1. Legen Sie den Namen mit audio fest.


      zonecfg:lx-zone:attr> set name=audio
      
    2. Legen Sie den Typ mit boolean fest.


      zonecfg:lx-zone:attr> set type=boolean
      
    3. Legen Sie den Wert mit true fest.


      zonecfg:lx-zone:attr> set value=true
      
    4. Beenden Sie die Spezifikation des attr-Ressourcentyps.


      zonecfg:lx-zone:attr> end
      
  14. Überprüfen Sie die Zonenkonfiguration der Zone.


    zonecfg:lx-zone> verify
    
  15. Übernehmen Sie die Zonenkonfiguration für die Zone.


    zonecfg:lx-zone> commit
    
  16. Beenden Sie den Befehl zonecfg.


    zonecfg:lx-zone> exit
    

    Wenn Sie nicht explizit commit an der Eingabeaufforderung eingeben, wird das commit automatisch versucht, wenn Sie exit eingeben oder ein EOF auftritt.

Verwenden mehrerer Unterbefehle an der Befehlszeile

Tipp –

Der Befehl zonecfg unterstützt mehrere in Anführungszeichen gestellte und durch Semikola voneinander getrennte Unterbefehle, die in der gleichen Shell aufgerufen werden.


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

Die nächsten Schritte

Informationen zur Installation der übernommenen Zonenkonfiguration finden Sie unter Installieren und Booten von lx Branded Zones.

Skript zur Konfiguration mehrerer lx Branded Zones

Mit dem folgenden Skript können Sie mehrere Zonen auf einem System konfigurieren und booten. Dieses Skript enthält die folgenden Parameter:

Zum Ausführen dieses Skripts müssen Sie als globaler Administrator in der globalen Zone angemeldet sein. Der globale Administrator hat Superuser-Berechtigungen in der globalen Zone oder nimmt die Rolle des Primäradministrators an.


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

ProcedureSo zeigen Sie die Konfiguration einer lx Branded Zone an

Für dieses Verfahren müssen Sie als globaler Administrator bei der globalen Zone angemeldet sein.

  1. Melden Sie sich als Superuser an oder nehmen Sie die Rolle des Primäradministrators an.

    Informationen zum Erstellen von Rollen und Zuweisen von Rollen zu Benutzern finden Sie unter Using the Solaris Management Tools With RBAC (Task Map) in System Administration Guide: Basic Administration.

  2. Zeigen Sie die Konfiguration einer Zone an.


    global# zonecfg -z zonename info