ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
Oracle Solaris のシステム管理 (Oracle Solaris ゾーン、Oracle Solaris 10 ゾーン、およびリソース管理) Oracle Solaris 11 Information Library (日本語) |
10. リソース上限デーモンによる物理メモリーの制御 (概要)
大域ゾーンの zone.cpu-shares を設定する方法
zonecfg コマンドを使用してゾーン構成を元に戻す、または削除する
18. 非大域ゾーンのインストール、停止処理、停止、アンインストール、クローニングについて (概要)
19. 非大域ゾーンのインストール、ブート、停止処理、停止、アンインストール、およびクローニング (手順)
22. ゾーンの移行と zonep2vchk ツールについて
23. Oracle Solaris システムの移行と非大域ゾーンの移行 (タスク)
24. ゾーンがインストールされている Oracle Solaris 11 システムでの自動インストールおよびパッケージ
25. Oracle Solaris ゾーンの管理 (概要)
26. Oracle Solaris ゾーンの管理 (手順)
28. Oracle Solaris ゾーンで発生するさまざまな問題の解決
30. Oracle Solaris 10 システムの評価とアーカイブの作成
31. (省略可能) Oracle Solaris 10 ゾーンへの Oracle Solaris 10 native 非大域ゾーンの移行
次のアクションを実行するには、zonecfg コマンド (zonecfg(1M) のマニュアルページに記載) を使用します。
ゾーン構成を作成します
必要な情報がすべて存在することを確認します
非大域ゾーン構成を確定します
zonecfg コマンドは、大域ゾーンのリソース管理設定を持続的に指定する場合にも使用できます。
zonecfg ユーティリティーを使用してゾーンを構成する際、revert サブコマンドを使用して、リソースの設定を元に戻すことができます。「ゾーン構成を元に戻す方法」を参照してください。
システムに複数のゾーンを構成するスクリプトについては、「複数のゾーンを構成するスクリプト」を参照してください。
非大域ゾーンの構成を表示する方法については、「非大域ゾーンの構成を表示する方法」を参照してください。
非大域ゾーンの作成に必須の要素は、zonename および zonepath プロパティーだけです。そのほかのリソースおよびプロパティーは省略可能です。省略可能なリソースには、dedicated-cpu リソースと capped-cpu リソースのどちらを使用するかを決めるなど、選択肢の中から選ぶ必要があるものもあります。使用可能な zonecfg のプロパティーとリソースについては、「ゾーン構成データ」を参照してください。
この手順を実行するには、大域管理者または大域ゾーン内で適切な承認を持つユーザーである必要があります。
この手順例では、my-zone という名前を使用します。
global# zonecfg -z my-zone
このゾーンの初回構成時には、次のシステムメッセージが表示されます。
my-zone: No such zone configured Use 'create' to begin configuring a new zone.
この手順では、デフォルト設定を使用します。
zonecfg:my-zone> create create: Using system default template 'SYSdefault'
zonecfg:my-zone> set zonepath=/zones/my-zone
ゾーンは、ZFS データセット上に存在する必要があります。ZFS データセットは、ゾーンのインストール時または接続時に自動的に作成されます。ZFS データセットを作成できない場合、ゾーンのインストールや接続は行われません。ゾーンのパスの親ディレクトリが存在する場合、その親ディレクトリはマウントされるデータセットのマウントポイントである必要があります。
true に設定すると、大域ゾーンのブート時にこのゾーンが自動的にブートします。デフォルト値は false です。ゾーンを自動的にブートするには、ゾーンサービス svc:/system/zones:default も有効になっている必要があります。このサービスは、デフォルトで有効になっています。
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
デフォルト値は 1 です。
zonecfg:my-zone:dedicated-cpu> end
zonecfg:my-zone> set limitpriv="default,sys_time"
この行は、システムクロックを設定する機能をデフォルトの特権セットに追加します。
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
注 - capped-memory リソースを使用するには、resource-cap パッケージが大域ゾーン内にインストールされている必要があります。
zonecfg:my-zone> add fs
zonecfg:my-zone:fs> set dir=/usr/local
zonecfg:my-zone:fs> set special=/opt/local
非大域ゾーン内では、/usr/local ファイルシステムは読み取りおよび書き込みが可能です。
zonecfg:my-zone:fs> set type=lofs
このタイプは、カーネルとそのファイルシステムとの相互動作の方法を示します。
zonecfg:my-zone:fs> end
この手順を複数回実行することで、複数のファイルシステムを追加できます。
zonecfg:my-zone> set hostid=80f0c086
zonecfg:my-zone> add dataset
zonecfg:my-zone> set name=tank/sales
zonecfg:my-zone> end
ゾーン管理者は、そのデータセット内のファイルシステムの作成と破棄、およびデータセットのプロパティーの変更を行うことができます。
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
この手順を複数回実行することで、複数のデバイスを追加できます。
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
この手順を複数回実行することで、複数のデバイスを追加できます。
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
注意 - ゾーンでディスクに対する uscsi 操作の実行を可能にすると、ゾーンはディスクと同じバスに接続されている、すべての他のデバイスにもアクセスできます。したがって、この機能を有効にするとセキュリティーリスクが生じ、同じバス上のリソースを使用する大域ゾーンまたはほかのゾーンに対する攻撃が可能になります。uscsi(7I) を参照してください。 |
この手順を複数回実行することで、複数のデバイスを追加できます。
zonecfg:my-zone> set max-sem-ids=10485200
この手順を複数回実行することで、複数のリソース制御を追加できます。
zonecfg:my-zone> add attr
zonecfg:my-zone> verify
zonecfg:my-zone> commit
zonecfg:my-zone> exit
プロンプトで commit コマンドを明示的に入力しなくても、exit を入力するか EOF が発生すると、commit の実行が自動的に試みられます。
ヒント - zonecfg コマンドは、複数のサブコマンドもサポートします。次に示すように、同じシェル呼び出しで引用符で囲み、セミコロンで区切ります。
global# zonecfg -z my-zone "create ; set zonepath=/zones/my-zone"
共有 IP ゾーンの場合、zonecfg net リソースで静的アドレスを割り当てできるだけです。このアドレスは、コマンド行で指定することはできません。
確定済みのゾーン構成をインストールする方法については、「ゾーンのインストールとブート」を参照してください。
このスクリプトを使用して、システムで複数のゾーンを構成およびブートできます。作成されるゾーンは、anet リソースを使用したデフォルトの排他的 IP ゾーンです。
スクリプトを実行する前に、次のように SCI Tool を実行して構成プロファイルを作成します。
global# sysconfig create-profile -o sc_config.xml
スクリプトには、次のパラメータを指定します。
作成するゾーンの数
接頭辞 zonename
基本ディレクトリとして使用するディレクトリ
新しく作成される構成プロファイルのフルパス名
大域ゾーン内の root 権限を持つ大域管理者か、またはこのスクリプトを実行するための正しい権利プロファイルを持つユーザーである必要があります。
#!/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
スクリプトの出力:
$ ./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 ....
大域ゾーン内の大域管理者か、またはこの手順を実行するための正しい権利プロファイルを持つユーザーである必要があります。
global# zonecfg -z zonename info