この章では、x64 システムまたは x86 システムに lx ブランドゾーンを構成する方法について説明します。手順は、Solaris ゾーンの構成手順と基本的に同じです。いくつかのプロパティーは、ブランドゾーンの構成には必要ありません。
ゾーンを使用できるようにシステムを設定する前に、まず、情報を収集してゾーンの構成方法を決定する必要があります。次の作業マップに、lx ゾーンの計画および構成方法の概要を示します。
タスク |
説明 |
説明 |
---|---|---|
ゾーンの全体的な計画を立てます。 |
|
「システム要件と容量要件」および 「ゾーンで使用される資源プール」を参照してください。 |
ゾーンの名前とパスを決定します。 |
命名規則に基づいてゾーンの名前を決定します。ZFS (Zetabyte File System) 上のパスをお勧めします。複製元の zonepath と複製先の zonepath が両方とも ZFS 上にあり、同じプールに含まれる場合、zoneadm cloneコマンドは自動的に ZFS を使用してゾーンを複製します。 |
「資源タイプとプロパティータイプ」および『Oracle Solaris ZFS 管理ガイド』を参照してください。 |
ゾーンの IP アドレスを取得または構成します。 |
構成に基づき、ネットワークアクセスを行う非大域ゾーンごとに 1 つ以上の IP アドレスを取得する必要があります。 |
「ゾーンホスト名の決定およびネットワークアドレスの取得」および『Solaris のシステム管理 (IP サービス)』を参照してください。 |
ゾーンにファイルシステムをマウントするかどうかを決定します。 |
アプリケーションの要件を確認します。 |
詳細は、「ゾーンでマウントされるファイルシステム」を参照してください。 |
ゾーンで使用可能にするべきネットワークインタフェースを決定します。 |
アプリケーションの要件を確認します。 |
詳細は、「共有 IP ネットワークインタフェース」を参照してください。 |
非大域ゾーンのデフォルトの特権セットを変更する必要があるかどうかを決定します。 |
特権セットを確認します。 デフォルトの特権、追加および削除が可能な特権、および現時点では使用できない特権があります。 |
「資源タイプとプロパティータイプ」および 「非大域ゾーン内の特権」を参照してください。 |
ゾーンを構成します。 |
zonecfg を使用してゾーンの構成を作成します。 |
「lx ブランドゾーンを構成、検証、および確定する方法」を参照してください。 |
構成したゾーンを検証および確定します。 |
指定された資源およびプロパティーが仮想サーバー上で有効かどうかを判定します。 |
「lx ブランドゾーンを構成、検証、および確定する方法」を参照してください。 |
次の処理を実行するには、zonecfg コマンド (zonecfg(1M) のマニュアルページを参照) を使用します。
ゾーン構成を作成します
必要な情報がすべて存在することを確認します
非大域ゾーン構成を確定します
CD または DVD を使用してアプリケーションを lx ブランドゾーンにインストールする予定の場合は、ブランドゾーンを最初に構成するときに add fs を使用して、大域ゾーンの CD または DVD メディアに読み取り専用のアクセスを行う権限を追加します。アクセス権を追加したら、CD または DVD を使用して製品をブランドゾーンにインストールできます。
zonecfg ユーティリティーを使用してゾーンを構成する際、revert サブコマンドを使用して、資源の設定を元に戻すことができます。「ゾーン構成を元に戻す方法」を参照してください。
システムに複数のゾーンを構成するスクリプトについては、「複数の lx ブランドゾーンを構成するスクリプト」を参照してください。
非大域ゾーンの構成を表示する方法については、「ブランドゾーンの構成を表示する方法」を参照してください。
ブランドゾーンを構成したあとは、ゾーンの構成のコピーを作成することをお勧めします。このバックアップを使用して、あとでゾーンを復元することができます。スーパーユーザーまたは Primary Administrator として、ゾーン lx-zone の構成をファイルに出力してください。次の例では、lx-zone.config というファイルを使用しています。
global# zonecfg -z lx-zone export > lx-zone.config |
詳細は、「非大域ゾーンを個別に復元する方法」を参照してください。
ラベルが有効になっている Trusted Solaris システムでは、lx ブランドゾーンを使用できないことに注意してください。zoneadm コマンドで構成を検証できません。
この手順を実行するには、大域ゾーン内で大域管理者になる必要があります。
スーパーユーザーまたは Primary Administrator 役割になります。
役割の作成と作成した役割のユーザーへの割り当てについては、『Solaris のシステム管理 (基本編)』の「Solaris 管理ツールを RBAC と組み合わせて使用する (作業マップ)」を参照してください。
選択したゾーン名を使用して、ゾーン構成を設定します。
この手順例では、lx-zone という名前を使用します。
global# zonecfg -z lx-zone |
このゾーンの初回構成時には、次のシステムメッセージが表示されます。
lx-zone: No such zone configured Use 'create' to begin configuring a new zone. |
SUNWlx テンプレートを使用して、新しい lx ゾーン構成を作成します。
zonecfg:lx-zone> create -t SUNWlx |
または、空のゾーンを作成し、そのブランドを明示的に設定することもできます。
zonecfg:lx-zone> create -b zonecfg:lx-zone> set brand=lx |
ゾーンのパス (この手順では /export/home/lx-zone) を設定します。
zonecfg:lx-zone> set zonepath=/export/home/lx-zone |
autoboot 値を設定します。
true に設定すると、大域ゾーンの起動時にこのゾーンが自動的に起動します。ゾーンを自動的に起動するには、ゾーンサービス svc:/system/zones:default も有効になっている必要があります。デフォルト値は false です。
zonecfg:lx-zone> set autoboot=true |
.ゾーンの持続的なブート引数を設定します。
zonecfg:lx-zone> set bootargs="-i=altinit" |
システムで資源プールが有効な場合、プールをゾーンに関連付けます。
この例では、pool_default という名前のデフォルトプールを使用します。
zonecfg:lx-zone> set pool=pool_default |
資源プールはオプションのスケジューリングクラス割り当てを保持できるため、プール機能を使用して、システムのデフォルトでないデフォルトスケジューラを非大域ゾーン用に設定できます。詳細は、「プールをスケジューリングクラスに対応付ける方法」および 「構成の作成」を参照してください。
権限のデフォルトセットを修正します。
zonecfg:lx-zone> set limitpriv="default,proc_priocntl" |
proc_priocntl 特権は、リアルタイムクラスのプロセスを実行するために使用されます。
CPU の配分を 5 に設定します。
zonecfg:lx-zone> set cpu-shares=5 |
メモリー上限を追加します。
zonecfg:lx-zone> add capped-memory |
ファイルシステムを追加します。
zonecfg:lx-zone> add fs |
ファイルシステムのマウントポイント (この手順では /export/linux/local) を設定します。
zonecfg:lx-zone:fs> set dir=/export/linux/local |
大域ゾーン内の /opt/local を、構成中のゾーン内で /export/linux/local としてマウントすることを指定します。
zonecfg:lx-zone:fs> set special=/opt/local |
非大域ゾーン内では、/export/linux/local ファイルシステムは読み取りおよび書き込みが可能です。
ファイルシステムのタイプ (この手順では lofs) を指定します。
zonecfg:lx-zone:fs> set type=lofs |
このタイプは、カーネルとそのファイルシステムとの相互動作の方法を示します。
ファイルシステムの指定を終了します。
zonecfg:lx-zone:fs> end |
この手順を複数回実行することで、複数のファイルシステムを追加できます。
ネットワーク仮想インタフェースを追加します。
zonecfg:lx-zone> add net |
IP アドレスを ip address of zone/netmask の形式で設定します。この手順では 10.6.10.233/24 を使用します。
zonecfg:lx-zone:net> set address=10.6.10.233/24 |
ネットワークインタフェースの物理デバイスタイプ (この手順では bge デバイス) を指定します。
zonecfg:lx-zone:net> set physical=bge0 |
指定を終了します。
zonecfg:lx-zone:net> end |
この手順を複数回実行することで、複数のネットワークインタフェースを追加できます。
attr 資源タイプを使用して、大域ゾーンにあるオーディオデバイスをこのゾーンで使用可能にします。
zonecfg:lx-zone> add attr |
ゾーンの構成を検証します。
zonecfg:lx-zone> verify |
ゾーンの構成を確定します。
zonecfg:lx-zone> commit |
zonecfg コマンドを終了します。
zonecfg:lx-zone> exit |
プロンプトで commit コマンドを明示的に入力しなくても、exit を入力するか EOF が発生すると、commit の実行が自動的に試みられます。
zonecfg コマンドは、複数のサブコマンドもサポートします。次に示すように、同じシェル呼び出しで引用符で囲み、セミコロンで区切ります。
global# zonecfg -z lx-zone "create -t SUNWlx; set zonepath=/export/home/lx-zone" |
確定済みのゾーン構成をインストールする方法については、「lx ブランドゾーンのインストールと起動」を参照してください。
このスクリプトを使用して、システムで複数のゾーンを構成および起動できます。スクリプトには、次のパラメータを指定します。
作成するゾーンの数
接頭辞 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" || -z "$4" ]]; then echo "usage: $0 <#-of-zones> <zonename-prefix> <basedir> <template zone>" exit 2 fi if [[ ! -d $3 ]]; then echo "$3 is not a directory" exit 1 fi state=`zoneadm -z $4 list -p 2>/dev/null | cut -f 3 -d ":"` if [[ -z "$state" || $state != "installed" ]]; then echo "$4 must be an installed, halted zone" exit 1 fi template_zone=$4 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 clone $template_zone > /dev/null 2>&1 if [ $? != 0 ]; then echo configuring $prefix$i F=$dir/$prefix$i.config rm -f $F echo "create -t SUNWlx" > $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 -s -d /path/to/ISOs > /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 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 |
ゾーンの構成を変更する、元に戻す、または削除する手順については、次の各節を参照してください。