検索

10.6. コマンドラインインターフェイスを使用した仮想マシンの移行

download PDF

仮想マシンの現在のホストが不安定な場合や使用できない場合や、ホストワークロードを再分散する場合は、仮想マシンを別の KVM ホストに移行できます。次の手順では、このような移行のさまざまなシナリオの手順と例を示します。

前提条件

  • 移行元ホストと移行先ホストはいずれも KVM ハイパーバイザーを使用します。
  • 移行元ホストと移行先のホストは、ネットワーク経由で相互に通信できなければなりません。ping ユーティリティーを使用してこれを確認します。
  • 移行先ホストで以下のポートが開いていることを確認します。

    • ポート 22 は、SSH を使用して宛先ホストに接続するために必要です。
    • ポート 16509 は、TLS を使用して宛先ホストに接続するために必要です。
    • ポート 16514 は、TCP を使用して宛先ホストに接続するために必要です。
    • ポート 49152-49215 は、QEMU がメモリーおよびディスク移行データを転送するために必要です。
  • Red Hat が移行に対応できるようにするには、移行元ホストと移行先のホストが特定のオペレーティングシステムとマシンタイプを使用している必要があります。これを確認するには、Supported hosts for virtual machine migration を参照してください。
  • 仮想マシンは、移行先ホストの CPU 機能と互換性がある必要があります。これを確認するには、仮想マシン移行のホスト CPU の互換性の確認 を参照してください。
  • 移行する仮想マシンのディスクイメージが、ソースホストと宛先ホストの両方にアクセスできる別のネットワーク上の場所にある。オフラインマイグレーションの場合は任意ですが、実行中の仮想マシンの移行に必要になります。

    このような仮想マシンの共有ストレージを設定する手順は、Sharing virtual machine disk images with other hosts を参照してください。

  • 仮想マシンの実行中に移行する場合は、ネットワークの帯域幅が、仮想マシンがダーティーメモリーページを生成する速度を超える必要があります。

    ライブマイグレーションを開始する前に仮想マシンのダーティーページ速度を取得するには、次の手順を実行します。

    • 短期間、仮想マシンのダーティーページ生成速度を監視します。

      # virsh domdirtyrate-calc example-VM 30
    • 監視が終了したら、結果を取得します。

      # virsh domstats example-VM --dirtyrate
      Domain: 'example-VM'
        dirtyrate.calc_status=2
        dirtyrate.calc_start_time=200942
        dirtyrate.calc_period=30
        dirtyrate.megabytes_per_second=2

      この例では、仮想マシンが 1 秒あたり 2MB のダーティーメモリーページを生成しています。帯域幅が 2MB/s 以下のネットワーク上でこのような仮想マシンをライブマイグレーションしようとすると、仮想マシンを一時停止したり、ワークロードを低くしたりしないと、ライブマイグレーションが進行しません。

      ライブマイグレーションが正常に終了するように、Red Hat では、ネットワークの帯域幅が仮想マシンのダーティーページの生成速度を大幅に上回ることを推奨しています。

  • パブリックブリッジタップネットワークの既存の仮想マシンで移行を行う場合は、移行元ホストと移行先ホストが同じネットワークにある必要があります。そうでない場合は、移行後に仮想マシンのネットワークが機能しなくなります。
注記

calc_period オプションの値は、ワークロードとダーティーページ速度により異なる場合があります。いくつかの calc_period 値を試して、環境のダーティーページ速度に合わせた最適な期間を決定できます。

  • libvirtd サービスが有効で、実行していることを確認します。

    # systemctl enable --now libvirtd.service

