Solarisコンテナ(ゾーン)。 作成と管理。 パート1

Solarisコンテナ(ゾーン)。 作成と管理。 パート2



はじめに



Solarisゾーンテクノロジ(Solarisコンテナ)は、Solaris 10ソフトウェアレベルでOSをコンテナ(ゾーン)、独立した独立したリソース(プロセッサ、メモリ、ディスクスペース)と独自のユーザーを持つことができるほぼ独立したOSに分離できるテクノロジです。



コンテナは、各アプリケーションが動作可能なリソースの独自の正直な保証(またはすべてのゾーン間で共有)を備えたアプリケーションサーバーを構築するための優れたソリューションです。 このソリューションにより、インフラストラクチャをより強力なサーバーに統合できるようになり、一般に情報システムのコストと複雑さが軽減されます。





サーバーの統合を計画する場合、多くの異種ソリューションに直面するため、そこから完全に満足できるソリューションを選択する必要があります。 通常、次の3つから選択します。





Solarisゾーンの機能:





Solarisゾーンの作成



デモンストレーションを行うには、habrazoneというゾーンを設定します。



Solaris OS 10 09/10があり、 ZFSにインストールされています 。 次の記事では、ZFSに個別のプールを作成し、このプールにゾーンをインストールし、保証されたCPUとRAMをゾーンに割り当てるプロセスについて説明します。この1つでは、ゾーンをリソースにバインドせずに個別のディレクトリにのみインストールします。 ゾーンには余計なものはなく(物理ネットワークインターフェース、rawデバイスなどを転送する)、ホストレベルで仮想ネットワークインターフェースを使用します。



したがって、まず最初に、ゾーンがインストールされるディレクトリを作成し、それに権利を割り当てます



# mkdir /export/habrazone

# chown root:root /export/habrazone

# chmod 700 /export/habrazone








すべてがシンプルです。 このゾーンを見ることができるのはルートのみであり、他の誰も見ることができません。



ゾーンを作成するには、-zスイッチを指定してzonecfgコマンドを使用します。



# zonecfg -z habrazone

habrazone: No such zone configured

Use 'create' to begin configuring a new zone.

zonecfg:habrazone> create

zonecfg:habrazone> set zonepath=/export/habrazone

zonecfg:habrazone> set autoboot=true

zonecfg:habrazone> add net

zonecfg:habrazone:net> set physical=bge0

zonecfg:habrazone:net> set address=10.44.3.92

zonecfg:habrazone:net> end

zonecfg:habrazone> add attr

zonecfg:habrazone:attr> set name=comment

zonecfg:habrazone:attr> set type=string

zonecfg:habrazone:attr> set value="Habrahabr"

zonecfg:habrazone:attr> end

zonecfg:habrazone> verify

zonecfg:habrazone> commit

zonecfg:habrazone> exit








ここで何が起こったかについて少しコメントします。



zonecfg:habrazone> create-ゾーンを作成します。 実際、まだゾーンはありません。 これは単なるXML構成です。

zonecfg:habrazone> set zonepath = / export / habrazone-ゾーンはパス/ export / habrazoneに配置されます

zonecfg:habrazone> set autoboot = true-ゾーンはホストのブートとともに、たとえば再起動後に自動的に開始されます。

zonecfg:habrazone> add net-ネットワークインターフェースをゾーン設定に追加します

zonecfg:habrazone:net> set physical = bge0-仮想インターフェイスはbge0の上に配置されます

zonecfg:habrazone:net> set address = 10.44.3.92-ゾーンのアドレス

zonecfg:habrazone:net> end -end

zonecfg:habrazone> add attr-ゾーンの「名前」を追加しました

zonecfg:habrazone:attr> セット名=コメント

zonecfg:habrazone:attr> set type = string

zonecfg:habrazone:attr> set value = "Habrahabr"は私たちのお気に入りのリソースです

zonecfg:habrazone:attr> end-そして再びend

zonecfg:habrazone> verify-設定を確認します。 構成にエラーがある場合、この場所でこれについて通知されます

zonecfg:habrazone> commit-コミット

zonecfg:habrazone> exit-終了



設定全体を見てみましょう。 inherit-pkg-dirに注意してください。 これらは、大域ゾーンから「継承」されるディレクトリを指します。



