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 が接続された仮想マシンを移行する場合、
virsh domjobinfo
およびvirsh domdirtyrate-calc
コマンドによって提供されるライブマイグレーションデータと統計情報は正確ではありません。計算では、接続された VF の影響を含めずにゲスト RAM のみがカウントされるためです。- コピー後のライブマイグレーションの使用
- 仮想マシンでの仮想 I/O Memory Management Unit (vIOMMU) デバイスの使用
この機能は RHEL 9 に テクノロジープレビュー のみの機能として組み込まれているため、サポート対象外です。
前提条件
ファームウェアバージョンが 28.36.1010 以上の Mellanox CX-7 ネットワークデバイスを使用している。
ファームウェアバージョンの詳細は、Mellanox のドキュメント を参照してください。
mstflint
パッケージが、ソースホストと宛先ホストの両方にインストールされている。dnf install mstflint
# dnf install mstflint
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Mellanox CX-7 ネットワークデバイスで、
VF_MIGRATION_MODE
がMIGRATION_ENABLED
に設定されている。mstconfig -d <device_pci_address> query | grep -i VF_migration
# mstconfig -d <device_pci_address> query | grep -i VF_migration VF_MIGRATION_MODE MIGRATION_ENABLED(2)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを使用して、
VF_MIGRATION_MODE
をMIGRATION_ENABLED
に設定できます。mstconfig -d <device_pci_address> set VF_MIGRATION_MODE=2
# mstconfig -d <device_pci_address> set VF_MIGRATION_MODE=2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
openvswitch
パッケージが、ソースホストと宛先ホストの両方にインストールされている。dnf install openvswitch
# dnf install openvswitch
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - すべての一般的な SR-IOV デバイスの前提条件。詳細は、SR-IOV ネットワークデバイスの仮想マシンへの接続 を参照してください。
- すべての一般的な仮想マシン移行の前提条件。詳細は、コマンドラインを使用した仮想マシンの移行 を参照してください。
手順
ソースホストで、Mellanox ネットワークデバイスを
switchdev
モードに設定します。devlink dev eswitch set pci/<device_pci_address> mode switchdev
# devlink dev eswitch set pci/<device_pci_address> mode switchdev
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ソースホストで、Mellanox デバイス上に Virtual Function を作成します。
echo 1 > /sys/bus/pci/devices/0000\:e1\:00.0/sriov_numvfs
# echo 1 > /sys/bus/pci/devices/0000\:e1\:00.0/sriov_numvfs
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ファイルパスの
/0000\:e1\:00.0/
の部分は、デバイスの PCI アドレスに基づいています。この例では、0000:e1:00.0
です。ソースホストで、VF をそのドライバーからアンバインドします。
virsh nodedev-detach <vf_pci_address> --driver pci-stub
# virsh nodedev-detach <vf_pci_address> --driver pci-stub
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを使用して、VF の PCI アドレスを表示できます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ソースホストで、VF の移行機能を有効にします。
devlink port function set pci/0000:e1:00.0/1 migratable enable
# devlink port function set pci/0000:e1:00.0/1 migratable enable
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この例の
pci/0000:e1:00.0/1
は、指定の PCI アドレスを持つ Mellanox デバイス上の最初の VF を示しています。ソースホストで、VF の移行用に Open vSwitch (OVS) を設定します。Mellanox デバイスが
switchdev
モードの場合、ネットワーク経由でデータを転送できません。openvswitch
サービスが実行中であることを確認します。systemctl start openvswitch
# systemctl start openvswitch
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ネットワークのパフォーマンスを向上させるために、ハードウェアオフロードを有効にします。
ovs-vsctl set Open_vSwitch . other_config:hw-offload=true
# ovs-vsctl set Open_vSwitch . other_config:hw-offload=true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 移行中にネットワーク接続が開いたままになるように、最大アイドル時間を増やします。
ovs-vsctl set Open_vSwitch . other_config:max-idle=300000
# ovs-vsctl set Open_vSwitch . other_config:max-idle=300000
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OVS インスタンスに新しいブリッジを作成します。
ovs-vsctl add-br <bridge_name>
# ovs-vsctl add-br <bridge_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openvswitch
サービスを再起動します。systemctl restart openvswitch
# systemctl restart openvswitch
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 物理的な Mellanox デバイスを OVS ブリッジに追加します。
ovs-vsctl add-port <bridge_name> enp225s0np0
# ovs-vsctl add-port <bridge_name> enp225s0np0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この例では、
<bridge_name>
はステップ d で作成したブリッジの名前であり、enp225s0np0
は Mellanox デバイスのネットワークインターフェイス名です。Mellanox デバイスの VF を OVS ブリッジに追加します。
ovs-vsctl add-port <bridge_name> enp225s0npf0vf0
# ovs-vsctl add-port <bridge_name> enp225s0npf0vf0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この例では、
<bridge_name>
はステップ d で作成したブリッジの名前であり、enp225s0npf0vf0
は VF のネットワークインターフェイス名です。
- 宛先ホスト でステップ 1 - 5 を繰り返します。
ソースホストで、
mlx_vf.xml
などの新しいファイルを開き、次のような VF の XML 設定を追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow この例では、VF のパススルーを仮想マシンのネットワークインターフェイスとして設定します。MAC アドレスが一意であることを確認し、ソースホスト上の VF の PCI アドレスを使用します。
ソースホストで、VF の XML ファイルを仮想マシンに割り当てます。
virsh attach-device <vm_name> mlx_vf.xml --live --config
# virsh attach-device <vm_name> mlx_vf.xml --live --config
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この例の
mlx_vf.xml
は、VF 設定を含む XML ファイルの名前です。実行中の仮想マシンにデバイスを割り当てるために、--live
オプションを使用します。ソースホストで、VF が割り当てられた実行中の仮想マシンのライブマイグレーションを開始します。
virsh migrate --live --domain <vm_name> --desturi qemu+ssh://<destination_host_ip_address>/system
# virsh migrate --live --domain <vm_name> --desturi qemu+ssh://<destination_host_ip_address>/system
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ライブマイグレーションの実行の詳細は、コマンドラインを使用した仮想マシンの移行 を参照してください。
検証
移行された仮想マシンで、Mellanox VF のネットワークインターフェイス名を表示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 移行した仮想マシンで、Mellanox VF が動作することを確認します。次に例を示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow