Solaris 資料一覧
2008/9/28更新
対応バージョン: 10
既存のGlobal Zone上にNon-Global Zoneを作成する手順を示す。
初期状態確認
まず初期状態のZone設定について確認する。
何も設定していない状態ではGlobal Zoneが一つ稼働しているのみである。
# zoneadm list -vc ID NAME STATUS PATH BRAND IP 0 global running / native shared
Non-Global Zone作成
次にこのGlobal Zone上にNon-Global Zone(以下、Zone)を作成する。
ここでは以下のZoneを作成する。Zone情報の定義にはzonecfgコマンドを使用する。
Zone名
zone1
# zonecfg -z zone1 zone1: そのような構成済みゾーンはありません 'create' を使用して、新しいゾーンの構成を開始してください。 zonecfg:zone1> create
Zoneのrootファイルシステムの場所
/export/zones/zone1
zonecfg:zone1> set zonepath=/export/zones/zone1
共有ファイルシステム(read only)
/export/common
(*) /lib, /platform, /sbin, /usrはデフォルトで定義済
zonecfg:zone1> add inherit-pkg-dir zonecfg:zone1:inherit-pkg-dir> set dir=/export/common zonecfg:zone1:inherit-pkg-dir> end
共有ファイルシステム(read-write)
/usr/local (Global Zoneの/usr/localにマウント)
ファイルシステムはlofs(loopback file system)としてマウントされる。
zonecfg:zone1> add fs zonecfg:zone1:fs> set dir=/usr/local zonecfg:zone1:fs> set special=/usr/local zonecfg:zone1:fs> set type=lofs zonecfg:zone1:fs> end
Global Zone起動時の自動起動
有効
zonecfg:zone1> set autoboot=true
IPアドレス
192.168.0.100 (デバイスはe1000g0)
zonecfg:zone1> add net zonecfg:zone1:net> set address=192.168.0.100 zonecfg:zone1:net> set physical=e1000g0 zonecfg:zone1:net> end
他にもいろいろな設定があるがここでは割愛する。
設定検証
エラーの場合はメッセージが出力される。
zonecfg:zone1> verify
設定書き込み
設定をstable storageに書き込む。
zonecfg:zone1> commit
設定終了
zonecfg:zone1> exit
設定の内容は以下の方法で確認できる。
# zonecfg -z zone1 info zonename: zone1 zonepath: /export/zones/zone1 brand: native autoboot: true bootargs: pool: limitpriv: scheduling-class: ip-type: shared inherit-pkg-dir: dir: /lib inherit-pkg-dir: dir: /platform inherit-pkg-dir: dir: /sbin inherit-pkg-dir: dir: /usr inherit-pkg-dir: dir: /export/common fs: dir: /usr/local special: /usr/local raw が指定されていません type: lofs options: [] net: address: 192.168.0.100 physical: e1000g0
この設定は/etc/zones/
# cat /etc/zones/zone1.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="zone1" zonepath="/export/zones/zone1" autoboot="true"> <inherited-pkg-dir directory="/lib"/> <inherited-pkg-dir directory="/platform"/> <inherited-pkg-dir directory="/sbin"/> <inherited-pkg-dir directory="/usr"/> <inherited-pkg-dir directory="/export/common"/> <filesystem special="/usr/local" directory="/usr/local" type="lofs"/> <network address="192.168.0.100" physical="e1000g0"/> </zone>
ここまでで新たなZoneの定義が終わったのでZoneの一覧を見てみる。
# zoneadm list -vc ID NAME STATUS PATH BRAND IP 0 global running / native shared - zone1 configured /export/zones/zone1 native shared
ステータスが「configured」になっている。
ここでZoneのステータスについて説明する。
定義が終わった状態ではまだZoneは使用できず、installを行ってZoneに必要なファイルをインストールした後にbootを行ってZoneを起動する。以下にステータスの遷移図を記す。
---------- Configured ... Zone定義済 ---------- | ^ install| |uninstall v | --------- Installed ... Zone固有のrootファイルシステム作成済 --------- | ^ | ^ | | | | | | | +---------+ | | +---------+ | | | ready| |halt | | v | | | ----- boot| |halt Ready ... Zone有効化(ユーザプロセスは起動しない) | | ----- | | ^ | | | ready| |boot | | +---------+ | | | | +---------+ | | | | v | | v --------- Running ... Zone起動 ---------
Zoneインストール
Zoneの定義まで終わったのでインストールを行う。Zoneの制御にはzoneadmコマンドを使用する。
この処理はマシンの性能にもよるが数十分〜数時間かかる。
# zoneadm -z zone1 install Preparing to install zone <zone1>. Creating list of files to copy from the global zone. : Copying <7441> files to the zone. : Initializing zone product registry. Determining zone package initialization order. : Preparing to initialize <1189> packages on the zone. : Initialized <1189> packages on zone. Zone <zone1> is initialized. The file </export/zones/zone1/root/var/sadm/system/logs/install_log> contains a log of the zone installation.
インストールが終わるとZoneのステータスは「installed」に変わる。
# zoneadm list -vc ID NAME STATUS PATH BRAND IP 0 global running / native shared - zone1 installed /export/zones/zone1 native shared
Zone起動
インストール終、Zoneを起動する。
# zoneadm -z zone1 boot # zoneadm list -vc ID NAME STATUS PATH BRAND IP 0 global running / native shared 1 zone1 running /export/zones/zone1 native shared
ステータスが「running」に変わり、IDが割り当てられる。
IPアドレスも有効になり、以下のようにIPエイリアスが設定される。
# ifconfig -a : e1000g0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2 inet 192.168.0.12 netmask ffffff00 broadcast 192.168.0.255 ether 0:c:29:3b:bf:b5 e1000g0:1: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2 zone zone1 inet 192.168.0.100 netmask ffffff00 broadcast 192.168.0.255
この状態からhaltにより「installed」状態に、readyにより「ready」状態に変えることができる。またrebootによりZoneが再起動し、新たなIDが割り当てられる。
Zoneをアンインストールするには「installed」状態にしてからuninstallを実行する。
Zoneログイン
Zoneが起動するとログイン可能になる。
Zoneにログインするにはzloginコマンドを使用する。
# zlogin -C zone1 [ゾーン 'zone1' コンソールに接続しました]
最初のログインでは通常のSolarisインストールと同じように各種設定メニューが表示されるので必要な設定を行う。
Select a Language 0. English 1. Japanese :
設定が終わるとZoneがリブートする。
: System identification is completed. rebooting system due to change(s) in /etc/default/init : (リブート) : SunOS Release 5.10 Version Generic_127128-11 64-bit Copyright 1983-2008 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Hostname: <Zoneのホスト名> XXXXX console login:
尚、zloginには上記の-Cオプションによるコンソールモードの他に対話型/非対話型の2つのモードがあるが、ここでは説明を割愛する。
Zoneから抜ける場合はloginプロンプトから「~^D」('~' + Ctrl-D)を入力する。
関連資料・記事