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) |
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
Limitation de la taille d'une zone
Détermination du nom d'hôte d'une zone et de la configuration réseau requise
Adresse réseau en mode IP partagé
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)
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
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
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)
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
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
Exécutez la commande zonecfg décrite dans la page de manuel zonecfg(1M) pour effectuer les actions suivantes :
Créer la configuration de la zone concernée
Vérifier que toutes les informations requises sont présentes
Valider la configuration de la zone non globale
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.
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.
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.
Les paramètres utilisés sont les paramètres par défaut.
zonecfg:my-zone> create create: Using system default template 'SYSdefault'
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é.
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
zonecfg:my-zone> set bootargs="-m verbose"
zonecfg:my-zone> add dedicated-cpu
zonecfg:my-zone:dedicated-cpu> set ncpus=1-2
zonecfg:my-zone:dedicated-cpu> set importance=10
La valeur par défaut est 1.
zonecfg:my-zone:dedicated-cpu> end
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.
zonecfg:my-zone> set scheduling-class=FSS
zonecfg:my-zone> add capped-memory
zonecfg:my-zone:capped-memory> set physical=1g
zonecfg:my-zone:capped-memory> set swap=2g
zonecfg:my-zone:capped-memory> set locked=500m
zonecfg:my-zone:capped-memory> end
Remarque - Pour utiliser la ressource capped-memory, le package resource-cap doit être installé dans la zone globale.
zonecfg:my-zone> add fs
zonecfg:my-zone:fs> set dir=/usr/local
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.
zonecfg:my-zone:fs> set type=lofs
Le type indique la manière dont le noyau dialogue avec le 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.
zonecfg:my-zone> set hostid=80f0c086
zonecfg:my-zone> add dataset
zonecfg:my-zone> set name=tank/sales
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.
zonecfg:my-zone> set ip-type=exclusive
zonecfg:my-zone> add anet
zonecfg:my-zone> add device
zonecfg:my-zone:device> set match=/dev/sound/*
zonecfg:my-zone:device> end
Cette étape peut être répétée pour ajouter plusieurs périphériques.
zonecfg:my-zone> add device
zonecfg:my-zone:device> set match=/dev/*dsk/c2t40d3*
zonecfg:my-zone:device> set allow-partition=true
zonecfg:my-zone:device> end
Cette étape peut être répétée pour ajouter plusieurs périphériques.
zonecfg:my-zone> add device
zonecfg:my-zone:device> set match=/dev/*dsk/c2t40d3*
zonecfg:my-zone:device> set allow-raw-io=true
zonecfg:my-zone:device> end
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.
zonecfg:my-zone> set max-sem-ids=10485200
Cette étape peut être répétée pour ajouter plusieurs contrôles de ressource.
zonecfg:my-zone> add attr
zonecfg:my-zone:attr> set name=comment
zonecfg:my-zone:attr> set type=string
zonecfg:my-zone:attr> set value="This is my work zone."
zonecfg:my-zone:attr> end
zonecfg:my-zone> verify
zonecfg:my-zone> commit
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.
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.
Pour installer la configuration de la zone validée, reportez-vous à la section Installation et initialisation de zones.
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 :
Le nombre de zones à créer
Le préfixe de nom de zone
Le répertoire à utiliser comme répertoire de base
Le nom complet du nouveau profil de configuration
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 ....
Vous devez être l'administrateur global dans la zone globale ou un utilisateur disposant du profil de droits correct pour effectuer cette procédure.
global# zonecfg -z zonename info