ディスクフォーマットはZFSを前提にしています。
確認方法は以下の通りです。
ZFSの管理状況を確認する (zfs list / zpool status)
Solarisにおいて「ZFSであること」をより詳細に、構造的に確認するための専用コマンドです。
ZFSデータセットの一覧を表示
# zfs list
これでリストが表示されれば、それらはすべてZFSです。
物理ディスク(プール)の状態を表示
# zpool status
ZFSがどの物理ディスク(スライス)を使用して構成されているかを確認できます
1. Solaris Zone の構造と概念
Solarisをインストールした直後のOS環境が「親」であり、その中に「子」を作っていくイメージです。
- Global Zone(グローバルゾーン): Solaris OSをインストールした本体そのもの。すべての物理リソースを管理する。
- Non-global Zone(ノンプリミティブ・ゾーン): 今回作成したい「コンテナ環境」。グローバルゾーン上で分離された仮想OS空間。
- 作成のメリット: アプリケーションごとにOS環境を隔離でき、パッチ適用や再起動の影響を限定できる。
2. 作成手順のまとめ(Native Zoneの場合)
グローバルゾーンにログインした状態で、以下のコマンドフローで作成します。
STEP 1: 構成定義 (zonecfg)
ゾーンの名前やネットワーク、リソースを定義します。
# zonecfg -z <ゾーン名>
> create # テンプレートから作成
> set zonepath=/zones/myzone # データの格納先を指定
> set autoboot=true # 本体起動時に自動起動
> add anet # 仮想ネットワーク(VNIC)の追加
> commit # 設定の確定
> exit
2つ目のゾーンを作成する時などでadd anetからcommitするとエラーになる場合があります(zonecfg の「リソース編集モード(サブスコープ)」の中に閉じ込められている可能性があります。)。
解決方法
end と入力して、一度メインのスコープに戻ってから commit を実行してください。
zonecfg:new-zone:anet> end <– これでサブスコープを抜ける
zonecfg:new-zone> verify <– ここで実行
zonecfg:new-zone> commit <– ここで実行
STEP 2: インストール (zoneadm)
定義に基づいて、必要なパッケージをシステムに展開します。
# zoneadm -z <ゾーン名> install
- 注意: 内部で
pkgコマンドが動くため、グローバルゾーンがリポジトリ(インターネット等)に接続できる必要があります。
STEP 3: 起動と初期設定 (zlogin)
仮想マシンを初めて立ち上げる時と同じように、ホスト名やパスワードを設定します。
# zoneadm -z <ゾーン名> boot # 起動
# zlogin -C <ゾーン名> # コンソールログイン
- コンソールで対話形式の初期設定(sysconfig)が始まります。
- 終了後、
~.でコンソールを抜けます。 -Cオプションはコンソール接続です。- ここでシステム構成ウィザード(sysconfig)が始まります。
- コンソールを抜ける方法:
~.(チルダとドット)を順に押します。

