Guide d'administration système : Gestion des ressources des conteneurs et des zones Oracle Solaris

Chapitre 18 Planification et configuration de zones non globales (tâches)

Ce chapitre décrit les opérations à effectuer avant de pouvoir configurer une zone sur un système. Il explique également comment configurer une zone et comment modifier et supprimer sa configuration.

Vous trouverez une introduction à la configuration des zones dans le Chapitre 17Configuration des zones non globales (présentation).

Planification et configuration d'une zone non globale (liste des tâches)

Avant de paramétrer votre système en vue de l'utilisation de zones, vous devez collecter des informations et prendre des décisions sur la manière dont vous allez les configurer. Vous trouverez, dans la liste ci-dessous, un résumé des tâches de planification et de configuration correspondantes.

Tâche 

Description 

Voir 

Planifier la stratégie de la zone 

  • Répertoriez les applications présentes sur le système et déterminez celles qui devront être exécutées dans une zone.

  • Évaluez l'espace disque disponible pour accueillir les fichiers uniques dans la zone.

  • Si vous utilisez également des fonctions de gestion de ressources, déterminez comment aligner la zone avec les limites de gestion des ressources.

Reportez-vous à l'historique d'utilisation, ainsi qu'aux sections Espace disque requis et Pools de ressources utilisés dans les zones.

Attribuer un nom à la zone. 

Choisissez un nom de zone conforme aux conventions de dénomination. 

Reportez-vous aux sections Données de configuration de zones et Nom d'hôte.

Déterminer le chemin de la zone. 

Le chemin du répertoire racine de chaque zone est lié au répertoire racine de la zone globale. 

Reportez-vous à la section Données de configuration de zones.

Évaluer les restrictions de CPU nécessaires si vous ne configurez pas de pools de ressources. 

Examinez les exigences applicatives. 

Reportez-vous à la section Solaris 10 8/07 : ressource dedicated-cpu.

Évaluer l'allocation de mémoire nécessaire si vous avez l'intention de limiter la mémoire de la zone à l'aide de rcapd depuis la zone globale.

Examinez les exigences applicatives. 

Reportez-vous auChapitre 10Contrôle de la mémoire physique à l'aide du démon d'allocation restrictive (présentation), au Chapitre 11Administration du démon d'allocation restrictive (tâches) et à la section Solaris 10 8/07 : contrôle de la mémoire physique et ressource capped-memory.

Définir FSS comme ordonnanceur par défaut du système. 

Assignez des parts de CPU à chacune des zones pour contrôler leur droit aux ressources CPU. En se basant sur les parts allouées, le FSS garantit un partage équitable des ressources CPU entre les zones. 

Chapitre 8Ordonnanceur FSS (présentation), section Classe de programmation dans une zone.

Déterminer si la zone doit être en mode IP partagé ou IP exclusif. 

S'il s'agit d'une zone en mode IP partagé (type de zone par défaut), obtenez ou configurez ses adresses IP. Selon votre configuration, vous devez obtenir au moins une adresse IP pour chaque zone non globale que vous souhaitez doter d'un accès réseau. 

S'il s'agit d'une zone en mode IP exclusif, déterminez la liaison de données qui lui sera assignée. Ce type de zone requiert un accès exclusif à une ou plusieurs interfaces réseau. Cette interface peut se présenter sous la forme d'un LAN séparé tel que bge1 ou d'un VLAN séparé tel que bge2000. La liaison de données doit être GLDv3. Les liaisons de données non GLDv3 se distinguent par la mention type: legacy dans la sortie de la commande dladm show-link.

Reportez-vous aux sections Détermination du nom d'hôte d'une zone et obtention de son adresse réseau et Configuration d'une zone, et au Guide d’administration système : services IP.

Pour plus d'informations sur les interfaces GLDv3, reportez-vous à la section Types d’interface Oracle Solaris du Guide d’administration système : services IP.

Répertorier les systèmes de fichiers à monter dans la zone. 

Examinez les exigences applicatives. 

Pour plus d'informations, reportez-vous à la section Systèmes de fichiers montés dans une zone.

Répertorier les interfaces réseau devant être disponibles dans la zone 

Examinez les exigences applicatives. 

Pour plus d'informations, reportez-vous à la section Interfaces réseau en mode IP partagé.

