12.6. Mellanox Virtual Function が割り当てられた仮想マシンのライブマイグレーション


テクノロジープレビューとして、Mellanox ネットワークデバイスの Virtual Function (VF) が割り当てられた仮想マシン (VM) のライブマイグレーションを利用できます。現在、これは Mellanox CX-7 ネットワークデバイスを使用している場合にのみ可能です。Mellanox CX-7 ネットワークデバイス上の VF は、ライブマイグレーションに必要な機能を追加する新しい mlx5_vfio_pci ドライバーを使用します。この新しいドライバーは、libvirt によって VF に自動的にバインドされます。

制限

現在、Mellanox Virtual Function が割り当てられた仮想マシンをライブマイグレーションする場合、以下の仮想化機能を使用できません。

  • 仮想マシンのダーティーメモリーページレート生成の計算

    現在、Mellanox VF がアタッチされている仮想マシンを移行する場合、計算は、割り当てられた VF の影響を含めずに、ゲスト RAM のみを表示するため、virsh domjobinfo および virsh domdirtyrate-calc コマンドによって提供されるライブマイグレーションデータと統計は不正確です。

  • コピー後のライブマイグレーションの使用
  • 仮想マシンでの仮想 I/O Memory Management Unit (vIOMMU) デバイスの使用
重要

この機能は RHEL 9 に テクノロジープレビュー のみの機能として組み込まれているため、サポート対象外です。

前提条件

  • ファームウェアバージョンが 28.36.1010 以上の Mellanox CX-7 ネットワークデバイスを使用している。

    ファームウェアバージョンの詳細は、Mellanox のドキュメント を参照してください。

  • mstflint パッケージが、ソースホストと宛先ホストの両方にインストールされている。

    # dnf install mstflint
  • Mellanox CX-7 ネットワークデバイスで、VF_MIGRATION_MODEMIGRATION_ENABLED に設定されている。

    # mstconfig -d <device_pci_address> query | grep -i VF_migration
    
    VF_MIGRATION_MODE                           MIGRATION_ENABLED(2)
    • 次のコマンドを使用して、VF_MIGRATION_MODEMIGRATION_ENABLED に設定できます。

      # mstconfig -d <device_pci_address> set VF_MIGRATION_MODE=2
  • openvswitch パッケージが、ソースホストと宛先ホストの両方にインストールされている。

    # dnf install openvswitch
  • すべての一般的な SR-IOV デバイスの前提条件詳細は、Attaching SR-IOV networking devices to virtual machinesを参照してください。
  • 仮想マシンの一般的な移行の前提条件 すべて。詳細は コマンドラインインターフェイスを使用した仮想マシンの移行 を参照してください。

