次の処理を実行するには、zonecfg コマンド (zonecfg(1M) のマニュアルページを参照) を使用します。
ゾーン構成を作成します
必要な情報がすべて存在することを確認します
非大域ゾーン構成を確定します
zonecfg コマンドは、大域ゾーンの資源管理設定を持続的に指定する場合にも使用できます。
zonecfg ユーティリティーを使用してゾーンを構成する際、revert サブコマンドを使用して、資源の設定を元に戻すことができます。「ゾーン構成を元に戻す方法」を参照してください。
システムに複数のゾーンを構成するスクリプトについては、「複数のゾーンを構成するスクリプト」を参照してください。
非大域ゾーンの構成を表示する方法については、「非大域ゾーンの構成を表示する方法」を参照してください。
ネイティブな非大域ゾーンの作成に必須の要素は、zonename および zonepath プロパティーだけです。そのほかの資源およびプロパティーは省略可能です。省略可能な資源には、dedicated-cpu 資源と capped-cpu 資源のどちらを使用するかを決めるなど、選択肢の中から選ぶ必要があるものもあります。使用可能な zonecfg のプロパティーと資源については、「ゾーン構成データ」を参照してください。
この手順を実行するには、大域ゾーン内で大域管理者になる必要があります。
スーパーユーザーまたは Primary Administrator 役割になります。
役割の作成と作成した役割のユーザーへの割り当てについては、『Solaris のシステム管理 (基本編)』の「Solaris 管理ツールを RBAC と組み合わせて使用する (作業マップ)」を参照してください。
選択したゾーン名を使用して、ゾーン構成を設定します。
この手順例では、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 |
ゾーンのパス (この手順では /export/home/my-zone) を設定します。
zonecfg:my-zone> set zonepath=/export/home/my-zone |
Solaris 10 10/08 より前のリリースでは、zonepath を ZFS 上に設定しないようにしてください。
autoboot 値を設定します。
true に設定すると、大域ゾーンの起動時にこのゾーンが自動的に起動します。ゾーンを自動的に起動するには、ゾーンサービス svc:/system/zones:default も有効になっている必要があります。デフォルト値は false です。
zonecfg:my-zone> set autoboot=true |
.ゾーンの持続的なブート引数を設定します。
zonecfg:my-zone> set bootargs="-m verbose" |
1 つの CPU をこのゾーン専用に割り当てます。
zonecfg:my-zone> add dedicated-cpu |
権限のデフォルトセットを修正します。
zonecfg:my-zone> set limitpriv="default,sys_time" |
この行は、システムクロックを設定する機能をデフォルトの特権セットに追加します。
スケジューリングクラスを FSS に設定します。
zonecfg:my-zone> set scheduling-class=FSS |
メモリー上限を追加します。
zonecfg:my-zone> add capped-memory |
ファイルシステムを追加します。
zonecfg:my-zone> add fs |
ファイルシステムのマウントポイント (この手順では /usr/local) を設定します。
zonecfg:my-zone:fs> set dir=/usr/local |
大域ゾーン内の /opt/zones/my-zone/local を、構成中のゾーン内で /usr/local としてマウントすることを指定します。
zonecfg:my-zone:fs> set special=/opt/zones/my-zone/local |
非大域ゾーン内では、/usr/local ファイルシステムは読み取りおよび書き込みが可能です。
ファイルシステムのタイプ (この手順では lofs) を指定します。
zonecfg:my-zone:fs> set type=lofs |
このタイプは、カーネルとそのファイルシステムとの相互動作の方法を示します。
ファイルシステムの指定を終了します。
zonecfg:my-zone:fs> end |
この手順を複数回実行することで、複数のファイルシステムを追加できます。
(省略可能) hostid を設定します。
zonecfg:my-zone> set hostid=80f0c086 |
ストレージプール tank の sales という ZFS データセットを追加します。
zonecfg:my-zone> add dataset |
(疎ルートゾーンのみ) 大域ゾーンからループバックマウントされた共有ファイルシステムを追加します。
共有ファイルシステムを持たない完全ルートゾーンを作成する場合は、この手順を実行しないでください。「必要なディスク容量」に記述されている完全ルートゾーンの説明を参照してください。
zonecfg:my-zone> add inherit-pkg-dir |
大域ゾーン内の /opt/sfw を、構成中のゾーン内で読み取り専用モードでマウントすることを指定します。
zonecfg:my-zone:inherit-pkg-dir> set dir=/opt/sfw |
ゾーンのパッケージデータベースが更新され、パッケージが反映されます。zoneadm を使用してゾーンをインストールした後で、これらの資源を変更または削除することはできません。
inherit-pkg-dir の指定を終了します。
zonecfg:my-zone:inherit-pkg-dir> end |
この手順を複数回実行することで、複数の共有ファイルシステムを追加できます。
完全ルートゾーンを作成する場合で、inherit-pkg-dir を使用してデフォルトの共有ファイルシステム資源がすでに追加されているときは、ゾーンのインストール前に、次のように zonecfg を使用して、これらのデフォルトの inherit-pkg-dir 資源を削除する必要があります。
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
(省略可能) 排他的 IP ゾーンを作成する場合は、ip-type を設定します。
zonecfg:my-zone> set ip-type=exclusive |
add net 手順では、物理デバイスタイプだけを指定します。
ネットワークインタフェースを追加します。
zonecfg:my-zone> add net |
(共有 IP のみ) ネットワークインタフェースの IP アドレス (この手順では 192.168.0.1) を指定します。
zonecfg:my-zone:net> set address=192.168.0.1 |
ネットワークインタフェースの物理デバイスタイプ (この手順では hme デバイス) を指定します。
zonecfg:my-zone:net> set physical=hme0 |
Solaris 10 10/08: (省略可能、共有 IP のみ) ネットワークインタフェースのデフォルトのルーター (この手順では10.0.0.1) を設定します。
zonecfg:my-zone:net> set defrouter=10.0.0.1 |
指定を終了します。
zonecfg:my-zone:net> end |
この手順を複数回実行することで、複数のネットワークインタフェースを追加できます。
デバイスを追加します。
zonecfg:my-zone> add device |
デバイスの一致 (この手順では /dev/sound/*) を設定します。
zonecfg:my-zone:device> set match=/dev/sound/* |
デバイスの指定を終了します。
zonecfg:my-zone:device> end |
この手順を複数回実行することで、複数のデバイスを追加できます。
プロパティー名を使用して、ゾーン規模の資源制御を追加します。
zonecfg:my-zone> set max-sem-ids=10485200 |
この手順を複数回実行することで、複数の資源制御を追加できます。
資源タイプ attr を使用してコメントを追加します。
zonecfg:my-zone> add attr |
ゾーンの構成を検証します。
zonecfg:my-zone> verify |
ゾーンの構成を確定します。
zonecfg:my-zone> commit |
zonecfg コマンドを終了します。
zonecfg:my-zone> exit |
プロンプトで commit コマンドを明示的に入力しなくても、exit を入力するか EOF が発生すると、commit の実行が自動的に試みられます。
zonecfg コマンドは、複数のサブコマンドもサポートします。次に示すように、同じシェル呼び出しで引用符で囲み、セミコロンで区切ります。
global# zonecfg -z my-zone "create ; set zonepath=/export/home/my-zone" |
確定済みのゾーン構成をインストールする方法については、「ゾーンのインストールと起動」を参照してください。
このスクリプトを使用して、システムで複数のゾーンを構成および起動できます。スクリプトには、次のパラメータを指定します。
作成するゾーンの数
接頭辞 zonename
基本ディレクトリとして使用するディレクトリ
このスクリプトを実行するには、大域ゾーン内の大域管理者になる必要があります。大域管理者は、大域ゾーン内でスーパーユーザー権限を保持するか、Primary Administrator 役割になります。
#!/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 |
この手順を実行するには、大域ゾーン内で大域管理者になる必要があります。
スーパーユーザーまたは Primary Administrator 役割になります。
役割の作成と作成した役割のユーザーへの割り当てについては、『Solaris のシステム管理 (基本編)』の「Solaris 管理ツールを RBAC と組み合わせて使用する (作業マップ)」を参照してください。
ゾーンの構成を表示します。
global# zonecfg -z zonename info |