手順

  1. virsh migrate コマンドで、移行の要件に適したオプションを指定します。

    1. 次のコマンドは、SSH トンネルを使用して、ローカルホストから example-destination ホストのシステム接続に example-VM-1 仮想マシンを移行します。仮想マシンは移行中も稼働し続けます。

      # virsh migrate --persistent --live example-VM-1 qemu+ssh://example-destination/system
    2. 次のコマンドを使用すると、ローカルホストで実行している example-VM-2 仮想マシンの設定を手動で調整し、その仮想マシンを example-destination ホストに移行できます。移行した仮想マシンが更新された設定を自動的に使用します。

      # virsh dumpxml --migratable example-VM-2 > example-VM-2.xml
      # vi example-VM-2.xml
      # virsh migrate --live --persistent --xml example-VM-2.xml example-VM-2 qemu+ssh://example-destination/system

      この手順は、たとえば、移行先ホストが別のパスを使用して仮想マシンの共有ストレージにアクセスする必要がある場合、または移行先ホストに固有の機能を設定する場合に役立ちます。

    3. 次のコマンドは、example-VM-3 仮想マシンを example-source ホストで一時停止して example-destination ホストに移行し、example-VM-3-alt.xml ファイルが提供する調整済みの XML 設定を使用するように当該仮想マシンに指示します。移行が終了すると、libvirt は移行先ホストで仮想マシンを再開します。

      # virsh migrate example-VM-3 qemu+ssh://example-source/system qemu+ssh://example-destination/system --xml example-VM-3-alt.xml

      移行後、仮想マシンはソースホストでシャットオフ状態になり、移行されたコピーはシャットダウン後に削除されます。

    4. 次の例では、シャットダウンされた example-VM-4 仮想マシンを example-source ホストから削除し、その設定を example-destination ホストに移動します。

      # virsh migrate --offline --persistent --undefinesource example-VM-4 qemu+ssh://example-source/system qemu+ssh://example-destination/system

      このタイプの移行では、仮想マシンのディスクイメージを共有ストレージに移動する必要がないことに注意してください。ただし、移行先ホストで仮想マシンを使用するには、仮想マシンのディスクイメージも移行する必要があります。以下に例を示します。

      # scp root@example-source:/var/lib/libvirt/images/example-VM-4.qcow2 root@example-destination:/var/lib/libvirt/images/example-VM-4.qcow2
    5. 次のコマンドは、example-VM-5 仮想マシンを example-destination ホストに移行し、複数の並列接続 (マルチファイル記述子 (マルチ FD) 移行とも呼ばれます) を使用します。マルチ FD 移行では、移行プロセスに利用可能なネットワーク帯域幅をすべて利用することで、移行を高速化できます。

      # virsh migrate --parallel --parallel-connections 4 <example-VM-5> qemu+ssh://<example-destination>/system

      この例では、4 つのマルチ FD チャネルを使用して example-VM-5 仮想マシンを移行します。利用可能なネットワーク帯域幅 10 Gbps ごとに 1 つのチャネルを使用することを推奨します。デフォルト値は 2 チャネルです。

  2. 移行が完了するまで待ちます。ネットワーク帯域幅、システムの負荷、仮想マシンのサイズによっては、プロセスに時間がかかる場合があります。virsh migrate--verbose オプションが使用されていないと、CLI はエラー以外の進捗インジケーターを表示しません。

    移行中は、virsh domjobinfo ユーティリティーを使用して移行の統計を表示できます。

検証

  • 移行先ホストで、使用可能な仮想マシンのリストを表示して、仮想マシンが移行されたかどうかを確認します。

    # virsh list
    Id      Name             State
    ----------------------------------
    10    example-VM-1      running

    移行がまだ実行中であれば、このコマンドは、paused の仮想マシンのリストを表示します。

トラブルシューティング

  • ターゲットのホストは、ネットワーク名や CPU タイプなど、移行した仮想マシンの XML 設定で使用される特定の値と互換性がない場合があります。そのため、仮想マシンがターゲットホストで起動できなくなります。この問題を修正するには、virsh edit コマンドを使用して問題のある値を更新します。値を更新した後、変更を適用するには仮想マシンを再起動する必要があります。
  • ライブマイグレーションの完了に時間がかかっている場合は、仮想マシンの負荷が高く、ライブマイグレーションを実行するために変更しているメモリーページ多すぎる可能性があります。この問題を修正するには、仮想マシンを停止して、ライブ以外への移行に変更します。

    # virsh suspend example-VM-1

関連情報

  • virsh migrate --help コマンド
  • virsh(1) man ページ
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.