マニュアルページセク ション 5: 標準、環境、マクロ

印刷ビューの終了

更新: 2014 年 7 月
 
 

solaris-kz(5)

名前

solaris-kz - solaris カーネルゾーン

説明

solaris-kz ブランドは brands(5) で説明しているブランドゾーンフレームワークを使用して、大域ゾーンで使用されているものと別のカーネルおよび OS インストールでゾーンを実行します。

インストールと更新

solaris-kz インストールは大域ゾーンのインストールから独立しており、pkg(5) でリンクされたイメージではなく、大域ゾーンの内容に関係なく、変更できます。solaris-kz ゾーンは、大域ゾーンから直接、または下記のようにブートメディア経由で、ほかのブランドと同じ方法でインストールできます。

インストールのマニフェストを指定する場合、使用するマニフェストは大域ゾーンのインストールに適したものにすべきです。カーネルゾーンは常にルートプールの既知の場所にインストールされるため、インストールターゲットディスクは指定できません。

ブート環境 (BE) 管理は大域ゾーンから独立しています。大域ゾーン内の BE の作成では、ゾーン内に新しい BE を作成しません。 beadm(1M) を参照してください。

プロセスの管理と可視性

ほかのブランドと異なり、solaris-kz ゾーンは個別のカーネルを実行するため、大域ゾーンからゾーンを調べた場合にいくつかの違いが見られます。

solaris-kz ゾーンで実行しているプロセスは、大域ゾーンから直接アクセスできません。たとえば、kz-zone というカーネルゾーンのプロセスのリストを表示するには、–z kz-zone オプションを付けて ps コマンドを使用するのではなく、次のコマンドを使用する必要があります。

# zlogin kz-zone ps -e

大域ゾーンと各カーネルゾーンはそれぞれ独自のプロセス ID 空間を管理します。そのため、process 1234 が大域ゾーンおよび 1 つ以上のカーネルゾーン内に存在することがあります。それらは一意のプロセスです。大域ゾーンの管理者が kz-zone 内の process 1234 を強制終了したいと考える場合、次のコマンドまたは同等のコマンドで実行してください。

# zlogin kz-zone kill 1234

大域ゾーンから実行される ps(1) および同様のツールは、kzhostzlogin-kz などの solaris-kz ゾーンインスタンスの管理に関連付けられたプロセスを表示します。これはデバッグに役立ちますが、それ以外はプライベート実装の詳細です。

同様に、リソース管理機能が異なります。たとえば、max-processes などのリソース制御は、単一のカーネルインスタンスを共有する場合にのみ意味があるため、solaris-kz ゾーンを構成する場合に使用できません。つまり、カーネルが独立しているため、solaris-kz ゾーン内で実行中のプロセスは大域ゾーンのプロセステーブルスロットを占有できません。

zonestat ユーティリティーはゾーンのリソース使用量を表示します。この出力は一般に正しいですが、ホスト値を反映していることがあります。たとえば、lwps などのリソース制御値は、ゾーン内で使用されているものではなく、ホストで使用されている lwps を示します。

solaris-kz ブランドで使用される一部のハードウェア機能は、古いシステムや仮想化環境では利用できないこともあります。システムが solaris-kz brand をサポートするかどうかを検出するには、brand-solaris-kz パッケージをインストールし、virtinfo コマンドを実行します。

# virtinfo -c supported list kernel-zone

サポートされるリストに kernel-zone が表示されない場合、syslog を表示して詳細を確認できます。カーネルゾーンに関連するメッセージには、文字列 kernel-zone が含まれています。

ストレージアクセス

solaris-kz ブランドゾーンは 1 つ以上のデバイスに存在する必要があります。構成がインストール前にカスタマイズされない場合、大域ゾーンのルート zpool にデフォルトの zfs(1M) ボリュームが作成されます。ゾーンのインストール先のデバイスは、任意の正の整数値に設定された bootpri プロパティーを持つデバイスリソースで指定されます。デバイスをブートデバイスとして使用しない場合、bootpri プロパティーを設定しないでください。bootpri の設定を解除するには、デバイスのリソース範囲で bootpri のクリアを使用します。ブート可能な複数のデバイスがインストール中に存在する場合、これらのデバイスはゾーン内のミラー化ルート ZFS プールで使用されます。デフォルトのブート順は、最初に bootpri でデバイスをソートし、複数のデバイスが同じ bootpri を持つ場合は、次に id でソートして決定されます。

