| 原作者 | サン・マイクロシステムズ |
|---|---|
| 開発者 | illumosとOracle |
| 初回リリース | 2005年1月 |
| 書かれた | C |
| オペレーティング·システム | オラクル Solaris |
| プラットフォーム | SPARC、x86 |
| 利用可能 | 英語 |
| タイプ | OSレベルの仮想化 |
| ライセンス | CDDL、独自 |
| Webサイト | oracle.com/solaris |
Solaris コンテナ( Solaris Zonesを含む) は、x86 および SPARC システム向けのオペレーティング システム レベルの仮想化テクノロジの実装であり、2004 年 2 月にSolaris 10のビルド 51 ベータで初めて公開され、その後 2005 年の Solaris 10 の最初の完全リリースで公開されました。OpenIndiana 、SmartOS 、Tribblix、OmniOSなどのillumos (旧OpenSolaris ) ディストリビューション、および公式のOracle Solaris 11 リリースに含まれています。
Solaris コンテナは、システム リソース制御とゾーンによって提供される境界分離を組み合わせたものです。ゾーンは、単一のオペレーティング システム インスタンス内で完全に分離された仮想サーバーとして機能します。複数のアプリケーション サービス セットを 1 つのシステムに統合し、それぞれを分離された仮想サーバー コンテナに配置することで、システム管理者はコストを削減し、個別のマシンとほぼ同じ保護を 1 台のマシンで提供できます。[1]
用語
このテクノロジの名前は、開発中およびリリース前の公開イベント中に変更されました。2005 年に Solaris Zones がリリースされる前は、Solaris Container は Solaris リソース管理機能によって制約されるあらゆる種類のワークロードでした。後者は以前は別のソフトウェア パッケージでした。2007 年までに、Solaris Container という用語は、リソース管理コントロールと組み合わせた Solaris Zone を意味するようになりました。
その後、Solaris コンテナは、追加のリソース管理の有無にかかわらず、非グローバル ゾーンを具体的に参照するように徐々に移行しました。グローバル ゾーンによってホストされるゾーンは「非グローバル ゾーン」と呼ばれますが、単に「ゾーン」と呼ばれることもあります。「ローカル ゾーン」という用語は、この用法では「ローカル」が「グローバル」の反意語ではないため、特に推奨されません。グローバル ゾーンは、システム上のすべてのリソースを、グローバル ゾーンまたは非グローバル ゾーンに関連付けられているかどうかに関係なく、表示できます。特に明記されていない限り、この記事では「ゾーン」は非グローバル ゾーンを指します。
用語を簡素化するために、Oracle は Solaris 11 でコンテナという用語の使用を中止し、リソース管理コントロールの使用に関係なく、Solaris ゾーンという用語の使用に戻しました。
説明
各ゾーンには、ノード名、仮想または物理ネットワークインターフェースへのアクセス、[2]、 およびストレージが割り当てられています。ゾーンには、その固有の構成に必要なディスクストレージ以外の最小限の専用ハードウェアは必要ありません。具体的には、専用のCPU、メモリ、物理ネットワークインターフェース、またはHBAは必要ありませんが、これらのいずれかを1つのゾーンに特定して割り当てることができます。[3]
各ゾーンにはセキュリティ境界があり、あるゾーンに関連付けられたプロセスが他のゾーンのプロセスとやり取りしたり、他のゾーンのプロセスを監視したりすることを防ぎます。各ゾーンは独自のユーザーリストで構成できます。システムはユーザーIDの競合を自動的に管理します。つまり、システム上の2つのゾーンにユーザーID 10000を定義し、それぞれに独自のグローバル識別子をマップすることができます。[4]
ゾーンは次のいずれかの状態になります。
- 構成済み:構成が完了し、コミットされました。
- 不完全:インストールまたはアンインストール操作中の遷移状態。
- インストール済み:パッケージは正常にインストールされました。
- 準備完了:仮想プラットフォームが確立されました。
- 実行中:ゾーンは正常に起動し、実行中です。
- シャットダウン中:ゾーンはシャットダウン中です。これは一時的な状態であり、「ダウン」につながります。
- ダウン:ゾーンはシャットダウン プロセスを完了し、ダウンしています。これは一時的な状態であり、「インストール済み」になります。
一部のプログラムは非グローバル ゾーン内から実行できません。これは通常、アプリケーションがコンテナー内で付与できない権限を必要とするためです。ゾーンには独自のカーネルがないため (ハードウェア仮想マシンとは対照的)、カーネル メモリ領域を直接読み取ったり変更したりする機能など、カーネル機能を直接操作する必要があるアプリケーションは、コンテナー内では動作しない可能性があります。
必要なリソース
ゾーンはCPUとメモリに非常に低いオーバーヘッドをもたらします。ほとんどのタイプのゾーンはグローバルゾーンの仮想アドレス空間を共有します。ゾーンは、一定の使用を保証するためにリソースプール(プロセッサセットとスケジューリングクラス)に割り当てることができ、固定の計算能力(「上限CPU」)で制限することも、フェアシェアスケジューリングによって共有を割り当てることもできます。[5]
現在、1 つのオペレーティング システム インスタンス内に最大 8191 個の非グローバル ゾーンを作成できます。ほとんどのファイル システム コンテンツがグローバル ゾーンと共有される「スパース ゾーン」は、50 MB 程度のディスク領域しか必要としません。各ゾーンがオペレーティング システム ファイルの独自のコピーを持つ「完全ルート ゾーン」は、インストールされているソフトウェアに応じて、数百 MB から数 GB の領域を占めます。8191 個の制限は、Solaris インスタンスあたりのループバック接続が 8,192 個に制限されていることに起因します。各ゾーンにはループバック接続が必要です。グローバル ゾーンには 1 つのループバック接続が割り当てられ、残りの 8,191 個が非グローバル ゾーンに割り当てられます。
ゾーンの OS ファイル システムがグローバル ゾーン イメージのZFSクローンである場合、スナップショット イメージと異なるブロックのみをディスクに保存する必要があるため、ルート ゾーン全体を使用する場合でも、ディスク領域要件は無視できます。この方法では、数秒で新しいゾーンを作成することもできます。
ブランドゾーン
システム上のすべてのゾーンは共通のカーネルを共有しますが、ブランド ゾーン(略してBrandZ ) と呼ばれる追加機能セットが追加されました。これにより、個々のゾーンがグローバル ゾーンのデフォルト ブランドとは異なる方法で動作できるようになります。既存のブランド (2009 年 10 月) は、次の 2 つのカテゴリに分類できます。
- システムコール変換を行わないブランド:
- Solaris 10では「ネイティブ」がデフォルトです
- 'ipkg'はOpenSolaris、OpenIndiana、OmniOSのデフォルトです。
- 'joyent'はSmartOSのデフォルトです
- 「cluster」はSolaris Clusterゾーンに使用されます
- 「labeled」はSolaris Trusted Extensions環境のゾーンに使用されます。
- システムコール翻訳を実行するブランド:
- 「solaris8」は、Solaris 8 システム コールから Solaris 10 システム コールへの変換を含む、Solaris 10 システム上で Solaris 8 環境を提供します ( SPARCシステムでのみ使用可能)
- 「solaris9」は、Solaris 9 システム コールから Solaris 10 システム コールへの変換を含む、Solaris 10 システム上の Solaris 9 環境を提供します (SPARC システムでのみ使用可能)
- 'lx' は、RHEL 3 システム コールから Solaris 10 システム コールへの変換を含む、Solaris 10 システム上の Red Hat Enterprise Linux 3 環境を提供します (x86 システムでのみ使用可能)。SmartOS では、lx ブランド ゾーンは、Ubuntu、Debian、CentOS、Alpine など、ほとんどの最新の Linux ディストリビューションのランタイムを提供できます。LX サポートは illumos にアップストリームされていません。
- 「s10brand」は、Solaris 10 システムコールから OpenSolaris/Oracle Solaris 11 システムコールへの変換を含む、OpenSolaris または Oracle Solaris 11 システム上の Solaris 10 環境を提供します。
- 「solaris-kz」は、Oracle Solaris 11.2以降のシステム上で、独自のカーネルと独立したパッケージを備えた別のSolaris 11.2以降のインスタンスを提供します。[6]この機能は、Solaris 11.2ベータ版(パブリックダウンロード)で初めて公開されました。[7]
ゾーンのブランドは、ゾーンの作成時に設定されます。2 番目のカテゴリは、システム コール、プロセスの読み込み、スレッドの作成、およびその他の要素の動作を変更するために使用できる OS カーネル内の介入ポイントを使用して実装されます。
「lx」ブランドの場合、エミュレートされた環境を完成させるには、 Red Hat 3 またはCentOSなどの同等のディストリビューションのライブラリが必要です。
ドキュメント
Solaris オペレーティング システムでは、デフォルトで Solaris コンテナのマニュアル ページが提供されます。より詳細なドキュメントは、さまざまなオンライン技術リソースで参照できます。
Solaris Zones に関する最初の公開ドキュメントと実践的なリファレンスは、2004 年 2 月に Blastwave の Dennis Clarke によって書かれ、開始するための基本情報を提供しました。このドキュメントは、2005 年 7 月に Brendan Gregg によって大幅に拡張されました。[8] Solaris 8 および Solaris 9 コンテナは、2008 年 4 月に再び Blastwave の Dennis Clarke によって詳細にドキュメント化されました。Blastwave の Solaris 8 および Solaris 9 コンテナ ドキュメントは、Solaris Containers テクノロジのリリース サイクルの非常に初期のものであり、Blastwave での活動と実装は、Sun Microsystems マーケティングによるフォローアップにつながりました。Jeff Victor らによって書かれたOracle Solaris 10 System Virtualization Essentials という書籍には、機能の詳細とベスト プラクティスが記載されています。より詳細なドキュメントは、Oracle ドキュメント サイトにあります。[9]
実装上の問題
Solaris 10 10/08以降、ブランドゾーンはパッケージFJSVs8brandrおよびFJSVs9brandrを通じてsun4usアーキテクチャ(富士通PRIMEPOWERサーバ)でサポートされています。[10]
参照
参考文献
- ^ 「Oracle Solaris Zones の概要」。
- ^ 「ゾーン ネットワーク インターフェイス」。
- ^ 「非グローバル ゾーンによって提供される機能」。
- ^ 「非グローバル ゾーンによって提供される機能」。
- ^ 「リソース制御」。
- ^ 「Oracle Solaris カーネル ゾーンについて」。
- ^ 「Oracle Solaris 11.2 ベータ版のダウンロード」。
- ^ 「ゾーン」。Solaris Internals wiki。2007年 11 月 6 日。2008年4 月 21 日閲覧。
- ^ 「Oracle Solaris 11.1 情報ライブラリ」。
- ^ 「Solaris 10 10/08 パッケージの新機能」。Oracle。2008年 9 月 1 日。2008年9月1 日に取得。
外部リンク
- Solaris ゾーン (コンテナ) のドキュメント
- Oracle Solaris 11 で Oracle Solaris ゾーンを作成する方法を説明するドキュメント
- Oracle Solaris Zones に関するブログ
- ジェフ・ビクターのブログ
- マイク・ゲルツのブログ
- Solaris 10 ゾーンの移動
- 主要特許: US 7437556、Tucker, Andrew G.、Beck, John T.、Comay, David S. 他、「オペレーティング システム パーティションのグローバル可視性制御」、2004 年 11 月 10 日公開、Sun Microsystems Inc.に譲渡、EP 1475703としても公開
