JavaScript is required to for searching.
Ignorer les liens de navigation
Quitter l'aperu
Administration Oracle Solaris : Oracle Solaris Zones, Oracle Solaris 10 Zones et gestion des ressources     Oracle Solaris 11 Information Library (Français)
search filter icon
search icon

Informations document

Préface

Partie I Gestion des ressources Oracle Solaris

1.  Introduction à la gestion des ressources

2.  Projets et tâches (présentation)

3.  Administration des projets et des tâches

4.  Comptabilisation étendue (présentation)

5.  Administration de la comptabilisation étendue (tâches)

6.  Contrôles des ressources (présentation)

7.  Administration des contrôles des ressources (tâches)

8.  Ordonnanceur FSS (présentation)

9.  Administration de l'ordonnanceur FSS (tâches)

10.  Contrôle de la mémoire physique à l'aide du démon de limitation des ressources (présentation)

11.  Administration du démon de limitation des ressources (tâches)

12.  Pools de ressources (présentation)

13.  Création et administration des pools de ressources (tâches)

14.  Exemple de configuration de la gestion des ressources

Partie II Oracle Solaris Zones

15.  Introduction à Oracle Solaris Zones

16.  Configuration des zones non globales (présentation)

17.  Planification et configuration de zones non globales (tâches)

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

Evaluation du paramétrage du système

Espace disque requis

Limitation de la taille d'une zone

Détermination du nom d'hôte d'une zone et de la configuration réseau requise

Nom d'hôte

Adresse réseau en mode IP partagé

Adresse réseau IPv4

Adresse réseau IPv6

Adresse réseau en mode IP exclusif

Configuration des systèmes de fichiers

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

Configuration, vérification et validation d'une zone

Configuration d'une zone

Etape suivante

Script de configuration de zones multiples

Affichage de la configuration d'une zone non globale

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

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

Effacement d'une propriété dans la configuration d'une zone

Renommage d'une zone

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

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

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

Rétablissement de la configuration d'une zone

Suppression de la configuration d'une zone

18.  A propos de l'installation, de la fermeture, de l'arrêt, de la désinstallation et du clonage des zones non globales (présentation)

19.  Installation, initialisation, fermeture, arrêt, désinstallation et clonage des zones non globales (tâches)

20.  Connexion à une zone non globale (présentation)

21.  Connexion à une zone non globale (tâches)

22.  A propos des migrations de zones et de l'outil zonep2vchk

23.  Migration de systèmes Oracle Solaris et migration de zones non globales (tâches)

24.  A propos de l'installation automatique et des packages dans un système Oracle Solaris 11 comportant des zones installées

25.  Administration d'Oracle Solaris Zones (présentation)

26.  Administration d'Oracle Solaris Zones (tâches)

27.  Configuration et administration de zones immuables

28.  Dépannage des problèmes liés à Oracle Solaris Zones

Partie III Oracle Solaris 10 Zones

29.  Introduction à Oracle Solaris 10 Zones

30.  Evaluation d'un système Oracle Solaris 10 et création d'une archive

31.  (Facultatif) Migration d'une zone non globale native Oracle Solaris 10 vers une zone Oracle Solaris

32.  Configuration de la zone marquée solaris10

33.  Installation de la zone marquée solaris10

34.  Initialisation d'une zone, connexion et migration de zone

Glossaire

Index

Configuration, vérification et validation d'une zone

Exécutez la commande zonecfg décrite dans la page de manuel zonecfg(1M) pour effectuer 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.

Configuration d'une zone