Déterminer si le jeu de droits d'accès de la zone non globale par défaut doit être modifié 

Vérifiez le jeu de privilèges : jeu par défaut, privilèges pouvant être ajoutés et supprimés, et privilèges ne pouvant pas encore être utilisés. 

Reportez-vous à la section Privilèges dans une zone non globale.

Répertorier les périphériques à configurer dans chaque zone. 

Examinez les exigences applicatives. 

Reportez-vous à la documentation de l'application. 

Configurer la zone 

Utilisez zonecfg pour créer une configuration pour la zone.

Reportez-vous à la section Configuration, vérification et validation d'une zone.

Vérifier et valider la zone configurée 

Déterminez si les ressources et les propriétés spécifiées sont valides sur un système hypothétique. 

Reportez-vous à la section Configuration, vérification et validation d'une zone.

Évaluation du paramétrage du système

L'utilitaire Zones peut être utilisé sur toute machine équipée de Solaris 10. L'utilisation des zones est liée aux considérations suivantes concernant la machine :

Espace disque requis

L'espace disque utilisable par une zone n'est pas limité. La restriction de l'espace est du ressort de l'administrateur global, qui doit s'assurer que la capacité locale de stockage est suffisante pour accueillir un système de fichiers racine de zone non globale. Même un système à processeur unique peut supporter plusieurs zones s'exécutant simultanément.

La nature des packages installés dans la zone globale a une incidence sur l'espace disque requis par les zones non globales créées. Le nombre de packages et l'espace disque requis sont des facteurs.

Zones à racine fragmentée

Dans la version Solaris 10, les zones non globales disposant de ressources inherit-pkg-dir sont appelées zones à racine fragmentée.

Les zones de ce type optimisent le partage des objets de la manière suivante :

Dans le modèle à racine fragmentée, tous les packages semblent être installés dans la zone non globale. Les packages qui ne livrent pas de contenu dans les systèmes de fichiers montés en loopback en lecture seule sont entièrement installés. Il n'est pas nécessaire d'installer de contenu livré dans les systèmes de fichiers montés en loopback en lecture seule, car ce contenu est hérité (et visible) de la zone globale.

Il est recommandé de prévoir 40 méga-octets supplémentaires de RAM par zone, mais cela n'est pas indispensable sur les machines disposant d'un espace de swap suffisant.

Zones à racine entière

Les zones de ce type offrent une capacité de configuration maximale. Tous les packages requis et tous les packages Solaris optionnels sélectionnés sont installés sur les systèmes de fichiers privés de la zone. Ce modèle de zone présente différents avantages. Il offre notamment aux administrateurs globaux la possibilité de personnaliser la configuration des systèmes de fichiers des zones. Ils peuvent par exemple ajouter arbitrairement des packages tiers ou non fournis en standard.

Les exigences requises en ce qui concerne le disque sont déterminées par l'espace disque utilisé par les packages installés dans la zone globale.


Remarque –

Si vous créez une zone à racine fragmentée contenant les répertoires inherit-pkg-dir ci-dessous, vous devez supprimer ces répertoires de la configuration de zone non globale avant l'installation de la zone pour obtenir une zone à racine entière :

Reportez-vous à la section Configuration d'une zone.


Limitation de la taille d'une zone

Pour restreindre la taille d'une zone, vous avez le choix entre plusieurs options :

Détermination du nom d'hôte d'une zone et obtention de son adresse réseau

Vous devez déterminer le nom d'hôte de la zone, puis lui assigner une adresse IPv4 ou configurer manuellement une adresse IPv6 et la lui assigner pour la doter d'un connectivité réseau.

Nom d'hôte

Le nom d'hôte choisi doit être défini soit dans la base de données hosts, soit dans la base de données /etc/inet/hosts, comme spécifié par le fichier /etc/nsswitch.conf de la zone globale. Les bases de données réseau sont des fichiers fournissant des informations sur la configuration réseau. Le fichier nsswitch.conf spécifie le service d'attribution de nom à utiliser.

S'il s'agit de fichiers locaux, la base de données hosts est mise à jour dans le fichier /etc/inet/hosts. Les noms d'hôtes des interfaces réseau de zone sont résolus depuis la base de données locale hosts dans /etc/inet/hosts. L'adresse IP peut également être spécifiée directement lors de la configuration de la zone, ce qui évite toute résolution de nom d'hôte.

