16.2.4. 从 SR-IOV 虚拟功能池设置 PCI 设备分配
将特定虚拟功能(VF)的 PCI 地址硬编码到客户机配置中有两个严重的限制:
- 任何虚拟机启动后,指定的 VF 都必须可用。因此,管理员必须将每个 VF 永久分配给一个客户机虚拟机(或者修改每个客户机虚拟机的配置文件,以便在每次启动客户机虚拟机时都指定目前未使用的 VF 的 PCI 地址)。
- 如果 guest 虚拟机移动到另一台主机物理计算机,则该主机物理计算机必须在 PCI 总线上的同一位置拥有完全相同的硬件(或者启动之前必须修改客户机虚拟机配置)。
通过在包含 SR-IOV 设备的所有 VF 的设备池创建一个 libvirt 网络,从而避免这两个问题。完成后,配置 guest 虚拟机以引用此网络。每次启动客户机时,都会从池中分配单个 VF,并分配给客户机虚拟机。当客户机虚拟机停止后,VF 将返回到池,供其他客户机虚拟机使用。
过程 16.10. 创建设备池
关闭客户端虚拟机
使用 virsh shutdown 命令,关闭名为 guestVM 的客户机虚拟机。virsh shutdown guestVM
# virsh shutdown guestVM
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建配置文件
使用首选的编辑器,在/tmp
目录中创建一个 XML 文件(名为 passthrough.xml )。确保将pf dev='eth3'
替换为您自己的 SR-IOV 设备物理功能(PF)的 netdev 名称。以下是一个示例网络定义,该定义将在主机物理机器上使用 PF(在主机物理机器上使用 PF)提供 SR-IOV 适配器的所有 VF 池:图 16.12. 网络定义域 XML 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 加载新 XML 文件
输入以下命令,将 /tmp/passthrough.xml 替换为您在上一步中创建的 XML 文件的名称和位置:virsh net-define /tmp/passthrough.xml
# virsh net-define /tmp/passthrough.xml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重启客户端
运行以下命令,将 passthrough.xml 替换为您在上一步中创建的 XML 文件的名称:virsh net-autostart passthrough # virsh net-start passthrough
# virsh net-autostart passthrough # virsh net-start passthrough
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重新启动 guest 虚拟机
运行 virsh start 命令以在第一步中重启您关闭的客户机虚拟机(例如,使用 guestVM 作为客户机虚拟机的域名)。如需更多信息,请参阅 第 20.6 节 “启动、恢复和恢复虚拟机”。virsh start guestVM
# virsh start guestVM
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启动设备的透传
虽然只会显示单一设备,但在客户机虚拟机首次启动时,libvirt 将自动获得与该 PF 关联的所有 VF 列表,如下所示:图 16.13. 接口网络定义的域 XML 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证
在启动使用网络的第一个客户机后,您可以运行 virsh net-dumpxml passthrough 命令进行验证 ; 您可能会得到类似如下的输出:图 16.14. XML 转储文件 透传 内容
Copy to Clipboard Copied! Toggle word wrap Toggle overflow