Solaris 10 の zone 管理
最終更新日:2006年04月19日
はじめに
zone の概要
1台の物理サーバ上に複数の仮想的な独立したSolaris環境を実現する技術。
仮想的なSolaris環境は分離,独立しておりお互いに影響を与える事なく動作する。
zone には、"global zone" と "non-global zone" の2種類があり、Solars 10 をインストールした環境が global zone となり1つしか存在しない。global zone の上に構築される仮想サーバが non-global zone である。
global zone は全ての non-global zone に干渉する事ができるが、non-global zone は他のzone(global zone 含む)にはいっさい干渉できない隔離された環境である。
詳細は
参照。
zone の管理コマンド
zoneの管理コマンドを以下に示す。
コマンド |
役割 |
zonecfg |
non-global zone の構成を作成/変更 |
zoneadm |
non-global zone の管理 |
zlogin |
global zone から non-global zone へのログイン |
zonecfgコマンドのヘルプ
$ zonecfg
使用法: zonecfg help
zonecfg -z <zone> (対話式)
zonecfg -z <zone> <command>
zonecfg -z <zone> -f <command-file>
コマンド:
add <resource-type>
(global scope)
add <property-name> <property-value>
(resource scope)
cancel
commit
create [-F] [ -b | -t <template> ]
delete [-F]
end
exit [-F]
export [-f output-file]
help [commands] [syntax] [usage] [<command-name>]
info [<resource-type> [property-name=property-value]*]
remove <resource-type> { <property-name>=<property-value> }
(global scope)
remove <property-name>=<property-value>
(resource scope)
revert [-F]
select <resource-type> { <property-name>=<property-value> }
set <property-name>=<property-value>
verify
$
$
$ zonecfg help
コマンド:
add <resource-type>
(global scope)
add <property-name> <property-value>
(resource scope)
指定されたリソースを構成に追加します。
cancel
リソースおよびプロパティの指定を取り消します。
commit
現在の構成を確定します。構成は zoneadm で使用できるように
確定する必要があります。構成を確定するまでは revert コマ
ンドを使用して変更を削除できます。この操作は
zonecfg セッションの完了時に自動的に試みられます。
create [-F] [ -b | -t <template> ]
指定されたゾーンの構成を作成します。create を使用して、新しい
ゾーンの構成を開始する必要があります。既存の構成を上書きする場
合は、-F フラグを使用して処理を強制的に実行できます。<テンプ
レート> を指定するとゾーン名が <テンプレート> ではなく <ゾーン名>
となる点を除き、指定されたテンプレートと同一の構成を作成します。
'create -b' を指定すると、構成が空白になります。引数を指定せずに
'create' を使用すると、Sun のデフォルトの設定が適用されます。
delete [-F]
指定されたゾーンを削除します。-F フラグを使用すると
処理を強制的に実行できます。
end
リソースおよびプロパティの指定を終了します。
exit [-F]
プログラムを終了します。-F フラグを使用すると強制的に実行できます。
export [-f output-file]
構成を標準出力に出力します。または、出力ファイルを指定した
場合はコマンドファイルでの使用に適した書式で出力します。
help [commands] [syntax] [usage] [<command-name>]
ヘルプメッセージを出力します。
info [<resource-type> [property-name=property-value]*]
現在の構成に関する情報を表示します。リソースタイプを
指定すると、関連するリソースタイプに関する情報だけが
表示されます。リソース ID を指定すると、
そのリソースに関する情報だけが表示されます。
remove <resource-type> { <property-name>=<property-value> }
(global scope)
remove <property-name>=<property-value>
(resource scope)
指定されたリソースを構成から削除します。中括弧('{', '}') は、
括弧の間に 1 つまたは複数のリソースを指定することを意味します。
revert [-F]
構成を、最後に確定された状態に戻します。-F フラグを
使用すると、処理を強制的に実行できます。
select <resource-type> { <property-name>=<property-value> }
変更するリソースを選択します。コマンド "end" を
使用すると、リソースの変更が完了します。プロパティ
名と値のペアは、リソースを一意に識別するものでなけ
ればなりません。中括弧 ('{', '}') は、括弧の間に
1 つまたは複数のリソースを指定することを意味します。
set <property-name>=<property-value>
プロパティ値を設定します。
verify
現在の構成が正しいかどうかを確認します (一部のリソース
タイプには必須のプロパティが存在します)。
zoneadmコマンドのヘルプ
$ zoneadm help
使用法: zoneadm help
zoneadm [-z <zone>] list
zoneadm -z <zone> <サブコマンド>
サブコマンド:
help
使用法を出力する。
boot [-s]
指定されたゾーンを起動 (ブート) します。 -s フラグを使用すると、
シングルユーザー状態でゾーンをブートできます。
halt
停止スクリプトを省略し、ゾーンの実行時リソースを削除して
指定されたゾーンを停止します。
ready
ゾーンでアプリケーションを実行する準備を行いますが、ゾーン内で
ユーザープロセスは開始しません。
reboot
ゾーンを再起動します (停止 / ブートシーケンスと同義)。
ゾーンがアクティブでない場合には失敗します。
list [-cipv]
現在のゾーン、またはゾーンが指定されている場合はそのゾーンを
表示します。デフォルトでは、実行中のゾーンがすべて表示されます。
インストールされたゾーンをすべて表示する場合は -i オプションを
指定し、構成済みのゾーンをすべて表示する場合は -c オプション
を指定します。一般的な -z <ゾーン> オプションを指定すると、状態
に関係なく指定したゾーンだけが表示されます。このオプションを -i
オプションおよび -cオプションと共に使用することはできません。
-v オプションは、ゾーン名、ID、現在の状態、ルートディレクトリ、
オプションなどの詳細な情報を表示する場合に使用できます。
-p オプションは、マシンで構文解析可能な出力を要求する場合に使用
できます。-vオプションと -p オプションを同時に使用することはでき
ません。-v オプションも -p オプションも使用しない場合、
ゾーン名だけが表示されます。
verify
物理ネットワークインタフェースが存在するかどうかなど、
構成をマシン上で安全にインスタンス化できることを確認
してください。
install
構成をシステムにインストールします。
uninstall [-F]
構成をシステムからアンインストールします。-F フラグを
使用すると、処理を強制的に実行できます。
zloginコマンドの主なオプション
zloginコマンドの主なオプションを以下に示す
(このコマンドは global zone の特権ユーザのみが実行できる)
コマンドオプション |
内容 |
zlogin -C ゾーン名 |
指定された non-global zone のコンソールに接続 コンソール接続の切断は ~. または ~^D (チルダ'~'を押してからCTRL+D) |
zlogin ゾーン名 |
指定された non-global zone に接続(rootユーザ) |
zlogin -l ユーザ名 ゾーン名 |
ユーザ名を指定して non-global zone に接続 |
zone の構成情報作成
新規にゾーンを作成するにはまず構成情報を作成する必要がある。
構成情報を作成する方法として
がある。
対話モードによる作成方法
zonecfgコマンドの対話モードで"testZone"ゾーンを作成する例を以下に示す。
# zonecfg -z testZone
testZone: No such zone configured
Use 'create' to begin configuring a new zone.
zonecfg:testZone> create
zonecfg:testZone>
zonecfg:testZone> set zonepath=/zone/testZone
zonecfg:testZone>
zonecfg:testZone> add net
zonecfg:testZone:net> set physical=iprb0
zonecfg:testZone:net> set address=192.168.10.11
zonecfg:testZone:net> end
zonecfg:testZone>
zonecfg:testZone> set autoboot=true
zonecfg:testZone>
zonecfg:testZone> info
zonepath: /zone/testZone
autoboot: true
pool:
inherit-pkg-dir:
dir: /lib
inherit-pkg-dir:
dir: /platform
inherit-pkg-dir:
dir: /sbin
inherit-pkg-dir:
dir: /usr
net:
address: 192.168.10.11
physical: iprb0
zonecfg:testZone>
zonecfg:testZone> export
create -b
set zonepath=/zone/testZone
set autoboot=true
add inherit-pkg-dir
set dir=/lib
end
add inherit-pkg-dir
set dir=/platform
end
add inherit-pkg-dir
set dir=/sbin
end
add inherit-pkg-dir
set dir=/usr
end
add net
set address=192.168.10.11
set physical=iprb0
end
zonecfg:testZone>
zonecfg:testZone> verify
zonecfg:testZone>
zonecfg:testZone> exit
#
#
# zoneadm list -vc
ID NAME STATUS PATH
0 global running /
- testZone configured /zone/testZone
以上の作業で設定ファイル /etc/zones/testZone.xml が作成される。
/etc/zones/testZone.xml の内容を以下に示す。
$ cat /etc/zones/testZone.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE zone PUBLIC "-//Sun Microsystems Inc//DTD Zones//EN" "file:///usr/share/lib/xml/dtd/zonecfg.dtd.1">
<!--
DO NOT EDIT THIS FILE. Use zonecfg(1M) instead.
-->
<zone name="testZone" zonepath="/zone/testZone" autoboot="true">
<inherited-pkg-dir directory="/lib"/>
<inherited-pkg-dir directory="/platform"/>
<inherited-pkg-dir directory="/sbin"/>
<inherited-pkg-dir directory="/usr"/>
<network address="10.31.191.18" physical="iprb0"/>
</zone>
コマンドファイルによる作成方法
既存の"testZone"ゾーンからコマンドファイルを作成し、"testZone01"ゾーンを作成する例を以下に示す。
# zonecfg -z testZone export > testZone01.txt
#
# vi testZone01.txt
#
#
# zonecfg -z testZone01 -f testZone01.txt
#
# zoneadm list -vc
ID NAME STATUS PATH
0 global running /
- testZone configured /zone/testZone
- testZone01 configured /zone/testZone01
zone の作成
システムのインストール
global zone にインストールされたファイルを利用して'zonepath'で指定したディレクトリにシステムを作成する。
# zoneadm -z testZone install
Preparing to install zone <testZone>.
Creating list of files to copy from the global zone.
Copying <17403> files to the zone.
Initializing zone product registry.
Determining zone package initialization order.
Preparing to initialize <1052> packages on the zone.
Initialized <1052> packages on zone.
Zone <testZone> is initialized.
#
#
# zoneadm list -vc
ID NAME STATUS PATH
0 global running /
- testZone installed /zone/testZone
初期設定(ブート)
"testZone"ゾーンをブートして初期設定を行う。
# zoneadm -z testZone boot
#
# zlogin -C testZone
[ゾーン 'testZone' コンソールに接続しました]
Select a Language
0. English
1. Japanese
Please make a choice (0 - 1), or press h or ? for help:
rebooting system due to change(s) in /etc/default/init
[NOTICE: Zone rebooting]
SunOS Release 5.10 Version Generic 32-bit
Copyright 1983-2005 Sun Microsystems, Inc. All rights reserved.
Use is subject to license terms.
Hostname: testZone
testZone console login: ~.
[ゾーン 'testZone' コンソールへの接続が閉じられました]
#
#
# zoneadm list -vc
ID NAME STATUS PATH
0 global running /
1 testZone running /zone/testZone
zone の管理
状態の確認
$ zoneadm list -vc
起動(boot)
# zoneadm -z ゾーン名 boot
再起動(reboot)
# zoneadm -z ゾーン名 reboot
停止
# zoneadm -z ゾーン名 halt
コンソール接続(global zone から)
# zlogin -C ゾーン名
rootユーザで接続(global zone から)
# zlogin ゾーン名
ユーザを指定して接続(global zone から)
# zlogin -l ユーザ名 ゾーン名
プロセスの確認(global zone から)
# ps -z ゾーン名 -Z
zone の削除
状態確認
$ zoneadm list -vc
ID NAME STATUS PATH
0 global running /
1 testZone running /zone/testZone
停止
# zoneadm -z testZone halt
#
# zoneadm list -vc
ID NAME STATUS PATH
0 global running /
- testZone installed /zone/testZone
アンインストール
# zoneadm -z testZone uninstall
ゾーン testZone を uninstall してよろしいですか (y/[n])? y
#
# zoneadm list -vc
ID NAME STATUS PATH
0 global running /
- testZone configured /zone/testZone
構成情報削除
# zonecfg -z testZone delete
Are you sure you want to delete zone testZone (y/[n])? y
#
# zoneadm list -vc
ID NAME STATUS PATH
0 global running /
Copyright (C) 2005-2006 SY. All rights reserved.