Oracle Solaris のシステム管理 (Oracle Solaris コンテナ : 資源管理と Oracle Solaris ゾーン)

第 18 章 非大域ゾーンの計画と構成 (手順)

この章では、システムにゾーンを構成する前に実行する必要のある操作について説明します。また、ゾーンの構成方法、ゾーン構成の変更方法、およびシステムからゾーン構成を削除する方法についても説明します。

ゾーン構成処理の概要については、第 17 章非大域ゾーンの構成 (概要)を参照してください。

非大域ゾーンの計画と構成 (作業マップ)

ゾーンを使用できるようにシステムを設定する前に、まず、情報を収集してゾーンの構成方法を決定する必要があります。次の作業マップに、ゾーンの計画および構成方法の概要を示します。

タスク 

説明 

説明 

ゾーンの全体的な計画を立てます。 

  • システムで稼働しているアプリケーションを評価し、ゾーン内で実行するアプリケーションを決定します。

  • ゾーン内で固有のファイルを保持するディスク領域の可用性を評価します。

  • 資源管理機能も使用している場合は、資源管理境界に合わせてゾーンを配列する方法を決定します。

使用状況の履歴を参照してください。「必要なディスク容量」および 「ゾーンで使用される資源プール」も参照してください。

ゾーンの名前を決定します。 

命名規則に基づいてゾーンの名前を決定します。 

「ゾーン構成データ」および 「ゾーンのホスト名」を参照してください。

ゾーンパスを決定します。 

各ゾーンには、ルートディレクトリのパスが設定されます。これは、大域ゾーンのルートディレクトリに対する相対パスです。 

「ゾーン構成データ」を参照してください。

資源プールを構成しない場合は、CPU 制限の必要性を評価します。 

アプリケーションの要件を確認します。 

「Solaris 10 8/07: dedicated-cpu 資源」を参照してください。

大域ゾーンから rcapd を使用してゾーンのメモリー上限を設定する場合は、メモリー割り当ての必要性を評価します。

アプリケーションの要件を確認します。 

第 10 章資源上限デーモンによる物理メモリーの制御 (概要)第 11 章資源上限デーモンの管理 (手順)、および 「Solaris 10 8/07: 物理メモリーの制御と capped-memory 資源」を参照してください。

FSS をシステムのデフォルトのスケジューラにします。 

各ゾーンに CPU 配分を与えて、CPU 資源に対するゾーンの使用権を制御します。FSS では、割り当てられた配分に基づいて、プロジェクト間に CPU 資源が公平に配分されることが保証されています。 

第 8 章公平配分スケジューラ (概要)および 「ゾーンのスケジューリングクラス」を参照してください。

ゾーンを共有 IP ゾーンにするか排他的 IP ゾーンにするかを決定します。 

デフォルトは共有 IP ゾーンで、その場合はゾーンの IP アドレスを取得または構成します。構成に基づき、ネットワークアクセスを行う非大域ゾーンごとに 1 つ以上の IP アドレスを取得する必要があります。 

排他的 IP ゾーンの場合は、ゾーンに割り当てるデータリンクを決定します。ゾーンには、1 つ以上のネットワークインタフェースへの排他的アクセスが必要です。インタフェースは、bge1 などの個別の LAN や、bge2000 などの個別の VLAN である可能性があります。データリンクは GLDv3 でなければなりません。GLDv3 でないデータリンクは、dladm show-link コマンドの出力に type: legacy と表示されます。

「ゾーンホスト名の決定およびネットワークアドレスの取得」「ゾーンの構成方法」、および 『Solaris のシステム管理 (IP サービス)』を参照してください。

GLDv3 インタフェースの詳細については、『Solaris のシステム管理 (IP サービス)』「Oracle Solaris インタフェースタイプ」を参照してください。

ゾーン内にマウントするファイルシステムを決定します。 

アプリケーションの要件を確認します。 

詳細は、「ゾーンでマウントされるファイルシステム」を参照してください。

ゾーンで使用可能にするべきネットワークインタフェースを決定します。 

アプリケーションの要件を確認します。 

詳細は、「共有 IP ネットワークインタフェース」を参照してください。

非大域ゾーンのデフォルトの特権セットを変更する必要があるかどうかを決定します。 

