solaris-kz - solaris カーネルゾーン
solaris-kz ブランドは brands(5) で説明しているブランドゾーンフレームワークを使用して、大域ゾーンで使用されているものと別のカーネルおよび OS インストールでゾーンを実行します。
solaris-kz インストールは大域ゾーンのインストールから独立しており、pkg(5) でリンクされたイメージではなく、大域ゾーンの内容に関係なく、変更できます。solaris-kz ゾーンは、大域ゾーンから直接、または下記のようにブートメディア経由で、ほかのブランドと同じ方法でインストールできます。
インストールのマニフェストを指定する場合、使用するマニフェストは大域ゾーンのインストールに適したものにすべきです。カーネルゾーンは常にルートプールの既知の場所にインストールされるため、インストールターゲットディスクは指定できません。
AI マニフェストを使用して、大域ゾーンにインストールされているものとは異なるバージョンの Solaris をインストールする場合、そのインストールは、インストールされる Solaris のバージョンに一致するインストールメディアを使用して実行する必要があります。標準的なコマンド行は、次のようになります。
zoneadm -z kzone1 install -b <ai.iso> -m <manifest.xml>
ブート環境 (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) および同様のツールは、kzhost や zlogin-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 が含まれています。
mpstat(1M)、iostat(1M)、vmstat(1M) やその他のユーティリティーによって報告される横取りされた時間には、ホストが CPU リソースをほかの目的に使用しているためにカーネルゾーンを実行できなかった時間が直接反映されます。
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 ゾーンのルートは常にアクセス可能です。ストレージは zonecfg で add 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 を指定して、ゾーン内のディスクアドレスを修正できます。指定しない場合、自動的に割り当てられます。
zonecfg(1M) で説明されているように、デバイスリソースでは、ゾーンの構成をほかのホストシステムに移植できるようにするために、ストレージ URI を構成することもできます。suri(5) を参照してください。
例:
# zonecfg -z myzone zonecfg:myzone> add device zonecfg:myzone:device> set storage=nfs://user1:staff@host1/export/file1 zonecfg:myzone:device> set create-size=4g
デバイスリソースの現在の構成についての情報を参照するには、info サブコマンドを使用してください。例:
# zonecfg -z myzone info device device: match not specified storage: dev:/dev/zvol/dsk/rpool/VARSHARE/zones/myzone/disk0 id: 0 bootpri: 0 device: match not specified storage: nfs://user1:staff@host1/export/file1 create-size: 4g id: 1 bootpri not specified
id を指定して出力を短くすることもできます。
# zonecfg -z myzone info device id=1 device: match not specified storage: nfs://user1:staff@host1/export/file1 create-size: 4g id: 1 bootpri not specified
ゾーンを iSCSI 論理ユニットなどのデフォルト以外の場所にインストールするには、ルートディスクのデバイスリソースを変更する必要があります。例:
# zonecfg -z myzone zonecfg:myzone> select device id=0 zonecfg:myzone:device> set storage=iscsi://host/luname.naa.0000abcd
デバイスがブート可能であることを示すために、少なくとも 1 つのデバイスで bootpri が正の整数に設定される必要があります。カーネルゾーン内では、ルート ZFS プールのミラーまたはスペアとして機能するすべてのデバイスが、ブート可能である必要があります。
ストレージデバイスは、solaris-kz ブランドの add device によってのみサポートされています。
カーネルゾーンは排他的スタックである必要があります。ネットワークアクセスは、Ethernet データリンクに net または anet リソースを追加し、IPoIB データリンクに anet を追加することによって提供されます。これらのリソースによって指定されたデータリンクは、ゾーンに表示されるデータリンクのバックエンドとして使用されます。IPoIB と Ethernet の両方のネットワークリソースを指定でき、ゾーンに表示されるデータリンクが対応するメディアタイプになります。ストレージデバイスと同様に、ゾーン内の仮想 NIC アドレスを識別するために ID を指定できます。net リソースによる InfiniBand ネットワークリンクの追加はサポートされていません。
カーネルゾーンはそれ自体ホストゾーンになることがあります (その場合、それらのゾーンの大域ゾーンの役割を持ちます)。ホストされているゾーンへのネットワークアクセスは Ethernet データリンク経由でのみ提供され、IPoIB データリンク経由では提供されません。ただし、カーネルゾーンのネットワーク構成はそのゾーン構成によって部分的に定義されるため、MAC アドレスを使用できるホストされているゾーンは制限されます。ランダムまたは特定の MAC アドレスの mac-address 設定でゾーンをブートしようとすることは許可されません。
カーネルゾーンに追加の 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 では、ハードウェアプラットフォームが同じである必要があります。たとえば、T4 ホストから T5 ホストにウォーム移行することはできません。異なるハードウェアプラットフォーム間で移行する場合、cpu-arch プロパティーで移行クラスを適切に指定する必要があります。
再開時は、ゾーンの現在の構成を使用して、ブートおよび新規構成の指定が許可されます。ただし、再開するゾーンによって特定の設定が求められるため、制限事項があります。何らかの非互換性があると、ブートは失敗します。たとえば、ブートプロセスは次の場合に失敗することがあります。
CPU が異なる機能をサポートする (たとえば、cpuid(7D) を参照)
構成の capped-memory 値が異なる
構成で定義される仮想 CPU の数が異なる
ディスクが存在しない (適切な id プロパティーを持つ device リソースがない)
仮想 NIC が存在しない (適切な id プロパティーを持つ net または anet リソースがない)
ストレージの識別のための固有のチェックは実行されません。特定の ID の下に一覧表示されるデバイスを、ゾーンで表示が必要なデバイスにするのは管理者の責任です。
zoneadm(1M) で説明されているように、zoneadm migrate コマンドを使用してカーネルゾーンを互換性のあるホストにライブ移行できます。
ライブ移行には、上の「一時停止、再開、およびウォーム移行」セクションで説明されているのと同じ互換性の制限があります。
このブランドには、次の補助状態 (zoneadm list -is によって示される) が定義されています。
ゾーンは一時停止されており、次のブート時に再開されます。この状態を表示できるようにするには、ゾーンに接続している必要があります。
ゾーンは running 状態ですが、カーネルデバッガはゾーン内で実行しているため、ネットワークリクエストなどにサービスできません。ゾーンコンソールに接続して、デバッガと対話処理を行なってください (kmdb)。
ゾーンは 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 capped-memory:locked capped-memory:swap dataset device:allow-partition device:allow-raw-io fs file-mac-profile fs-allowed ip-type limitpriv global-time 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
次の zonecfg(1M) リソースおよびプロパティーは、このブランドのライブゾーン再構成でサポートされています。
anet (with exceptions stated below) device net (with exceptions stated below)
次の zonecfg(1M) リソースおよびプロパティーは、このブランドのライブゾーン再構成でサポートされていません。
anet:allowed-address anet:configure-allowed-address anet:defrouter capped-cpu (zone.cpu-cap) capped-memory cpu-shares (zone.cpu-shares) dedicated-cpu hostid ib-vhca ib-vhca:port cpu-arch keysource net:allowed-address net:configure-allowed-address net:defrouter pool rctl scheduling-class tenant virtual-cpu
永続的な構成に一覧表示されているサポートされないリソースおよびプロパティーが、実行中のゾーンに適用された場合、そのリソースおよびプロパティーに加えたあらゆる変更は、ライブゾーン再構成によって無視されます。
ライブ構成に一覧表示されているサポートされないリソースおよびプロパティーを変更するあらゆる試行は拒否されます。
solaris-kz ブランドでサポートされている anet および net プロパティーは、同じメディアタイプに対して変更する必要があります。
次に一覧表示されているように、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 linkmode cm anet:mac mac-address auto ib-vhca:port pkey auto
zoneadm(1M) でサポートされている solaris-kz ブランド固有サブコマンドのオプションは次のとおりです。
指定された solaris-kz ブランドゾーンイメージをゾーンにアタッチします。ゾーンのブート可能デバイスは、すでに正しく入力されているものとします。
拡張オプション -x force-takeover は、ゾーンが別のシステム上にインストールされているか、または実行中であることを示す状態情報をクリアします。このオプションは注意して使用してください。同一のストレージがゾーンの 2 つのインスタンスによって同時に使用される場合、ファイルシステムが破壊されます。
拡張オプション -x initialize-hostdata は、暗号化鍵およびホストデータを再初期化します。-x force-takeover と同様、このオプションを使用する前に、ゾーンが別のシステムで使用されていないことを確認してください。
ゾーンが一時停止されている場合、-R オプションは、一時停止されたイメージを無視し (次に削除される)、新規にブートするために使用できます。
-L オプションはブートローダーに使用可能なブート環境を一覧表示するように伝えます。ブートする BE は対話的に選択できます。
-Z オプションは、ブートローダーに特定の BE をブートするように伝えます。例:
# zoneadm -z myzone \
boot -- -Z rpool/ROOT/solaris
リポジトリからのインストール後に適用するプロファイルまたはプロファイルのディレクトリを指定します。
すべてのプロファイルは、.xml 拡張子を持つ必要があります。
zoneadm clone について、ストレージが自動的に作成される場合、ストレージはソースゾーンのディスクと同じサイズで作成されます。
カーネルゾーンは、大域ゾーンのパブリッシャーとデフォルトの 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) を使用して作成します。
指定された統合アーカイブからインストールします。archived_zone には、大域ゾーン、カーネルゾーン、または solaris ブランドゾーンを指定できます。アーカイブされたゾーンが solaris ブランドゾーンである場合は、非大域から大域への pkg(5) のイメージ変換が実行されます。変換を正常に実行するには、すべての pkg(5) パブリッシャーにアクセスできるように、ゾーンのインストール環境に十分なネットワークアクセス権限がある必要があります。これをもっとも簡単に実現するには、カーネルゾーンのネットワークを DHCP を使用して構成することを許可します。
指定されたメディアからブートし、インストールします。
リポジトリからのインストール後に適用するプロファイルまたはプロファイルのディレクトリを指定します。
すべてのプロファイルは、.xml 拡張子を持つ必要があります。
インストールを実行する AI メディアでブートするときに、適用するプロファイルまたはプロファイルのディレクトリをインストール環境に提供します。
すべてのプロファイルは、.xml 拡張子を持つ必要があります。
Automated Installer に対して指定されるマニフェストファイル。
ルートファイルシステムのサイズを明示的に設定します (デフォルトは 16g)。
インストール後にカーネルゾーンをコンソールにログインしたままにして、インストールシステムとの対話を可能にします。このオプションは、–a または –b オプションとともに使用した場合にのみ有効です。
https URI にある統合アーカイブからインストールする場合に、指定された証明書、CA 証明書、または鍵を使用します。–a オプションでのみ有効です。
インストールプロセスの詳細情報を出力します。
統合アーカイブから archived_zone を使用してゾーンをインストールします。特定の統合アーカイブで有効な値のリストについては、archiveadm(1M) info コマンドの出力の Deployable Systems を参照してください。–a オプションでのみ有効です。
archiveadm(1M), ai_manifest(4), pkg(5)
VirtualBox はカーネルゾーンと同じホストで使用できますが、適切に構成されている必要があります。詳細は VirtualBox のドキュメントを参照してください。カーネルゾーンは別の Solaris カーネル環境で実行されているため、クラッシュして、ベアメタルで実行されている大域ゾーン内のカーネルの場合と同じコアをダンプする可能性があります。このような場合、ダンプはカーネルゾーンのストレージに保存され、dumpadm(1M) によって構成されたクラッシュダンプパラメータに従って、Solaris クラッシュダンプがある場所と同じ場所で見つかります。カーネルゾーンにはまた、zoneadm savecore サブコマンドを使用して、ホスト環境からコアダンプが生成されるようにする機能もあります。さらに、カーネルゾーンがクラッシュし、コアイメージをダンプしようとしたが、コアをカーネルゾーンのストレージ内に正常に保存できない場合は、zoneadm savecore サブコマンドが発行されたかのように、ホストにコアイメージの保存を試みるよう要求します。コアは coreadm(1M) で指定された場所に保存されます。これは、coreadm(1M) で場所を構成していて、カーネルゾーンのコアダンプが有効になっている場合にのみ成功します。