zonepath をカーネルゾーンに対して設定することはできません。実装の詳細として、これは tmpfs(7FS) を使用して、固定の場所に設定されます。これは、永続的データも、ユーザーが運用可能なその他のデータも含みません。ゾーンルートは、ルート ZFS ボリュームに含まれるため、従来のゾーンと異なり、大域ゾーン内のゾーンパス下にマウントされません。ゾーンルートへのアクセスは、zlogin など、ゾーン自体から実行できます。

solaris-kz ゾーンは、ZFS データセットやファイルシステムマウントなどの共有カーネル機能を直接利用できません。代わりに、raw ディスク、ZFS ボリューム、lofi デバイスなどのブロックデバイス経由でゾーンからストレージを使用できます。

solaris-kz ゾーンのルートは常にアクセス可能です。ストレージは zonecfgadd device を使用して追加できます。指定するデバイスパスは raw デバイスである必要があり、ZFS ボリュームか、raw ディスクか、lofi デバイスである必要があります。指定するデバイスはディスク全体か LUN である必要があります。パーティション/スライス接尾辞なしで、デバイスパスを使用します。例:

# zonecfg -z myzone
zonecfg:myzone> add device
zonecfg:myzone:device> set match=/dev/rdsk/c4t9d0
zonecfg:myzone:device> set id=4
zonecfg:myzone:device> set bootpri=1

id を指定して、ゾーン内のディスクアドレスを修正できます。指定しない場合、自動的に割り当てられます。

デバイスがブート可能であることを示すために、少なくとも 1 つのデバイスで bootpri が正の整数に設定される必要があります。カーネルゾーン内では、ルート ZFS プールのミラーまたはスペアとして機能するすべてのデバイスが、ブート可能である必要があります。

zonecfg(1M) に説明するように、デバイスリソースでは、ゾーンの構成をほかのホストシステムに移植できるようにするために、ストレージ URI を構成することもできます。 suri(5) を参照してください。

ストレージデバイスは、solaris-kz ブランドの add device によってのみサポートされています。

ネットワークアクセス

カーネルゾーンは排他的スタックである必要があります。ネットワークアクセスは、net または anet リソースを追加することによって提供されます。これらのリソースによって定義された NIC は、ゾーン内に表示されているとおりに、仮想 NIC ドライバ zvnet のバックエンドとして使用されます。ストレージデバイスと同様に、ゾーン内の仮想 NIC アドレスを識別するために ID を指定できます。

カーネルゾーンはそれ自体ホストゾーンになることがあります (その場合、それらのゾーンの大域ゾーンの役割を持ちます)。ただし、カーネルゾーンのネットワーク構成はそのゾーン構成によって部分的に定義されるため、MAC アドレスを使用できるホストされているゾーンは制限されます。randommac-address 設定または特定の MAC アドレスでゾーンをブートしようとすることは許可されません。

カーネルゾーンに追加の MAC アドレスを提供するには、それらを関連リソースの mac-address プロパティーに追加します。zonecfg(1M) を参照してください。これにより、その mac-address をカーネルゾーン内の出荷時アドレスとして使用できるようになります。

それにより、ホストされるゾーンでその MAC アドレス自体を使用できます。これを実行するには、ホストされているゾーンの mac-address プロパティーを、構成済みの明示的な MAC アドレスとして構成する (mac-address プロパティーを使用) か、または auto を指定します。これらの設定の詳細については、 zonecfg(1M) を参照してください。

メモリー構成

ホスト RAM の修正済みの量がカーネルゾーンに割り当てられる必要があります。これは、zonecfg(1M)capped-memory リソースの physical プロパティーによって構成します。指定した値はサポートされるプラットフォーム値に丸められることがあります。割り当てられたメモリーがロックされるため、スワップデバイスにページングできません。

一時停止、再開、およびウォーム移行

カーネルゾーンは、zoneadm suspend コマンドによって、ディスクに対して一時停止できます。ゾーンの実行状態がディスクに書き込まれます。これにはゾーンによって使用される RAM 全体が含まれるため、大量の時間と領域をとることがあります。