特権セットを確認します。 デフォルトの特権、追加および削除が可能な特権、および現時点では使用できない特権があります。 

「非大域ゾーン内の特権」を参照してください。

各ゾーンで構成するべきデバイスを決定します。 

アプリケーションの要件を確認します。 

使用するアプリケーションのマニュアルを参照してください。 

ゾーンを構成します。 

zonecfg を使用してゾーンの構成を作成します。

「ゾーンを構成、検証、および確定する」を参照してください。

構成したゾーンを検証および確定します。 

指定された資源およびプロパティーが仮想サーバー上で有効かどうかを判定します。 

「ゾーンを構成、検証、および確定する」を参照してください。

現在のシステム設定の評価

ゾーンは、Solaris 10 リリースが稼働する任意のマシンで実行できます。次に、ゾーンの使用に関連したマシンの主な考慮事項を示します。

必要なディスク容量

ゾーンが消費可能なディスク容量に関する制限はありません。ディスク容量の制限を設定することは、大域管理者の役割です。大域管理者は、非大域ゾーンのルートファイルシステムを保持するのに十分なローカルストレージがあることを確認する必要があります。小規模な単一プロセッサシステムでも、同時に稼働する多数のゾーンをサポートできます。

大域ゾーンにインストールされるパッケージの特性は、作成される非大域ゾーンの容量要件に影響を及ぼします。パッケージの数およびディスク容量要件が要因となります。

疎ルートゾーン

Solaris 10 リリースでは、inherit-pkg-dir 資源を持つ非大域ゾーンは疎ルートゾーンと呼ばれます。

疎ルートゾーンモデルは、次のようにオブジェクトの共有を最適化します。

このモデルでは、すべてのパッケージが非大域ゾーンにインストールされているように表示されます。ループバックマウントされた読み取り専用のファイルシステムに内容を提供しないパッケージは、完全にインストールされます。ループバックマウントされた読み取り専用のファイルシステムに提供される内容は、大域ゾーンから継承され可視になるので、インストールする必要はありません。

ゾーンごとに 40M バイトの 追加 RAM が推奨されていますが、十分なスワップ空間のあるマシンでは、これは必須ではありません。

完全ルートゾーン

完全ルートゾーンモデルは、最大限の構成可能性を提供します。Solaris の必須パッケージおよび選択したオプションパッケージのすべてが、ゾーン固有のファイルシステムにインストールされます。このモデルの利点として、大域管理者がゾーンのファイルシステムの配置をカスタマイズできることが挙げられます。たとえば、バンドルされていない Sun 以外のパッケージを任意に追加することが可能です。

このモデルに必要なディスク容量は、大域ゾーンにインストールされているパッケージによって使用されるディスク容量で決まります。


注 –

次の inherit-pkg-dir ディレクトリを含む疎ルートゾーンを作成した場合、このゾーンを完全ルートゾーンとしてインストールするには、まず、これらのディレクトリを非大域ゾーンの構成から削除する必要があります。

「ゾーンの構成方法」を参照してください。


ゾーンサイズを制限する

ゾーンサイズを制限する際、次のオプションを使用できます。

ゾーンホスト名の決定およびネットワークアドレスの取得

ゾーンのホスト名を決定する必要があります。その後、ネットワーク接続を確立する場合、ゾーンの IPv4 アドレスを割り当てるか、IPv6 アドレスの構成および割り当てを手動で行う必要があります。

ゾーンのホスト名

ゾーン用に選択したホスト名は、大域ゾーン内の /etc/nsswitch.conf ファイルでの指定に応じて、hosts データベースまたは /etc/inet/hosts データベース内で定義する必要があります。ネットワークデータベースは、ネットワークの構成情報を提供するファイルです。nsswitch.conf ファイルには、使用するネームサービスを指定します。

ネームサービス用にローカルファイルを使用する場合は、/etc/inet/hosts ファイル内で hosts データベースが保持されます。ゾーンネットワークインタフェースのホスト名の解決は、/etc/inet/hosts 内のローカル hosts データベースで行われます。あるいは、ゾーンの構成時に IP アドレス自体を直接指定することで、ホスト名の解決を不要にできます。

