Oracle Solaris 11 ゾーンを使ってみよう
(構築・運用ガイド)
2014年5月(第2.1版)
富士通株式会社
はじめに
目的
本書はOracle Solaris 11 ゾーンの構築・運用方法について紹介します。具体的な手
順は「Oracle Solaris 11ゾーンを使ってみよう(構築・運用手順書)」をご参照ください。
対象読者
Oracle Solaris 11の基礎知識を有している方
「Oracle Solaris 11を使ってみよう」、「Oracle Solaris 11ゾーンを使ってみよう(概要・
設計ガイド)」を参照された方
留意事項
「Oracle Solaris」を「Solaris」と、「Oracle Solaris
ゾーン」を「ゾーン」、「Zone」、「non-global zone」または「コンテナ」と表記する表記する場合があります。
本資料は、Oracle Solaris 11.1に基づいています。
Oracle Solaris 11 に関する最新情報は、Oracle社のマニュアルをご参照ください。
•
Oracle Solaris 11 Documentation
http://www.oracle.com/technetwork/documentation/solaris-11-192991.html
ドキュメントの位置付け
運用
導入
設計
Solaris 11 ゾーンを使ってみよう
(概要・設計ガイド)
Solaris 11 ゾーン を使ってみよう (構築・運用ガイド)
Solaris 11 ゾーンを使ってみよう (構築・運用手順書)
目次
1.
リソースプールの構築
2.
ゾーンの作成
3.
Oracle Solaris ゾーンの基本操作
4.
Oracle Solaris ゾーンの検証環境利用
5.
Oracle Solaris ゾーンの災対環境利用
6.
Oracle Solaris ゾーン統合環境におけるリソース操作
7.
Oracle Solaris ゾーンのBoot環境とパッケージ
zone1
zone2
リソースプールの構築
リソースプールの構成変更設定
本章の演習概要
1.スケジューラの設定
global zoneのスケジューラを変更します。
2.サービスの起動
リソースプールサービスを起動します。
3.定義ファイルの作成と編集
定義ファイルを作成します。
4.リソースプール構成の実行
作成したリソースプール構成を実行
します。
pool_defaultglobal zone
pset_default pset_default pool_1 pset_1 pset_1FSS
リソースプールを作成 します。リソースプール
を作成します。
CPU CPU CPU CPU CPU CPU CPU CPU
リソースプールの作成
リソースプール定義項目
実行イメージ
global zone用 non-global zone用 リソースプール pool_default pool_1 スケジューラ FSS FSS プロセッサセット名 pset_default pset_1 最大CPU数 (スレッド) 65535 4 最低CPU数 (スレッド) 4 4
CPU資源の制御と管理
•
作成するゾーン専用のリソースを割り当てるため、リソースプールを作成します。
•
設定項目は/etc/pooladm.confファイルへ書き出されます。リソースプールを構成す
るためには下記のコマンドを使用します。
pool_defaultglobal zone
pset_default pset_default pool_1 pset_1 pset_1FSS
・定義ファイル(
/etc/pooladm.conf)の作成、編集
poolcfgコマンド
・リソースプール構成の実行
pooladmコマンド
FSS
zone1
zone2
CPU CPU CPU CPU CPU CPU CPU CPU
zone1
zone2
ゾーンの作成とインストール
ゾーンの作成
本章の演習概要
1.ゾーンの作成
ゾーンの定義ファイルを作成します。
2.ゾーンの
インストール
ゾーンをインストールし、初期設定を行います。
pool_defaultglobal zone
pset_default pset_default pool_1 pset_1 pset_1FSS
ゾーンをインストール
します。
FSS
CPU CPU CPU CPU CPU CPU CPU CPU
zone1
ゾーンの作成
global zone
リソースプール プロセッサセット実行イメージ
②インストール ①定義作成 ④初期設定 ③起動 /etc/zones/xxx.xml パッケージインストール VNICの作成 指定デバイスのマウント リソースプールの結合 コンソールログイン
ゾーンの定義ファイル作成とインストール
•
ゾーンの定義ファイルを作成してゾーンをインストールします。
•
Oracle Solaris 11のゾーン構成時にデフォルトで設定されるanetリソースを使用して
VNICを作成します。
•
ゾーンのインストール後、ゾーンを起動して初期構成(ホスト名、パスワード、言語な
ど)を実行します。ゾーンの定義ファイル作成、インストール、初期構成を実行するた
めには、下記コマンドを使用します。
・ゾーン定義ファイルの作成
zonecfgコマンド
・ゾーンのインストール、
運用(起動
/停止/再起動)等
zoneadmコマンド
・ゾーンへログイン、
コンソール接続
zloginコマンド
anetを使用して
VNICを作成
vnicゾーンの定義項目
設定項目
★:必須 ※:排他設定値(例)
説明
ゾーン名 ★ zonename zone01 ゾーンの名前
ゾーンパス ★ zonepath /zones/zone01 global zoneからのルート(/)パス
起動オプション bootargs -m verbose 永続的なゾーンの起動引数
自動起動 autoboot true global zoneと同時起動
ブランドタイプ brand solaris 固定値
特権 limitpriv default,sys_time ゾーンに付与する特権
スケジューラ ★ scheduling-class FSS ゾーンのスケジューラを指定、FSSに設定
リソースプール ※ pool pool_1 結合するリソースプールを指定
ゾーン専用CPU設定※ dedicated-cpu ncpus (なし) ゾーン専用のリソースプールを構成
importance (なし) メモリ制限設定 capped-memory physical 2G メモリ資源の使用上限の設定 物理メモリ、swapメモリ、ロックメモリを設定可能 swap 4G lock 1G
IPタイプ ★ ip-type exclusive ネットワークの共有(share)、占有(exclusive)設定
ネットワーク ★ anet linkname vnic1 仮想NIC
lower-link net0 仮想NICを作成するリンク
configure-allowed-address true インストール後の初期ブート時にallowed-addressを永 続的に構成
link-protection mac-nospoof リンクの保護
mac-address auto 仮想NICのMACアドレス
共有ファイルシステム fs dir /mnt non-non-global zone側のマウントポイント
special /work global zone側のシェアディレクトリ
type lofs ファイルシステムタイプ
(option) ro 読み取り専用
共有デバイス device match /dev/rmt/* ゾーンから直接のアクセスを許可するデバイス
リソースパラメータ設定 cpu-shares 1 CPUシェア数を指定するパラメータ cpu-cap 400 CPUリソース上限値を指定するパラメータ max-shm-memory 1G 共有メモリの上限値 max-shm-ids 256 共有メモリIDの上限値 max-sem-ids 256 セマフォIDの上限値 max-msg-ids 512 メッセージIDの上限値
コメント attr name comment コメントとタイプを指定
type string
ゾーン起動
dedicated-cpu=3
《参考》 ゾーン専用
CPUの設定
global zone
リソースプール プロセッサセットゾーン停止時
ゾーン起動時
全ての
CPUをglobal zoneが利用
global zone
リソースプール プロセッサセット リソースプール プロセッサセット プロセッサセット起動のタイミングでリソースを確保
(=停止するとリソースを開放)
dedicated-cpuパラメータ
•
ゾーン起動を契機として専用のリソースプールを構成します。
CPU CPU CPU CPU CPU CPU CPU CPU
ゾーン停止
dedicated-cpu=3
•
CPU数の範囲指定が可能です(例:dedicated-cpu=1-4 )。
•
dedicated-cpu を設定したゾーンの起動時に、指定されたCPUリソースが確保できない場合、ゾーンの起動が
失敗します。
dedicated-cpuで設定した最小CPU数と、他のプロセッサセット(pset)で設定した最小CPU数の
合計が物理
CPU数を超えないように設定してください。
• 複数ゾーン間でリソースプールを共有する場合は、
poolcfgコマンドでリソースプールを作成して各ゾーンに
割り当てます。
《参考》 メモリ資源管理
•
メモリ領域は共有のため、各ゾー
ンは必要とするメモリを使用する
•
メモリ不足の場合、ミドルウェアや
アプリケーションの動作に影響を
与える
•
ゾーン単位に下記のメモリ資源の使
用上限設定が可能
physical (物理メモリ)
swap (スワップ領域)
locked (ロックされた物理メモリ)
メモリ制限なし
メモリ制限あり
capped-memoryパラメータ
•
ゾーンに対するメモリ使用制限が可能です。
Memory
Memory
• 特定ゾーンがメモリを占有することによる他ゾーンの性能劣化を回避できます。
• 特に本番環境と検証環境が混在するような構成におけるメモリリソースの制限に有効です。
zone1
zone2
zone3
zone1
zone2
zone3
zone1
zone2
zone3
《参考》 ゾーンのネットワーク構成設定
占有(
exclusive)
global
zone
ルーティング ルーティングNIC
ゾーン毎に個別のルーティング設定が可能
(デフォルト設定)
ルーティング ルーティング ルーティングルーティング ルーティングルーティングNIC
NIC
NIC
ip-typeパラメータ
•
占有(
exclusive)では独立したルーティング設定が可能です。
•
Oracle Solaris 11では、占有(exclusive)がデフォルト設定で割り当てられます。
共有(
shared)
global
zone
ルーティング ルーティングNIC
global zoneのルーティング設定を共有
占有(
exclusive)では以下を実現できます。
•サブネットの違うサーバを、サブネットを変更せずに
Oracle Solaris ゾーンに統合可能です。
•NICを共有させたい場合は、VLAN構成で対応可能です。
•
exclusive設定の場合、ゾーン間通信のセキュリティを強化可能です(IPフィルタ機能など)。
•仮想ネットワーク機能を使用することで、一つの
NICを共有させることができます。
Oracle Solaris ゾーンの基本操作
Oracle Solaris ゾーンの起動、停止、ログイン操作
本章の演習概要
1.起動、停止、ログイン操作
ゾーンの基本動作を実施します。
2.ゾーンにおけるプロセスの見え方
ゾーンのプロセスを監視して、
global zoneとの
見え方の違いを確認します。
3.zonestatコマンドによる統計情報取得
zonestatコマンドを使用して、ゾーンの統計情報
を確認します。
global zone
ゾーンへログインします。
停止 起動ゾーンの起動、停止
を行います。
監 視ゾーンのプロセスを監視し
て見え方を確認します。
zone1
zone1
ゾーンの基本操作(1)
# zoneadm –z zone01 boot
# zlogin zone01 “shutdown -y -g0 -i6” # zlogin zone01 “shutdown -y -g0 -i5” # zoneadm –z zone01 shutdown
# zoneadm -z zone01 reboot # zoneadm –z zone01 halt
・ ゾーンのインストールが中断
または失敗により、
incomplete
状態になった場合はゾーンを
uninstallしてください。
install【停止状態】
ready boothalt (or shutdown) uninstall
【構成済み状態】
Configured Installed Running
【起動状態】
Ready boot【起動準備状態】
【不完全状態】
Incomplete incompletereboot (or shutdown) uninstall
# zoneadm -z zone01 boot -s
ゾーンの基本操作コマンド
ゾーンの状態確認
# zoneadm list -vc
ID NAME STATUS PATH BRAND IP
0 global running / solaris shared 1 zone01 running /export/zone01 solaris excl
2 zone02 running /export/zone02 solaris excl
ゾーンの起動、再起動、停止(通常運用時)
ゾーンの再起動、停止(緊急時)
シングルユーザモードで起動
zone1
zone1
zone1
ゾーンの基本操作(2)
global zone
global zone
・No Passwordでログイン ・コマンド実行結果のみ表示 # zlogin -C zone01[Connected to zone 'zone01' console]
global zone
ゾーンのコンソールログイン
ゾーンの通常ログイン
対話形式でのログイン
非対話形式でのログイン
# zlogin zone01[Connected to zone 'zone01' pts/2]
Oracle Corporation SunOS 5.11 11.1 September 2012 root@zone01:~#
# zlogin -l guest zone01 ps -ef
Oracle Corporation SunOS 5.11 11.1 September 2012 UID PID PPID C STIME TTY TIME CMD
root 15329 14799 0 11:18:10 0:00 /usr/sbin/init
root 16480 14799 0 11:18:53 ? 0:00 /usr/lib/inet/inetd start :
$ pfexec zlogin zone01
※Oracle Solaris 11から
一般ユーザ権限でのログイン
事前に、ゾーンのadminプロパティに操作権限を与 えるユーザ名、権限の定義が必要です。 権限を与えられたユーザのコマンド実行は、プロ ファイルシェル(pfsh)からの実行が必要となります。 (※pfsh環境で実行すればpfexecは不要) ・初回は、ゾーンの初期構成(ホスト名、管理者 パスワード、タイムゾーン、言語など)がコンソー ル に表示されるため、zlogin -C でコンソール接続 後、別画面からゾーンを起動ゾーン管理用コマンドオプション
# ps -efZ | grep init
global root 1 0 0 23:10:35 ? 0:04 /sbin/init zone01 root 27493 27472 0 15:39:46 ? 0:00 /sbin/init zone02 root 28136 28126 0 15:47:39 ? 0:00 /sbin/init zone03 root 3470 3456 0 17:46:54 ? 0:00 /sbin/init
# df -Z :
/zones (zones ):19192274 blocks 19192274 files /zones/zone01 (zones/zone01 ):19192274 blocks 19192274 files /zones/zone01/root (zones/zone01/rpool/ROOT/solaris ):19192274 blocks 19192274 files /zones/zone01/root/dev (/dev ): 0 blocks 0 files /zones/zone01/root/var (zones/zone01/rpool/ROOT/solaris/var):19192274 blocks 19192274 files
ゾーンの情報表示
プロセス情報を表示
ファイルシステム情報を表示
• ゾーンに対応したオプション(
-z、-Z)を付けることで、global zoneから各ゾーンの情報取得が可能です。
その他、
ipcs(1),pgrep(1),pkill(1),ptree(1),prstat(1M),coreadm(1M)など。
ゾーンのネットワーク管理(1)
# ipadm create-ip net1
ipadm: cannot create interface net1: Interface already in use
# dladm show-link
LINK CLASS MTU STATE OVER net1 phys 1500 unknown --# ipadm create-ip net1
# ipadm create-addr -T static -a local=192.168.4.1/24 net1/Zone # ipadm show-addr
ADDROBJ TYPE STATE ADDR
lo0/v4 static ok 127.0.0.1/8 net1/Zone static ok 192.168.4.1/24 lo0/v6 static ok ::1/128
ゾーンに割り当てられた
ため
NICの操作は不可
割り当てられたNICに
対して設定が可能
ネットワーク
I/Fの設定(ip-type=exclusive時)
•
non-global zoneにIPアドレスを設定して、インターフェース net1 を有効化させます。
global zoneからはNICの操作は不可
non-global zoneからNICの操作が可能
•
ip-typeを占有(exclusive)に設定した場合は、non-global zoneのみ占有(exclusive)設定の情報を確認できます。
割り当てた
NICの管理はnon-global zoneで実施します。
ゾーンのネットワーク管理(2)
# ipadm show-addr
ADDROBJ TYPE STATE ADDR
lo0/v4 static ok 127.0.0.1/8
lo0/zoneadmd.v4 static ok 127.0.0.1/8
net0/v4 static ok 192.168.2.1/24
net0/zoneadmd.v4 static ok 192.168.2.2/24
lo0/v6 static ok ::1/128
lo0/zoneadmd.v6 static ok ::1/128
net0/v6 addrconf ok fe80::214:4fff:fef9:73d8/10
# ipadm show-addr
ADDROBJ
TYPE STATE ADDR
lo0/?
from-gz ok
127.0.0.1/8
net0/?
from-gz ok
192.168.2.2/24
lo0/?
from-gz ok ::1/128
ゾーンの
NIC
も認識
ゾーンに割り当てら
れた
NICのみ認識
global zoneからNICを確認
non-global zoneからNICを確認
ネットワークの状態表示(
ip-type=shared時)
•
non-global zoneはglobal zoneのnet0を共有する設定。
•
ip-typeを共有(shared)に設定した場合は、global zoneからnon-global zoneのNICを設定します。
NICの管理は全てglobal zoneで実施します。
ゾーンにおける制限と特権
zonecfg:zone01> set limitpriv=default,sys_time
zonecfg:zone01> set limitpriv=default,dtrace_proc,dtrace_user
non-global zoneでは動作しないコマンド、アプリ(一例)
dtrace(1M)
※但し、
dtrace_proc特権、dtrace_user特権を追加することで動作可能
RTプロセス
eeprom(1M)によるパラメータ設定
※参照は可能
format(1M)
※但し、
allow-partitionプロパティを設定することで動作可能
prtconf
※但し、
prtconf –pは実行可能
prtdiag(1M)
※但し、一部のオプションは実行可能
psradm(1M)
trapstat(1M)
ゾーンにシステム時刻操作の特権(
sys_time)を付与
特権の設定(一例)
ゾーンに
dtrace関連の特権(dtrace_proc、dtrace_user)を付与
• 基本的にゾーンではハードウェアやカーネルを操作するアプリやコマンドは実行できません。
但し、ゾーンに特権を定義することで、一部の実行権を付与すことが可能です。
Oracle Solaris ゾーン環境の設定変更(1)
# zonecfg –z zone01
zonecfg:zone01> select net address=192.168.100.100/24
zonecfg:zone01:net> set address=192.168.100.200/24
zonecfg:zone01:net> end
zonecfg:zone01> exit
# zonecfg -z zone01
zonecfg:zone01> remove net address=192.168.100.100/24
global zone
①ゾーンの停止
②
zonecfgコマンドで修正
global zone
③ゾーンの起動
zone.xml
ゾーン環境の設定変更
例)
IPアドレスの変更、削除(ip-type=sharedの場合)
定義情報の変更(
IPアドレスの変更)
定義情報の削除(
IPアドレス設定の削除)
zone
zone
Oracle Solaris ゾーン環境の設定変更(2)
/(root) home zones zone01 export dev root移動
例:
/export/home/zone01 から /export/zones/zone01 へ移動
# zoneadm -z zone01 move /export/zones/zone01
zonepathの変更
•
ゾーンのディレクトリを同一ホスト内の新しい場所へ移動することが可能です。
• ゾーンの移動を行うと、ゾーン構築時に設定した
zonepathパラメータが変更されます。
• 実施前に移動先の
DISK領域が十分であることを確認してください。
zone02
(クローン)
zone01
(マスター)
Oracle Solaris ゾーンの複製
Oracle Solaris ゾーンの複製
本章の演習概要
1.構成ファイルの作成と編集
クローン元の構成ファイルを編集してクローンを
構成します。
2.クローンの作成
クローン元からクローンを作成します。
global zone
構成情報を抽出し
ます。
Master情報から複製ゾーン
の構成情報を作成します。
Master情報
Master情報から複製ゾーンの
構成情報を作成します。
編集
zone
(マスター)
zone
(クローン)
zone
(クローン)
Oracle Solaris ゾーンの複製 1/2
クローン機能
•
本番環境と同一環境のゾーンをクローン機能で作成し、検証環境のゾーンを構築しま
す。
global zone
Master
情報
③
zoneadmコマンドで複製(クローン)
を作成
④各ゾーンの初期設定を実施
(
rootパスワード、ホスト名など)
zone
情報
zone
情報
①
zonecfgコマンドで構成情報を
抽出
①
②
③
④
④
スナップショット スナップショット②
zonecfgコマンドで、Master情報
から複製ゾーンの構成情報を作成
(IPアドレスとzonepathは重複しないように変更)• 複製元ゾーン(マスター)のインストールは通常通り実施しますが(約
20分)、複製先ゾーン(クローン)は、
ZFSスナップショットとZFSクローンの連携によって構築されます。
• 1環境のクローン作成時間は数十秒程です。
Oracle Solaris ゾーンの複製 2/2
・ クローン先に対して物理的にデータコピーを行っているため、 クローン作成には時間を要する。 ※5分~10分程度(ディスク使用状況により増加します。) ・ 一度スナップショットを採取し、そのスナップショットを元にZFS クローンを作成し、新しいゾーン用の領域としている。スナップショット、 ZFSクローンは瞬時に完了するため、ゾーンクローンも瞬時に完了しま す。(数十秒) /zones ┗/zone01 ┗/zone01_clone /zones ┗/zone01 物理コピー
UFS環境の場合(Oracle Solaris 10のみ)
UFSとZFSにおけるゾーンクローンの動作
zones ┗/zone01@snap00 ZFSクローン作成 スナップショット採取
ZFS環境の場合
zones ┗/zone01 zones ┗/zone01 ┗/zone01_clone zone01_clonenon-global zone non-global zonezone01
zone01
non-global zone non-global zonezone01_clone
•
ZFSスナップショットとZFSクローンの連携によって効率的に複数のゾーン環境の構築が可能。
• バックグラウンドの動作の違いであるため、ユーザの操作に変更はありません。
zone02 (DB用デバイス) /dev/[r]dsk/c2t0d0s0 /dev/[r]dsk/c2t0d1s0 zone01 (DB用デバイス) /dev/[r]dsk/c1t0d0s0 /dev/[r]dsk/c1t0d1s0
《参考》クローン機能によるデータベース環境の複製
◆クローン環境作成時のポイント
ゾーン定義情報の編集(クローン前)
①ゾーン名の変更
同じサーバ内に同名のゾーンは作成不可なので別名をつける②
zonepathの変更
同じサーバ内に同名のzonepathは作成不可なので別のパス を指定する③
IPアドレスの変更
同一ネットワーク上に同一のIPアドレスの使用は不可なので 別のIPアドレスを指定する④リソース上限設定
CPU、メモリの使用制限する場合設定する⑤デバイス情報の変更
DB用デバイスを変更するミドルウェア用の設定変更(クローン後
)
①デバイスファイルの削除
クローン元のデバイスファイルが残っているので削除する②
DBデータの移行
クローン元で作成したDBデータ、など一式をコピーする (OSコマンドやストレージ機能で実施)③
OSのホスト名、IPアドレス変更の影響を受ける
データベース側の設定変更
ホスト名やIPアドレスが記載されたファイルの編集や、 コマンドによる構成情報の再作成を実施する c1t0d0 c1t0d1global zone
ゾーン専用 のデバイス c2t0d0 c2t0d1 ゾーン専用 のデバイス ゾーンクローンデータ移行
(DBデータなど)
DB各種設定
ファイルの変更
ゾーン定義情報
の編集
zone01
zone01
Oracle Solaris ゾーンの災対環境利用
ゾーンを災対環境へ移動
本章の演習概要
1.ゾーンの切り離しとアーカイブ作成
移動させるゾーンを切り離してアーカイブ
を作成します。
2.アーカイブの転送
別サーバへアーカイブを転送します。
3.アーカイブの展開とゾーンの組み込み
別サーバにてアーカイブを展開しゾーン
を組み込みます。
global zone
(
global01)
アーカイブと
config情報を転
送します。
global zone
(
global02)
本番環境
災対環境
ゾーンのアーカイブ
を作成します。
アーカイブを組
み込みます。
zone
Oracle Solaris ゾーン環境のサーバ間移動
ゾーンをサーバ間で移動させて災対環境の運用を実現
•
ゾーン移動機能:ゾーンを別のサーバへ移動し同じゾーン環境を復元する機能です。
global zone
global zone
(1)ゾーン環境のdetach
(切り離し)とアーカイブの作成
(2)アーカイブとconfig情報をFTP等で転送
(3)ゾーン環境の作成と
Attach
(組み込み)
# zoneadm -z zone01 detach
# zonecfg -z zone01 export > /[zone_directory]/zone01.zonecfg
(ゾーンのconfig情報をexport)
# zfs snapshot -r [dataset]/zone01@v2v
(スナップショット作成)
# zfs send -rc [dataset]/zone01@v2v | gzip > ¥ >/[zone_directory]/zone01.zfs.gz
(アーカイブを作成して別ホストへFTP転送)
# zonecfg -z zone01 -f /[zone directory]/zone01.zonecfg (config構成を読み込み)
# zoneadm -z zone01 attach –a /[zone_directory]/zone01.zfs.gz
zone
• 別ホスト上でattach時に環境のチェックが実施されます。
• 移動先のOracle Solaris 11環境にインストールされているパッケージが移行元のバージョンと比べて古い場合、 attachコマンドに-uオプション(non-global zoneで動作しているパッケージを更新)、-Uオプション(global zoneで 動作しているパッケージを更新)を使用してパッケージをアップデートします。本演習ではオプションは付与しません。
zone
DBzone
DB《参考》 災対環境におけるデータベース環境の復旧
global zone
global zone
(1)最新のアーカイブからゾーンを復旧
(2)本番環境データを復旧する
ストレージの機能などを利用
本番データベース ゾーン停止
退避済みのアーカイブデータを利用し、迅速にデータベース環境
を復旧
•
運用時は、データベース環境の更新(アップデート適用など)時に最新のアーカイブを災対環境
へ退避します。
•
保守時や障害時は、別サーバ上でゾーンを復元し代替環境として業務を継続します。
• 外部ストレージのデータはストレージ共有や、
ETERNUSのREC(Remote Equivalent Copy)機能等での
実現を想定しています。
サーバ 停止
6. Oracle Solaris ゾーン統合環境に
おけるリソース操作
zone01 (50) zone02(50) zone01 zone02 zone01 (CPUシェア数:70) zone02(30) zone01 (20) zone02 (80)
Oracle Solaris ゾーン統合環境におけるリソース操作
CPUシェア数とキャッピングの設定
本章の演習概要
1.
CPUシェア数の設定
CPUシェア数を設定して、各ゾーンが
利用するCPUの配分比率を指定します。
2.CPUリソースのキャッピング設定
CPUリソースのキャッピングを設定して、
使用するCPUの使用上限値を指定します。
pool_130%
70%
pool_150%
50%
pool_1 pool_1 1CPU分 2CPU分CPUシェア数の設定
CPUリソースのキャッピング設定
CPU CPU CPU CPU
zone02 (30) zone01 (CPUシェア数:70) zone01(20) zone02 (80)
CPUリソースの変更(1)
# prctl -n zone.cpu-shares -r -v 20 -i zone zone01
# prctl -n zone.cpu-shares -r -v 80 -i zone zone02
70% 30% 20% 80% pool_1 pool_1 zone01 zone02 zone01 zone02
《リソース配分》
《リソース配分》
CPUシェア数の動的変更によるリソース配分の変更
prctlコマンドによる実行
•
CPUシェア数によるリソース配分はプールのスケジューラが「FSS」の時のみ有効です。
CPU CPU CPU CPUCPUリソースの変更(2)
pool_1 pool_1 1CPU分# zonecfg –z zone02
zonecfg:zone02>add capped-cpu
zonecfg:zone02:capped-cpu>set ncpus=1
zonecfg:zone02:capped-cpu>end
# prctl –n zone.cpu-cap –r –v 200 –i zone zone02
ncpus=1 の場合、1CPU分のリソースを占有
する設定となり、
OSの資源パラメータに
zone.cpu-cap=100が自動設定されます。
2CPU分
CPUリソースのキャッピング
zonecfgコマンドによるキャッピング設定(zone.cpu-capパラメータ)
キャッピング値の動的変更
zone01
zone02
zone01
zone02
•
zone.cpu-capの値は”100”を1CPUとして設定するので、リソースプールでのCPU割り当てより、細かなリソース
配分設定が可能です。
1CPUを1%単位で配分可能。
CPU CPU CPU CPU CPU CPU
zone01
zone02
zone01
zone02
CPUリソースの変更(3)
pool_1
移動
pool_2 pool_1 pool_2
# poolcfg -dc 'transfer 1 from pset pset_2 to pset_1'
# poolcfg -dc 'transfer to pset pset_1 (cpu 5) '
# svcadm enable pools/dynamic:default
CPUリソースの動的移動
poolcfgコマンドによる実行(手動)
pooldデーモンによる実行(自動)
•
pooldデーモンによる自動CPUリソース移動は、サービス起動時に即有効になります。
リソースプールの負荷状況に応じて、設定範囲(
pset.min~pset.max)内でCPUを自動的に移動させます。
7. Oracle Solaris ゾーンのBoot環境と
パッケージ
zone01
Oracle Solaris ゾーンのBEとパッケージインストール
BEの作成とパッケージインストール
本章の演習概要
1.
BEのスナップショット作成
BEからスナップショットを作成します。
2.スナップショットからの
BE作成
スナップショットから
BEを作成します。
3.
BEの作成とパッケージのイン
ストール
BEを新規作成して、ローカルリポジトリ
から作成した
BEへパッケージをインス
トールします。
snapshot
BE:be02 solaris@snap01BE作成
パッケージ
インストール
BE:solarisBE作成
BE:be01 パッケージglobal zone
zone01
BEのスナップショット作成
•
BE(solaris)からスナップショット(solaris@snap01)を作成します。
BEの確認
# beadm list –a
BE/Dataset/Snapshot Active Mountpoint Space Policy Created --- --- --- --- --- ---Solaris
rpool/ROOT/solaris NR / 2.19G static 2014-02-06 21:44
--<省略>--
スナップショットの作成とテストファイルの作成
# beadm create solaris@snap01 # beadm list -s
BE/Snapshot Space Policy Created --- --- --- ---solaris solaris@install 1.01M static 2014-02-06 21:48 solaris@snap01 0 static 2014-02-06 21:53 # touch /root/testfile01
事前準備
Active列の値 N:現在アクティブのBE R:リブート後にアクティブになるBE (1) BE(solaris)からスナップ ショットを作成 (2) BE(solaris)から作成したス ナップショット(solaris@snap01)を 確認 (3) 以降の手順でシステムの状 態を確認するため、ファイルを作成 BE:solaris solaris@snap01 snapshot作成 global zonezone01
BEの作成(be01)
•
作成したスナップショット(
solaris@snap01)からBE(be01)を新規作成します。
スナップショット(
solaris@snap01)の確認
スナップショットから
BEの作成
スナップショット(
solaris@snap01)からBE(be01)を新規作成
# beadm create -e solaris@snap01 be01 #
# beadm list
BE Active Mountpoint Space Policy Created -- --- --- --- --- ---be01 - - 60.0K static 2014-02-06 21:59 solaris NR / 2.29G static 2014-02-06 21:44 solaris@snap01 BE作成 BE:be01 BE:solaris 新規作成したBE(be01)の確認 global zone # beadm list -s
BE/Snapshot Space Policy Created --- --- --- ---solaris solaris@install 1.01M static 2014-02-06 21:48 solaris@snap01 0 static 2014-02-06 21:53 スナップショット(solaris@snap01) の確認
zone01
global zone
BE(be01)のアクティブ化
•
BE(be01)をアクティブ化して、スナップショット作成時の環境に戻します。
BE(be01)のアクティブ化
BEのアクティブ化
# beadm activate be01 # beadm list
BE Active Mountpoint Space Policy Created -- --- --- --- --- ---be01 R - 2.29G static 2014-02-06 21:59 solaris N / 123.0K static 2014-02-06 21:44
BE(be01)の確認とテストファイルの確認
# shutdown -y -g0 -i6 # beadm listBE Active Mountpoint Space Policy Created -- --- --- --- --- ---be01 NR / 2.33G static 2014-02-06 21:59 solaris - - 7.77M static 2014-02-06 21:44 # ls –l /root total 0 アクティブ化 BE:be01 BE:be01 Active値が「R」と表示 (1) 新規作成したBE(be01)が 有効であることを確認 (2) スナップショット作成時の 環境に戻っていることを確認
zone01
global zone
BEの新規作成(be02)とマウント
•
BE(be02)を新規作成し、作成したBE(be02)へパッケージを追加するため任意のディ
レクトリへマウントします。
BEの作成
# beadm create be02 #
# beadm list
BE Active Mountpoint Space Policy Created -- --- --- --- ---
---be01 NR / 2.33G static 2014-02-06 21:59
be02 - - 60.0K static 2014-02-06 22:04
solaris - - 7.77M static 2014-02-06 21:44
BEのマウント
# beadm mount be02 /mnt #
# beadm list
BE Active Mountpoint Space Policy Created -- --- --- --- --- ---be01 NR / 2.33G static 2014-02-06 21:59 be02 - /mnt 60.0K static 2014-02-06 22:04 solaris - - 7.77M static 2014-02-06 21:44
BEの新規作成
BE:be02 BE:solaris BE作成 (1) BE(be02)を新規作成 (2) 新規作成したBE(be02)を 確認 (1) 作成したBE(be02)にパッ ケージを追加するため任意の ディレクトリへマウント (2) 指定したディレクトリへマウ ントされていることを確認zone01
global zone
BEへのIPSパッケージインストール
•
新規作成した
BE(be02)へパッケージをインストールします。
BE(be02)へのパッケージインストール
# pkg -R /mnt install pkg://solaris/service/network/telnet Packages to install: 1 Services to change: 1DOWNLOAD PKGS FILES XFER (MB) SPEED
Completed 1/1 10/10 0.0/0.0 126k/s
PHASE ITEMS Installing new actions 32/32 Updating package state database Done Updating image state Done Creating fast lookup database Done
インストール後の確認
IPSパッケージのインストール
# pkg list telnet
pkg list: no packages matching 'telnet' installed
BE:be02 パッケージ パッケージ インストール BE:solaris アクティブでないBE(be02)に対 してパッケージをインストール アクティブでないBE(be02)に対し てパッケージをインストールした ため、現在のブート環境には未 適用であることを確認
zone01
global zone
BE(be02)のアクティブ化
•
パッケージをインストールした
BE(be02)に切り替えるため、BE02をアクティブ化した後にゾーンを再起動します。
BE(be02)のアクティブ化と確認
BEのアクティブ化
# beadm umount be02 # beadm activate be02 # beadm list
BE Active Mountpoint Space Policy Created -- --- --- --- --- ---be01 N / 129.0K static 2014-02-06 21:59 be02 R - 2.48G static 2014-02-06 22:20 solaris - - 7.77M static 2014-02-06 21:44
BEとパッケージの確認
# shutdown -y -g0 -i6 # beadm listBE Active Mountpoint Space Policy Created -- --- --- --- ---
---be01 - - 6.09M static 2014-02-06 21:59 be02 NR / 2.53G static 2014-02-06 22:20 solaris - - 7.77M static 2014-02-06 21:44 # pkg list telnet
NAME (PUBLISHER) VERSION IFO network/telnet 0.5.11-0.175.1.0.0.24.2 i --service/network/telnet 0.5.11-0.175.1.0.0.24.2 i --BE:be02 アクティブ化 BE:solaris アクティブ化を実行するとActive 値が「R」と表示 (1) 新規作成したBE(be02)が 有効であることを確認 (2) BE(be02)にインストールし たパッケージを表示
zone01
global zone
元の
BEへアクティブ化
•
アクティブ化したBE(be02)から元のBE(solaris)へBEを切り替えます。
•
適応したパッケージに不具合があったことを想定します。
BE(solaris)のアクティブ化と確認
元の
BEへ変更
# beadm activate solaris # beadm list
BE Active Mountpoint Space Policy Created -- --- --- --- --- ---be01 - - 6.09M static 2014-02-06 21:59 be02 N / 264.46M static 2014-02-06 22:20 solaris R - 2.30G static 2014-02-06 21:44
BEとパッケージの確認
# shutdown -y -g0 -i6 # beadm listBE Active Mountpoint Space Policy Created -- --- --- ---
---be01 - - 6.09M static 2014-02-06 21:59 be02 - - 273.52M static 2014-02-06 22:20 solaris NR / 2.34G static 2014-02-06 21:44 # pkg list telnet
pkg list: no packages matching 'telnet' installed
BE:be02 アクティブ化 BE:solaris Active値が「R」と表示 (1) 切り替えたBE(solaris)が有 効であることを確認 (2) 元のBE(solaris)にはインス トールされていないことを確認
8. Oracle Solaris ゾーンを利用した
仮想ネットワーク構築
ゾーンを使用した仮想ネットワーク構築
仮想ネットワークの構築
本章の演習概要
1.仮想ネットワーク構築の準備
仮想ネットワーク構築のためネットワーク
サービスを確認します。
2.
etherstub、VNICの作成
etherstub、VNICを作成します。
3.仮想ルータの作成
仮想ルータとしてゾーンを作成します。
ipfilterサービスの起動を行い、IP転送と
ルーティングを有効化します。
4.仮想ホストの作成
仮想ホストとしてゾーンを作成します。
5.帯域幅制限の設定
フローを作成して仮想ホストに帯域幅制限を
設定します。ゾーン上でglobal zoneからファイ
ルをダウンロードしながら帯域幅制限の状態
をモニタリングします。
global zone
etherstub VNIC VNIC etherstub VNIC VNIC VNIC 仮想ルータ ゾーン 仮想ルータ ゾーン 仮想ホスト ゾーンIP転送、
ルーティングの
設定
VNIC etherstub VNIC 物理NICNATの設定
VNICの
作成
etherstub
の作成
仮想ホスト ゾーン VNIC 仮想ホスト ゾーン帯域幅制限
の設定
10Mbps 50Mbps仮想ホスト
の作成
ネットワークサービスの確認
•
ネットワークサービス(
svc:/network/physical:default)の起動状態を確認します。
※
Oracle Solaris 11.1において仮想ネットワークを構築する場合は、 svc:/network/physical:defaultサービス
が起動していることを確認します。
※
Oracle Solaris 11/11において仮想ネットワークを構築する場合は、svc:/network/physical:nwamサービス
が停止していること、及び
svc:/network/physical:defaultサービスが起動していることを確認します。
svc:/network/physical:default(パッケージ)のネットワークサービスの確認
# svcs svc:/network/physical:default STATE STIME FMRI
online 22:56:06 svc:/network/physical:default # svcs svc:/network/physical:nwam
svcs: Pattern 'svc:/network/physical:nwam' doesn't match any instances
・svc:/network/physical:default : システムの基本的なネットワーク 設定を手動で行うサービス。
※Oracle Solaris 11.1 ではnwam サービスは存在しません。
仮想ネットワーク構築の準備
nwamサービスの確認(Oracle Solaris 11 11/11の場合のみ)
# svcs svc:/network/physical:default STATE STIME FMRI
online 3月_04 svc:/network/physical:default # svcs svc:/network/physical:nwam
STATE STIME FMRI
disabled 9月_20 svc:/network/physical:nwam
・svc:/network/physical:nwam : システムの基本的なネットワーク 設定を自動で行うサービス。
etherstubとVNICの作成
•
etherstubとVNICを作成してネットワークを設定
します。
•
VNICをetherstub上に作成することで、プライ
ベート仮想ネットワークを構築します。
etherstubの作成
# dladm create-etherstub vsw1
VNICの作成
# dladm create-vnic -l vsw1 vnic0
ネットワークの設定
ネットワークの設定
# ipadm create-ip vnic0
# ipadm create-addr -T static -a local=192.168.1.1/24 vnic0/v4
global zone
vnic4 vnic5 vsw2 vnic3 vnic7 vsw3 vnic6 vnic1 vnic2 vsw1 vnic0 物理NIC 仮想ルータ vrouterA 仮想ルータ vrouterB 仮想ホスト hostA 仮想ホスト hostB 仮想ホスト hostC仮想
NICの
作成
etherstub
の作成
設定ファイルの作成と
ipfilterサービスの起動
•
/etc/ipf/ipnat.confファイルを新規作成し、ipfilterサービスを起動します。
•
NATを設定により、プライベートアドレスを持つホストでも外部との通信が可能です。
/etc/ipf/ipnat.confファイルの新規作成
# vi /etc/ipf/ipnat.conf
map net0 192.168.1.0/24 -> 0/32 portmap tcp/udp auto map net0 192.168.1.0/24 -> 0/32
map net0 192.168.2.0/24 -> 0/32 portmap tcp/udp auto map net0 192.168.2.0/24 -> 0/32
map net0 192.168.3.0/24 -> 0/32 portmap tcp/udp auto map net0 192.168.3.0/24 -> 0/32
ipfilterサービスの有効化
# svcadm enable svc:/network/ipfilter:default
NATの設定
IP転送の有効化
# routeadm -u -e ipv4-forwardingglobal zone
NATの
設定
vnic4 vnic5 vsw2 vnic3 vnic7 vsw3 vnic6 vnic1 vnic2 vsw1 vnic0 物理NIC 仮想ルータ vrouterA 仮想ルータvrouterB 仮想ホスト hostA 仮想ホストhostB 仮想ホスト hostCゾーン
ipfilterサービスの起動とIP転送、ルーティングの有効化
•
ゾーンを作成し、
IP転送とルーティングを有効化することで仮想ルータを作成します。
ipfilterサービスの起動
# svcadm enable svc:/network/ipfilter:default
仮想ルータの作成と仮想ホストの作成
IP転送の有効化
global zone
IP転送、
ルーティン
グの設定
vrouterA# routeadm -u -e ipv4-forwarding
仮想ホスト
の作成
•
ゾーンを通常作成し、残りのゾーンは
ゾーンクローンを使用して作成します。
global zone リソースプール プロセッサセット ②インストール ①定義作成 ④初期設定 ③起動 VNIC /etc/zones/xxx.xml パッケージインストール VNICの割り当て リソースプールの結合 コンソールログイン仮想ルータ
の作成
vnic4 vnic5 vsw2 vnic3 vnic7 vsw3 vnic6 vnic1 vnic2 vsw1 vnic0 物理NIC 仮想ルータ vrouterA 仮想ルータvrouterB 仮想ホスト hostA 仮想ホストhostB 仮想ホスト hostC
ルーティングの有効化
フローの作成
•
Oracle Solaris 11では、物理NIC/VNICに対して帯域幅制限の設定が可能です。
•
ホスト(hostA、hostB)に対して帯域幅制限を設定した状態で、global zoneからISO
ファイルをダウンロードします。
•
ファイルダウンロード中に帯域幅制限の動作の様子を
flowstatコマンドで確認します。
フローの作成
# flowadm add-flow –l vnic4
–a local_ip=192.168.x.xx vnic4_flow
帯域幅制限の設定
global zone
フロープロパティの設定
# flowadm set-flowprop –p maxbw=10M vnic4_flow
帯域幅制限の確認
# flowstat -i 5 vnic4_flow
FLOW IPKT RBYTES IDROPS OPKTS OBYTES ODROPS vnic4_flow 0 0 0 0 0 0 vnic4_flow 982 8.08M 14 510 33.88K 0 vnic4_flow 3.96K 32.68M 204 2.05K 137.03K 0 vnic4_flow 3.81K 31.42M 223 1.98 132.50K 0 vnic4_flow 3.79K 31.12M 245 2.00 134.79K 0 :
帯域幅制限
の確認
受信パケット
送信パケット
vsw2 vnic3 vnic7 vsw3 vnic6 vnic1 vnic2 vsw1 vnic0 物理NIC 仮想ルータ vrouterA 仮想ルータ vrouterB ISOファイルISOファイル
のダウン
ロード
vnic5 仮想ホスト hostB 帯域幅制限 の設定帯域幅制
限の設定
50Mbps vnic4 10Mbps 仮想ホスト hostA 仮想ホスト hostC《参考》
Oracle Solaris ゾーン環境の削除
1.ゾーン環境の削除
1) ゾーンの停止
2) ゾーン環境のアンインストール
3) ゾーン定義ファイルの削除
4) ゾーンディレクトリの削除
# zoneadm -z zone01 halt
# zoneadm -z zone01 uninstall
# zonecfg -z zone01 delete
# rm -r /export/zones/zone01
2.リソースプール機能の停止
1) リソースプールの初期化
2) リソースプールサービスの停止
# pooladm -x
# svcadm disable pools:default
参照ドキュメント
本演習の内容に関連するドキュメントは下記を参照してください。
「
Oracle Solaris 11 ブート環境の作成と管理」
http://docs.oracle.com/cd/E26924_01/pdf/E25778.pdf
「
Oracle Solaris 11 パッケージリポジトリのコピーおよび作成」
http://docs.oracle.com/cd/E26924_01/pdf/E25800.pdf
「
Oracle Solaris 11 システムのインストール」
http://docs.oracle.com/cd/E26924_01/pdf/E25760.pdf
「
Oracle Solaris 管理:ネットワークインターフェースとネットワーク仮想化」
http://docs.oracle.com/cd/E26924_01/pdf/E25834.pdf
「
Oracle Solaris のシステム管理(Oracle Solaris ゾーン、Oracle Solaris 10 ゾーン、
およびリソース管理)」
改版履歴
版数
更新日時
更新ページ
更新内容
初版 2012年7月30日 新規作成
第2.0版 2013年6月27日 全体 Oracle Solaris 11.1 に対応 第2.1版 2014年5月 8日 全体 誤記訂正、デザインの変更