カーネルゾーンの構成に一時停止リソースがある場合のみ、カーネルゾーンの一時停止および再開がサポートされます。一時停止リソース内では、パスまたはストレージ (両方ではない) を指定する必要があります。path プロパティーは、一時停止イメージを格納するファイルの名前を指定します。ファイルを格納するディレクトリが存在し、root ユーザーによってディレクトリに書き込み可能である必要があります。svc:/system/zones:default の開始より前にマウントされるすべてのファイルシステムを使用できます。storage プロパティーには、一時停止イメージを格納するディスクデバイスのストレージ URI (suri(5) を参照) が指定されます。デバイス全体が使用されます。このデバイスは、ほかのものと共有できません。

一時停止イメージは、書き込み前に圧縮されます。したがって、一時停止イメージのサイズはゾーンの RAM のサイズよりも一般的に著しく小さくなっています。一時停止中に、一時停止イメージのサイズを示すメッセージが出力されてコンソールログに記録されます。

圧縮の後、一時停止イメージは AES-128-CCM を使用して暗号化されます。暗号化鍵は /dev/random (random(7D) を参照) によって自動的に生成され、keysource リソースの raw プロパティーに保管されます。

ゾーンが一時停止されている場合、zoneadm boot コマンドによって再開します。再開を希望しない場合は、boot –R オプションを使用して、最初からブートすることができます。

一時停止イメージおよびゾーンのストレージの残りの部分が複数のホストからアクセス可能である場合 (通常は suspend:storage および device:storage プロパティーの使用による)、一時停止イメージは、zoneadm detach または zoneadm attach による通常のゾーンのコールド移行の後にウォーム移行をサポートするために使用できますが、最初の段階として、zoneadm shutdown の代わりに zoneadm suspend を使用します。これにより、再開にかかる時間を除き、目的のホストでのすべてのゾーン起動コストを回避します。

ソースと目的のホストは同じプラットフォームである必要があります。x86 では、ベンダー (AMD/Intel) と CPU リビジョンが一致している必要があります。SPARC では、ハードウェアプラットフォームが同じである必要があります。

    再開時は、ゾーンの現在の構成を使用して、ブートおよび新規構成の指定が許可されます。ただし、再開するゾーンによって特定の設定が求められるため、制限事項があります。何らかの非互換性があると、ブートは失敗します。たとえば、ブートプロセスは次の場合に失敗することがあります。

  • CPU が異なる機能をサポートする (たとえば、cpuid(7D) を参照)

  • 構成の capped-memory 値が異なる

  • 構成で定義される仮想 CPU の数が異なる

  • ディスクが存在しない (適切な id プロパティーを持つ device リソースがない)

  • 仮想 NIC が存在しない (適切な id プロパティーを持つ net または anet リソースがない)

ストレージの識別のための固有のチェックは実行されません。特定の ID の下に一覧表示されるデバイスを、ゾーンで表示が必要なデバイスにするのは管理者の責任です。

補助状態

このブランドには、次の補助状態 (zoneadm list -is によって示される) が定義されています。

suspended

ゾーンは一時停止されており、次のブート時に再開されます。この状態を表示できるようにするには、ゾーンに接続している必要があります。

debugging

ゾーンは running 状態ですが、カーネルデバッガはゾーン内で実行しているため、ネットワークリクエストなどにサービスできません。ゾーンコンソールに接続して、デバッガと対話処理を行なってください (kmdb)。

panicked

ゾーンは running 状態ですが、ゾーンはパニックを起こしており、ホストは影響を受けません。

ホストデータ

カーネルゾーンのブート可能な各デバイスには、ホストデータとして知られる状態情報が含まれています。このデータは、ゾーンが使用中の場所や、一時停止されているかどうか、およびその他の状態情報を追跡します。ホストデータは、一時停止イメージに使用されるのと同じ暗号化鍵を使用して、AES-128-CCM で暗号化および認証されます。

カーネルゾーンの準備ができたかブートされた場合、ホストデータが読み取られて、カーネルゾーンのブートストレージがほかのシステムで使用中かどうかが判別されます。別のシステムによって使用中の場合、カーネルゾーンは使用不可の状態に移行し、エラーメッセージによって、カーネルゾーンを使用中のシステムが示されます。ストレージがほかのシステムで使用中でないことがたしかな場合、カーネルゾーンは zoneadm attach-x force-takeover extended オプションを使用して修復できます。このコマンドを実行する前に、次の警告を参照してください。

