カーネルゾーンを移行する前に、zoneadm migrate コマンドを確認し、ソースゾーンとターゲットゾーンの互換性を維持する方法を学び、CPU や OS バージョンの違いの影響を検討し、暗号化デフォルトを使用して移行処理中のセキュリティーを確保する計画を立てます。
各移行方式で使用される zoneadm コマンドは互いに似ています。移行の処理は、移行するゾーンの状態によって決まります。このコマンドの書式は次のとおりです。
zoneadm –z kzone migrate [–nq] -c cipher] [–t {auto|live}][ [ssh|rads|radg://user@host:port]
ここで:
移行用のセキュアな暗号化方式オプションを指定します。デフォルトで、特定の暗号化を指定しない場合でも、両方のシステムでサポートされている暗号化を使用して、移行がセキュリティー保護されます。セキュアな移行を参照してください。
移行の、実行されない予行演習を行います。予行演習はすべてのタイプの移行で、両方のシステムから共有ストレージリソースにアクセスできることをチェックします。
ライブ移行の場合、予行演習は完全な互換性の有無をチェックするので、チェックに合格した場合、ゾーンはリモートシステム上で正常に再開されます。
ウォーム移行の場合、CPU やメモリーなどの設定に互換性がなければいけないのですが、予行演習はそれらの設定をチェックしません。移行時にゾーンが実行されていないからです。移行が完了したら、再開の前に必要に応じて設定を調整できます。
コールド移行やウォーム移行の場合、予行演習は CPU の互換性をチェックしたり、ソースシステム上のゾーン構成とターゲットシステム上の任意の既存ゾーン構成を比較したりしません。コールド移行の場合、CPU やメモリーの互換性などをチェックする必要はありません。ゾーンは白紙の状態からブートされるからです。移行が完了したら、ゾーン構成の設定を必要に応じて調整できます。
非出力モード。移行処理中にステータスが報告されないことを指定します。
移行のタイプを指定します。–t のデフォルト値である auto を指定した場合、zoneadm migrate コマンドは、適切な移行タイプをゾーンの状態に基づいて自動的に決定できるようになります。–t live オプションを使用すると、実行中のゾーンのみに移行を制限できます。実行中でないゾーンで –t live を指定した場合、そのゾーンの移行は行われません。
ゾーンをターゲットシステムに移行するために使用するスキーム、ユーザー名、およびホスト名を含む RAD URI を指定します。ssh スキームは SSH を使用し、rads スキームは TLS を使用します。radg スキームは Generic Security Services API (GSS-API) を使用します。RAD クライアントとターゲットホストが Kerberos 向けに構成されている場合は、radg を指定します。
ホスト名のみを指定した場合、スキームのデフォルトは rads になり、user のデフォルトは現在のユーザーになり、port のデフォルトは標準 RAD ポート 12302 になります。
詳細は、Remote Administration Daemon Client User’s Guide の Connecting in Python to a RAD Instance by Using a URIを参照してください。
migrate コマンドの詳細については、zoneadm(8) のマニュアルページを参照してください。
カーネルゾーンの構成は、ゾーンを切り離してから接続した場合と同様に、移行ターゲットホストの環境と互換性を持っている必要があります。ウォーム移行やライブ移行後に新しいホスト上でブートされるゾーンは、保存されたメモリー状態から再開されるので、特定の設定を想定しています。何らかの非互換性があると、移行が失敗します。
カーネルゾーンを同一の別のシステムに移行する場合に、両方のホストからアクセス可能なストレージ URI がすべてのストレージ参照で使用されていれば、移行される構成は変更しなくても互換性があるはずです。
ゾーンのストレージがローカルの場合、zoneadm migrate コマンドを使用できません。ローカルストレージデバイスがブートに必要ない場合にそれらをゾーン構成から削除するか、または Creating and Using Oracle Solaris Zones の How to Move a Zone To a Shared Storage Configurationの説明に従ってストレージを共有に変換したあとで、zoneadm migrate を使用できます。
別の方法として、統合アーカイブを使用してゾーンを移動することもできます。詳細は、Oracle Solaris 12 でのシステム復旧とクローンを参照してください。
次のリソースやプロパティーは、ソースホストとターゲットホストのゾーン構成で同じになっている必要があります。
capped-memory:physical の値として指定されたメモリー量
capped-memory:pagesize-policy プロパティーの値。
virtual-cpu:ncpus に指定された仮想 CPU の数
device リソースで指定されたディスクデバイスの共有ストレージ URI と id
net または anet リソースに指定された仮想 NIC のプロパティー
移行の前にターゲットホスト上でゾーンを構成した場合、そのターゲットホスト版のゾーン構成がゾーンのブートに使用されます。その構成が現在のゾーン構成と互換性がない場合は、エラーが返されます。また、ゾーンの暗号化鍵も一致する必要があります。暗号化鍵とホストデータを参照してください。
移行の前にターゲットホスト上でゾーンを構成しない場合は、ソースホストからゾーン構成がエクスポートされ、それがターゲットホストにインポートされます。移行を実行するユーザーは、Zone Configuration 権利プロファイルと solaris.zone.configuration 承認を持っていないと、ターゲットホスト上でゾーン構成を作成できません。詳細は、カーネルゾーン移行の実行に必要な権利を参照してください。
ターゲットホスト環境が同一でない場合は、次のガイドラインに従ってください。
システムの CPU が異なっている場合にウォーム移行またはライブ移行を実行するには、cpu-arch を移行クラスに設定する必要があります。カーネルゾーンを異なる CPU または OS バージョンを持つシステムに移行するための準備を参照してください。コールド移行では、このプロパティーを設定する必要はありません。
SPARC ベースシステムのソースホストとターゲットホストで異なるバージョンの Oracle Solaris が実行されている場合、両方のホストでサポート可能な Oracle Solaris 機能を指定するために host-compatible プロパティーを設定する必要がある場合があります。カーネルゾーンを異なる CPU または OS バージョンを持つシステムに移行するための準備を参照してください。コールド移行では、このプロパティーを設定する必要はありません。
ソースホストで Oracle Solaris 11.4 が実行され、ターゲットホストで Oracle Solaris 11.3 が実行されている場合は、pagesize-policy プロパティーをクリアする必要があります。メモリーのページサイズポリシーと物理メモリーについてを参照してください。
カーネルゾーンは、CPU は異なるがプラットフォームは同じであるような、ほかのホストシステムに移行できます。たとえば、カーネルゾーンを SPARC T4 サーバーから SPARC T7 サーバーに移行したり、Intel Nehalem ベースのサーバーから Haswell プロセッサに基づくサーバーに移行したりできます。これはクロス CPU 移行と呼ばれます。ゾーンを SPARC ベースの環境から x86 ベースの環境に移行することはできません。
カーネルゾーンを、ソースシステムとは異なるプロセッサを搭載したターゲットシステムに移行する場合は、ウォーム移行やライブ移行用にカーネルゾーンを一時停止する前に、ゾーンの準備を整えてリブートする必要があります。
SPARC ベースおよび Intel ベースのシステムの場合、cpu-arch リソースタイプを使用してプロセッサ機能の共通セットを定義する移行クラスを指定すれば、ソースシステムとターゲットシステムでゾーンを正しく動作させることができます。
AMD システムでは cpu-arch リソースタイプを使用できません。
SPARC ベースシステムでのみ、さらに host-compatible リソースタイプを使用して互換性レベルを設定することで、特定のプロセッサで有効化される Oracle Solaris 機能が、ソースホストとターゲットホストの大域ゾーン内と同じレベルでサポートされるようになります。host-compatible を設定しなかった場合、Oracle Solaris 11.2 の機能のみがゾーンに対して可視となります。Oracle Solaris 11.2 は、カーネルゾーンで実行可能なもっとも古いバージョンの Oracle Solaris ですが、SSM や DAX などの機能はサポートしていません。
たとえば、ソースホストのゾーン構成で host-compatible=native が設定され、ターゲットホストのゾーン構成で host-compatible=level1 が設定されていた場合、両方のホストで Oracle Solaris 11.4 が実行されていたとしても、ライブ移行は失敗します。
異なる SPARC アーキテクチャー間での移行のための、cpu-arch および host-compatible リソースタイププロパティーの詳細については、Oracle Solaris Zones Configuration Resources の Kernel Zone Migration Class and Host Compatibility Level (solaris-kz Only)を参照してください。
異なる Intel アーキテクチャー間での移行で cpu-arch リソースタイプを設定する方法の詳細については、Oracle Solaris Zones Configuration Resources の Cross-CPU Migration Classes (solaris-kz)を参照してください。
カーネルゾーンの cpu-arch プロパティーが移行クラスに設定されていない場合、カーネルゾーンの CPU アーキテクチャーはホストシステムと同じになります。
次の例は、カーネルゾーン kzone1 の cpu-arch および host-compatible リソースタイプを確認および設定する方法を示しています。
global$ zonecfg -z kzone1 zonecfg:kzone1> info cpu-arch host-compatible cpu-arch: generic host-compatible: native zonecfg:kzone1> set cpu-arch=migration-class1 zonecfg:kzone1> set host-compatible=adi zonecfg:kzone1> info cpu-arch host-compatible cpu-arch: migration-class1 host-compatible: adi zonecfg:kzone1> exit使用例 35 互換性のない SPARC CPU アーキテクチャーのためにライブ移行が失敗する
この例は、SPARC T4 ホスト global1 と SPARC T5 ホスト global2 の間で試行されたライブ移行を示しています。cpu-arch プロパティーは実際の CPU アーキテクチャーを示すデフォルト値を使用しています。cpu-arch プロパティーの値はホスト間で一貫性がないので、Oracle Solaris Zones Configuration Resources の Kernel Zone Migration Class and Host Compatibility Level (solaris-kz Only)で説明されている移行クラスに設定する必要があります。
global1$ zoneadm -z kzone1 migrate -n ssh://global2 zoneadm: zone 'kzone1': Importing zone configuration. zoneadm: zone 'kzone1': Attaching zone. zoneadm: zone 'kzone1': Booting zone in 'migrating-in' mode. zoneadm: zone 'kzone1': Checking migration compatibility. zoneadm: zone 'kzone1': configuration check failed: error: Cannot resume guest on target host. error: Guest's migration class is SPARC-T4, host's is SPARC-T5. Please check cpu-arch setting in zone config or in host LDom config. 2016-08-18 18:27:53 error: request failed: failed to create VM: Operation not supported使用例 36 Intel システム上のカーネルゾーン移行クラスの確認および設定
次の例は、カーネルゾーン kzone1 の cpu-arch リソースタイプを確認および設定する方法を示しています。
global$ zonecfg -z kzone1 zonecfg:kzone1> info cpu-arch cpu-arch: generic zonecfg:kzone1> set cpu-arch=migration-class4 zonecfg:kzone1> info cpu-arch cpu-arch: migration-class4 zonecfg:kzone1> exit global$ zoneadm kzone1 reboot使用例 37 互換性のない Intel CPU アーキテクチャーのためにライブ移行が失敗する
この例は、Haswell ベースのホスト global1 と Sandy Bridge ベースのホスト global2 の間でのライブ移行の試みを示しています。これは、Oracle Server X5-2 などから CPU として Sandy Bridge プロセッサを搭載した別のタイプのサーバーへの移行時に、cpu-arch を設定していなかった場合に発生します。cpu-arch プロパティーを、Oracle Solaris Zones Configuration Resources の Cross-CPU Migration Classes (solaris-kz)で説明されている移行クラスに設定する必要があります。
global1$ zoneadm -z kzone1 migrate -n ssh://global2 zoneadm: zone 'kzone1': Importing zone configuration. zoneadm: zone 'kzone1': Attaching zone. zoneadm: zone 'kzone1': Booting zone in 'migrating-in' mode. zoneadm: zone 'kzone1': Checking live migration compatibility. zoneadm: zone 'kzone1': configuration check failed: See /var/log/zones/kzone1.messages for debug output error: cannot resume as current CPU migration class value: sandybridge does not match the suspended value haswell 2016-08-15 01:05:55 error: request failed: failed to create VM: Invalid argument
デフォルトでは、移行メモリー転送データはソースホストとターゲットホスト間で転送されるときに、両方のホスト上でサポートされる暗号化方式を使用して暗号化されます。zoneadm migrate -c cipher を使用すると、特定の暗号化方式を指定したり、暗号化を無効にしたりできます。
zoneadm migrate の –c cipher オプションで使用できる値は、次のとおりです。
ソースホストとターゲットホストでサポートされている暗号化方式のいずれか 1 つを指定します。
ソースおよびターゲットホストでサポートされている暗号化方式を一覧表示します。
暗号化を無効にします。
暗号化方式を指定しなかった場合、ソースホストとターゲットホストの両方のサポートに基づいて 1 つの方式が自動的に選択されます。
使用例 38 2 つの信頼できるホスト間のライブ移行次の例は、ソースホスト global1 から宛先ホスト global2 へのカーネルゾーン kzone1 のライブ移行を示しています。
global1$ zoneadm -z kzone1 migrate root@global2 Password: zoneadm: zone 'kzone1': Using existing zone configuration on destination. zoneadm: zone 'kzone1': Attaching zone. zoneadm: zone 'kzone1': Booting zone in 'migrating-in' mode. zoneadm: zone 'kzone1': Checking migration compatibility. zoneadm: zone 'kzone1': Starting migration. zoneadm: zone 'kzone1': Suspending zone on source host. zoneadm: zone 'kzone1': Waiting for migration to complete. zoneadm: zone 'kzone1': Migration successful. zoneadm: zone 'kzone1': Halting and detaching zone on source host.使用例 39 ライブ移行のソースホストと宛先ホストの間で暗号化方式の互換性を確認する
次の例は、ソースホスト global1 から宛先ホスト global2 へのカーネルゾーン kzone1 のライブ移行を実行する試みを示しています。指定された暗号化方式 aes-128-cbc は、宛先ホストでサポートされていません。
global1$ zoneadm -z kzone1 migrate -c aes-128-cbc ssh://global2 zoneadm: zone 'kzone1': cipher aes-128-cbc not supported by destination zoneadm: zone 'kzone1': destination supports: aes-128-ccm aes-128-gcm使用例 40 ライブ移行のソースホストと宛先ホストの間でサポートされている使用可能な暗号化方式を一覧表示する
次の例は、カーネルゾーン kzone1 のライブ移行中に、サポートされている使用可能な暗号化方式を一覧表示します。ゾーンはソースホスト global1 から宛先ホスト global2 に移行されます。
global1$ zoneadm -z kzone1 migrate -c list root@global2 Password: source ciphers: aes-128-ccm aes-128-gcm none destination ciphers: aes-128-cbc # echo $? 0
global$ pfbash zonecfg -z kzone1 export -f /net/example/path/kzone1.cfg global$ zonecfg -z kzone1 -f /net/example/path/kzone1.cfg
ゾーンのブートを可能にする暗号化鍵については、暗号化鍵とホストデータを参照してください。