Pour plus d'informations, reportez-vous à la section Fichiers de configuration TCP/IP du Guide d’administration système : services IP et à la section Bases de données réseau et fichier nsswitch.conf du Guide d’administration système : services IP.

Adresse réseau en mode IP partagé

Toute zone en mode IP partagé requérant une connectivité réseau possède une ou plusieurs adresses à IP unique. Les adresses IPv4 et IPv6 sont prises en charge.

Adresse réseau IPv4

Si vous utilisez IPv4, obtenez une adresse et assignez-la à la zone concernée.

Vous pouvez également spécifier la longueur du préfixe de l'adresse IP. Le format de ce préfixe se présente de la manière suivante : adresse/longueur_préfixe, par exemple, 192.168.1.1/24. l'adresse à utiliser est 192.168.1.1 et le masque de réseau 255.255.255.0 ou le masque dont les 24 premiers bits sont des bits 1.

Adresse réseau IPv6

Si vous utilisez IPv6, vous devez configurer manuellement l'adresse. Habituellement, au moins deux types d'adresses doivent être configurées :

Adresse lien-local

Les adresses lien-local se présentent sous la forme fe80:: ID d'interface 64 bits/10, /10 correspondant à une longueur de préfixe de 10 bits.

Adresse constituée d'un préfixe global configuré sur le sous-réseau

Les adresses unicast globales sont basées sur un préfixe 64 bits configuré par l'administrateur pour chaque sous-réseau et sur un ID d'interface 64 bits. Le préfixe peut également être obtenu en exécutant la commande ifconfig avec l'option -a6 sur tout système se trouvant sur le sous-réseau qui a été configuré en vue de l'utilisation du protocole IPv6.

L'ID d'interface 64 bits est typiquement dérivé d'une adresse MAC. Une adresse alternative unique de zone peut être dérivée de l'adresse IPv4 de la zone globale de la manière suivante :

16 bits of zero:upper 16 bits of IPv4 address:lower 16 bits of IPv4 address:a zone-unique number

Si l'adresse IPv4 de la zone globale est par exemple 192.168.200.10, fe80::c0a8:c80a:1/10 est une adresse lien-local valide pour une zone non globale utilisant un numéro unique de zone 1. Si le préfixe global utilisé sur ce sous-réseau est 2001:0db8:aabb:ccdd/64, 2001:0db8:aabb:ccdd::c0a8:c80a:1/64 est une adresse unicast globale unique pour la même zone non globale. Notez que vous devez spécifier une longueur de préfixe lorsque vous configurez une adresse IPv6.

Pour plus d'informations sur les adresses lien-local et les adresses unicast globales, reportez-vous à la page de manuel inet6(7P).

Adresse réseau en mode IP exclusif

Pour configurer des adresses à l'intérieur d'une zone en mode IP exclusif, procédez comme pour une zone globale. Notez que vous pouvez utiliser l'utilitaire de configuration automatique d'adresses sans état IPv6 et DHCP pour configurer des adresses.

Pour plus d'informations, reportez-vous à la page de manuel sysidcfg(4).

Configuration des systèmes de fichiers

La plate-forme virtuelle étant paramétrée, vous pouvez spécifier le nombre de montages à exécuter. Les systèmes de fichiers montés en loopback dans une zone à l'aide du système de fichiers loopback virtuel LOFS doivent être montés avec l'option nodevices. Pour plus d'informations sur l'option nodevices, reportez-vous à la section Systèmes de fichiers et zones non globales.

Le système de fichiers LOFS permet de créer un système de fichiers virtuel et d'accéder ainsi aux fichiers par le biais d'un nom de chemin alternatif. Dans les zones non globales, le montage en loopback donne l'impression que l'arborescence du système de fichiers est dupliquée sous la racine de la zone. À l'intérieur de celle-ci, tous les fichiers sont accessibles avec un nom de chemin commençant par la racine de la zone. Le montage LOFS préserve l'espace de noms du système de fichiers.

Figure 18–1 Systèmes de fichiers montés en loopback

L'illustration présente des systèmes de fichiers montés en loopback.

Pour plus d'informations, reportez-vous à la page de manuel lofs(7S).

Création, modification et suppression de configurations de zones non globales (liste des tâches)

Tâche 

Description 