暗号化鍵にアクセスできない場合、ホストデータとすべての一時停止イメージを読み取ることはできません。そのような状況では、ゾーンを準備またはブートするすべての試行によって、ゾーンが使用不可状態に移行します。暗号化鍵を復元できない場合、zoneadm attach サブコマンドの -x initialize-hostdata extended オプションを使用して、新しい暗号化鍵およびホストデータを生成できます。このコマンドを実行する前に、次の警告を参照してください。


注 -  警告: ホストデータの引き継ぎまたは再初期化を強制すると、ゾーンがほかのシステムで使用中かどうかの検出が不可能になります。同じストレージを参照するゾーンの複数インスタンスを実行すると、ゾーンのファイルシステムの修復不能な破壊につながることがあります。

ウォーム移行またはコールド移行中の暗号化鍵の損失を防ぐには、ソースシステム上で zonecfg export を使用して、宛先システム上で使用するコマンドファイルを生成します。例:

root@host1# zonecfg -z myzone export -f /net/.../myzone.cfg
root@host2# zonecfg -z myzone -f /net/.../myzone.cfg

この例の myzone.cfg には暗号化鍵が含まれているため、内容を開示しないように保護することが重要です。

構成

solaris-kz ブランドゾーンは SYSsolaris-kz テンプレートを使用して構成できます。

次の zonecfg(1M) リソースとプロパティーはこのブランドでサポートされていません。

anet:address
anet:linkmode
anet:pkey
capped-memory:locked
capped-memory:swap
dataset
device:allow-partition
device:allow-raw-io
fs
file-mac-profile
fs-allowed
ip-type
limitpriv
max-lwps
max-msg-ids
max-processes
max-sem-ids
max-shm-memory
rctl:zone.max-lofi
rctl:zone.max-swap
rctl:zone.max-locked-memory
rctl:zone.max-shm-memory
rctl:zone.max-shm-ids
rctl:zone.max-sem-ids
rctl:zone.max-msg-ids
rctl:zone.max-processes
rctl:zone.max-lwps
rootzpool
zpool

solaris-kz ブランドゾーンはライブゾーン再構成でサポートされていません。

次の zonecfg(1M) リソースおよびプロパティーは、このブランドのライブゾーン再構成でサポートされています。

capped-cpu (zone.cpu-cap)
cpu-shares (zone.cpu-shares)
device
virtual-cpu

次の zonecfg(1M) リソースおよびプロパティーは、このブランドのライブゾーン再構成でサポートされていません。

admin
anet
anet:mac
capped-memory
dedicated-cpu
net
pool
scheduling-class

永続的な構成に一覧表示されているサポートされないリソースおよびプロパティーが、実行中のゾーンに適用された場合、そのリソースおよびプロパティーに加えたあらゆる変更は、ライブゾーン再構成によって無視されます。

ライブ構成に一覧表示されているサポートされないリソースおよびプロパティーを変更するあらゆる試行は拒否されます。

次に一覧表示されているように、solaris-kz ブランドについてサポートされているプロパティーの固有のデフォルト値があります。

Resource                Property                    Default Value
global                  zonepath                    /system/zones/%{zonename}
                        autoboot                    false
                        ip-type                     exclusive
                        auto-shutdown               shutdown
net                     configure-allowed-address   true
anet                    mac-address                 auto
                        lower-link                  auto
                        link-protection             mac-nospoof
anet:mac                mac-address                 auto

サブコマンド

zoneadm(1M) でサポートされている solaris-kz ブランド固有サブコマンドのオプションは次のとおりです。

attach [-x force-takeover | initialize-hostdata]

指定された solaris-kz ブランドゾーンイメージをゾーンにアタッチします。ゾーンのブート可能デバイスは、すでに正しく入力されているものとします。

拡張オプション -x force-takeover は、ゾーンが別のシステム上にインストールされているか、または実行中であることを示す状態情報をクリアします。このオプションは注意して使用してください。同一のストレージがゾーンの 2 つのインスタンスによって同時に使用される場合、ファイルシステムが破壊されます。

拡張オプション -x initialize-hostdata は、暗号化鍵およびホストデータを再初期化します。-x force-takeover と同様、このオプションを使用する前に、ゾーンが別のシステムで使用されていないことを確認してください。

boot [-R] -- [-L | -Z bootenv]

