Solarisにはコンテナと呼ばれる仮想化技術があります。1台の物理サーバ上に、複数の仮想化サーバを構築することができます。この記事では、Solarisの仮想化についてご紹介します。
Solarisコンテナ は、1台の物理サーバ上に複数構成できる仮想サーバである。Solarisコンテナは SolarisゾーンとSolarisリソース管理の2つの機能から構成されている。
ゾーン とは、1台の物理サーバー上に複数の仮想的Solaris環境を実現する技術です。仮想的なSolaris環境は分離、独立しており、互いに影響を与えることなく動作します。
ゾーンには グローバルゾーン と ローカルゾーン の2種類があります。Solaris 10 をインストールした環境がグローバルゾーンとなります。グローバルゾーンは1台の物理サーバー上にひとつのみ存在します。グローバルゾーンの上に構築する仮想サーバーがローカルゾーンです。
グローバルゾーンはすべてのローカルゾーンに干渉することができますが、ローカルゾーンは他のゾーン(グローバルゾーンを含む)には、いっさい干渉できない隔離された環境です。
大域ゾーン は、システムのデフォルトのゾーンであり、システム全体の管理に使用される。大域ゾーンは1台の物理サーバー上にひとつのみ存在する。
大域ゾーンの名前とIDは常に決まっており、ゾーン名は global 、IDは 0 である。
非大域ゾーンのインストールや管理、アンインストールは、大域ゾーンからのみ行うことができる。
非大域ゾーンにはルートディレクトリのパスが設定される。これは、大域ゾーンのルートディレクトリに対する相対パスである。
非大域ゾーンのルートファイルシステムモデルは2種類ある。
非大域ゾーンの状態は7種類ある。
システムに非大域ゾーンをインストールする前に、そのゾーンを構成する必要がある。
資源タイプの一覧を次に示す。
資源タイプ | 説明 |
---|---|
ゾーン名 | ゾーンの名前 |
zonepath | ゾーンのルートのパス |
autoboot | ゾーンの自動起動 |
bootargs | ゾーンのブート引数 |
pool | 資源プールの関連付け |
scheduling-class | ゾーンのスケジューリングクラス |
ip-type | 排他的IPゾーン |
fs | ゾーンでマウントされるファイルシステム |
inherit-pkg-dir | 疎ルートゾーン |
net | ゾーンネットワークインタフェース |
device | ゾーンで構成されるデバイス |
rctl | ゾーン規模の資源制御の設定 |
attr | 汎用属性 |
ゾーンを排他的IPゾーンとして構成する場合は、 ip-type をexclusiveに設定する。
zonecfg:my-zone> set ip-type=exclusive
ゾーンを共有IPゾーンとして構成する場合は、 ip-type は設定しない。
ゾーンを疎ルートゾーンとして構成する場合は、 inherit-pkg-dir を設定する。
zonecfg:my-zone> add inherit-pkg-dir
zonecfg:my-zone:inherit-pkg-dir> set dir=/opt/my-pkg
zonecfg:my-zone:inherit-pkg-dir> end
ゾーンを完全ルートゾーンとして構成する場合は、 inherit-pkg-dir は設定しない。
資源タイプnetには、3つのプロパティがある。
プロパティ | 説明 |
---|---|
physical | 物理インタフェース |
address | IPアドレス |
defrouter | デフォルトのルータ |
ゾーンを共有IPゾーンとして構成する場合は、物理インタフェースとIPアドレスを設定する。必要に応じて、デフォルトのルータを設定することもできる。
zonecfg:my-zone> add net
zonecfg:my-zone:net> set physical=hme0
zonecfg:my-zone:net> set address=192.168.0.1
zonecfg:my-zone:net> end
ゾーンを排他的IPゾーンとして構成する場合は、物理インタフェースだけを設定する。
zonecfg:my-zone> set ip-type=exclusive
zonecfg:my-zone> add net
zonecfg:my-zone:net> set physical=hme1
zonecfg:my-zone:net> end
ゾーンをインストールするには、大域管理者になって、 zoneadm コマンドを実行する。
zoneadm -z ゾーン名 install
インストールが完了したら、 zoneadm コマンドを実行して、インストール済みのゾーンを一覧表示し、状態を確認する。
zoneadm list -iv
zlogin -C zonename
ゾーンを稼動状態にする必要はない。
zlogin -l user zonename
rlogin や telnet などで、非大域ゾーンにリモートログインできる。
非大域ゾーンにインストールされたソフトウェアと、大域ゾーンにインストールされたソフトウェアとの同期を維持するために、パッケージのインストールやアンインストールには制約がある。
パッケージが大域ゾーンにも、どの非大域ゾーンにもインストールされていない場合、パッケージを次の場所にインストールできる。
パッケージが大域ゾーンだけにインストールされている場合、すべての非大域ゾーンにパッケージをインストールできる。
パッケージが大域ゾーンと非大域ゾーンの一部だけにインストールされている場合、すべての非大域ゾーンにパッケージをインストールできる。このとき、非大域ゾーン内の既存のインスタンスは、インストールするバージョンに更新される。
操作 | SUNW_PKG_THISZONE | SUNW_PKG_ALLZONES | 結果 |
---|---|---|---|
pkgadd | false | false | 大域ゾーンとすべての非大域ゾーンにパッケージをインストール |
true | 大域ゾーンとすべての非大域ゾーンにパッケージをインストール | ||
true | false | 大域ゾーンだけにパッケージをインストール | |
true | |||
pkgadd -G | false | false | 大域ゾーンだけにパッケージをインストール |
true | |||
true | false | 大域ゾーンだけにパッケージをインストール | |
true |
パッケージが大域ゾーンだけにインストールされている場合、大域ゾーンからパッケージをアンインストールできる。
パッケージが大域ゾーンと非大域ゾーンの一部だけにインストールされている場合、次の場所からパッケージをアンインストールできる。
パッケージが大域ゾーンとすべての非大域ゾーンにインストールされている場合、大域ゾーンとすべての非大域ゾーンからアンインストールできる。
現在操作を行っている非大域ゾーンにパッケージがインストールされていない場合、その非大域ゾーンにパッケージをインストールできる。ただし、パッケージパラメータ SUNW_PKG_ALLZONES が true の場合はインストールできない。
現在操作を行っている非大域ゾーンにパッケージが既にインストールされている場合、パッケージの既存のインスタンス上にパッケージをインストールできる。ただし、パッケージパラメータ SUNW_PKG_ALLZONES が true の場合はインストールできない。
現在操作を行っている非大域ゾーンにパッケージが既にインストールされている場合、その非大域ゾーンからパッケージをアンインストールできる。ただし、パッケージパラメータ SUNW_PKG_ALLZONES が true の場合はアンインストールできない。
パッケージパラメータ | 説明 |
---|---|
SUNW_PKG_ALLZONES | パッケージのゾーン範囲を定義する。 |
SUNW_PKG_HOLLOW | パッケージがすべてのゾーンにインストールされ、かつすべてのゾーンで同一であることが要求される場合、そのパッケージをすべての非大域ゾーン内で可視にすべきかどうかを定義する。 |
SUNW_PKG_THISZONE | パッケージパラメータSUNW_PKG_THISZONEは、パッケージを現在のゾーンだけにインストールする必要があるかどうかを定義する。 |
パッケージパラメータSUNW_PKG_ALLZONESは、パッケージのゾーン範囲を定義する。
値 | 説明 |
---|---|
false(デフォルト) |
|
true |
|
パッケージパラメータSUNW_PKG_HOLLOWは、パッケージがすべてのゾーンにインストールされ、かつすべてのゾーンで同一であることが要求される場合、そのパッケージをすべての非大域ゾーン内で可視にすべきかどうかを定義する。
パッケージパラメータSUNW_PKG_ALLZONESがtrueに設定されている場合にのみ意味をもつ。
値 | 説明 |
---|---|
false
(デフォルト) |
|
true |
|
パッケージパラメータSUNW_PKG_THISZONEは、パッケージを現在のゾーンだけにインストールする必要があるかどうかを定義する。
値 | 説明 |
---|---|
false
(デフォルト) |
|
true |
|