Voir 

Configurer une zone non globale. 

Pour créer une zone, vérifier la configuration et la valider, exécutez la commande zonecfg.

Vous pouvez également avoir recours à un script pour configurer et initialiser plusieurs zones sur le système. Pour afficher la configuration de zones non globales, exécutez la commande zonecfg.

Configuration, vérification et validation d'une zone, Script de configuration de zones multiples

Modifier la configuration d'une zone. 

Utilisez cette procédure pour modifier un type de ressource dans la configuration d'une zone ou ajouter un périphérique dédié à une zone. 

Modification de la configuration d'une zone à l'aide de zonecfg

Rétablir ou supprimer la configuration d'une zone. 

Pour annuler un paramétrage de ressource dans la configuration d'une zone ou supprimer la configuration d'une zone, exécutez la commande zonecfg.

Rétablissement ou suppression de la configuration d'une zone à l'aide de zonecfg

Supprimer la configuration d'une zone. 

Pour supprimer la configuration d'une zone du système, exécutez la commande zonecfg avec la sous-commande delete.

Suppression de la configuration d'une zone

Configuration, vérification et validation d'une zone

Utilisez la commande zonecfg, décrite dans la page de manuel zonecfg(1M), pour exécuter les actions suivantes :

La commande zonecfg permet également de spécifier de manière persistante les paramètres de gestion des ressources pour la zone globale.

Pour annuler le paramétrage d'une ressource pendant la configuration d'une zone à l'aide de l'utilitaire zonecfg, exécutez la commande revert. Reportez-vous à la section Rétablissement de la configuration d'une zone.

Pour savoir comment configurer plusieurs zones sur le système à l'aide d'un script, consultez la section Script de configuration de zones multiples.

Pour plus d'informations sur l'affichage de la configuration des zones non globales, reportez-vous à la section Affichage de la configuration d'une zone non globale.

ProcedureConfiguration d'une zone

Pour créer une zone non globale native, seules les propriétés zonename et zonepath sont nécessaires. Les autres ressources et propriétés sont facultatives. Pour certaines ressources facultatives, vous devez également choisir entre plusieurs possibilités, comme, par exemple, utiliser la ressource dedicated-cpu ou la ressource capped-cpu. Pour plus d'informations sur les ressources et les propriétés zonecfg, reportez-vous à la section Données de configuration de zones.

