6.14. ホスト間における仮想マシンの移行
ライブマイグレーションは、サービスを停止せずに物理ホスト間で稼働中の仮想マシンを移行する機能を提供します。新しい物理ホストに移行される間、仮想マシンは電源オンの状態を維持し、ユーザーアプリケーションは継続的に実行されます。バックグラウンドでは、仮想マシンの RAM が移行元のホストから移行先のホストにコピーされます。ストレージおよびネットワークの接続性は変更されません。
vGPU を使用している仮想マシンを別のホストに移行することはできません。
6.14.1. ライブマイグレーションの前提条件
ライブマイグレーションを使用すると、仮想マシンをシームレスに移行して、数多くの一般メンテナンスタスクをサポートすることができます。ライブマイグレーションを使用する前に、ライブマイグレーションを適切にサポートするように Red Hat Virtualization 環境を正しく設定しておく必要があります。
仮想マシンのライブマイグレーションを正常に実行するには、少なくとも以下の前提条件が満たされている必要があります。
- CPU の互換性を確保するために、移行元と移行先のホストが同じクラスターのメンバーであること。
一般的に、異なるクラスター間での仮想マシンのライブマイグレーションは推奨されません。
-
移行元と移行先のホストが
Up
の状態であること。 - 移行元と移行先のホストが同じ仮想ネットワークと VLAN にアクセス可能であること。
- 移行元と移行先のホストが仮想マシンの属するデータストレージドメインにアクセス可能であること。
- 移行先ホストの CPU に、仮想マシンの要件に対応するのに十分な能力があること。
- 移行先ホストの RAM に、仮想マシンの要件に対応するのに十分な空き容量があること。
-
移行する仮想マシンに
cache!=none
カスタムプロパティーが設定されていないこと。
ライブマイグレーションは管理ネットワークを使用して実行され、ホスト間で大量のデータが転送されます。同時に移行を行うことにより、管理ネットワークが飽和状態となってしまう可能性があります。最高のパフォーマンスを得るために、Red Hat では管理、ストレージ、ディスプレイ、仮想マシンデータ用に別々の論理ネットワークを作成し、ネットワーク飽和のリスクを最小限に抑えることを推奨します。
移行中にネットワークが枯渇する可能性を低減するための、SR-IOV 対応 vNIC を持つ仮想マシンの設定
仮想マシンの vNIC が SR-IOV 対応ホスト NIC の仮想機能 (VF) に直接接続される場合、仮想マシンをさらに設定して、ライブマイグレーション中にネットワークが枯渇する可能性を低減することができます。
- 移行先のホストで VF が利用可能な状態にする。
- パススルー vNIC のプロファイルで、パススルー および 移行可能 オプションを設定する。『管理ガイド』の「仮想 NIC プロファイルでのパススルーの有効化」を参照してください。
- 仮想マシンのネットワークインターフェースのホットプラグを有効にする。
- 移行中に仮想マシンのネットワーク接続を維持するために、パススルー vNIC に加えてバックアップの VirtIO vNIC を仮想マシンに設定する。
-
ボンディングを設定する前に、VirtIO vNIC の
ネットワークフィルターなし
オプションを設定する。『管理ガイド』の「仮想マシンインターフェースのプロファイルウィンドウの設定」を参照してください。 パススルー vNIC をプライマリーインターフェースとし、両方の vNIC を仮想マシンの
active-backup
ボンディングのスレーブとして追加する。ボンディングおよび vNIC プロファイルは、以下のいずれかの構成とすることができます。
推奨: ボンディングで
fail_over_mac=active
と設定せず、VF vNIC をプライマリースレーブとする。VirtIO vNIC プロファイルの MAC スプーリングフィルターを無効にすると、VirtIO vNIC をパススルーするトラフィックは VF vNIC MAC アドレスを使用するので、トラフィックがドロップされなくなります。『RHEL 7 仮想化の導入および管理ガイド』の「ネットワークのフィルター機能の適用」を参照してください。
ボンディングで
fail_over_mac=active
と設定する。このフェイルオーバーポリシーでは、ボンディングの MAC アドレスは常にアクティブスレーブの MAC アドレスになります。フェイルオーバー中、仮想マシンの MAC アドレスが変わり、トラフィックに若干の中断が発生します。
6.14.2. ライブマイグレーションの最適化
仮想マシンのライブマイグレーションは、リソースを集中的に使用する操作となる場合があります。以下の 2 つのオプションは、環境内の全仮想マシンに対してグローバルで設定するか、クラスターレベル、または個別の仮想マシンレベルで設定することができます。
移行の自動収束 オプションでは、仮想マシンのライブマイグレーション中に自動収束を使用するかどうかを設定することができます。ワークロードが大きくサイズの大きい仮想マシンは、ライブマイグレーション中に到達する転送速度よりも早くメモリーをダーティーな状態にして、移行を収束できないようにする可能性があります。QEMU の自動収束機能は、仮想マシンの移行を強制的に収束することができます。移行が収束されていない場合には、QEMU が自動的に検出して、仮想マシンの vCPU の使用率を制限します。
移行時の圧縮の有効化 オプションでは、仮想マシンのライブマイグレーション中に移行の圧縮を使用するかどうかを設定することができます。この機能は、Xor Binary Zero Run-Length-Encoding を使用して、仮想マシンのダウンタイム、およびメモリーの書き込みの多いワークロードを実行する仮想マシンやメモリー更新パターンがスパースなアプリケーションの合計ライブマイグレーション時間を減らします。
デフォルトでは、どちらのオプションもグローバルに無効化されています。
仮想マシンの移行の自動収束および移行時の圧縮の設定
グローバルレベルで最適化設定を行います。
グローバルレベルで自動収束を有効化します。
# engine-config -s DefaultAutoConvergence=True
グローバルレベルで移行の圧縮を有効化します。
# engine-config -s DefaultMigrationCompression=True
ovirt-engine サービスを再起動して変更を有効にします。
# systemctl restart ovirt-engine.service
クラスターレベルで最適化設定を行います。
- → をクリックし、クラスターを選択します。
- をクリックします。
- 移行ポリシー タブをクリックします。
- 移行の自動収束 リストから グローバル設定から継承する、自動収束、または 自動収束しない を選択します。
- 移行時の圧縮の有効化 リストから グローバル設定から継承する、圧縮、または 圧縮しない を選択します。
- をクリックします。
仮想マシンレベルで最適化設定を行います。
- → をクリックして仮想マシンを選択します。
- をクリックします。
- ホスト タブをクリックします。
- 移行の自動収束 リストから クラスター設定から継承する、自動収束、または 自動収束しない を選択します。
- 移行時の圧縮の有効化 リストから クラスター設定から継承する、圧縮、または 圧縮しない を選択します。
- をクリックします。
6.14.3. ゲストエージェントのフック
フックとは、以下に示す主要イベントが生じた時に、仮想マシン内のアクティビティーのトリガーとなるスクリプトのことです。
- 移行前
- 移行後
- ハイバネーション前
- ハイバネーション後
フック設定のベースディレクトリーは、Linux システムでは /etc/ovirt-guest-agent/hooks.d
、Windows システムでは C:\Program Files\Redhat\RHEV\Drivers\Agent
です。
イベントごとに、対応するサブディレクトリー (before_migration
および after_migration
、before_hibernation
および after_hibernation
) があり、そのディレクトリー内のファイルまたはシンボリックリンクがすべて実行されます。
Linux システムの実行ユーザーは ovirtagent
です。スクリプトで root
のパーミッションが必要な場合には、フックスクリプトの作成者により、権限を昇格させる必要があります。
Windows システムの実行ユーザーは System Service
ユーザーです。
6.14.4. 仮想マシンの自動移行
Red Hat Virtualization Manager は、ホストがメンテナンスモードに切り替わると、全仮想マシンのライブマイグレーションを自動的に開始します。各仮想マシンの移行先ホストは、仮想マシンが移行する際に評価され、クラスター全体に負荷が分散されます。
Manager は、スケジューリングポリシーに対応した負荷分散もしくはパワーセービングのレベルを維持する目的で、仮想マシンのライブマイグレーションを自動的に開始します。デフォルトでは、スケジューリングポリシーは定義されていませんが、管理者は自分の環境に最も適したスケジューリングポリシーを指定することを推奨します。また、必要に応じて、特定の仮想マシンの自動または手動のライブマイグレーションを無効にすることもできます。
6.14.5. 仮想マシンの自動移行の防止
Red Hat Virtualization Manager では、仮想マシンの自動移行を無効にすることができます。また、仮想マシンが特定のホスト上でのみ実行されるように設定すると、手動での仮想マシン移行も無効にすることが可能です。
自動移行を無効にし、仮想マシンが特定のホストで実行されるように要求する機能は、Red Hat High Availability や Cluster Suite などのアプリケーション高可用性製品を使用している場合に有用です。
仮想マシンの自動移行の防止
- → をクリックして仮想マシンを選択します。
- をクリックします。
- ホスト タブをクリックします。
実行を開始するホスト のラジオボタンで、仮想マシンをクラスター内の任意のホストで実行するか、特定のホストまたはホストグループで実行するかを指定します。
警告仮想マシンを特定の 1 台のホストに明示的に割り当て、移行を無効にすると、Red Hat Virtualization の高可用性機能は使用できません (その逆も同様)。特定の 1 台のホストに割り当てられた仮想マシンを高可用性にするには、Red Hat High Availability など、外部の高可用性製品を使用する必要があります。この制約は、複数の特定ホストに割り当てられている仮想マシンには適用されません。
重要仮想マシンにホストデバイスが直接アタッチされ、異なるホストが指定された場合には、以前のホストのデバイスは、仮想マシンから自動的に削除されます。
- 移行モード のドロップダウンリストから 手動の移行のみを許可する または 移行を許可しない を選択します。
- オプションで カスタム移行ダウンタイムを使用 チェックボックスを選択して、ミリ秒単位で値を指定します。
- をクリックします。
6.14.6. 手動での仮想マシン移行
実行中の仮想マシンを指定のホストクラスター内の任意のホストにライブマイグレーションすることができます。仮想マシンのライブマイグレーションによってサービスが中断することはありません。別のホストへの仮想マシン移行は、特定のホストが過負荷の状態になった場合に特に役立ちます。ライブマイグレーションの前提条件については、「ライブマイグレーションの前提条件」を参照してください。
ホストをメンテナンスモードに設定すると、ホストで実行中の仮想マシンは自動的に同じクラスター内の別のホストに移行されます。これらの仮想マシンを手動で移行する必要はありません。
一般的に、異なるクラスターの間で仮想マシンをライブマイグレーションすることは推奨されません。現在サポートされているユースケースについての説明は、「[RHEV 3.5] Upgrading RHEL 6/RHEV-H 6 Hosts to RHEL 7/RHEV-H 7 Host without VM downtime」に記載しています。
手動での仮想マシン移行
- → をクリックして、実行中の仮想マシンを選択します。
- をクリックします。
ラジオボタンを使用して、ホストを自動選択 を選択するか、移行先のホストを選択 を選択してドロップダウンリストでホストを指定します。
注記ホストを自動選択 オプションを選択すると、システムは、スケジューリングポリシーで設定されている負荷分散および電源管理のルールに従って、仮想マシンの移行先ホストを決定します。
- をクリックします。
移行中には 移行 のプログレスバーに進捗状況が表示されます。仮想マシンの移行が完了すると、ホスト のコラムが更新され、仮想マシンが移行した先のホストが表示されます。
6.14.7. 移行優先度の設定
Red Hat Virtualization Manager は、一定のホストからの仮想マシン移行の同時要求をキューに入れます。負荷分散プロセスが毎分実行されます。移行イベントにすでに関与しているホストは、その移行イベントが完了するまで、移行サイクルには含まれません。移行要求がキューにあり、その要求に対応できるホストがクラスター内にある場合には、そのクラスターを対象に定義されている負荷分散ポリシーに従って、移行イベントがトリガーされます。
移行キューの順序は、ミッションクリティカルな仮想マシンを他より先に移行するように設定するなど、仮想マシンごとに優先度を設定して変更することができます。移行は優先度をベースに順番に行われ、最も優先度の高い仮想マシンが先に移行されます。
移行優先度の設定
- → をクリックして仮想マシンを選択します。
- をクリックします。
- 高可用性 タブを選択します。
- 優先度 のドロップダウンリストから、低、中、または 高 を選択します。
- をクリックします。
6.14.8. 実行中の仮想マシンの移行キャンセル
仮想マシンの移行に予想以上の時間がかかっている場合には、全仮想マシンがどこで実行されているかを確認した上で環境に変更を加えます。
実行中の仮想マシンの移行キャンセル
- 移行中の仮想マシンを選択します。Migrating From のステータスで表示されます。 → に
- → をクリックします。
仮想マシンのステータスが Migrating From から Up に変わります。
6.14.9. 高可用性仮想サーバーの自動移行におけるイベントおよびログ通知
高可用性機能により仮想サーバーが自動的に移行された場合には、その自動移行の詳細情報は、トラブルシューティングを行う際に役立つように イベント タブおよび engine.log に記録されます。以下はその例です。
例6.1 Web 管理ポータルのイベントタブの通知
Highly Available Virtual_Machine_Name failed. It will be restarted automatically.
Virtual_Machine_Name was restarted on Host Host_Name
例6.2 Manager engine.log 内の通知
このログは、Red Hat Virtualization Manager の /var/log/ovirt-engine/engine.log で確認することができます。
Failed to start Highly Available VM. Attempting to restart. VM Name: Virtual_Machine_Name, VM Id:_Virtual_Machine_ID_Number_