Solaris 10 8/07 リリースから、ブランドゾーンが使用可能になりました。以降の更新リリースで追加された機能は、リリースごとに分類されています。
Solaris オペレーティングシステムのブランドゾーン機能は、Solaris ゾーンの単純な拡張です。この章では、ブランドゾーンの概念と、Linux ブランドゾーン機能を実装する lx ブランドについて説明します。Linux ブランドゾーンは、Linux アプリケーション用 Solaris コンテナとも呼ばれます。
ラベルが有効になっている Trusted Solaris システムにブランドゾーンを構成してインストールすることはできますが、このシステム構成でブランドゾーンを起動することはできません。
Solaris オペレーティングシステムでは、追加のブランドがサポートされています。
Solaris 10 8/07 オペレーティングシステムまたはそれ以降の Solaris 10 リリースを実行する SPARC マシンでは、次の 2 つのブランドがサポートされています。
『Solaris のシステム管理: Solaris 8 Containers』に記載されている solaris8 ブランド、Solaris 8 コンテナ。
『System Administration Guide: Oracle Solaris 9 Containers』に記載されている solaris9 ブランド、Solaris 9 コンテナ。
docs.sun.com の Sun Cluster 3.2 1/09 Software Collection for Solaris OS に記載されているクラスタ ブランドも、Solaris 10 リリースでサポートされています。
Solaris システムでのゾーンの使用に関する一般的な情報については、第 16 章Solaris ゾーンの紹介を参照してください。
次に示すゾーンおよび資源管理の概念について、よく理解しておくようにしてください。
大域ゾーンと非大域ゾーン。詳細は、「ゾーンのしくみ」を参照してください。
大域管理者とゾーン管理者。詳細は、「非大域ゾーンの管理のしくみ」および 「非大域ゾーンの作成のしくみ」を参照してください。
ゾーンの状態モデル。詳細は、「非大域ゾーンの状態モデル」を参照してください。
ゾーン隔離の特徴。詳細は、「非大域ゾーンの特性」を参照してください。
特権。詳細は、「非大域ゾーン内の特権」を参照してください。
ネットワーク。詳細は、「共有 IP 非大域ゾーンにおけるネットワーク」を参照してください。
Solaris コンテナの概念、つまり、資源プールなどの資源管理機能をゾーンで使用する方法。ゾーンと資源管理機能の使用法と相互動作については、「非大域ゾーンでの資源管理機能の使用」、「ゾーン規模の資源制御の設定」、第 27 章Solaris のゾーン管理 (概要)、およびこのマニュアルのパート 1「資源管理」で各資源管理機能について説明した章を参照してください。たとえば、資源プールについては、第 12 章資源プール (概要)および第 13 章資源プールの作成と管理 (手順)を参照してください。
公平配分スケジューラ (FSS)。これは、配分に基づいて CPU 時間を割り当てることができるようにするスケジューリングクラスです。詳細は、第 8 章公平配分スケジューラ (概要)および第 9 章公平配分スケジューラの管理 (手順)を参照してください。
資源上限デーモン (rcapd)。これを大域ゾーンから使用して、ブランドゾーンの常駐セットサイズ (RSS) 使用量を制御できます。zonecfg capped-memory 資源のプロパティーは、ゾーンの max-rss を設定します。この値は、大域ゾーンで実行中の rcapd によって適用されます。詳細は、第 10 章資源上限デーモンによる物理メモリーの制御 (概要)、第 11 章資源上限デーモンの管理 (手順)、および rcapd(1M) のマニュアルページを参照してください。
用語集には、ゾーンと資源管理機能で使用される用語の定義が記載されています。
システムでブランドゾーンを使用するために必要な追加情報は、マニュアルのこのパートに記載されています。
このマニュアルで、次の章はブランドゾーンには当てはまりません。
ブランドゾーン (BrandZ) フレームワークは、このマニュアルのパート II「ゾーン」で説明されている Solaris ゾーンインフラストラクチャーを拡張して、ブランドの作成機能を追加します。「ブランド」という用語は、さまざまなオペレーティング環境を指す場合があります。BrandZ を使用すると、アプリケーションを実行するための、ネイティブでないオペレーティング環境を含む非大域ブランドゾーンを作成できます。ブランドタイプにより、ゾーンのインストール時および起動時に実行されるスクリプトが決定されます。また、ゾーンのブランドにより、アプリケーションの起動時に正しいアプリケーションタイプが適切に識別されます。すべてのブランド管理は、現在のゾーン構造の拡張を通して実行されます。
ブランドでは、単純な環境を提供することも、複雑な環境を提供することもできます。たとえば、単純な環境では、Solaris の標準ユーティリティーを同等の GNU ユーティリティーで置き換えることができます。複雑な環境では、Linux アプリケーションの実行をサポートする完全な Linux ユーザー空間を提供できます。
すべてのゾーンに、それぞれ関連するブランドが構成されます。デフォルトは native ブランド、つまり Solaris です。ブランドゾーンは、ネイティブでないバイナリのブランドを 1 つだけサポートします。つまり、1 つのブランドゾーンは 1 つのオペレーティング環境を提供します。
BrandZ はゾーンのツールを次のように拡張します。
zonecfg コマンドを使用して、ゾーンの構成時にゾーンのブランドタイプを設定します。
zoneadm コマンドを使用して、ゾーンのブランドタイプの報告とゾーンの管理を行います。
構成済み状態にあるゾーンのブランドは変更することができます。ブランドゾーンのインストールが完了したあとは、そのブランドの変更や削除を行うことはできません。
ブランドゾーンでは、ブランドゾーンで実行中のプロセスだけに適用される一連の介入ポイントがカーネル内に用意されます。
これらのポイントは、syscall パス、プロセスローディングパス、スレッド作成パスなどのパス内に見つかります。
これらの各ポイントで、ブランドは Solaris の標準的な動作を補完したり置き換えたりすることができます。
ブランドは librtld_db のプラグインライブラリを提供することもできます。デバッガ (mdb(1) のマニュアルページを参照) や DTrace (dtrace(1M) のマニュアルページを参照) といった Solaris のツールは、このプラグインライブラリを使用して、ブランドゾーン内で実行中のプロセスのシンボル情報にアクセスできます。
各ゾーンでサポートされるデバイスについては、そのブランドに関するマニュアルページやほかのマニュアルに記載されています。デバイスのサポートは、ブランドによって定義されます。ブランドでは、サポートされていないデバイスや認識されないデバイスの追加を禁止するように選択することができます。
ブランドゾーンに必要なファイルシステムは、ブランドによって定義されます。
ブランドゾーンで使用できる特権は、ブランドによって定義されます。特権の詳細については、「非大域ゾーン内の特権」および 「lx ブランドゾーンで構成可能な特権」を参照してください。
lx ブランドは、ブランドゾーンフレームワークを使用して、Linux バイナリアプリケーションを変更することなく、Solaris オペレーティングシステムのカーネルを備えたマシンで実行できるようにします。
マシンは、サポートされている次の i686 プロセッサタイプのいずれかを備えている必要があります。
Intel
Pentium Pro
Pentium II
Pentium III
Celeron
Xeon
Pentium 4
Pentium M
Pentium D
Pentium Extreme Edition
Core
Core 2
AMD
Opteron
Athlon XP
Athlon 64
Athlon 64 X2
Athlon FX
Duron
Sempron
Turion 64
Turion 64 X2
lx ブランドには、CentOS 3.x または Red Hat Enterprise Linux 3.x ディストリビューションを非大域ゾーン内にインストールするために必要なツールが含まれています。各ディストリビューションのバージョン 3.5 から 3.8 までがサポートされています。このブランドでは、32 ビットまたは 64 ビットモードの Solaris システムが稼働している x86 マシンおよび x64 マシンで、32 ビット Linux アプリケーションを実行できます。
lx ブランドは、Linux 2.4.21 カーネルで提供されるシステムコールインタフェースをエミュレートします。このカーネルは、Red Hat の RHEL 3.x ディストリビューションでの変更に従っています。このカーネルは、Red Hat によってリリースされた glibc バージョン 2.3.2 で消費されるシステムコールインタフェースを提供します。
また、lx ブランドは、Linux の /dev と /proc のインタフェースを部分的にエミュレートします。
lx ブランドゾーンにパッケージを追加する場合は、サポートされている構成を維持する必要があります。詳細は、「サポートされている構成の保守について」を参照してください。
Solaris システムでは、lx ブランドゾーン内で実行できる Linux アプリケーションの数は制限されていません。十分なメモリーを使用できることが必要です。「システム要件と容量要件」も参照してください。
配下のカーネルに関わらず、実行できるのは 32 ビット Linux アプリケーションだけです。
lx ゾーンでは、ユーザーレベルの Linux アプリケーションだけがサポートされます。Linux デバイスドライバ、Linux カーネルモジュール、または Linux ファイルシステムを lx ゾーン内から使用することはできません。
lx ブランドで正常に実行された実績のあるいくつかのアプリケーションのリストについては、「http://hub.opensolaris.org/bin/view/Community+Group+brandz/applications」を参照してください。アプリケーションのインストール例については、「lx ブランドゾーンにアプリケーションをインストールする方法」を参照してください。
lx ゾーン内部で Solaris アプリケーションを実行することはできません。ただし、lx ゾーンを使用すると、Solaris システムを使用して Linux アプリケーションの開発、テスト、および配備を行うことができます。たとえば、Linux アプリケーションを lx ゾーンに配置し、大域ゾーンから Solaris ツールを実行してそれを解析することができます。その後、改善を加えチューニングしたアプリケーションを、ネイティブな Linux システムに配備することができます。
DTrace や mdb などの Solaris デバッグツールを、ゾーン内部で実行中の Linux プロセスに適用することができます。ただし、ツール自体は大域ゾーンで実行する必要があります。生成されるコアファイルは、すべて Solaris 形式で作成され、Solaris ツールでのみデバッグすることができます。
DTrace lxsyscall 動的トレースプロバイダにより、Linux アプリケーションに対して DTrace が使用可能になります。このプロバイダの動作は、DTrace syscall プロバイダに似ています。lxsyscall プロバイダは、スレッドが Linux システムコールのエントリポイントに入ったり戻ったりするたびに起動するプローブを提供します。
デバッグオプションの詳細については、『Solaris 動的トレースガイド』および dtrace(1M) と mdb(1) のマニュアルページを参照してください。『Solaris 動的トレースガイド』では、DTrace 機能に使用できる公式なインタフェースが説明されています。syscall プロバイダに関するマニュアルは、lxsyscall プロバイダにも使用できます。
NFS はネームサービスに依存しており、ネームサービスはゾーンに固有であるため、現在のゾーンの外部にマウントされている NFS ファイルシステムにアクセスすることはできません。したがって、NFS に基づく Linux プロセスを大域ゾーンからデバッグすることはできません。
次の表に示すコマンドにより、ゾーン機能に対する主要な管理インタフェースが提供されます。
表 31–1 lx ブランドゾーンで使用されるコマンドとその他のインタフェース
コマンド |
説明 |
---|---|
非大域ゾーンにログインします |
|
システムのゾーンを管理します |
|
ゾーン構成の設定に使用されます |
|
ゾーン ID と名前のマッピングに使用されます |
|
brands(5) |
ブランドゾーン機能の説明を提供します |
lx(5) |
Linux ブランドゾーンの説明を提供します |
ゾーン機能の説明を提供します |
|
lx_systrace(7D) |
DTrace の Linux システムコールトレースプロバイダ |
ゾーンコンソールのデバイスドライバ |
zoneadmd デーモンは、ゾーンの仮想プラットフォームを管理する基本プロセスです。zoneadmd デーモンのマニュアルページは、zoneadmd(1M) です。このデーモンは、プログラミングインタフェースの構成要素ではありません。
表 27–5 に示すコマンドを大域ゾーンで使用すると、ブランドゾーンも含むすべての非大域ゾーンに関する情報を表示できます。表 27–4 に示すコマンドは、資源上限デーモンで使用されます。
次の表に、システム上ではじめて lx ゾーンを設定する際に必要となる作業の概要を示します。
タスク |
説明 |
説明 |
---|---|---|
ゾーンで実行する 32 ビット Linux アプリケーションをそれぞれ特定します。 |
システム要件を評価します。 |
必要に応じて、ビジネス目標とシステムのマニュアルを参照してください。 |
構成するゾーンの数を決定します。 |
次の内容を評価します。
|
「アプリケーションのサポート」、「システム要件と容量要件」、「現在のシステム設定の評価」、「複数の lx ブランドゾーンを構成するスクリプト」を参照してください。 |
コンテナを作成するためにゾーンで資源プールを使用するかどうかを決定します。 |
資源プールを使用する場合は、ゾーンを構成する前に資源プールを構成します。 zonecfg のプロパティーを使用すると、ゾーン規模の資源制御とプール機能をゾーンにすばやく追加できます。 |
「lx ブランドゾーンの構成方法」、第 13 章資源プールの作成と管理 (手順)を参照してください。 |
事前構成作業を行います。 |
各ゾーンのゾーン名とゾーンパスを決定します。ネットワーク接続が必要な場合は、IP アドレスを取得します。ゾーンのスケジューリングクラスを決定します。標準のデフォルト特権セットでは十分でない場合は、ゾーンのプロセスを制限するための特権セットを決定します。 |
ゾーン名、ゾーンパス、IP アドレス、およびスケジューリングクラスについては、「lx ブランドゾーン構成の構成要素」を参照してください。非大域ゾーンでのデフォルトの特権および構成可能な特権のリストについては、「非大域ゾーン内の特権」を参照してください。 資源プールの関連付けについては、「ゾーンのしくみ」および 「lx ブランドゾーンの構成方法」を参照してください。 |
構成を作成します。 |
非大域ゾーンの構成を行います。 |
「ゾーンを構成、検証、および確定する」および zonecfg(1M) のマニュアルページを参照してください。 |
大域管理者として、構成されたゾーンの確認とインストールを行います。 |
ゾーンを起動する前に、ゾーンの確認とインストールを行う必要があります。Linux ブランドゾーンをインストールする前に、Linux のディストリビューションを入手する必要があります。 |
第 34 章lx ブランドゾーンのインストール、起動、停止、複製、およびアンインストールについて (概要)および第 35 章lx ブランドゾーンのインストール、起動、停止、アンインストール、および複製 (手順)を参照してください。 |
大域管理者として、非大域ゾーンを起動します。 |
それぞれのゾーンを起動して稼働状態にします。 | |
この新しいゾーンを本稼働用に準備します。 |
Linux システム管理の標準のツールと方法をゾーン内から使用して、ユーザーアカウントの作成、ソフトウェアの追加、およびゾーン構成のカスタマイズを行います。 |
新たにインストールしたマシンの設定およびアプリケーションのインストールを行うためのマニュアルを参照してください。ゾーンがインストールされているシステムに関連する特殊な考慮事項については、このマニュアルを参照してください。 |