# zonecfg -z habrazone info

zonename: habrazone

zonepath: /export/habrazone

brand: native

autoboot: true

bootargs:

pool:

limitpriv:

scheduling-class:

ip-type: shared

hostid:

inherit-pkg-dir:

dir: /lib

inherit-pkg-dir:

dir: /platform

inherit-pkg-dir:

dir: /sbin

inherit-pkg-dir:

dir: /usr

net:

address: 10.44.3.92

physical: bge0

defrouter not specified

attr:

name: comment

type: string

value: Habrahabr









現在、ゾーンは1つだけです-グローバル。 ゾーンのリストは、list –ivキーを指定したzoneadmコマンドで表示できます。



# zoneadm list -iv

ID NAME STATUS PATH BRAND IP

0 global running / native shared








これで、ゾーンをインストールする準備ができました。 ゾーンをインストールするには、すでによく知られているzoneadmコマンドを使用しますが、インストールコマンドでインストールされていないゾーンの名前がパラメーターとして渡されます。



# zoneadm -z habrazone install

A ZFS file system has been created for this zone.

Preparing to install zone habrazone.

Creating list of files to copy from the global zone.

Copying 3137 files to the zone.

Initializing zone product registry.

Determining zone package initialization order.

Preparing to initialize 1207 packages on the zone.

Initialized 1207 packages on zone.

Zone habrazone is initialized.

The file /export/habrazone/root/var/sadm/system/logs/install_log contains a log of the zone installation.







OSファイルがグローバルゾーンからゾーンにコピーされ、ディレクトリの一部が継承されるという事実に注意を喚起したいと思います。 ゾーン内の継承ディレクトリは読み取り専用です。



ゾーンのリストに、新しくインストールされたゾーンがあります。



# zoneadm list -iv

ID NAME STATUS PATH BRAND IP

0 global running / native shared

- habrazone installed /export/habrazone native shared








そして、そのサイズは、ほぼ独立したOSにとって非常に小さいです。



# du -shk /export/habrazone/

79M /export/habrazone








起動と停止は、コマンドzoneadm –z <ゾーン名> bootおよびzoneadm –z <ゾーン名> haltをそれぞれ使用して実行されます。



# zoneadm -z habrazone boot









ゾーンを開始した後、たとえば、ホストネットワークインターフェイスの構成で何が変更されたかを確認できます。

# /sbin/ifconfig -a

lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1

inet 127.0.0.1 netmask ff000000

lo0:1: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1

zone habrazone

inet 127.0.0.1 netmask ff000000

bge0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2

inet 10.44.3.93 netmask ffffff00 broadcast 10.44.3.255

ether 0:14:4f:79:91:1a

bge0:1: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2

zone habrazone

inet 10.44.3.92 netmask ffffff00 broadcast 10.44.3.255








ifconfigの出力からわかるように、ゾーンアドレスが割り当てられているシステムに仮想インターフェイスが表示されています。 たとえば、ネットワークをアクティブに運用するゾーンにアプリケーションをインストールし、他のゾーンが正常に機能するようにする場合など、ゾーンに個別の物理インターフェイスを割り当てることもできます。



ゾーンが起動したら、コンソールに移動して最小限の構成(ホスト名、タイムゾーン、ネームサービス、パスワードルートなど)を実行する必要があります。



zlogin –C <ゾーン名>を使用して入力できます。



# zlogin –C habrazone







次に、ホスト名、タイムゾーン、ネームサービスに関するOSの質問に答え、ルートパスワードを入力します。 すべての構成手順の後、ゾーン自体が再起動し、同じzlogin <zone name>またはsshを使用してコンソールにアクセスできるようになります。



# hostname

globalzone

# zlogin habrazone

[Connected to zone 'habrazone' pts/1]

Last login: Fri Jul 1 18:43:32 on pts/3

Oracle Corporation SunOS 5.10 Generic Patch January 2005

# hostname

habrazone








ゾーンの準備ができました。



次の記事では、ゾーンにリソースを割り当てる方法(raw、CPU、RAM)と、ホスト間でゾーンを移行する方法について説明します。



ご清聴ありがとうございました。



All Articles