SR-IOV 技术是一种基于硬件的虚拟化解决方案,可提升性能和可伸缩性。SR-IOV 标准容许在虚拟机之间高效共享 PCIe(Peripheral Component Interconnect Express,快速外设组件互连)设备,而且它是在硬件中实现的,能够得到可以与本机性能媲美的 I/O 性能。SR-IOV 规范定义了新的标准,根据该标准,建立的新设备可容许将虚拟机直接链接到 I/O 设备。性能
SR-IOV 规范由 PCI-SIG 在 http://www.pcisig.com 上进行定义和维护。设计
单个 I/O 资源可由许多虚拟机共享。共享的设备将提供专用的资源,而且还使用共享的通用资源。这样,每一个虚拟机均可访问惟一的资源。所以,启用了 SR-IOV 而且具备适当的硬件和 OS 支持的 PCIe 设备(例如以太网端口)能够显示为多个单独的物理设备,每一个都具备本身的 PCIe 配置空间。blog
下图介绍了针对 PCIe 硬件的 SR-IOV 技术。ip
图 21-1 SR-IOV 技术内存
SR-IOV 中的两种新功能类型是:ci
用于支持 SR-IOV 功能的 PCI 功能,如 SR-IOV 规范中定义。PF 包含 SR-IOV 功能结构,用于管理 SR-IOV 功能。PF 是全功能的 PCIe 功能,能够像其余任何 PCIe 设备同样进行发现、管理和处理。PF 拥有彻底配置资源,能够用于配置或控制 PCIe 设备。资源
与物理功能关联的一种功能。VF 是一种轻量级 PCIe 功能,能够与物理功能以及与同一物理功能关联的其余 VF 共享一个或多个物理资源。VF 仅容许拥有用于其自身行为的配置资源。路由
每一个 SR-IOV 设备均可有一个物理功能 (Physical Function, PF),而且每一个 PF 最多可有 64,000 个与其关联的虚拟功能 (Virtual Function, VF)。PF 能够经过寄存器建立 VF,这些寄存器设计有专用于此目的的属性。get
一旦在 PF 中启用了 SR-IOV,就能够经过 PF 的总线、设备和功能编号(路由 ID)访问各个 VF 的 PCI 配置空间。每一个 VF 都具备一个 PCI 内存空间,用于映射其寄存器集。VF 设备驱动程序对寄存器集进行操做以启用其功能,而且显示为实际存在的 PCI 设备。建立 VF 后,能够直接将其指定给 IO 来宾域或各个应用程序(如裸机平台上的 Oracle Solaris Zones)。此功能使得虚拟功能能够共享物理设备,并在没有 CPU 和虚拟机管理程序软件开销的状况下执行 I/O。虚拟机
SR-IOV 标准容许在 IO 来宾域之间高效共享 PCIe 设备。SR-IOV 设备能够具备数百个与某个物理功能 (Physical Function, PF) 关联的虚拟功能 (Virtual Function, VF)。VF 的建立可由 PF 经过设计用来开启 SR-IOV 功能的寄存器以动态方式进行控制。缺省状况下,SR-IOV 功能处于禁用状态,PF 充当传统 PCIe 设备。
具备 SR-IOV 功能的设备能够利用如下优势:
性能-从虚拟机环境直接访问硬件。
成本下降-节省的资本和运营开销包括:
节能
减小了适配器数量
简化了布线
减小了交换机端口