QEMU virtio-net 备用设备(net_failover)

本文介绍用于创建 net_failover 设备对的 virtio-net 备用功能。

设备对由 vfio-pci 和 virtio-net 组成。迁移前移除 vfio,流量转到 virtio-net; 目的端再插入另一个 vfio-pci 接管数据通路。客户机 net_failover 模块将 MAC 相同的网络设备配对。

快速硬件网卡称为主设备,virtio-net 称为备用设备。

限制

目前主设备必须是 PCIe 网卡,未来增强支持后可能放宽 PCIe 限制。用户必须 确保主、备设备不在同一 PCIe 插槽。

使用场景

此功能让直通高速网卡也能方便迁移:迁移期间退回 virtio-net,类似无需客户机 配置的简化 bond。热迁移时 QEMU 通过 PCIe 热插拔处理器移除主设备,流量 转到备用;目的端自动重新插入主设备,net_failover 再将其登记为主设备。

用法

主设备可以热插入,也可在启动配置中提供。

-device virtio-net-pci,netdev=hostnet1,id=net1,mac=52:54:00:6f:55:cc,bus=root2,failover=on

failover=on 启用 VIRTIO_NET_F_STANDBY。

-device vfio-pci,host=5e:00.2,id=hostdev0,bus=root1,failover_pair_id=net1

failover_pair_id 引用备用 virtio-net 的 ID,仅用于 QEMU 内配对。 客户机 net_failover 仍根据相同 MAC 匹配。

热插拔

主备均可通过监视器热插入。若先插入 virtio-net,会警告找不到主设备。

迁移

该功能增加 wait-unplug 迁移状态。配置中存在故障切换主设备时,迁移进入此 状态,等待客户机完成设备移除,再进入 active。若备用设备已协商该功能位, 目的端会自动热插入主设备。