Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

16.2. 使用 SR-IOV 设备的 PCI 设备分配

PCI 网络设备(在域 XML 中由 <源> 元素指定)可以使用直接设备分配(有时称为 passthrough)直接连接到客户机。 由于标准单一以太网卡驱动程序设计的限制,只能为客户机分配 单根 I/O 虚拟化 (SR-IOV) 虚拟功能(VF )设备;若要为客户机分配标准单端口 PCI 或 PCIe 以太网卡,请使用传统的 <hostdev> 设备定义。

图 16.9. PCI 设备分配的 XML 示例


     <devices>
    <interface type='hostdev'>
      <driver name='vfio'/>
      <source>
        <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
      </source>
      <mac address='52:54:00:6d:90:02'>
      <virtualport type='802.1Qbh'>
        <parameters profileid='finance'/>
      </virtualport>
    </interface>
  </devices>
由 PCI-SIG(PCI Special Interest Group)开发,单一根 I/O 虚拟化(SR-IOV)规格是一种标准的 PCI 设备分配,可以将单个设备共享给多个虚拟机。SR-IOV 提高虚拟机的设备性能。

图 16.10. SR-IOV 的工作原理

SR-IOV 的工作原理
SR-IOV 支持单根功能(例如,单个以太网端口)来显示为多个、独立的物理设备。可以将具有 SR-IOV 功能的物理设备配置为作为多种功能出现在 PCI 配置空间中。每个设备都有其自身的配置空间完成 Base Address Registers(BAR)。
SR-IOV 使用两个 PCI 功能:
  • 物理功能(PF)是包含 SR-IOV 功能的完整 PCIe 设备。发现、托管和配置为普通 PCI 设备的物理功能。物理功能通过分配虚拟功能配置和管理 SR-IOV 功能。
  • 虚拟功能(VF)是简单的 PCIe 功能,仅处理 I/O。每个虚拟功能都源自物理功能。设备可能拥有的虚拟功能数量受设备硬件的限制。单个以太网设备(物理设备)可映射到可共享虚拟机的许多虚拟功能。
管理程序可向虚拟机分配一个或多个虚拟功能。虚拟功能的配置空间将分配给提供给 guest 的配置空间。
每个虚拟功能每次只能分配给一个客户机,因为虚拟功能需要实际硬件资源。虚拟机可以有多个虚拟功能。虚拟功能显示为网卡的方式,其方式与常规网卡出现在操作系统中一样。
SR-IOV 驱动程序在内核中实现。核心实施包含在 PCI 子系统中,但还必须对物理功能(PF)和虚拟功能(VF)设备提供驱动程序支持。具有 SR-IOV 功能的设备可以从 PF 分配 VF。VF 显示为 PCI 设备,它们根据队列和注册集等资源在物理 PCI 设备上支持。

16.2.1. SR-IOV 的优点

SR-IOV 设备可以与多个虚拟机共享单个物理端口。
当为虚拟机分配了 SR-IOV VF 时,可以将其配置为(与虚拟机完全转换为虚拟机)会将所有网络流量都离开于特定的 VLAN。虚拟机无法检测到其流量是否已标记为 VLAN,且无法更改或消除此标记。
虚拟功能具有接近原生的性能,比半虚拟化驱动程序和仿真访问提供更好的性能。虚拟功能提供与数据在同一物理服务器上虚拟机之间的数据保护,由硬件控制。
这些功能允许在数据中心中的主机上增加虚拟机密度。
SR-IOV 更好地利用多个客户机的设备带宽。