手順

  1. ソースホストで、Mellanox ネットワークデバイスを switchdev モードに設定します。

    # devlink dev eswitch set pci/<device_pci_address> mode switchdev
  2. ソースホストで、Mellanox デバイス上に Virtual Function を作成します。

    # echo 1 > /sys/bus/pci/devices/0000\:e1\:00.0/sriov_numvfs

    ファイルパスの /0000\:e1\:00.0/ の部分は、デバイスの PCI アドレスに基づいています。この例では、0000:e1:00.0 です。

  3. ソースホストで、VF をそのドライバーからアンバインドします。

    # virsh nodedev-detach <vf_pci_address> --driver pci-stub

    次のコマンドを使用して、VF の PCI アドレスを表示できます。

    # lshw -c network -businfo
    
    Bus info                     Device             Class           Description
    ===========================================================================
    pci@0000:e1:00.0  enp225s0np0    network        MT2910 Family [ConnectX-7]
    pci@0000:e1:00.1  enp225s0v0     network        ConnectX Family mlx5Gen Virtual Function
  4. ソースホストで、VF の移行機能を有効にします。

    # devlink port function set pci/0000:e1:00.0/1 migratable enable

    この例の pci/0000:e1:00.0/1 は、指定の PCI アドレスを持つ Mellanox デバイス上の最初の VF を示しています。

  5. ソースホストで、VF の移行用に Open vSwitch (OVS) を設定します。Mellanox デバイスが switchdev モードの場合、ネットワーク経由でデータを転送できません。

    1. openvswitch サービスが実行中であることを確認します。

      # systemctl start openvswitch
    2. ネットワークのパフォーマンスを向上させるために、ハードウェアオフロードを有効にします。

      # ovs-vsctl set Open_vSwitch . other_config:hw-offload=true
    3. 移行中にネットワーク接続が開いたままになるように、最大アイドル時間を増やします。

      # ovs-vsctl set Open_vSwitch . other_config:max-idle=300000
    4. OVS インスタンスに新しいブリッジを作成します。

      # ovs-vsctl add-br <bridge_name>
    5. openvswitch サービスを再起動します。

      # systemctl restart openvswitch
    6. 物理的な Mellanox デバイスを OVS ブリッジに追加します。

      # ovs-vsctl add-port <bridge_name> enp225s0np0

      この例では、<bridge_name> はステップ d で作成したブリッジの名前であり、enp225s0np0 は Mellanox デバイスのネットワークインターフェイス名です。

    7. Mellanox デバイスの VF を OVS ブリッジに追加します。

      # ovs-vsctl add-port <bridge_name> enp225s0npf0vf0

      この例では、<bridge_name> はステップ d で作成したブリッジの名前であり、enp225s0npf0vf0 は VF のネットワークインターフェイス名です。

  6. 宛先ホスト でステップ 1 - 5 を繰り返します。
  7. ソースホストで、mlx_vf.xml などの新しいファイルを開き、次のような VF の XML 設定を追加します。

     <interface type='hostdev' managed='yes'>
          <mac address='52:54:00:56:8c:f7'/>
          <source>
            <address type='pci' domain='0x0000' bus='0xe1' slot='0x00' function='0x1'/>
          </source>
     </interface>

    この例では、VF のパススルーを仮想マシンのネットワークインターフェイスとして設定します。MAC アドレスが一意であることを確認し、ソースホスト上の VF の PCI アドレスを使用します。

  8. ソースホストで、VF の XML ファイルを仮想マシンに割り当てます。

    # virsh attach-device <vm_name> mlx_vf.xml --live --config

    この例の mlx_vf.xml は、VF 設定を含む XML ファイルの名前です。実行中の仮想マシンにデバイスを割り当てるために、--live オプションを使用します。

  9. ソースホストで、VF が割り当てられた実行中の仮想マシンのライブマイグレーションを開始します。

    # virsh migrate --live --domain <vm_name> --desturi qemu+ssh://<destination_host_ip_address>/system

    ライブマイグレーションの実行の詳細は、コマンドラインインターフェイスを使用した仮想マシンの移行 を参照してください。

検証

  1. 移行された仮想マシンで、Mellanox VF のネットワークインターフェイス名を表示します。

    # ifconfig
    
    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.1.10  netmask 255.255.255.0  broadcast 192.168.1.255
            inet6 fe80::a00:27ff:fe4e:66a1  prefixlen 64  scopeid 0x20<link>
            ether 08:00:27:4e:66:a1  txqueuelen 1000  (Ethernet)
            RX packets 100000  bytes 6543210 (6.5 MB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 100000  bytes 6543210 (6.5 MB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    enp4s0f0v0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.3.10  netmask 255.255.255.0  broadcast 192.168.3.255
            inet6 fe80::a00:27ff:fe4e:66c3  prefixlen 64  scopeid 0x20<link>
            ether 08:00:27:4e:66:c3  txqueuelen 1000  (Ethernet)
            RX packets 200000  bytes 12345678 (12.3 MB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 200000  bytes 12345678 (12.3 MB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
  2. 移行した仮想マシンで、Mellanox VF が動作することを確認します。次に例を示します。

    # ping -I <VF_interface_name> 8.8.8.8
    
    PING 8.8.8.8 (8.8.8.8) from 192.168.3.10 <VF_interface_name>: 56(84) bytes of data.
    64 bytes from 8.8.8.8: icmp_seq=1 ttl=57 time=27.4 ms
    64 bytes from 8.8.8.8: icmp_seq=2 ttl=57 time=26.9 ms
    
    --- 8.8.8.8 ping statistics ---
    2 packets transmitted, 2 received, 0% packet loss, time 1002ms
    rtt min/avg/max/mdev = 26.944/27.046/27.148/0.102 ms
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.