詳細は、『Solaris のシステム管理 (IP サービス)』「TCP/IP 構成ファイル」および『Solaris のシステム管理 (IP サービス)』「ネットワークデータベースと nsswitch.conf ファイル」を参照してください。

共有 IP ゾーンのネットワークアドレス

ネットワーク接続を必要とする各共有 IP ゾーンには、1 つ以上の一意の IP アドレスが与えられます。IPv4 と IPv6 の両方のアドレスがサポートされます。

IPv4 のゾーンネットワークアドレス

IPv4 を使用している場合、アドレスを取得してゾーンに割り当てます。

IP アドレスとともに接頭辞の長さも指定できます。この接頭辞の書式は アドレス/接頭辞の長さ です。たとえば、192.168.1.1/24 の場合、使用するアドレスは 192.168.1.1 で、使用するネットマスクは 255.255.255.0、または最初の 24 ビットがビット 1 であるマスクです。

IPv6 のゾーンネットワークアドレス

IPv6 を使用している場合、アドレスを手動で設定する必要があります。通常、次の 2 種類のアドレスを最小限設定する必要があります。

リンクローカルアドレス

リンクローカルアドレスの書式は、fe80::<64 ビットインタフェース ID>/10 です。/10 は、接頭辞の長さが 10 ビットであることを示します。

サブネット上で構成された大域接頭辞から作成されたアドレス

大域ユニキャストアドレスは、管理者がサブネットごとに構成した 64 ビット接頭辞および 64 ビットのインタフェース ID に基づきます。接頭辞は、IPv6 を使用するよう構成されている同一サブネット上の任意のシステムで、ifconfig コマンドに -a6 オプションを指定して実行しても取得できます。

通常、64 ビットのインタフェース ID は、システムの MAC アドレスから取得されます。次の方法で、ゾーン用の一意の代替アドレスを大域ゾーンの IPv4 アドレスから取得できます。

<16 ビットのゼロ>:<IPv4 アドレスの上位 16 ビット>:<IPv4 アドレスの下位 16 ビット>:<ゾーンで一意の番号>

たとえば、大域ゾーンの IPv4 アドレスが 192.168.200.10 である場合、ゾーン固有の番号 1 を使用する非大域ゾーン用の適正なリンクローカルアドレスは、fe80::c0a8:c80a:1/10 になります。そのサブネットで使用中の大域接頭辞が 2001:0db8:aabb:ccdd/64 である場合、同じ非大域ゾーン用の一意の大域ユニキャストアドレスは 2001:0db8:aabb:ccdd::c0a8:c80a:1/64 です。IPv6 アドレスを設定する際、接頭辞の長さを指定する必要があることに注意してください。

リンクローカルおよび大域ユニキャストアドレスの詳細については、inet6(7P) のマニュアルページを参照してください。

排他的 IP ゾーンのネットワークアドレス

排他的 IP ゾーンの内部で、大域ゾーンと同様の方法でアドレスを構成します。DHCP および IPv6 ステートレスアドレスの自動構成を使用してアドレスを構成することもできます。

詳細は、sysidcfg(4) のマニュアルページを参照してください。

ファイルシステムの構成

仮想プラットフォームを設定する際、実行するマウントを多数指定できます。ループバック仮想ファイルシステム (LOFS) を使用してファイルシステムをゾーンにループバックマウントする場合、nodevices オプションを指定して仮想ファイルシステムをマウントする必要があります。nodevices オプションの詳細は、「ファイルシステムと非大域ゾーン」を参照してください。

LOFS を使用すると、代替パス名を使用してファイルにアクセスできるように、新しい仮想ファイルシステムを作成できます。非大域ゾーンでは、ループバックマウントにより、ファイルシステム階層がゾーンのルート下に複製されているように見えます。ゾーン内では、ゾーンのルートから始まるパス名を使ってすべてのファイルにアクセスできるようになります。LOFS マウントでは、ファイルシステムの名前空間が維持されます。

図 18–1 ループバックマウントされたファイルシステム

図に、ループバックマウントされたファイルシステムを示します。

詳細は、lofs(7S) のマニュアルページを参照してください。

非大域ゾーン構成の作成、改訂、および削除 (作業マップ)

タスク 

説明 

説明 

非大域ゾーンを構成します。 

