Red Hat Training
A Red Hat training course is available for RHEL 8
9.6. コマンドラインインターフェイスでの仮想マシンの移行
仮想マシンの現在のホストが不安定な場合や使用できない場合や、ホストワークロードを再分散する場合は、仮想マシンを別の KVM ホストに移行できます。以下のセクションでは、このような移行のさまざまなシナリオの手順と例を説明します。
前提条件
- 移行元ホストと移行先ホストはいずれも KVM ハイパーバイザーを使用します。
-
移行元ホストと移行先のホストは、ネットワーク経由で相互に通信できなければなりません。
ping
ユーティリティーを使用してこれを確認します。 移行先ホストで以下のポートが開いていることを確認します。
- ポート 22 は、SSH を使用して宛先ホストに接続するために必要です。
- ポート 16509 は、TLS を使用して宛先ホストに接続するために必要です。
- ポート 16514 は、TCP を使用して宛先ホストに接続するために必要です。
- ポート 49152-49215 は、QEMU がメモリーおよびディスク移行データを転送するために必要です。
- Red Hat が移行に対応できるようにするには、移行元ホストと移行先のホストが特定のオペレーティングシステムとマシンタイプを使用している必要があります。これを確認するには、Supported hosts for virtual machine migration を参照してください。
- 仮想マシンは、移行先ホストの CPU 機能と互換性がある必要があります。これを確認するには、仮想マシン移行のホスト CPU の互換性の確認 を参照してください。
移行される VM のディスクイメージは、ソースホストと宛先ホストの両方にアクセスできる別のネットワーク上の場所にあります。オフラインマイグレーションの場合は任意ですが、実行中の仮想マシンの移行に必要になります。
このような仮想マシンの共有ストレージを設定する手順は、Sharing virtual machine disk images with other hosts を参照してください。
仮想マシンの実行中に移行する場合は、ネットワークの帯域幅が、仮想マシンがダーティーメモリーページを生成するレートを超える必要があります。
ライブマイグレーションを開始する前に仮想マシンのダーティーページレートを取得するには、次の手順を実行します。
短期間、仮想マシンのダーティーページ生成の速度を監視します。
# virsh domdirtyrate-calc vm-name 30
監視が終了したら、結果を取得します。
# virsh domstats vm-name --dirtyrate Domain: 'vm-name' dirtyrate.calc_status=2 dirtyrate.calc_start_time=200942 dirtyrate.calc_period=30 dirtyrate.megabytes_per_second=2
この例では、仮想マシンが 1 秒あたり 2MB のダーティーメモリーページを生成しています。帯域幅が 2MB/s 以下のネットワーク上でこのような仮想マシンをライブマイグレーションしようとすると、仮想マシンを一時停止したり、ワークロードを低くしたりしないと、ライブマイグレーションが進行しません。
ライブマイグレーションが正常に終了するように、Red Hat では、ネットワークの帯域幅が仮想マシンのダーティーページの生成速度を大幅に上回ることを推奨しています。
- パブリックブリッジタップネットワークの既存の仮想マシンで移行を行う場合は、移行元ホストと移行先ホストが同じネットワークにある必要があります。そうでない場合は、移行後に仮想マシンのネットワークが機能しなくなります。
libvirtd
サービスが有効で、実行していることを確認します。# systemctl enable --now libvirtd.service
手順
virsh migrate
コマンドで、移行の要件に適したオプションを指定します。以下では、SSH トンネルを使用して、ローカルホストから
dest-example
ホストのシステム接続に、wanderer1
仮想マシンを移行します。仮想マシンは移行中も稼働し続けます。# virsh migrate --persistent --live wanderer1 qemu+ssh://dest-example/system
次のコマンドでは、ローカルホストで実行している仮想マシン
wanderer2
の設定を手動で調整し、仮想マシンをdest-example
ホストに移行できます。移行した仮想マシンが更新された設定を自動的に使用します。# virsh dumpxml --migratable wanderer2 >wanderer2.xml # vi wanderer2.xml # virsh migrate --live --persistent --xml wanderer2.xml wanderer2 qemu+ssh://dest-example/system
この手順は、たとえば、移行先ホストが別のパスを使用して仮想マシンの共有ストレージにアクセスする必要がある場合、または移行先ホストに固有の機能を設定する場合に役立ちます。
以下では、
source-example
ホストからwanderer3
仮想マシンを停止して、dest-example
ホストに移行し、wanderer3-alt.xml
が提供する調整済みの XML 設定を使用するように指示します。移行が終了すると、libvirt
は移行先ホストで仮想マシンを再開します。# virsh migrate wanderer3 qemu+ssh://source-example/system qemu+ssh://dest-example/system --xml wanderer3-alt.xml
移行後、仮想マシンはソースホストでシャットオフ状態になり、移行されたコピーはシャットダウン後に削除されます。
以下では、
source-example
ホストからシャットダウンされたwanderer4
仮想マシンを削除し、その設定をdest-example
ホストに移動します。# virsh migrate --offline --persistent --undefinesource wanderer4 qemu+ssh://source-example/system qemu+ssh://dest-example/system
このタイプの移行では、仮想マシンのディスクイメージを共有ストレージに移動する必要がないことに注意してください。ただし、移行先ホストで仮想マシンを使用するには、仮想マシンのディスクイメージも移行する必要があります。以下に例を示します。
# scp root@source-example:/var/lib/libvirt/images/wanderer4.qcow2 root@dest-example:/var/lib/libvirt/images/wanderer4.qcow2
移行が完了するまで待ちます。ネットワーク帯域幅、システムの負荷、仮想マシンのサイズによっては、プロセスに時間がかかる場合があります。
virsh migrate
で--verbose
オプションが使用されていないと、CLI はエラー以外の進捗インジケーターを表示しません。移行中は、
virsh domjobinfo
ユーティリティーを使用して移行の統計を表示できます。
検証
移行先ホストで、使用可能な仮想マシンの一覧を表示して、仮想マシンが移行されたかどうかを確認します。
# virsh list Id Name State ---------------------------------- 10 wanderer1 running
移行がまだ実行中であれば、このコマンドは、
paused
の仮想マシンの一覧を表示します。
トラブルシューティング
-
ターゲットのホストは、ネットワーク名や CPU タイプなど、移行した仮想マシンの XML 設定で使用される特定の値と互換性がない場合があります。そのため、仮想マシンがターゲットホストで起動できなくなります。この問題を修正するには、
virsh edit
コマンドを使用して問題のある値を更新します。値を更新した後、変更を適用するには仮想マシンを再起動する必要があります。 ライブマイグレーションの完了に時間がかかっている場合は、仮想マシンの負荷が高く、ライブマイグレーションを実行するために変更しているメモリーページ多すぎる可能性があります。この問題を修正するには、仮想マシンを停止して、ライブ以外への移行に変更します。
# virsh suspend wanderer1
関連情報
-
virsh migrate --help
コマンド -
virsh
の man ページ