この章では、今回のリリースの LogicalDomains1.3 ソフトウェア以降で、ホストマシン間で論理ドメインを移行する方法について説明します。
この章の内容は次のとおりです。
論理ドメインの移行を行うと、ホストマシン間で論理ドメインを移行できます。移行が開始されるホストはソースマシン、ドメインの移行先のホストはターゲットマシンと呼ばれます。同様に、移行が開始されてから移行が進行中の間、移行されるドメインはソースドメイン、ターゲットマシン上に作成されるドメインのシェルはターゲットドメインと呼ばれます。
ソースマシン上の Logical Domains Manager はドメインの移行要求を受け入れ、ターゲットマシン上で動作している Logical Domains Manager とのセキュリティー保護されたネットワーク接続を確立します。この接続が確立されると、移行が行われます。移行自体は、複数のフェーズに分解できます。
フェーズ 1: ターゲットホストで動作している Logical Domains Manager との接続後、ソースマシンおよびソースドメインに関する情報がターゲットホストに転送されます。この情報を使用して、移行が可能かどうかを判断する一連のチェックが実行されます。チェックは、ソースドメインの状態によって異なります。たとえば、ソースドメインがアクティブになっている場合と、ドメインがバインドされているかアクティブでない場合では、実行される一連のチェックが異なります。
フェーズ 2: フェーズ 1 のすべてのチェックに合格すると、ソースマシンおよびターゲットマシンで移行の準備が行われます。ソースドメインがアクティブな場合は、この準備に CPU の数を 1 つに縮小する処理と、ドメインの一時停止が含まれます。ターゲットマシンでは、ソースドメインを受け入れるためにドメインが作成されます。
フェーズ 3: アクティブなドメインの場合、次のこのフェーズでは、ドメインのすべての実行時の状態情報がターゲットに転送されます。この情報は、ハイパーバイザから取得されます。ターゲットで、状態情報がハイパーバイザにインストールされます。
フェーズ 4: ハンドオフが行われます。すべての状態情報が転送されたあと、ソースがアクティブな場合はターゲットドメインが実行を再開するときにハンドオフが行われ、ソースドメインが削除されます。この時点で、ターゲットドメインは唯一の動作中のドメインになります。
移行が行われるためには、ソースマシンとターゲットマシンの両方で互換性のあるソフトウェアが動作している必要があります。
ソースマシンとターゲットマシンの両方のハイパーバイザに、ドメインの移行をサポートするファームウェアが必要です。
次のエラーが発生した場合、ソースマシンまたはターゲットマシンのいずれかのシステムファームウェアのバージョンが適切ではありません。
System Firmware version on <downrev machine> does not support Domain Migration Domain Migration of LDom <source domain> failed |
互換性のあるバージョンの Logical Domains Manager が両方のマシンで動作している必要があります。
移行機能は、Logical Domains 1.1 ソフトウェアおよび対応するファームウェアではじめてリリースされました。プラットフォームの最新のファームウェアについては、『Logical Domains 1.3 リリースノート』 を参照してください。
移行処理は 2 つのマシンで実行されるため、ユーザーはソースホストとターゲットホストの両方で認証される必要があります。特に、スーパーユーザー以外のユーザーは、両方のマシンで file_dac_read 特権と file_dac_search 特権を持ち、solaris.ldoms.read 認証と solaris.ldoms.write 認証を受ける必要があります。「ドメインの移行に必要な特権の追加」 を参照してください。
移行に ldm コマンド行インタフェースを使用すると、ターゲットホストでの認証に任意の代替ユーザー名を指定できます。この代替ユーザー名を指定しない場合、移行コマンドを実行するユーザーの名前が使用されます。どちらの場合にも、-p オプションを使用して自動的な移行を開始しないかぎり、ターゲットマシンのパスワードの入力を求めるプロンプトが表示されます。
LogicalDomains1.3 ソフトウェアを使用してアクティブなドメインの移行を行うには、ソース論理ドメイン、ソースマシン、およびターゲットマシンに特定の一連の要件および制限が課せられます。以降の節では、各リソースタイプに対するこれらの要件および制限について説明します。
ソースシステムおよびターゲットシステムの primary ドメインに暗号化装置が割り当てられていると、移行処理が高速になります。Logical Domains 1.3 では、ソースシステムとターゲットシステムの両方の primary ドメインに仮想 CPU を追加することで、移行を高速に実行できます。
次に、移行を実行する場合の CPU に対する要件および制限を示します。
ソースマシンおよびターゲットマシンには、同じ周波数で動作する同じタイプのプロセッサが搭載されている必要があります。
ターゲットマシンには、ドメインによって使用されるストランドの数に対応できる十分な空きストランドが存在する必要があります。また、移行されるドメインにはフルコアが割り当てられている必要があります。ソースのストランドの数がフルコアより少ない場合、移行されたドメインの再起動後までドメインに追加のストランドを使用することはできません。
移行後、ターゲットドメインが再起動されるまで、ターゲットドメインでの CPU の動的再構成 (DR) は無効になります。再起動が完了すると、そのドメインでの CPU の DR が可能になります。
移行前にドメインが 1 つのストランドに縮小できるように、ソースドメインのストランドを 1 つのみにするか、またはゲスト OS で CPU の DR をサポートしている必要があります。ゲストドメインが CPU の DR による削除が失敗する状態の場合、移行の試みも失敗することがあります。たとえば、ゲストドメイン内の CPU にバインドされた処理、またはソース論理ドメインに構成されたプロセッサセットによって、移行処理が失敗する可能性があります。
ターゲットマシン上に、ソースドメインの移行に対応できる十分な空きメモリーが存在する必要があります。さらに、移行が終了するまで次に示すいくつかのプロパティーが維持される必要があります。
同じ数、同じサイズのメモリーブロックを作成できる必要があります。
メモリーブロックの物理アドレスが一致する必要はありませんが、移行が終了するまで同じ実アドレスが維持される必要があります。
ターゲットマシンには、ソースドメインの移行に対応できる十分な空きメモリーが存在する必要があります。また、ターゲットマシンの使用可能メモリーのレイアウトとソースドメインのメモリーのレイアウトに互換性がある必要があります。互換性がないと、移行は失敗します。
特に、ターゲットマシンのメモリーが複数の小さいアドレス範囲に分割されているのに、ソースドメインには単一の大きいアドレス範囲が必要な場合、移行は失敗します。次の例は、この場合について示したものです。ターゲットドメインの 2 つのメモリーブロックに、2G バイトの空きメモリーがあるとします。
# ldm list-devices memory MEMORY PA SIZE 0x108000000 1G 0x188000000 1G |
ソースドメイン ldg-src にも 2G バイトの空きメモリーがありますが、これは単一のメモリーブロックに配置されています。
# ldm list -o memory ldg-src NAME ldg-src MEMORY RA PA SIZE 0x8000000 0x208000000 2G |
このようなメモリーレイアウトの場合、移行は失敗します。
# ldm migrate-domain ldg-src dt212-239 Target Password: Unable to bind 2G memory region at real address 0x8000000 Domain Migration of LDom ldg-src failed |
物理デバイスが関連付けられている仮想デバイスは移行できます。ただし、物理デバイスに直接アクセスするドメインは移行できません。たとえば、I/O ドメインは移行できません。
ソースドメインが使用するすべての仮想 I/O (VIO) サービスが、ターゲットマシン上で使用可能である必要があります。つまり、次に示す状態になっている必要があります。
ソース論理ドメインで使用されている各論理ボリュームは、ターゲットホスト上でも使用可能で、同じストレージを参照している必要があります。
ソースによって起動デバイスとして使用されている論理ボリュームがターゲット上に存在するにもかかわらず、同じストレージを参照していない場合、移行は正常に実行されたように見えますが、マシンから起動デバイスにアクセスできないため、このマシンは使用できません。ドメインを停止し、構成の問題を修正したあとで、ドメインを再起動する必要があります。この操作を行わない場合、ドメインが矛盾した状態のままになる可能性があります。
ソースドメインの各仮想ネットワークデバイスに対して、ターゲットホスト上に仮想ネットワークスイッチが存在し、ソースホスト上でそのデバイスが接続されている仮想ネットワークスイッチと同じ名前が指定されている必要があります。
たとえば、ソースドメインの vnet0 が switch-y という名前の仮想スイッチサービスに接続されていた場合、ターゲットホスト上に switch-y という名前の仮想スイッチサービスを提供する論理ドメインが存在する必要があります。
これらのスイッチが同じネットワークに接続されていなくても移行は実行されますが、スイッチが同じネットワークに接続されていない場合、移行されたドメインでネットワークの問題が発生する可能性があります。
ソースドメインによって使用されていた、自動的に割り当てられる範囲内の MAC アドレスは、ターゲットホストで使用可能である必要があります。
仮想コンソール端末集配信装置 (vcc) サービスがターゲットホスト上に存在し、1 つ以上のポートが空いている必要があります。移行時には明示的なコンソール制約は無視されます。ターゲットドメイン名をコンソールグループとして使用し、制御ドメインの最初の vcc デバイスで使用可能なポートを使用して、ターゲットドメインのコンソールが作成されます。デフォルトのグループ名と競合する場合、移行は失敗します。
NIU ハイブリッド I/O リソースを使用するドメインを移行できます。NIU ハイブリッド I/O リソースを指定する制約は、論理ドメインの必須要件ではありません。使用可能な NIU リソースが存在しないマシンにこのようなドメインを移行した場合、制約は維持されますが、この制約が満たされることはありません。
Logical Domains 1.3 では、暗号化装置をバインドしたゲストドメインが暗号化装置の動的再構成 (DR) をサポートしているオペレーティングシステムを実行している場合、そのゲストドメインを移行できます。
次の Solaris OS バージョンでは、暗号化装置の DR がサポートされています。
Solaris 10 10/09 OS 以上
OpenSolaris 2009.06 OS 以上
Solaris 10 5/08 OS とパッチ ID 142245-01 以上
移行の開始時点で、Logical Domains Manager は、ソースドメインが暗号化装置の DR をサポートしているかどうかを判断します。サポートしている場合、Logical Domains Manager はドメインからの暗号化装置の削除を試行します。移行の完了後、移行したドメインに暗号化装置が再度追加されます。
ターゲットマシンで暗号化装置の制約を満たすことができない場合でも、移行処理は正常に完了する場合があります。このような場合、ドメインの暗号化装置の数が移行処理前よりも減少する可能性があります。
ソースホストまたはターゲットホスト上でアクティブな遅延再構成処理が実行されている場合、移行を開始できません。移行の進行中、遅延再構成処理はブロックされます。
マシンでの移行が終了するまで、移行中のドメインのマシン記述 (MD) が変更されるような操作はブロックされます。このような操作には、このドメイン自体でのすべての操作のほか、マシン上のほかのドメインでのバインド、停止などの操作も含まれます。
バインドされたドメインまたはアクティブでないドメインは移行時に実行されていないため、アクティブなドメインを移行する場合より制約が少なくなります。
バインドされたドメインを移行するには、ターゲットがソースドメインの CPU、メモリー、および入出力の制約を満たす必要があります。満たしていないと、移行は失敗します。アクティブでないドメインの移行には、このような要件はありません。ただし、バインドが行われた場合、ターゲットはそのドメインの制約を満たす必要があります。満たしていないと、ドメインのバインドは失敗します。
バインドされたドメインまたはアクティブでないドメインは、異なるタイプのプロセッサが動作しているマシンおよび異なる周波数で動作しているマシン間で移行できます。
ゲストの Solaris OS イメージで、ターゲットマシン上のプロセッサタイプがサポートされている必要があります。
アクティブでないドメインの場合、仮想入出力 (VIO) 制約に対して実行されるチェックはありません。そのため、VIO サーバーが存在しなくても移行は正常に実行されます。アクティブでないドメインと同様に、そのドメインがバインドされる時点では、VIO サーバーが存在し、使用可能になっている必要があります。
migrate-domain サブコマンドに -n オプションを指定すると、移行のチェックが実行されますが、ソースドメインの移行は行われません。満たしていない要件がある場合、エラーとして報告されます。これによって、実際に移行を試行する前に構成エラーを修正できます。
論理ドメインには動的な性質があるため、予行演習が正常に実行されても移行が失敗したり、逆に予行演習が失敗しても移行が成功する可能性があります。
移行が進行中の場合、ソースドメインとターゲットドメインでは状態出力での表示が異なります。ldm list コマンドの出力には、移行中のドメインの状態が表示されます。
FLAGS フィールドの 6 列目は、次のいずれかの値になります。
ソースドメインの場合は、移行のソースであることを示す s が表示されます。
ターゲットドメインの場合は、移行のターゲットであることを示す t が表示されます。
ユーザーによる介入を必要とするエラーが発生した場合、e が表示されます。
次の出力は、ldg-src が移行のソースドメインであることを示しています。
# ldm list ldg-src NAME STATE FLAGS CONS VCPU MEMORY UTIL UPTIME ldg-src suspended -n---s 1 1G 0.0% 2h 7m |
次の出力は、ldg-tgt が移行のターゲットドメインであることを示しています。
# ldm list ldg-tgt NAME STATE FLAGS CONS VCPU MEMORY UTIL UPTIME ldg-tgt bound -----t 5000 1 1G |
長形式の状態出力では、移行に関する詳細情報が表示されます。ソースの場合は、完了した処理の割合とともに、ターゲットホストとターゲットドメイン名が表示されます。同様に、ターゲットの場合は、完了した処理の割合とともに、ソースホストとソースドメイン名が表示されます。
# ldm list -o status ldg-src NAME ldg-src STATUS OPERATION PROGRESS TARGET migration 17% t5440-sys-2 |
移行が開始されたあとに KILL 信号によって ldm コマンドが中断されると、移行は終了します。ターゲットドメインは削除され、ソースドメインがアクティブだった場合は再開されます。ldm コマンドの制御シェルが失われた場合、移行はバックグラウンドで続行されます。
移行処理は、ldm cancel-operation コマンドを使用して、外部から取り消すこともできます。これによって、進行中の移行が終了され、ソースドメインはアクティブなドメインとして再開されます。ldm cancel-operation コマンドはソースシステムから開始するようにしてください。あるシステム上で実行される移行関連のコマンドは、そのシステムから開始された移行処理に影響を及ぼします。システムがターゲットシステムの場合、移行処理は制御できません。
移行が開始されたあとに ldm(1M) プロセスを中断しても、移行に影響を与えるのはソースマシンおよびターゲットマシン上の Logical Domains Manager デーモン (ldmd) であるため、処理は中断されません。ldm プロセスは、戻る前に、移行が完了したことを示す ldmd からの信号を待機します。
ソースからターゲットへのすべての実行時の状態情報の送信が完了してから、ドメインが再開されたことをターゲットが認識する前にネットワーク接続が切断された場合、移行処理が終了され、ソースがエラー状態になります。これは、移行が正常に完了したかどうかを判断するためにユーザーによる介入が必要であることを示しています。このような状況では、次の手順を実行します。
ターゲットドメインが正常に再開されているかどうかを判断します。ターゲットドメインは次の 2 つのいずれかの状態になります。
移行が正常に完了した場合、ターゲットドメインは通常の状態になっています。
移行が失敗した場合、ターゲットではターゲットドメインがクリーンアップされ、削除されます。
ターゲットが再開されている場合、エラー状態のソースドメインを安全に削除できます。ターゲットが存在しない場合、ソースドメインはまだマスターバージョンのドメインであり、回復する必要があります。これを行うには、ソースマシンで取り消しコマンドを実行します。これによって、エラー状態がクリアーされ、ソースドメインが元の状態に復元されます。
Logical Domains 1.3 ソフトウェアのリリースまでは、移行は対話型の処理でした。移行を開始すると、ターゲットマシンに使用するパスワードの入力を求めるプロンプトが表示されていました。Logical Domains 1.3 では、ldm migrate-domain -p filename コマンドを使用して、自動化された移行処理を開始できます。
-p オプションの引数として指定するファイル名には、次のプロパティーが必要です。
ファイルの最初の行にパスワードが指定されている必要があります
パスワードは平文である必要があります
パスワードの長さは 256 文字以下である必要があります
パスワード末尾の改行文字と最初の行のあとのすべての行は無視されます。
ターゲットマシンのパスワードを格納するファイルは、適切にセキュリティー保護する必要があります。この方法でパスワードを格納する場合は、ファイルのアクセス権の設定が 400 または 600 であること、つまり root 所有者 (特権ユーザー) のみがファイルの読み取りまたは書き込みを許可されていることを確認します。
例 8–2 に、ldg1 というドメインを t5440-sys-2 というマシンに移行する方法を示します。
# ldm migrate-domain ldg1 t5440-sys-2 Target Password: |
ターゲットのパスワードの入力を要求されることなく、この移行を自動的に実行するには、次のコマンドを使用します。
# ldm migrate-domain -p pfile ldg1 t5440-sys-2 |
-p オプションには、引数としてファイル名を指定します。指定するファイルには、ターゲットのスーパーユーザーパスワードを指定します。この例では、pfile はターゲット t5440-sys-2 のパスワードを格納しています。
例 8–3 に示すように、移行処理の一環としてドメインの名前を変更できます。この例では、ldg-src がソースドメインで、移行処理の一環として、ターゲットマシン (t5440-sys-2) 上でこのドメインの名前を ldg-tgt に変更しています。また、ターゲットマシンでのユーザー名 (root) を明示的に指定しています。
# ldm migrate ldg-src root@t5440-sys-2:ldg-tgt Target Password: |
例 8–4 に、ターゲットドメインで移行がサポートされていない場合、すなわち Version 1.1 より前のバージョンの LDoms を実行している場合に表示される失敗メッセージの例を示します。
# ldm migrate ldg1 t5440-sys-2 Target Password: Failed to establish connection with ldmd(1m) on target: t5440-sys-2 Check that the 'ldmd' service is enabled on the target machine and that the version supports Domain Migration. Check that the 'xmpp_enabled' and 'incoming_migration_enabled' properties of the 'ldmd' service on the target machine are set to 'true' using svccfg(1M). |
例 8–5 に、移行が進行中のターゲットドメインの状態を取得する方法を示します。この例では、ソースマシンは t5440-sys-1 です。
# ldm list -o status ldg-tgt NAME ldg-tgt STATUS OPERATION PROGRESS SOURCE migration 55% t5440-sys-1 |
例 8–6 に、移行が進行中のソースドメインの解析可能な状態を取得する方法を示します。この例では、ターゲットマシンは t5440-sys-2 です。
# ldm list -o status -p ldg-src VERSION 1.3 DOMAIN|name=ldg-src| STATUS |op=migration|progress=42|error=no|target=t5440-sys-2 |