zonecfg コマンドを使用してゾーンの作成、構成の検証および確定を行います。

スクリプトを使用して、システム上の複数のゾーンを構成および起動することもできます。zonecfg コマンドを使用して非大域ゾーンの構成を表示できます。

「ゾーンを構成、検証、および確定する」「複数のゾーンを構成するスクリプト」

ゾーン構成を変更します。 

ゾーン構成内の資源タイプを変更するか、専用のデバイスをゾーンに追加する場合に、この手順を実行します。 

zonecfg コマンドを使用してゾーン構成を変更する」

ゾーン構成を元に戻すか、ゾーン構成を削除します。 

zonecfg コマンドを使用して、ゾーン構成に対して行なった資源設定を取り消すか、ゾーン構成を削除します。

zonecfg コマンドを使用してゾーン構成を元に戻す、または削除する」

ゾーン構成を削除します。 

zonecfg コマンドと delete サブコマンドを使用して、システムからゾーン構成を削除します。

「ゾーン構成を削除する方法」

ゾーンを構成、検証、および確定する

次の処理を実行するには、zonecfg コマンド (zonecfg(1M) のマニュアルページを参照) を使用します。

zonecfg コマンドは、大域ゾーンの資源管理設定を持続的に指定する場合にも使用できます。

zonecfg ユーティリティーを使用してゾーンを構成する際、revert サブコマンドを使用して、資源の設定を元に戻すことができます。「ゾーン構成を元に戻す方法」を参照してください。

システムに複数のゾーンを構成するスクリプトについては、「複数のゾーンを構成するスクリプト」を参照してください。

非大域ゾーンの構成を表示する方法については、「非大域ゾーンの構成を表示する方法」を参照してください。

Procedureゾーンの構成方法

ネイティブな非大域ゾーンの作成に必須の要素は、zonename および zonepath プロパティーだけです。そのほかの資源およびプロパティーは省略可能です。省略可能な資源には、dedicated-cpu 資源と capped-cpu 資源のどちらを使用するかを決めるなど、選択肢の中から選ぶ必要があるものもあります。使用可能な zonecfg のプロパティーと資源については、「ゾーン構成データ」を参照してください。

