稼働ステータスを確認する (zoneadm)
ゾーンが現在「動いているか」「インストールされているか」といった状態や、物理的な情報を確認します。
ゾーンの一覧と状態を表示
# zoneadm list -cv
- ID: 起動中のゾーンには一意の番号が振られます。
- STATUS:
configured(設定のみ),installed(インストール済),running(起動中) など。 - BRAND:
solaris(Native),solaris-kz(Kernel Zone) などの種類。
ゾーンの物理的な属性を確認
# zoneadm -z <ゾーン名> list -p
用途: ゾーンのUUIDや、どのデータセット(ZFS)を使用しているかなどの詳細な属性が確認できます。
詳細な構成設定を確認する (zonecfg)
ゾーンに割り当てられたリソース(ネットワーク、CPU、メモリ、デバイスなど)の定義を確認する際に使用します。
指定したゾーンの設定をすべて表示
# zonecfg -z <ゾーン名> info
- 用途: そのゾーンがどのように定義されているか(マウントポイント、ネットワークインターフェース、リソース制限など)を一括で確認できます。
特定の項目だけを確認する
# zonecfg -z <ゾーン名> info net # ネットワーク設定のみ
# zonecfg -z <ゾーン名> info capped-memory # メモリ制限の設定のみ
何も表示されない場合: そのゾーンは物理リソースを制限なく(他のゾーンと競合しながら)使用できる状態です。
管理者のための逆引き調査
| 調査項目 | コマンド |
| 自動起動設定になっているか? | zonecfg -z <名> info autoboot |
| どのIPアドレスが割り当てられているか? | zonecfg -z <名> info anet |
| ゾーンのデータはどこに保存されているか? | zonecfg -z <名> info zonepath |
| 現在のカーネルバージョンやブランドは? | zoneadm list -p |
zoneadm list -pのサンプル
root@solaris11:~# zoneadm list -p
:global:running:/::solaris:shared:-:none:
1:new-zone:running:/system/zones/new-zone:b6163420-8dca-47d7-a90e-909299b40eda:solaris:excl:-:none:
2:myzone:running:/system/zones/myzone:a740b28f-6d87-474f-8fda-8e0909cf4391:solaris:excl:-:none:
上記の実行結果は、現在動作しているグローバルゾーン1つと、ノンプリミティブ・ゾーン(子コンテナ)2つのステータスを示しています。
出力の各フィールドが何を意味しているか、管理者の視点で分解して解説します。
zoneadm list -p の各項目の意味
各行は :(コロン)で区切られており、左から順に以下の情報を表しています。ID : 名前 : 状態 : パス : UUID : ブランド : IP構成 : その他
1. global(グローバルゾーン)
- ID 0: システムのグローバルゾーン(親)は必ずIDが
0です。 - 状態 running: OSが正常に稼働しています。
- ブランド solaris: 標準的なSolaris 11の環境です。
- IP構成 shared: ネットワークを物理カードと共有する設定(デフォルト)です。
2. new-zone と myzone(ノンプリミティブ・ゾーン)
- ID 1, 2: 起動順に振られた、動的な識別番号です。再起動すると変わる可能性があります。
- パス
/system/zones/...: 先ほど設定したデータの格納場所です。ZFSデータセットがここにマウントされています。 - UUID: システム内で一意の識別子です。ゾーン名を変更しても、このIDは変わりません。
- ブランド solaris: これらはNative Zone(カーネル共有型)として作成されています。
- IP構成 excl: **Exclusive IP(排他的IP)**モードです。重要なポイントで、各ゾーンが独自のVNIC(仮想ネットワークカード)を持ち、グローバルゾーンから独立したネットワークスタックを保持していることを示します。
「リソース制限(CPUやメモリ)」の調査・設定方法について
1. 現在のリソース制限を確認する (zonecfg)
設定として「上限」が決められているかを確認します。
# zonecfg -z myzone info capped-cpu
# zonecfg -z myzone info capped-memory
何も表示されない場合: そのゾーンは物理リソースを制限なく(他のゾーンと競合しながら)使用できる状態です。
2. リソース制限を設定する
下記は、new-zone に対して「CPU 1コア分(100%)」「メモリ 4GB」という制限をかける手順になります
# zonecfg -z new-zone
zonecfg:new-zone> add capped-cpu
zonecfg:new-zone:capped-cpu> set ncpus=1.0
zonecfg:new-zone:capped-cpu> end
zonecfg:new-zone> add capped-memory
zonecfg:new-zone:capped-memory> set physical=4g
zonecfg:new-zone:capped-memory> end
zonecfg:new-zone> verify
zonecfg:new-zone> commit
zonecfg:new-zone> exit
ポイント:
ncpus=1.0は「1スレッド相当」を意味します。マルチコア環境では、特定のコアを占有するのではなく、全体の利用率の合計を100%に制限します。
3. リアルタイムの消費状況を調査する (zonestat)
設定した制限が正しく機能しているか、あるいは不足していないかを調査します。
# zonestat -z myzone,new-zone 5
- %CPU: 割り当てられたCPUのうち、どれくらい使っているか。
- %MEM: メモリの利用率。
- CAP: 設定された上限(キャップ)に対しての到達度。
4. 実行中のゾーンに即時反映する (prctl)
zonecfg での設定は次回の再起動(boot)時に有効になりますが、稼働中のゾーンに対して今すぐ制限を変更したい場合は prctl を使います(高度な操作)。
- 現在のメモリ制限を一時的に変更(例: 2GBへ):Bash
# prctl -n zone.max-rss -v 2G -t privileged -e deny -i zone myzone