16.2.3. 使用 SR-IOV 设备配置 PCI 分配
SR-IOV 网卡提供多个 VF,各自可使用 PCI 设备分配的客户机虚拟机单独分配给客户机虚拟机。分配后,每个操作都作为完整的物理网络设备运行。这允许很多客户机虚拟机获得直接 PCI 设备分配的性能优势,而仅在主机物理计算机上使用一个插槽。
这些 VF 可使用
<hostdev>
元素以传统方式分配给客户机虚拟机。但是,SR-IOV VF 网络设备没有永久唯一的 MAC 地址,这会导致在每次主机物理机器重启时客户机虚拟机的网络设置需要重新配置的问题。要解决这个问题,您需要在在每次引导客户机虚拟机后将 VF 分配给主机物理机器前设置 MAC 地址。要分配这个 MAC 地址以及其它选项,请参阅以下步骤:
过程 16.9. 配置 MAC 地址、vLAN 和虚拟端口,以在 SR-IOV 上分配 PCI 设备
<hostdev>
元素不能用于特定于函数的项目,如 MAC 地址分配、vLAN 标签 ID 分配或虚拟端口分配,因为 <mac>
、<vlan>
和 <virtualport>
元素都不是 <hostdev>
的有效子项。相反,这些元素可以和 hostdev 接口类型一起使用: <interface type='hostdev'>
。这个设备类型作为 <接口和>
<hostdev>
的混合方式运行。因此,在将 PCI 设备分配给客户机虚拟机之前,libvirt 将初始化指定网络特定硬件/交换机(如设置 MAC 地址、设置 vLAN 标签)或与客户机虚拟机 XML 配置文件中的 802.1Qbh 开关关联。有关设置 vLAN 标签的详情,请参考 第 17.16 节 “设置 vLAN 标签”。
收集信息
要使用<接口类型='hostdev'>
,您必须具有支持 SR-IOV 的网卡,托管支持 Intel VT-d 或 AMD IOMMU 扩展的主机物理硬件,且必须知道您要分配的 VF 的 PCI 地址。关闭客户端虚拟机
使用 virsh shutdown 命令,关闭 guest 虚拟机 (这里名为 guestVM)。# virsh shutdown guestVM
打开 XML 文件进行编辑
# virsh edit guestVM.xml
可选 :对于由 virsh save 命令创建的 XML 配置文件,请运行:# virsh save-image-edit guestVM.xml
--running
此示例中的 guestVM.xml 配置文件在默认编辑器中打开。如需更多信息,请参阅 第 20.7.5 节 “编辑客户机虚拟机配置”。编辑 XML 文件
更新配置文件(guestVM.xml),使其具有类似如下的<设备>
条目:图 16.11. hostdev 接口类型的域 XML 示例
<devices> ... <interface type='hostdev' managed='yes'> <source> <address type='pci' domain='0x0' bus='0x00' slot='0x07' function='0x0'/> <!--these values can be decimal as well--> </source> <mac address='52:54:00:6d:90:02'/> <!--sets the mac address--> <virtualport type='802.1Qbh'> <!--sets the virtual port for the 802.1Qbh switch--> <parameters profileid='finance'/> </virtualport> <vlan> <!--sets the vlan tag--> <tag id='42'/> </vlan> </interface> ... </devices>
注意如果没有提供 MAC 地址,系统将自动生成,就像其他类型的接口设备一样。另外,只有当您连接到 802.11Qgh 硬件交换机时,才会使用<virtualport>
元素。不支持 802.11Qbg(也称为 "VEPA")交换机。重启客户机虚拟机
运行 virsh start 命令,以重新启动您在第 2 步中关闭的 guest 虚拟机。如需更多信息,请参阅 第 20.6 节 “启动、恢复和恢复虚拟机”。# virsh start guestVM
当客户机虚拟机启动时,它会看到由物理主机机器适配器提供的网络设备,且配置了 MAC 地址。此 MAC 地址在客户机虚拟机之间保持不变,主机物理机重新引导。