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


仮想マシンの現在のホストが不安定な場合や使用できない場合や、ホストワークロードを再分散する場合は、仮想マシンを別の KVM ホストに移行できます。ライブマイグレーションまたは オフライン マイグレーション を実行できます。2 つのシナリオの違いについては、How migrating virtual machines を参照して ください。

前提条件

  • ハイパーバイザー: 移行元ホストと移行先ホストはいずれも KVM ハイパーバイザーを使用します。
  • ネットワーク接続: 移行元ホストと移行先ホストは、ネットワーク経由で相互に通信できます。ping ユーティリティーを使用してこれを確認します。
  • オープンポート: 移行先ホストで次のポートが開いていることを確認します。

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

  • ネットワーク帯域幅: 実行中の仮想マシンを移行する場合は、ネットワークの帯域幅が、仮想マシンがダーティーメモリーページを生成する速度よりも大きくなければなりません。

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

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

      # 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 値を試して、環境のダーティーページ速度に合わせた最適な期間を決定できます。

  • ブリッジタップネットワークの詳細:パブリックブリッジタップネットワーク内の既存の仮想マシンを移行する場合は、移行元ホストと移行先ホストが同じネットワークに存在する必要があり ます。そうでない場合は、移行後に仮想マシンのネットワークが機能しなくなります。
  • 接続プロトコル: 仮想マシンの移行の実行時に、ソースホストの virsh クライアントは、複数のプロトコルの 1 つを使用して、移行先ホストの libvirt デーモンに接続できます。次の手順の例では SSH 接続を使用していますが、別の接続を選択することもできます。

    • libvirt で SSH 接続を使用する場合は、virtqemud ソケットが有効になっていて、宛先ホストで実行されていることを確認してください。

      # systemctl enable --now virtqemud.socket
    • libvirt で TLS 接続を使用する場合は、virtproxyd-tls ソケットが有効になっていて、宛先ホストで実行していることを確認してください。

      # systemctl enable --now virtproxyd-tls.socket
    • libvirt で TCP 接続を使用する場合は、virtproxyd-tcp ソケットが有効になっていて、宛先ホストで実行していることを確認してください。

      # systemctl enable --now virtproxyd-tcp.socket

手順

仮想マシンをあるホストから別のホストに移行するには、virsh migrate コマンドを使用します。

オフラインマイグレーション

  • 以下のコマンドは、SSH トンネルを使用して、シャットダウンオフの example-VM 仮想マシンをローカルホストから example-destination ホストのシステム接続に移行します。

    # virsh migrate --offline --persistent <example_VM> qemu+ssh://example-destination/system

ライブマイグレーション

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

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

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

マルチ FD ライブマイグレーション

  • ライブマイグレーション中に、移行先ホストへの複数の並列接続を使用できます。これは、複数のファイル記述子(マルチ FD)の移行としても知られています。マルチ FD 移行では、移行プロセスに利用可能なネットワーク帯域幅をすべて利用することで、移行を高速化できます。

    # virsh migrate --live --persistent --parallel --parallel-connections 4 <example_VM> qemu+ssh://<example-destination>/system

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

ダウンタイム制限を引き上げたライブマイグレーション

  • ライブマイグレーションの信頼性を向上させるために、maxdowntime パラメーターを設定できます。このパラメーターは、ライブマイグレーション中に仮想マシンを一時停止できる最大時間(ミリ秒単位)を指定します。ダウンタイムを大きくすると、移行を正常に完了させることができます。

    # virsh migrate-setmaxdowntime <example_VM> <time_interval_in_milliseconds>

Post-copy migration

  • 仮想マシンのメモリーフットプリントが大きい場合は、コピー後 の移行を実行できます。これにより、ソース仮想マシンの CPU 状態が最初に転送され、移行先ホストで移行した仮想マシンがすぐに起動します。ソース仮想マシンのメモリーページは、移行した仮想マシンが移行先ホストですでに実行された後に転送されます。このため、コピー後の移行により、移行した仮想マシンのダウンタイム が短縮される可能性があります。

    ただし、移行先ホストで実行中の仮想マシンがまだ転送されていないメモリーページにアクセスしようとする場合があり、これにより ページフォールト が発生します。移行中に ページフォールト が多すぎると、移行した仮想マシンのパフォーマンスが大幅に低下する可能性があります。

    コピー後 の移行が複雑になる可能性がある場合には、以下のコマンドを使用して、標準的なライブマイグレーションを開始し、指定した時間内にライブマイグレーションを完了できない場合は、コピー後 の移行に切り替えます。

    # virsh migrate --live --persistent --postcopy --timeout <time_interval_in_seconds> --timeout-postcopy <example_VM> qemu+ssh://<example-destination>/system

自動コンバージションのライブマイグレーション

  • VM がメモリーの負荷が高い場合は、--auto-converge オプションを使用できます。このオプションでは、仮想マシンの CPU の実行速度が自動的に低下します。その結果、この CPU スロットリングはメモリー書き込みの速度を低下させる可能性があります。つまり、メモリーワークロードが多い仮想マシンでもライブマイグレーションが成功する可能性があります。

    ただし、CPU スロットリングは、メモリー書き込みが CPU の実行速度と直接関係のないワークロードの解決には役立ちず、ライブマイグレーション中の仮想マシンのパフォーマンスに悪影響を及ぼす可能性があります。

    # virsh migrate --live --persistent --auto-converge <example_VM> qemu+ssh://<example-destination>/system

検証

  • オフライン 移行の場合:

    • 移行先ホストで、使用可能な仮想マシンを一覧表示し、仮想マシンが正常に移行されたことを確認します。

      # virsh list --all
      Id      Name             State
      ----------------------------------
      10    example-VM-1      shut off
  • ライブマイグレーション の場合:

    • 移行先ホストで、使用可能な仮想マシンを一覧表示し、移行先仮想マシンの状態を確認します。

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

      仮想マシンの状態が running と表示されている場合は、移行が完了したことを意味します。ただし、ライブマイグレーションが進行中の場合は、移行先仮想マシンの状態が 一時停止 として表示されます。

  • post-copy の移行の場合:

    1. ソースホストで、利用可能な仮想マシンを一覧表示し、ソース仮想マシンの状態を確認します。

      # virsh list --all
      Id      Name             State
      ----------------------------------
      10    example-VM-1      shut off
    2. 移行先ホストで、使用可能な仮想マシンを一覧表示し、移行先仮想マシンの状態を確認します。

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

      移行元仮想マシンの状態が 停止 と表示され、移行先仮想マシンの状態が running と表示されている場合は、移行が完了したことを意味します。

関連情報

  • virsh migrate --help コマンド
  • システム上の virsh (1) man ページ
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.