ゾーンが一時停止されている場合、-R オプションは、一時停止されたイメージを無視し (次に削除される)、新規にブートするために使用できます。

-L オプションはブートローダーに使用可能なブート環境を一覧表示するように伝えます。ブートする BE は対話的に選択できます。

-Z オプションは、ブートローダーに特定の BE をブートするように伝えます。例:

# zoneadm -z myzone \ 
boot -- -Z rpool/ROOT/solaris
clone [-c config_profile.xml | dir]

リポジトリからのインストール後に適用するプロファイルまたはプロファイルのディレクトリを指定します。

すべてのプロファイルは、.xml 拡張子を持つ必要があります。

zoneadm clone について、ストレージが自動的に作成される場合、ストレージはソースゾーンのディスクと同じサイズで作成されます。

install [–v] [–a archive | –m manifest.xml] [–c config_profile.xml | dir]
[–S rootsize] [–b /path/to/media.iso] [–z archived_zone]
[–x <cert|cacert|key >=path] ...

カーネルゾーンは、大域ゾーンのパブリッシャーとデフォルトの AI マニフェスト、カスタム AI マニフェスト、Solaris インストールメディアの ISO イメージ、または統合アーカイブを使用してインストールできます。

–a–b、または –m オプションを使用しない場合、デフォルトの AI マニフェスト (/usr/share/auto_install/manifest/default.xml) および大域ゾーンの pkg(5) パブリッシャーが、インストールを実行するために使用されます。サポートされるメディアのタイプは、テキストインストーラおよび自動インストーラです。これによりサポートされる任意の Oracle Solaris バージョンをインストールできます。Solaris 11.2 はカーネルゾーンでサポートされる最初の Solaris のバージョンです。

AI マニフェストを –m オプションとともに指定した場合、AI マニフェストの内容に基づいて、IPS または統合アーカイブのインストールが実行されます。ai_manifest(4) を参照してください。

ブート可能な Solaris インストールメディアの ISO イメージが –b オプションとともに指定された場合、カーネルゾーンはインストールメディアからブートされ、インストールプログラムはゾーンのコンソールで実行されます。インストール中にコンソールのログインセッションが確立され、インストールプログラムの操作および監視を行うことができます。

統合アーカイブが –a オプションとともに指定された場合、インストールは統合アーカイブから実行されます。統合アーカイブに複数のゾーンが含まれている (archiveadm info の出力の配備可能システム) 場合は、インストールするアーカイブゾーンを指定するために、–z オプションを使用します。統合アーカイブは archiveadm(1M) を使用して作成します。

次のインストールオプションがサポートされています。

-a archive

指定された統合アーカイブからインストールします。archived_zone には、大域ゾーン、カーネルゾーン、または solaris ブランドゾーンを指定できます。アーカイブされたゾーンが solaris ブランドゾーンである場合は、非大域から大域への pkg(5) のイメージ変換が実行されます。変換を正常に実行するには、すべての pkg(5) パブリッシャーにアクセスできるように、ゾーンのインストール環境に十分なネットワークアクセス権限がある必要があります。これをもっとも簡単に実現するには、カーネルゾーンのネットワークを DHCP を使用して構成することを許可します。

-b /path/to/media.iso

指定されたメディアからブートし、インストールします。

-c config_profile.xml | dir

リポジトリからのインストール後に適用するプロファイルまたはプロファイルのディレクトリを指定します。

すべてのプロファイルは、.xml 拡張子を持つ必要があります。

-m manifest.xml

Automated Installer に対して指定されるマニフェストファイル。

-x install-size

ルートファイルシステムのサイズを明示的に設定します (デフォルトは 16g)。

-x cert=path
-x cacert=path
-x key=path

https URI にある統合アーカイブからインストールする場合に、指定された証明書、CA 証明書、または鍵を使用します。–a オプションでのみ有効です。

-v

インストールプロセスの詳細情報を出力します。

-z archived_zone

統合アーカイブから archived_zone を使用してゾーンをインストールします。特定の統合アーカイブで有効な値のリストについては、archiveadm(1M) info コマンドの出力の Deployable Systems を参照してください。–a オプションでのみ有効です。

関連項目

archiveadm(1M), ai_manifest(4), pkg(5)

VirtualBox はカーネルゾーンと同じホストで使用できますが、適切に構成されている必要があります。詳細は VirtualBox のドキュメントを参照してください。