JavaScript is required to for searching.
ナビゲーションリンクをスキップ
印刷ビューの終了
Oracle Solaris の管理: Oracle Solaris コンテナ - リソース管理と Oracle Solaris ゾーン     Oracle Solaris 10 1/13 Information Library (日本語)
search filter icon
search icon

ドキュメントの情報

はじめに

パート I リソース管理

1.  Solaris 10 リソース管理の紹介

2.  プロジェクトとタスク (概要)

3.  プロジェクトとタスクの管理

4.  拡張アカウンティング (概要)

5.  拡張アカウンティングの管理 (タスク)

6.  リソース制御 (概要)

7.  リソース制御の管理 (タスク)

8.  公平配分スケジューラ (概要)

9.  公平配分スケジューラの管理 (タスク)

10.  リソース上限デーモンによる物理メモリーの制御 (概要)

11.  リソース上限デーモンの管理 (タスク)

12.  リソースプール (概要)

13.  リソースプールの作成と管理 (タスク)

14.  リソース管理の構成例

15.  Solaris 管理コンソールのリソース制御機能

パート II ゾーン

16.  Solaris ゾーンの紹介

17.  非大域ゾーンの構成 (概要)

18.  非大域ゾーンの計画と構成 (タスク)

非大域ゾーンの計画と構成 (タスクマップ)

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

ディスク容量の要件

疎ルートゾーン

完全ルートゾーン

ゾーンサイズを制限する

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

ゾーンのホスト名

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

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

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

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

ファイルシステムの構成

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

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

ゾーンの構成方法

次に進む手順

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

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

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

ゾーン構成内のリソースタイプを変更する方法

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

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

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

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

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

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

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

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

19.  非大域ゾーンのインストール、停止、複製、およびアンインストールについて (概要)

20.  非大域ゾーンのインストール、ブート、停止、アンインストール、および複製 (タスク)

21.  非大域ゾーンへのログイン (概要)

22.  非大域ゾーンへのログイン (タスク)

23.  非大域ゾーンの移動と移行 (タスク)

24.  Oracle Solaris 10 9/10: ゾーンへの物理的な Oracle Solaris システムの移行 (タスク)

25.  ゾーンがインストールされている Oracle Solaris システムでのパッケージとパッチについて (概要)

26.  ゾーンがインストールされている Oracle Solaris システムでのパッケージとパッチの追加および削除 (タスク)

27.  Oracle Solaris ゾーンの管理 (概要)

28.  Oracle Solaris ゾーンの管理 (タスク)

29.  非大域ゾーンにインストールされている Oracle Solaris 10 システムのアップグレード

30.  Oracle Solaris ゾーンで発生するさまざまな問題のトラブルシューティング

パート III lx ブランドゾーン

31.  ブランドゾーンと Linux ブランドゾーンについて

32.  lx ブランドゾーン構成の計画 (概要)

33.  lx ブランドゾーンの構成 (タスク)

34.  lx ブランドゾーンのインストール、ブート、停止、複製、およびアンインストールについて (概要)

35.  lx ブランドゾーンのインストール、ブート、停止、アンインストール、および複製 (タスク)

36.  lx ブランドゾーンへのログイン (タスク)

37.  lx ブランドゾーンの移動と移行 (タスク)

38.  lx ブランドゾーンでのアプリケーションの管理と実行 (タスク)

用語集

索引

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

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

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

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

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

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

ゾーンの構成方法

ネイティブな非大域ゾーンの作成に必須の要素は、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

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

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

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

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

  2. ゾーンの構成を表示します。
    global# zonecfg -z zonename info