Pour exécuter la procédure ci-dessous, vous devez être administrateur global.

  1. Devenez superutilisateur ou assumez le rôle d'administrateur principal.

    Pour savoir comment créer le rôle et l'assigner à un utilisateur, reportez-vous à la section Using the Solaris Management Tools With RBAC (Task Map) du System Administration Guide: Basic Administration.

  2. Attribuez à la zone le nom que vous avez choisi.

    Dans cet exemple, la zone est nommée my-zone.


    global# zonecfg -z my-zone
    

    Si c'est la première fois que vous configurez cette zone, le message suivant s'affiche :


    my-zone: No such zone configured
    Use 'create' to begin configuring a new zone.
  3. Créez la configuration de la nouvelle zone.

    Les paramètres utilisés sont les paramètres par défaut.


    zonecfg:my-zone> create
    
  4. Définissez le chemin de la zone, ici /export/home/my-zone.


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

    Ne placez pas le zonepath sur un ZFS pour les versions antérieures à Solaris 10 10/08.

  5. Définissez la valeur d'initialisation automatique.

    Si cette propriété est définie sur true, l'initialisation de la zone globale entraîne automatiquement celle de cette zone. Notez que les zones ne s'initialisent automatiquement que si le service svc:/system/zones:default est activé. La valeur par défaut est false.


    zonecfg:my-zone> set autoboot=true
    
  6. Définissez des arguments d'initialisation permanents pour la zone.


    zonecfg:my-zone> set bootargs="-m verbose"
    
  7. Dédiez une ou plusieurs CPU à cette zone.


    zonecfg:my-zone> add dedicated-cpu
    
    1. Définissez le nombre de CPU.


      zonecfg:my-zone:dedicated-cpu> set ncpus=1-2
      
    2. (Optionnel) Définissez l'importance.


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

      La valeur par défaut est 1.

    3. Clôturez la spécification.


      zonecfg:my-zone:dedicated-cpu> end
      
  8. Révisez le jeu de privilèges par défaut.


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

    Cette ligne ajoute la capacité à définir l'horloge système sur le jeu de privilèges par défaut.

  9. Définissez la classe de programmation sur FSS.


    zonecfg:my-zone> set scheduling-class=FSS
    
  10. Ajoutez une limite de mémoire.


    zonecfg:my-zone> add capped-memory
    
    1. Définissez la limite de mémoire.


      zonecfg:my-zone:capped-memory> set physical=50m
      
    2. Définissez la limite de mémoire swap.


      zonecfg:my-zone:capped-memory> set swap=100m
      
    3. Définissez la limite de mémoire verrouillée.


      zonecfg:my-zone:capped-memory> set locked=30m
      
    4. Terminez la spécification des limites de mémoire.


      zonecfg:my-zone:capped-memory> end
      
  11. Ajoutez un système de fichiers.


    zonecfg:my-zone> add fs
    
    1. Définissez le point de montage du système de fichiers, ici /usr/local.


      zonecfg:my-zone:fs> set dir=/usr/local
      
    2. Spécifiez que /opt/zones/my-zone/local de la zone globale doit être monté comme /usr/local dans la zone en cours de configuration.


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

      Dans la zone non globale, le système de fichiers /usr/local sera accessible en lecture et en écriture.

    3. Spécifiez le type de système de fichiers, ici lofs.


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

      Le type indique la manière dont le noyau dialogue avec le système de fichiers.

    4. Clôturez la spécification du système de fichiers.


      zonecfg:my-zone:fs> end
      

    Cette étape peut être répétée pour ajouter plus d'un système de fichiers.

  12. Facultatif : définissez la propriété hostid.


    zonecfg:my-zone> set hostid=80f0c086
    
  13. Ajoutez un jeu de données ZFS nommé sales dans le pool de stockage tank.


    zonecfg:my-zone> add dataset
    
    1. Spécifiez le chemin du jeu de données ZFS sales.


      zonecfg:my-zone> set name=tank/sales
      
    2. Terminez la spécification du jeu de données.


      zonecfg:my-zone> end
      
  14. (Uniquement pour les zones à racine fragmentée) Ajoutez un système de fichiers partagé monté en loopback depuis la zone globale.

    Ignorez cette étape si la zone créée est une zone à racine entière (ce type de zone ne possède pas de systèmes de fichiers partagés). Pour plus de détails sur les zones à racine entière, reportez-vous à la section Espace disque requis.


    zonecfg:my-zone> add inherit-pkg-dir
    
    1. Spécifiez que /opt/sfw de la zone globale doit être monté en mode lecture seule dans la zone en cours de configuration.


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

      Remarque –

      La base de données de packages de la zone est mise à jour en conséquence. À partir du moment où la zone a été installée à l'aide de zoneadm, ces ressources ne peuvent être ni modifiées ni supprimées.


    2. Terminez la spécification de inherit-pkg-dir.


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

    Cette étape peut être répétée pour ajouter plusieurs systèmes de fichiers partagés.


    Remarque –

    Si vous voulez créez une zone à racine entière et que des ressources de systèmes de fichiers partagés par défaut ont été ajoutées à l'aide de inherit-pkg-dir, vous devez supprimer ces ressources inherit-pkg-dir par défaut avec zonecfg avant d'installer la zone :

    • 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. (Optionnel) Si la zone créée est une zone en mode IP exclusif, définissez le type d'IP (ip-type).


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

    Remarque –

    Seul le type correspondant aux périphériques physiques doit être spécifié dans l'étape add net.


  16. Ajoutez une interface réseau.


    zonecfg:my-zone> add net
    
    1. (Uniquement pour les zones à racine entière) Définissez l'adresse IP de l'interface réseau, ici 192.168.0.1.


      zonecfg:my-zone:net> set address=192.168.0.1
      
    2. Définissez le type de périphérique physique de l'interface réseau, ici le périphérique hme.


      zonecfg:my-zone:net> set physical=hme0
      
    3. Solaris 10 08/10 : (facultatif, IP partagé uniquement) définissez le routeur par défaut de l'interface réseau 10.0.0.1 lors de cette procédure.


      zonecfg:my-zone:net> set defrouter=10.0.0.1
      
    4. Clôturez la spécification.


      zonecfg:my-zone:net> end
      

    Cette étape peut être répétée pour ajouter plus d'une interface réseau.

  17. Ajoutez un périphérique.


    zonecfg:my-zone> add device
    
    1. Définissez la correspondance de périphérique, ici /dev/sound/* .


      zonecfg:my-zone:device> set match=/dev/sound/*
      
    2. Terminez la spécification du périphérique.


      zonecfg:my-zone:device> end
      

    Cette étape peut être répétée pour ajouter plusieurs périphériques.

  18. Ajoutez un contrôle de ressource à l'échelle de la zone à l'aide du nom de propriété.


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

    Cette étape peut être répétée pour ajouter plusieurs contrôles de ressource.

  19. Ajoutez un commentaire à l'aide du type de ressource attr.


    zonecfg:my-zone> add attr
    
    1. Définissez le nom sur comment.


      zonecfg:my-zone:attr> set name=comment
      
    2. Définissez le type sur string.


      zonecfg:my-zone:attr> set type=string
      
    3. Définissez la valeur sur un commentaire décrivant cette zone.


      zonecfg:my-zone:attr> set value="This is my work zone."
      
    4. Clôturez la spécification du type de ressource attr.


      zonecfg:my-zone:attr> end
      
  20. Vérifiez la configuration de la zone.


    zonecfg:my-zone> verify
    
  21. Validez la configuration de la zone.


    zonecfg:my-zone> commit
    
  22. Quittez la commande zonecfg.


    zonecfg:my-zone> exit
    

    Notez que, même si vous ne répondez pas explicitement commit à l'invite, l'opération commit est automatiquement tentée lorsque vous tapez exit ou lorsqu'une condition EOF se produit.

Utilisation de plusieurs sous-commandes sur la ligne de commande

Astuce –

La commande zonecfg prend également en charge des sous-commandes multiples, placées entre guillemets et séparées par des points-virgules, d'un même appel de shell.


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

Étape suivante

Pour installer la configuration de la zone validée, reportez-vous à la section Installation et initialisation de zones.

Script de configuration de zones multiples

Ce script permet de configurer et d'initialiser plusieurs zones sur un système. Il regroupe les paramètres suivants :

Vous devez être administrateur global de la zone globale pour pouvoir exécuter ce script. L'administrateur global possède des privilèges de superutilisateur dans la zone globale ou assume le rôle d'administrateur 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

ProcedureAffichage de la configuration d'une zone non globale

Pour exécuter la procédure ci-dessous, vous devez être administrateur global.

  1. Devenez superutilisateur ou assumez le rôle d'administrateur principal.

    Pour savoir comment créer le rôle et l'assigner à un utilisateur, reportez-vous à la section Using the Solaris Management Tools With RBAC (Task Map) du System Administration Guide: Basic Administration.

  2. Affichez la configuration de la zone.


    global# zonecfg -z zonename info
    

Modification de la configuration d'une zone à l'aide de zonecfg

La commande zonecfg permet également de :

ProcedureModification d'un type de ressource dans la configuration d'une zone

Vous pouvez sélectionner un type de ressource et modifier la spécification de cette ressource.

Une fois la zone installée à l'aide de zoneadm, le contenu des packages logiciels du répertoire inherit-pkg-dir ne peut être ni modifié ni supprimé.

Pour exécuter la procédure ci-dessous, vous devez être administrateur global.

  1. Devenez superutilisateur ou assumez le rôle d'administrateur principal.

    Pour savoir comment créer le rôle et l'assigner à un utilisateur, reportez-vous à la section Using the Solaris Management Tools With RBAC (Task Map) du System Administration Guide: Basic Administration.

  2. Sélectionnez la zone à modifier, ici my-zone .


    global# zonecfg -z my-zone
    
  3. Sélectionnez le type de ressource à modifier, par exemple un contrôle de ressource.


    zonecfg:my-zone> select rctl name=zone.cpu-shares
    
  4. Supprimez la valeur actuelle.


    zonecfg:my-zone:rctl> remove value (priv=privileged,limit=20,action=none)
    
  5. Ajoutez la nouvelle valeur.


    zonecfg:my-zone:rctl> add value (priv=privileged,limit=10,action=none)
    
  6. Terminez la spécification rctl modifiée.


    zonecfg:my-zone:rctl> end
    
  7. Validez la configuration de la zone.


    zonecfg:my-zone> commit
    
  8. Quittez la commande zonecfg.


    zonecfg:my-zone> exit
    

    Notez que, même si vous ne répondez pas explicitement commit à l'invite, l'opération commit est automatiquement tentée lorsque vous tapez exit ou lorsqu'une condition EOF se produit.

    Les modifications effectuées à l'aide de zonecfg prennent effet lorsque vous réinitialisez la zone.

ProcedureSolaris 10 8/07 : effacement d'un type de propriété dans la configuration d'une zone

Utilisez cette procédure pour réinitialiser une propriété autonome.

  1. Devenez superutilisateur ou assumez le rôle d'administrateur principal.

    Pour savoir comment créer le rôle et l'assigner à un utilisateur, reportez-vous à la section Using the Solaris Management Tools With RBAC (Task Map) du System Administration Guide: Basic Administration.

  2. Sélectionnez la zone à modifier, ici my-zone.


    global# zonecfg -z my-zone
    
  3. Effacez la propriété à modifier, ici l'association de pools existante.


    zonecfg:my-zone> clear pool
    
  4. Validez la configuration de la zone.


    zonecfg:my-zone> commit
    
  5. Quittez la commande zonecfg.


    zonecfg:my-zone> exit
    

    Notez que, même si vous ne répondez pas explicitement commit à l'invite, l'opération commit est automatiquement tentée lorsque vous tapez exit ou lorsqu'une condition EOF se produit.

    Les modifications effectuées à l'aide de zonecfg prennent effet lorsque vous réinitialisez la zone.

ProcedureDe Solaris 10 3/05 à Solaris 10 11/06 : modification d'un type de propriété dans la configuration d'une zone

La procédure ci-dessous permet de réinitialiser une propriété autonome ne possédant pas de propriétés liées à configurer. Vous pouvez par exemple rétablir la ressource pool sur null pour supprimer une association de pools existante.

  1. Devenez superutilisateur ou assumez le rôle d'administrateur principal.

    Pour savoir comment créer le rôle et l'assigner à un utilisateur, reportez-vous à la section Using the Solaris Management Tools With RBAC (Task Map) du System Administration Guide: Basic Administration.

  2. Sélectionnez la zone à modifier, ici my-zone.


    global# zonecfg -z my-zone
    
  3. Réinitialisez la propriété à modifier, ici l'association de pools existante.


    zonecfg:my-zone> set pool=""
    
  4. Validez la configuration de la zone.


    zonecfg:my-zone> commit
    
  5. Quittez la commande zonecfg.


    zonecfg:my-zone> exit
    

    Notez que, même si vous ne répondez pas explicitement commit à l'invite, l'opération commit est automatiquement tentée lorsque vous tapez exit ou lorsqu'une condition EOF se produit.

    Les modifications effectuées à l'aide de zonecfg prennent effet lorsque vous réinitialisez la zone.

ProcedureSolaris 10 8/07 : renommage d'une zone

Cette procédure peut être utilisée pour renommer les zones dont l'état est Configuré ou Installé.

Pour exécuter la procédure ci-dessous, vous devez être administrateur global.

  1. Devenez superutilisateur ou assumez le rôle d'administrateur principal.

    Pour savoir comment créer le rôle et l'assigner à un utilisateur, reportez-vous à la section Using the Solaris Management Tools With RBAC (Task Map) du System Administration Guide: Basic Administration.

  2. Sélectionnez la zone à renommer, ici my-zone.


    global# zonecfg -z my-zone
    
  3. Renommez la zone. Par exemple, nommez-la newzone.


    zonecfg:my-zone> set zonename=newzone
    
  4. Validez la modification.


    zonecfg:newzone> commit
    
  5. Quittez la commande zonecfg.


    zonecfg:newzone> exit
    

    Les modifications effectuées à l'aide de zonecfg prennent effet lorsque vous réinitialisez la zone.

ProcedureAjout d'un périphérique dédié à une zone

La spécification ci-après permet d'ajouter un scanner à la configuration d'une zone non globale.

Pour exécuter la procédure ci-dessous, vous devez être administrateur global.

  1. Devenez superutilisateur ou assumez le rôle d'administrateur principal.

    Pour savoir comment créer le rôle et l'assigner à un utilisateur, reportez-vous à la section Using the Solaris Management Tools With RBAC (Task Map) du System Administration Guide: Basic Administration.

  2. Ajoutez un périphérique.


    zonecfg:my-zone> add device
    
  3. Définissez la correspondance de périphérique, ici /dev/scsi/scanner/c3t4*.


    zonecfg:my-zone:device> set match=/dev/scsi/scanner/c3t4*
    
  4. Terminez la spécification du périphérique.


    zonecfg:my-zone:device> end
    
  5. Quittez la commande zonecfg.


    zonecfg:my-zone> exit
    

ProcedureDéfinition de zone.cpu-shares dans une zone globale

Cette procédure permet de définir de manière persistante les parts de CPU dans une zone globale.

Pour exécuter la procédure ci-dessous, vous devez être administrateur global.

  1. Devenez superutilisateur ou assumez le rôle d'administrateur principal.

    Pour savoir comment créer le rôle et l'assigner à un utilisateur, reportez-vous à la section Using the Solaris Management Tools With RBAC (Task Map) du System Administration Guide: Basic Administration.

  2. Utilisez la commande zonecfg.


    # zonecfg -z global
    
  3. Définissez cinq parts dans la zone globale.


    zonecfg:global> set cpu-shares=5
    
  4. Quittezzonecfg.


    zonecfg:global> exit
    

Rétablissement ou suppression de la configuration d'une zone à l'aide de zonecfg

Pour rétablir ou supprimer la configuration d'une zone, exécutez la commande zonecfg décrite dans la page de manuel zonecfg(1M).

ProcedureRétablissement de la configuration d'une zone

Pour annuler le paramétrage d'une ressource pendant la configuration d'une zone à l'aide de l'utilitaire zonecfg, exécutez la commande revert.

Pour exécuter la procédure ci-dessous, vous devez être administrateur global.

  1. Devenez superutilisateur ou assumez le rôle d'administrateur principal.

    Pour savoir comment créer le rôle et l'assigner à un utilisateur, reportez-vous à la section Using the Solaris Management Tools With RBAC (Task Map) du System Administration Guide: Basic Administration.

  2. Pendant la configuration de la zone tmp-zone, tapez info pour afficher la configuration :


    zonecfg:tmp-zone> info
    

    Le segment concernant la ressource net de la configuration se présente de la manière suivante :


    .
    .
    .
    fs:
            dir: /tmp
            special: swap
            type: tmpfs
    net:
            address: 192.168.0.1
            physical: eri0
    device
            match: /dev/pts/*
    .
    .
    .
  3. Supprimez l'adresse réseau :


    zonecfg:tmp-zone> remove net address=192.168.0.1
    
  4. Assurez-vous que l'entrée net a été supprimée.


    zonecfg:tmp-zone> info
    

    .
    .
    .
    fs:
            dir: /tmp
            special: swap
            type: tmpfs
    device
            match: /dev/pts/*
    .
    .
    .
  5. Entrez revert.


    zonecfg:tmp-zone> revert
    
  6. Répondez oui à la question suivante :


    Are you sure you want to revert (y/[n])? y
    
  7. Assurez-vous que l'adresse réseau a été rétablie :


    zonecfg:tmp-zone> info
    

    .
    .
    .
    fs:
            dir: /tmp
            special: swap
            type: tmpfs
    net:
            address: 192.168.0.1
            physical: eri0
    device
            match: /dev/pts/*
    .
    .
    .

ProcedureSuppression de la configuration d'une zone

Pour supprimer la configuration d'une zone du système, utilisez la commande zonecfg avec la sous-commande delete.

Pour exécuter la procédure ci-dessous, vous devez être administrateur global.

  1. Devenez superutilisateur ou assumez le rôle d'administrateur principal.

    Pour savoir comment créer le rôle et l'assigner à un utilisateur, reportez-vous à la section Using the Solaris Management Tools With RBAC (Task Map) du System Administration Guide: Basic Administration.

  2. Supprimez la configuration de la zone a-zone de l'une des deux manières suivantes :

    • Utilisez l'option -F pour forcer la suppression :


      global# zonecfg -z a-zone delete -F
      
    • Supprimez la zone de manière interactive en répondant oui à l'invite du système :


      global# zonecfg -z a-zone delete
      Are you sure you want to delete zone a-zone (y/[n])? y