よく使う管理コマンド
| 操作 | コマンド |
| 状態確認 | zoneadm list -cv |
| 停止 | zoneadm -z myzone halt |
| 削除 (アンインストール) | zoneadm -z myzone uninstall |
| 構成情報の削除 | zonecfg -z myzone delete |
| ログイン (通常) | zlogin myzone |
ノングローバルゾーンからグローバルゾーンの操作画面に戻るには、「どのようにしてノングローバルゾーンにログインしたか」によって方法が異なります。
もっとも一般的な2つのパターンを解説します。
1. コンソール接続 (zlogin -C) している場合
zlogin -C で接続している場合は、通常の exit や logout では抜けられません。Solarisコンソールの「エスケープ文字」を使います。
- キー操作:
~.(チルダ と ドット)Enterキーを一度押す(行頭にするため)~(チルダ) を入力.(ドット) を入力
これで接続が強制終了され、グローバルゾーンのプロンプトに戻ります。
注意: sshなどでグローバルゾーンに繋いでいる場合、
~.を入力するとssh自体が切れてしまうことがあります。その場合は~~.とチルダを2回打ってみてください。
2. 通常のログイン (zlogin) や SSH の場合
コンソールオプション(-C)をつけずに zlogin した際や、ゾーンに対して直接 ssh している場合は、通常のログアウトコマンドで戻れます。
- コマンド:
exitまたはlogout - ショートカット:
Ctrl + D
これを実行すると、そのセッションが終了し、接続元(グローバルゾーン)に戻ります。
ゾーンのクローン(コピー)手順
1. コピー元ゾーンの停止
コピー元のデータを確定させるため、一度ゾーンを停止させる必要があります。
# zoneadm -z myzone halt
2. コピー先の構成定義 (zonecfg)
新しいゾーンの定義(構成)作成
クローン先のゾーン名(newzone)の定義を作成します。既存の構成を流用するのが最も確実です。
- 既存の設定を書き出すBash
zonecfg -zexport > /tmp/newzone.cfg - 設定ファイルを編集する
vi /tmp/new-zone.cfgなどで、以下の項目を新しいゾーン用に書き換えます。zonepath: (例:/system/zones/new-zone)- ネットワーク設定(IPアドレスやVNIC名など)
3.クローンの実行
準備が整ったら、zoneadm コマンドでクローンを実行します。
zoneadm -z newzone clone
注: Solaris 11のZFSベースのクローンは、デフォルトで「ZFSスナップショット」を作成してクローンするため、ディスク容量をほとんど消費せず、一瞬で終わります。
4. 起動と初期設定
クローン直後のゾーンは、ホスト名やネットワーク設定がコピー元のまま(または未設定)になっています。
- ゾーンを起動する
zoneadm -z newzone boot - コンソールに接続してシステム設定を行う
zlogin -C newzone
初回起動時に、対話形式でホスト名、IPアドレス、タイムゾーン、パスワードなどの設定画面が表示されます。
5.クローン時の便利なオプション
-m copy オプション(完全コピー)
ZFSのスナップショット共有(リンク)を使わず、データを完全に独立してコピーしたい場合に使用します(時間はかかります)。
zoneadm -z newzone clone -m copy
プロファイル(sysconfig)の適用
設定を対話形式ではなく、あらかじめ用意したxmlファイルで自動適用したい場合に便利です。
zoneadm -z newzone clone -c /path/to/profile.xml source-zone
運用上のヒント:ゴールドイメージの作成
実務では、「基本設定を済ませたマスターゾーン」を一つ作っておき、それを常に halt 状態で保持しておく運用がおすすめです。
- マスターを更新する時だけ起動: パッチ適用や共通ツールのインストール。
- 必要になったらクローン: マスターを元に
cloneして即座にデプロイ。
補足:コピー元のゾーンを止められない場合
もし本番稼働中のゾーンを止めずにコピーしたい場合は、zoneadm clone の際にスナップショットを明示的に指定する方法もありますが、基本的にはデータの整合性を保つため halt 状態からのクローンが推奨されます。
ゾーン(ノングローバルゾーン)の削除
1. ゾーンを停止する (halt)
稼働中のゾーンは削除できないため、まずは停止させます。
# zoneadm -z <ゾーン名> halt
zoneadm list -cvで状態がinstalledになっていることを確認してください。
2. ゾーンをアンインストールする (uninstall)
zonepath 内のファイルシステムやOSの実体データを削除します。この操作を行うとデータは復旧できないため、必要なデータがある場合は事前にバックアップを取ってください。
# zoneadm -z <ゾーン名> uninstall
- 実行時に確認を求められますが、強制的に行いたい場合は
-Fオプションを付けます。 - これで状態が
configured(設定のみ存在)になります。
3. ゾーンの構成定義を削除する (delete)
最後に、zonecfg に保存されている管理情報を削除します。
# zonecfg -z <ゾーン名> delete
- 実行時に確認を求められます。
yを押すと完了です。
一括で削除する場合のコマンド例
テスト環境などで頻繁に作り直す場合は、以下のように繋げて実行することも可能です。
# zoneadm -z myzone halt
# zoneadm -z myzone uninstall -F
# zonecfg -z myzone delete -F
注意点:管理上の確認事項
- ZFSデータセットの残り:
zoneadm uninstallを実行すれば、通常はそのゾーン用に作成されたZFSデータセットも自動的に削除されます。念のためzfs listで不要なデータセットが残っていないか確認することをお勧めします。 - 共有リソース: もしそのゾーンに対して、グローバルゾーンのディレクトリを
lofs(ループバックファイルシステム)などでマウントしていた場合、それらの元のデータは削除されません。削除されるのはあくまで「ゾーン専用の領域」だけです。
ログインするゾーンを切り替える方法
基本的には「一度グローバルゾーンに戻ってから、別のゾーンへログインする」のがもっとも安全で確実な方法です。
別のゾーンへ切り替えてログインする手順
現在 zone-A にいるとして、zone-B に移りたい場合は以下の流れで行います。
ステップ1:現在のゾーンを抜ける
コンソール接続(-C)をしている場合は、下記のエスケープ文字を使います。
- 操作:
~.(チルダ と ドット)を入力。 - これでグローバルゾーンに戻ります。
ステップ2:別のゾーンへログインする
グローバルゾーンのプロンプトから、目的のゾーンへ入ります。
- コマンド:
zlogin <ゾーン名> - コンソールとして入りたい場合は
zlogin -C <ゾーン名>。
注意:ゾーンからゾーンへ直接移動はできる?
技術的に「ゾーンAの中から直接コマンドを打ってゾーンBに入る」ことはできません。
ゾーンはセキュリティ上、互いに隔離されているためです。必ず一度「親」であるグローバルゾーンを経由する必要があります
状況確認のヒント
「今、自分がどのゾーンの作業をしているか」混乱したときは、いつでもこのコマンドを打ってください。
# zonename
これで、操作ミスによる設定変更や削除を防ぐことができます。
ご参考まで