Red Hat Training

A Red Hat training course is available for RHEL 8

9.5. コマンドラインインターフェースでの仮想マシンの移行

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

前提条件

  • 移行元ホストと移行先ホストはいずれも KVM ハイパーバイザーを使用します。
  • 移行元ホストと移行先のホストは、ネットワーク経由で相互に通信できなければなりません。ping ユーティリティーを使用してこれを確認します。
  • Red Hat が移行に対応できるようにするには、移行元ホストと移行先のホストが特定のオペレーティングシステムとマシンタイプを使用している必要があります。詳細を確認するには、「VM の移行互換性の表」を参照してください。
  • Red Hat は、移行する仮想マシンのディスクイメージをネットワーク上の別の場所に配置し、移行元ホストと移行先ホストの両方からアクセスできることを推奨します。オフラインマイグレーションの場合は任意ですが、実行中の仮想マシンの移行に必要になります。

    このような仮想マシンの共有ストレージを設定する手順は、「他のホスト間での仮想マシンディスクイメージの共有」 を参照してください。

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

手順

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

    # systemctl enable libvirtd.service
    # systemctl restart libvirtd.service
  2. virsh migrate コマンドで、移行の要件に適したオプションを指定します。

    • 以下では、wanderer1 仮想マシンをローカルホストから dest-example ホストのシステムセッションに移行します。仮想マシンは移行中も稼働し続けます。

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

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

検証

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

    # virsh list
    Id Name                 State
    ----------------------------------
    10 wanderer1              running

    移行がまだ実行中であれば、このコマンドは、一時停止 の仮想マシンの一覧を表示します。

トラブルシューティング

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

    # virsh suspend wanderer1

関連情報

  • その他のオプションおよび仮想マシンの移行例は、virsh migrate --help を使用するか、virsh migrate の man ページを参照してください。