この手順を実行するには、大域ゾーン内で大域管理者になる必要があります。

  1. スーパーユーザーまたは Primary Administrator 役割になります。

    役割の作成と作成した役割のユーザーへの割り当てについては、『Solaris のシステム管理 (基本編)』「Solaris 管理ツールを RBAC と組み合わせて使用する (作業マップ)」を参照してください。

  2. 選択したゾーン名を使用して、ゾーン構成を設定します。

    この手順例では、my-zone という名前を使用します。


    global# zonecfg -z my-zone
    

    このゾーンの初回構成時には、次のシステムメッセージが表示されます。


    my-zone: No such zone configured
    Use 'create' to begin configuring a new zone.
  3. 新しいゾーン構成を作成します。

    この手順では、デフォルト設定を使用します。


    zonecfg:my-zone> create
    
  4. ゾーンのパス (この手順では /export/home/my-zone) を設定します。


    zonecfg:my-zone> set zonepath=/export/home/my-zone
    

    Solaris 10 10/08 より前のリリースでは、zonepath を ZFS 上に設定しないようにしてください。

  5. autoboot 値を設定します。

    true に設定すると、大域ゾーンの起動時にこのゾーンが自動的に起動します。ゾーンを自動的に起動するには、ゾーンサービス svc:/system/zones:default も有効になっている必要があります。デフォルト値は false です。


    zonecfg:my-zone> set autoboot=true
    
  6. .ゾーンの持続的なブート引数を設定します。


    zonecfg:my-zone> set bootargs="-m verbose"
    
  7. 1 つの CPU をこのゾーン専用に割り当てます。


    zonecfg:my-zone> add dedicated-cpu
    
    1. CPU の数を設定します。


      zonecfg:my-zone:dedicated-cpu> set ncpus=1-2
      
    2. (省略可能) 重要性を設定します。


      zonecfg:my-zone:dedicated-cpu> set importance=10
      

      デフォルト値は 1 です。

    3. 指定を終了します。


      zonecfg:my-zone:dedicated-cpu> end
      
  8. 権限のデフォルトセットを修正します。


    zonecfg:my-zone> set limitpriv="default,sys_time"
    

    この行は、システムクロックを設定する機能をデフォルトの特権セットに追加します。

  9. スケジューリングクラスを FSS に設定します。


    zonecfg:my-zone> set scheduling-class=FSS
    
  10. メモリー上限を追加します。


    zonecfg:my-zone> add capped-memory
    
    1. メモリー上限を設定します。


      zonecfg:my-zone:capped-memory> set physical=50m
      
    2. スワップメモリーの上限を設定します。


      zonecfg:my-zone:capped-memory> set swap=100m
      
    3. ロックされたメモリーの上限を設定します。


      zonecfg:my-zone:capped-memory> set locked=30m
      
    4. メモリー上限の指定を終了します。


      zonecfg:my-zone:capped-memory> end
      
  11. ファイルシステムを追加します。


    zonecfg:my-zone> add fs
    
    1. ファイルシステムのマウントポイント (この手順では /usr/local) を設定します。


      zonecfg:my-zone:fs> set dir=/usr/local
      
    2. 大域ゾーン内の /opt/zones/my-zone/local を、構成中のゾーン内で /usr/local としてマウントすることを指定します。


      zonecfg:my-zone:fs> set special=/opt/zones/my-zone/local
      

      非大域ゾーン内では、/usr/local ファイルシステムは読み取りおよび書き込みが可能です。

    3. ファイルシステムのタイプ (この手順では lofs) を指定します。


      zonecfg:my-zone:fs> set type=lofs
      

      このタイプは、カーネルとそのファイルシステムとの相互動作の方法を示します。

    4. ファイルシステムの指定を終了します。


      zonecfg:my-zone:fs> end
      

    この手順を複数回実行することで、複数のファイルシステムを追加できます。

  12. (省略可能) hostid を設定します。


    zonecfg:my-zone> set hostid=80f0c086
    
  13. ストレージプール tanksales という ZFS データセットを追加します。


    zonecfg:my-zone> add dataset
    
    1. ZFS データセット sales のパスを指定します。


      zonecfg:my-zone> set name=tank/sales
      
    2. データセットの指定を終了します。


      zonecfg:my-zone> end
      
  14. (疎ルートゾーンのみ) 大域ゾーンからループバックマウントされた共有ファイルシステムを追加します。

    共有ファイルシステムを持たない完全ルートゾーンを作成する場合は、この手順を実行しないでください。「必要なディスク容量」に記述されている完全ルートゾーンの説明を参照してください。


    zonecfg:my-zone> add inherit-pkg-dir
    
    1. 大域ゾーン内の /opt/sfw を、構成中のゾーン内で読み取り専用モードでマウントすることを指定します。


      zonecfg:my-zone:inherit-pkg-dir> set dir=/opt/sfw
      

      注 –

      ゾーンのパッケージデータベースが更新され、パッケージが反映されます。zoneadm を使用してゾーンをインストールした後で、これらの資源を変更または削除することはできません。


    2. 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


  15. (省略可能) 排他的 IP ゾーンを作成する場合は、ip-type を設定します。


    zonecfg:my-zone> set ip-type=exclusive
    

    注 –

    add net 手順では、物理デバイスタイプだけを指定します。


  16. ネットワークインタフェースを追加します。


    zonecfg:my-zone> add net
    
    1. (共有 IP のみ) ネットワークインタフェースの IP アドレス (この手順では 192.168.0.1) を指定します。


      zonecfg:my-zone:net> set address=192.168.0.1
      
    2. ネットワークインタフェースの物理デバイスタイプ (この手順では hme デバイス) を指定します。


      zonecfg:my-zone:net> set physical=hme0
      
    3. Solaris 10 10/08: (省略可能、共有 IP のみ) ネットワークインタフェースのデフォルトのルーター (この手順では10.0.0.1) を設定します。


      zonecfg:my-zone:net> set defrouter=10.0.0.1
      
    4. 指定を終了します。


      zonecfg:my-zone:net> end
      

    この手順を複数回実行することで、複数のネットワークインタフェースを追加できます。

  17. デバイスを追加します。


    zonecfg:my-zone> add device
    
    1. デバイスの一致 (この手順では /dev/sound/*) を設定します。


      zonecfg:my-zone:device> set match=/dev/sound/*
      
    2. デバイスの指定を終了します。


      zonecfg:my-zone:device> end
      

    この手順を複数回実行することで、複数のデバイスを追加できます。

  18. プロパティー名を使用して、ゾーン規模の資源制御を追加します。


    zonecfg:my-zone> set max-sem-ids=10485200
    

    この手順を複数回実行することで、複数の資源制御を追加できます。

  19. 資源タイプ attr を使用してコメントを追加します。


    zonecfg:my-zone> add attr
    
    1. 名前を comment に設定します。


      zonecfg:my-zone:attr> set name=comment
      
    2. タイプを string に設定します。


      zonecfg:my-zone:attr> set type=string
      
    3. 値をゾーンの内容を示すコメントに設定します。


      zonecfg:my-zone:attr> set value="This is my work zone."
      
    4. 資源タイプ attr の指定を終了します。


      zonecfg:my-zone:attr> end
      
  20. ゾーンの構成を検証します。


    zonecfg:my-zone> verify
    
  21. ゾーンの構成を確定します。


    zonecfg:my-zone> commit
    
  22. zonecfg コマンドを終了します。


    zonecfg:my-zone> exit
    

    プロンプトで commit コマンドを明示的に入力しなくても、exit を入力するか EOF が発生すると、commit の実行が自動的に試みられます。

コマンド行での複数のサブコマンドの使用

ヒント –

zonecfg コマンドは、複数のサブコマンドもサポートします。次に示すように、同じシェル呼び出しで引用符で囲み、セミコロンで区切ります。


global# zonecfg -z my-zone "create ; set zonepath=/export/home/my-zone"

次に進む手順

確定済みのゾーン構成をインストールする方法については、「ゾーンのインストールと起動」を参照してください。

複数のゾーンを構成するスクリプト

このスクリプトを使用して、システムで複数のゾーンを構成および起動できます。スクリプトには、次のパラメータを指定します。

このスクリプトを実行するには、大域ゾーン内の大域管理者になる必要があります。大域管理者は、大域ゾーン内でスーパーユーザー権限を保持するか、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

Procedure非大域ゾーンの構成を表示する方法

この手順を実行するには、大域ゾーン内で大域管理者になる必要があります。

  1. スーパーユーザーまたは Primary Administrator 役割になります。

    役割の作成と作成した役割のユーザーへの割り当てについては、『Solaris のシステム管理 (基本編)』「Solaris 管理ツールを RBAC と組み合わせて使用する (作業マップ)」を参照してください。

  2. ゾーンの構成を表示します。


    global# zonecfg -z zonename info
    

zonecfg コマンドを使用してゾーン構成を変更する

zonecfg コマンドを使用して、次の操作を実行することもできます。

Procedureゾーン構成内の資源タイプを変更する方法

資源タイプを選択して、その資源の仕様を変更できます。

zoneadm を使ってゾーンをインストールしたあとで inherit-pkg-dir ディレクトリ内のソフトウェアパッケージの内容を変更したり削除したりすることはできない点に注意してください。

この手順を実行するには、大域ゾーン内で大域管理者になる必要があります。

  1. スーパーユーザーまたは Primary Administrator 役割になります。

    役割の作成と作成した役割のユーザーへの割り当てについては、『Solaris のシステム管理 (基本編)』「Solaris 管理ツールを RBAC と組み合わせて使用する (作業マップ)」を参照してください。

  2. 変更するゾーン (この手順では my-zone ) を選択します。


    global# zonecfg -z my-zone
    
  3. 変更する資源タイプ (資源制御など) を選択します。


    zonecfg:my-zone> select rctl name=zone.cpu-shares
    
  4. 現在の値を削除します。


    zonecfg:my-zone:rctl> remove value (priv=privileged,limit=20,action=none)
    
  5. 新しい値を追加します。


    zonecfg:my-zone:rctl> add value (priv=privileged,limit=10,action=none)
    
  6. 改定された rctl の指定を終了します。


    zonecfg:my-zone:rctl> end
    
  7. ゾーンの構成を確定します。


    zonecfg:my-zone> commit
    
  8. zonecfg コマンドを終了します。


    zonecfg:my-zone> exit
    

    プロンプトで commit コマンドを明示的に入力しなくても、exit を入力するか EOF が発生すると、commit の実行が自動的に試みられます。

    zonecfg で行なった確定済みの変更は、ゾーンの次回起動時に適用されます。

ProcedureSolaris 10 8/07: ゾーン構成内のプロパティータイプをクリアーする方法

スタンドアロンのプロパティーをリセットするには、この手順を使用します。

  1. スーパーユーザーまたは Primary Administrator 役割になります。

    役割の作成と作成した役割のユーザーへの割り当てについては、『Solaris のシステム管理 (基本編)』「Solaris 管理ツールを RBAC と組み合わせて使用する (作業マップ)」を参照してください。

  2. 変更するゾーン (この手順では my-zone) を選択します。


    global# zonecfg -z my-zone
    
  3. 変更対象のプロパティー (この手順では既存のプールの関連付け) をクリアーします。


    zonecfg:my-zone> clear pool
    
  4. ゾーンの構成を確定します。


    zonecfg:my-zone> commit
    
  5. zonecfg コマンドを終了します。


    zonecfg:my-zone> exit
    

    プロンプトで commit コマンドを明示的に入力しなくても、exit を入力するか EOF が発生すると、commit の実行が自動的に試みられます。

    zonecfg で行なった確定済みの変更は、ゾーンの次回起動時に適用されます。

ProcedureSolaris 10 3/05 から Solaris 10 11/06: ゾーン構成内のプロパティータイプを変更する方法

構成する関連プロパティーを持たないスタンドアロンのプロパティーをリセットするには、この手順を使用します。たとえば、既存のプールの関連付けを削除するには、pool 資源を null にリセットします。

  1. スーパーユーザーまたは Primary Administrator 役割になります。

    役割の作成と作成した役割のユーザーへの割り当てについては、『Solaris のシステム管理 (基本編)』「Solaris 管理ツールを RBAC と組み合わせて使用する (作業マップ)」を参照してください。

  2. 変更するゾーン (この手順では my-zone) を選択します。


    global# zonecfg -z my-zone
    
  3. 変更対象のプロパティー (この手順では既存のプールの関連付け) をリセットします。


    zonecfg:my-zone> set pool=""
    
  4. ゾーンの構成を確定します。


    zonecfg:my-zone> commit
    
  5. zonecfg コマンドを終了します。


    zonecfg:my-zone> exit
    

    プロンプトで commit コマンドを明示的に入力しなくても、exit を入力するか EOF が発生すると、commit の実行が自動的に試みられます。

    zonecfg で行なった確定済みの変更は、ゾーンの次回起動時に適用されます。

ProcedureSolaris 10 8/07: ゾーンの名前を変更する方法

この手順を使用すると、構成済み状態またはインストール済み状態にあるゾーンの名前を変更できます。

この手順を実行するには、大域ゾーン内で大域管理者になる必要があります。

  1. スーパーユーザーまたは Primary Administrator 役割になります。

    役割の作成と作成した役割のユーザーへの割り当てについては、『Solaris のシステム管理 (基本編)』「Solaris 管理ツールを RBAC と組み合わせて使用する (作業マップ)」を参照してください。

  2. 名前を変更するゾーン (この手順では my-zone) を選択します。


    global# zonecfg -z my-zone
    
  3. ゾーンの名前を newzone などに変更します。


    zonecfg:my-zone> set zonename=newzone
    
  4. 変更を確定します。


    zonecfg:newzone> commit
    
  5. zonecfg コマンドを終了します。


    zonecfg:newzone> exit
    

    zonecfg で行なった確定済みの変更は、ゾーンの次回起動時に適用されます。

Procedure専用のデバイスをゾーンに追加する方法

次に、非大域ゾーン構成内に走査デバイスを配置する手順を示します。

この手順を実行するには、大域ゾーン内で大域管理者になる必要があります。

  1. スーパーユーザーまたは Primary Administrator 役割になります。

    役割の作成と作成した役割のユーザーへの割り当てについては、『Solaris のシステム管理 (基本編)』「Solaris 管理ツールを RBAC と組み合わせて使用する (作業マップ)」を参照してください。

  2. デバイスを追加します。


    zonecfg:my-zone> add device
    
  3. デバイスの一致 (この手順では /dev/scsi/scanner/c3t4*) を設定します。


    zonecfg:my-zone:device> set match=/dev/scsi/scanner/c3t4*
    
  4. デバイスの指定を終了します。


    zonecfg:my-zone:device> end
    
  5. zonecfg コマンドを終了します。


    zonecfg:my-zone> exit
    

Procedure大域ゾーンの zone.cpu-shares を設定する方法

大域ゾーンの配分を持続的に設定する場合に、ここで説明する手順を使用します。

この手順を実行するには、大域ゾーン内で大域管理者になる必要があります。

  1. スーパーユーザーまたは Primary Administrator 役割になります。

    役割の作成と作成した役割のユーザーへの割り当てについては、『Solaris のシステム管理 (基本編)』「Solaris 管理ツールを RBAC と組み合わせて使用する (作業マップ)」を参照してください。

  2. zonecfg コマンドを使用します。


    # zonecfg -z global
    
  3. 大域ゾーンの配分を 5 に設定します。


    zonecfg:global> set cpu-shares=5
    
  4. zonecfg を終了します。


    zonecfg:global> exit
    

zonecfg コマンドを使用してゾーン構成を元に戻す、または削除する

zonecfg(1M) のマニュアルページの記述に従って、zonecfg コマンドを使用し、ゾーンの構成を元に戻すか、またはゾーン構成を削除します。

Procedureゾーン構成を元に戻す方法

zonecfg ユーティリティーによるゾーンの構成中にゾーン構成に対して行なった資源設定を取り消すには、revert サブコマンドを使用します。

この手順を実行するには、大域ゾーン内で大域管理者になる必要があります。

  1. スーパーユーザーまたは Primary Administrator 役割になります。

    役割の作成と作成した役割のユーザーへの割り当てについては、『Solaris のシステム管理 (基本編)』「Solaris 管理ツールを RBAC と組み合わせて使用する (作業マップ)」を参照してください。

  2. tmp-zone という名前のゾーンを構成中に、info と入力して構成を表示します。


    zonecfg:tmp-zone> info
    

    構成の net 資源セグメントが、次のように表示されます。


    .
    .
    .
    fs:
            dir: /tmp
            special: swap
            type: tmpfs
    net:
            address: 192.168.0.1
            physical: eri0
    device
            match: /dev/pts/*
    .
    .
    .
  3. ネットアドレスを削除します。


    zonecfg:tmp-zone> remove net address=192.168.0.1
    
  4. net エントリが削除されたことを確認します。


    zonecfg:tmp-zone> info
    

    .
    .
    .
    fs:
            dir: /tmp
            special: swap
            type: tmpfs
    device
            match: /dev/pts/*
    .
    .
    .
  5. revert と入力します。


    zonecfg:tmp-zone> revert
    
  6. 次の質問に yes で応答します。


    Are you sure you want to revert (y/[n])? y
    
  7. ネットアドレスが再び存在することを確認します。


    zonecfg:tmp-zone> info
    

    .
    .
    .
    fs:
            dir: /tmp
            special: swap
            type: tmpfs
    net:
            address: 192.168.0.1
            physical: eri0
    device
            match: /dev/pts/*
    .
    .
    .

Procedureゾーン構成を削除する方法

zonecfgdelete サブコマンドを使用して、システムからゾーン構成を削除します。

この手順を実行するには、大域ゾーン内で大域管理者になる必要があります。

  1. スーパーユーザーまたは Primary Administrator 役割になります。

    役割の作成と作成した役割のユーザーへの割り当てについては、『Solaris のシステム管理 (基本編)』「Solaris 管理ツールを RBAC と組み合わせて使用する (作業マップ)」を参照してください。

  2. 次の 2 つの方法のいずれかを使用して、ゾーン a-zone のゾーン構成を削除します。

    • -F オプションを使用して操作を強制実行します。


      global# zonecfg -z a-zone delete -F
      
    • システムプロンプトに yes で応答し、対話的にゾーンを削除します。


      global# zonecfg -z a-zone delete
      Are you sure you want to delete zone a-zone (y/[n])? y