JavaScript is required to for searching.
ナビゲーションリンクをスキップ
印刷ビューの終了
Oracle Solaris のシステム管理 (Oracle Solaris ゾーン、Oracle Solaris 10 ゾーン、およびリソース管理)     Oracle Solaris 11 Information Library (日本語)
search filter icon
search icon

ドキュメントの情報

はじめに

パート I Oracle Solaris のリソース管理

1.  リソース管理の紹介

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

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

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

5.  拡張アカウンティングの管理 (手順)

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

7.  リソース制御の管理 (手順)

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

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

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

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

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

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

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

パート II Oracle Solaris ゾーン

15.  Oracle Solaris ゾーンの紹介

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

17.  非大域ゾーンの計画と構成 (手順)

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

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

必要なディスク容量

ゾーンサイズを制限する

ゾーンのホスト名およびネットワーク要件の決定

ゾーンのホスト名

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

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

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

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

ファイルシステムの構成

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

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

ゾーンの構成方法

次に進む手順

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

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

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

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

ゾーン構成内のプロパティーをクリアーする方法

ゾーンの名前を変更する方法

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

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

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

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

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

18.  非大域ゾーンのインストール、停止処理、停止、アンインストール、クローニングについて (概要)

19.  非大域ゾーンのインストール、ブート、停止処理、停止、アンインストール、およびクローニング (手順)

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

21.  非大域ゾーンへのログイン (手順)

22.  ゾーンの移行と zonep2vchk ツールについて

23.  Oracle Solaris システムの移行と非大域ゾーンの移行 (タスク)

24.  ゾーンがインストールされている Oracle Solaris 11 システムでの自動インストールおよびパッケージ

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

26.  Oracle Solaris ゾーンの管理 (手順)

27.  不変ゾーンの構成と管理

28.  Oracle Solaris ゾーンで発生するさまざまな問題の解決

パート III Oracle Solaris 10 ゾーン

29.  Oracle Solaris 10 ゾーンの紹介

30.  Oracle Solaris 10 システムの評価とアーカイブの作成

31.  (省略可能) Oracle Solaris 10 ゾーンへの Oracle Solaris 10 native 非大域ゾーンの移行

32.  solaris10 ブランドゾーンの構成

33.  solaris10 ブランドゾーンのインストール

34.  ゾーンのブート、ログイン、ゾーンの移行

用語集

索引

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

次のアクションを実行するには、zonecfg コマンド (zonecfg(1M) のマニュアルページに記載) を使用します。

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

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

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

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

ゾーンの構成方法

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

この手順を実行するには、大域管理者または大域ゾーン内で適切な承認を持つユーザーである必要があります。

  1. 管理者になります。
  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
    create: Using system default template 'SYSdefault'
  4. この手順でゾーンのパス /zones/my-zone を設定します。
    zonecfg:my-zone> set zonepath=/zones/my-zone

    ゾーンは、ZFS データセット上に存在する必要があります。ZFS データセットは、ゾーンのインストール時または接続時に自動的に作成されます。ZFS データセットを作成できない場合、ゾーンのインストールや接続は行われません。ゾーンのパスの親ディレクトリが存在する場合、その親ディレクトリはマウントされるデータセットのマウントポイントである必要があります。

  5. autoboot 値を設定します。

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

    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=1g
    2. スワップメモリーの上限を設定します。
      zonecfg:my-zone:capped-memory> set swap=2g
    3. ロックされたメモリーの上限を設定します。
      zonecfg:my-zone:capped-memory> set locked=500m
    4. メモリー上限の指定を終了します。
      zonecfg:my-zone:capped-memory> end

    注 - capped-memory リソースを使用するには、resource-cap パッケージが大域ゾーン内にインストールされている必要があります。


  11. ファイルシステムを追加します。
    zonecfg:my-zone> add fs
    1. ファイルシステムのマウントポイント (この手順では /usr/local) を設定します。
      zonecfg:my-zone:fs> set dir=/usr/local
    2. 大域ゾーン内の /opt/local を、構成中のゾーン内で /usr/local としてマウントすることを指定します。
      zonecfg:my-zone:fs> set special=/opt/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. 自動 VNIC を持つ排他的 IP ゾーンを作成します。
    zonecfg:my-zone> set ip-type=exclusive
    zonecfg:my-zone> add anet
    1. 作成されるリンクの基礎となるリンクとして auto を指定します。
      zonecfg:my-zone:anet> set lower-link=auto

      zoneadmd デーモンは、ゾーンがブートするたびに、VNIC が作成されるリンクを自動的に選択します。

    2. 指定を終了します。
      zonecfg:my-zone:anet> end
  15. デバイスを追加します。
    zonecfg:my-zone> add device
    1. デバイスの一致 (この手順では /dev/sound/*) を設定します。
      zonecfg:my-zone:device> set match=/dev/sound/*
    2. デバイスの指定を終了します。
      zonecfg:my-zone:device> end

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

  16. format コマンドによるディスクのラベル付けを可能にするには、ディスクおよび LUN 全体をゾーンに委任し、また allow-partition プロパティーを設定している必要があります。
    zonecfg:my-zone> add device
    1. この手順で、デバイスの一致 /dev/*dsk/c2t40d3* を設定します。
      zonecfg:my-zone:device> set match=/dev/*dsk/c2t40d3*
    2. allow-partitiontrue になるように設定します。
      zonecfg:my-zone:device> set allow-partition=true
    3. デバイスの指定を終了します。
      zonecfg:my-zone:device> end

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

  17. ディスクに対して uscsi 操作を可能にするには、allow-raw-io プロパティーを設定している必要があります。
    zonecfg:my-zone> add device
    1. この手順で、デバイスの一致 /dev/*dsk/c2t40d3* を設定します。
      zonecfg:my-zone:device> set match=/dev/*dsk/c2t40d3*
    2. allow-raw-iotrue になるように設定します。
      zonecfg:my-zone:device> set allow-raw-io=true
    3. デバイスの指定を終了します。
      zonecfg:my-zone:device> end

      注意

      注意 - ゾーンでディスクに対する uscsi 操作の実行を可能にすると、ゾーンはディスクと同じバスに接続されている、すべての他のデバイスにもアクセスできます。したがって、この機能を有効にするとセキュリティーリスクが生じ、同じバス上のリソースを使用する大域ゾーンまたはほかのゾーンに対する攻撃が可能になります。uscsi(7I) を参照してください。


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

  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=/zones/my-zone"

共有 IP ゾーンの場合、zonecfg net リソースで静的アドレスを割り当てできるだけです。このアドレスは、コマンド行で指定することはできません。


次に進む手順

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

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

このスクリプトを使用して、システムで複数のゾーンを構成およびブートできます。作成されるゾーンは、anet リソースを使用したデフォルトの排他的 IP ゾーンです。

スクリプトを実行する前に、次のように SCI Tool を実行して構成プロファイルを作成します。

global# sysconfig create-profile -o sc_config.xml

スクリプトには、次のパラメータを指定します。

大域ゾーン内の 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 ....

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

大域ゾーン内の大域管理者か、またはこの手順を実行するための正しい権利プロファイルを持つユーザーである必要があります。

  1. 管理者になります。
  2. ゾーンの構成を表示します。
    global# zonecfg -z zonename info