Pour créer une zone non globale, 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 effectuer cette procédure, vous devez être administrateur global ou disposer des autorisations appropriées pour la zone globale.

  1. Connectez-vous en tant qu'administrateur.
  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
    create: Using system default template 'SYSdefault'
  4. Définissez le chemin de la zone, ici /zones/my-zone.
    zonecfg:my-zone> set zonepath=/zones/my-zone

    La zone doit résider sur un jeu de données ZFS. Le jeu de données ZFS est automatiquement créé lorsque la zone est installée ou jointe. Si un jeu de données ZFS ne peut pas être créé, l'installation ou la jonction de la zone est impossible. Notez que si le répertoire parent du chemin de la zone existe, il doit correspondre au point de montage d'un jeu de données monté.

  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. La valeur par défaut est false. Notez que les zones ne s'initialisent automatiquement que si le service svc:/system/zones:default est activé. Ce service est activé par défaut.

    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. (Facultatif) 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=1g
    2. Définissez la limite de mémoire swap.
      zonecfg:my-zone:capped-memory> set swap=2g
    3. Définissez la limite de mémoire verrouillée.
      zonecfg:my-zone:capped-memory> set locked=500m
    4. Terminez la spécification des limites de mémoire.
      zonecfg:my-zone:capped-memory> end

    Remarque - Pour utiliser la ressource capped-memory, le package resource-cap doit être installé dans la zone globale.


  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/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/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. Au besoin, définissez l'ID de l'hôte 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

    L'administrateur de zone peut créer et détruire des systèmes de fichiers à l'intérieur du jeu de données et modifier ses propriétés.

  14. Créez une zone en mode IP exclusif avec une carte d'interface réseau virtuelle (VNIC) automatique.
    zonecfg:my-zone> set ip-type=exclusive
    zonecfg:my-zone> add anet
    1. Choisissez le lien sous-jacent auto pour créer le lien.
      zonecfg:my-zone:anet> set lower-link=auto

      Le démon zoneadmd choisit automatiquement le lien sur lequel la VNIC va être créée à chaque initialisation de la zone.

    2. Clôturez la spécification.
      zonecfg:my-zone:anet> end
  15. 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.

  16. Pour permettre l'étiquetage sur disque avec la commande format, un disque/LUN entier doit être délégué à une zone et la propriété allow-partition doit être définie.
    zonecfg:my-zone> add device
    1. Définissez la correspondance de périphérique, ici /dev/*dsk/c2t40d3*.
      zonecfg:my-zone:device> set match=/dev/*dsk/c2t40d3*
    2. Réglez la propriété allow-partition sur true.
      zonecfg:my-zone:device> set allow-partition=true
    3. 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.

  17. Afin d'autoriser les opérations uscsi sur un disque, vous devez définir la propriété allow-raw-io.
    zonecfg:my-zone> add device
    1. Définissez la correspondance de périphérique, ici /dev/*dsk/c2t40d3*.
      zonecfg:my-zone:device> set match=/dev/*dsk/c2t40d3*
    2. Réglez la propriété allow-raw-io sur true.
      zonecfg:my-zone:device> set allow-raw-io=true
    3. Terminez la spécification du périphérique.
      zonecfg:my-zone:device> end

      Attention

      Attention - Si vous autorisez les opérations uscsi d'une zone sur un disque, vous autorisez l'accès de la zone à tout autre périphérique connecté au même bus que le disque. Par conséquent, l'activation de cette fonctionnalité peut créer un risque en matière de sécurité et susciter des attaques contre la zone globale ou d'autres zones qui utilisent les ressources sur le même bus. Reportez-vous à la page de manuel uscsi(7I).


    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=/zones/my-zone"

Pour les zones en mode IP partagé, vous ne pouvez affecter une adresse statique qu'à une ressource zonecfg net . Elle n'est pas disponible sur la ligne de commande.


Etape 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. Les zones créées sont par défaut des zones en mode IP exclusif avec une ressource anet .

Avant d'exécuter le script, créez un profil de configuration en exécutant SCI Tool :

global# sysconfig create-profile -o sc_config.xml

Il regroupe les paramètres suivants :

Pour exécuter le script, vous devez être l'administrateur global doté de privilèges root dans la zone globale ou un utilisateur disposant du profil de droits correct.

#!/bin/ksh
#
# Copyright 2006-2011 Oracle Corporation. All rights reserved.
# Use is subject to license terms.
#

#
# This script serves as an example of how to instantiate several zones
# with no administrative interaction.  Run the script with no arguments to
# get a usage message.  The general flow of the script is:
#
#   1) Parse and check command line arguments
#   2) Configure all zones that are not yet configured
#   3) Install the first zone, if needed
#   4) Create the remaining zones as clones of the first zone
#
# Upon successful completion, the requested number of zones will be
# been installed and booted.
#

export PATH=/usr/bin:/usr/sbin

me=$(basename $0)
function fail_usage {
    print -u2 "Usage:
    $me <#-of-zones> <zonename-prefix> <basedir> <sysconfig.xml>

Generate sysconfig.xml with:
    sysconfig create-profile -o sysconfig.xml

When running sysconfig, choose \"Automatically\" or \"None\" for network
configuration. The value entered for \"Computer Name\" will ignored:
each zone's nodename will be set to match the zone name."

    exit 2
}

function log {
    print "$(date +%T) $@"
}

function error {
    print -u2 "$me: ERROR: $@"
}

function get_zone_state {
    zoneadm -z "$1" list -p 2>/dev/null | cut -d: -f3
}

#
# Parse and check arguments
#
(( $# != 4 )) && fail_usage

# If $1 is not a number nzones will be set to 0.
integer nzones=$1
if (( nzones < 1 )); then
    error "Invalid number of zones \"$1\""
    fail_usage
fi
# Be sure that zonename prefix is an allowable zone name and not too long.
prefix=$2
if [[ $prefix != @([a-zA-Z0-9])*([-_.a-zA-Z0-9]) || ${#prefix} > 62 ]]; then
    error "Invalid zonename prefix"
    fail_usage
fi
# Be sure that basedir is an absolute path.  zoneadm will create the directory
# if needed.
dir=$3
if [[ $dir != /* ]]; then
    error "Invalid basedir"
    fail_usage
fi
# Be sure the sysconfig profile is readable and ends in .xml
sysconfig=$4
if [[ ! -f $sysconfig || ! -r $sysconfig || $sysconfig != *.xml ]]; then
    error "sysconfig profile missing, unreadable, or not *.xml"
    fail_usage
fi

#
# Create a temporary directory for all temp files
#
export TMPDIR=$(mktemp -d /tmp/$me.XXXXXX)
if [[ -z $TMPDIR ]]; then
    error "Could not create temporary directory"
    exit 1
fi
trap 'rm -rf $TMPDIR' EXIT

#
# Configure all of the zones
#
for (( i=1; i <= nzones; i++ )); do
    zone=$prefix$i
    state=$(get_zone_state $zone)
    if [[ -n $state ]]; then
        log "Skipping configuration of $zone: already $state"
        continue
    fi

    log "Configuring $zone"
    zonecfg -z "$zone" "create; set zonepath=$dir/$zone"
    if (( $? != 0 )); then
        error "Configuration of $zone failed"
        exit 1
    fi
done

#
# Install the first zone, then boot it for long enough for SMF to be
# initialized.  This will make it so that the first boot of all the clones
# goes much more quickly.
#
zone=${prefix}1
state=$(get_zone_state $zone)
if [[ $state == configured ]]; then
    log "Installing $zone"

    # Customize the nodename in the sysconfig profile
    z_sysconfig=$TMPDIR/$zone.xml
    search="<propval type=\"astring\" name=\"nodename\" value=\".*\"/>"
    replace="<propval type=\"astring\" name=\"nodename\" value=\"$zone\"/>"
    sed "s|$search|$replace|" $sysconfig > $z_sysconfig

    zoneadm -z $zone install -c $z_sysconfig
    if (( $? != 0 )); then
        error "Installation of $zone failed."
        rm -f $z_sysconfig
        exit 1
    fi
    rm -f $z_sysconfig
elif [[ $state != installed ]]; then
    error "Zone $zone is currently in the $state state."
    error "It must be in the installed state to be cloned."
    exit 1
fi
# Boot the zone no further than single-user.  All we really want is for
# svc:/system/manifest-import:default to complete.
log "Booting $zone for SMF manifest import"
zoneadm -z $zone boot -s
if (( $? != 0 )); then
    error "Failed to boot zone $zone"
    exit 1
fi
# This zlogin will return when manifest-import completes
log "Waiting for SMF manifest import in $zone to complete"
state=
while [[ $state != online ]]; do
    printf "."
    sleep 1
    state=$(zlogin $zone svcs -Ho state \
        svc:/system/manifest-import:default 2>/dev/null)
done
printf "\n"
log "Halting $zone"
zoneadm -z $zone halt
if (( $? != 0 )); then
    error "failed to halt $zone"
    exit 1
fi
firstzone=$zone

#
# Clone and boot the remaining zones
#
for (( i=2; i <= $nzones; i++ )); do
    zone=$prefix$i

    # Be sure that it needs to be installed
    state=$(get_zone_state $zone)
    if [[ $state != configured ]]; then
        log "Skipping installation of $zone: current state is $state."
        continue
    fi

    log "Cloning $zone from $firstzone"

    # Customize the nodename in the sysconfig profile
    z_sysconfig=$TMPDIR/$zone.xml
    search='<propval type="astring" name="nodename" value=".*"/>'
    replace='<propval type="astring" name="nodename" value="'$zone'"/>'
    sed "s|$search|$replace|" $sysconfig > $z_sysconfig

    # Clone the zone
    zoneadm -z $zone clone -c $z_sysconfig $firstzone
    if (( $? != 0 )); then
        error "Clone of $firstzone to $zone failed"
        rm -f $z_sysconfig
        exit 1
    fi
    rm -f $z_sysconfig

    # Boot the zone
    log "Booting $zone"
    zoneadm -z $zone boot
    if (( $? != 0 )); then
        error "Boot of $zone failed"
        exit 1
    fi
done

#
# Boot the first zone now that clones are done
#
log "Booting $firstzone"
zoneadm -z $firstzone boot
if (( $? != 0 )); then
    error "Boot of $firstzone failed"
    exit 1
fi

log "Completed in $SECONDS seconds"
exit 0

Sortie du script :

$ ./buildzones
Usage:
        buildzones <#-of-zones> <zonename-prefix> <basedir> <sysconfig.xml>

Generate sysconfig.xml with:
        sysconfig create-profile -o sysconfig.xml

When running sysconfig, choose "Automatically" or "None" for network
configuration. The value entered for "Computer Name" will be ignored:
each zone's nodename will be set to match the zone name.

# ~user/scripts/buildzones 3 bz /tank/bz /var/tmp/sysconfig.xml
12:54:04 Configuring bz1
12:54:05 Configuring bz2
12:54:05 Configuring bz3
12:54:05 Installing bz1
A ZFS file system has been created for this zone.
Progress being logged to /var/log/zones/zoneadm.20110816T195407Z.bz1.install
       Image: Preparing at /tank/bz/bz1/root.

 Install Log: /system/volatile/install.24416/install_log
AI Manifest: /usr/share/auto_install/manifest/zone_default.xml
  SC Profile: /tmp/buildzones.F4ay4T/bz1.xml
    Zonename: bz1
Installation: Starting ....

Affichage de la configuration d'une zone non globale

Vous devez être l'administrateur global dans la zone globale ou un utilisateur disposant du profil de droits correct pour effectuer cette procédure.

  1. Connectez-vous en tant qu'administrateur.
  2. Affichez la configuration de la zone.
    global# zonecfg -z zonename info