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 配置空間。
下圖介紹了針對 PCIe 硬件的 SR-IOV 技術。
圖 21-1 SR-IOV 技術
SR-IOV 中的兩種新功能類型是:
- 物理功能 (Physical Function, PF)
-
用於支持 SR-IOV 功能的 PCI 功能,如 SR-IOV 規范中定義。PF 包含 SR-IOV 功能結構,用於管理 SR-IOV 功能。PF 是全功能的 PCIe 功能,可以像其他任何 PCIe 設備一樣進行發現、管理和處理。PF 擁有完全配置資源,可以用於配置或控制 PCIe 設備。
- 虛擬功能 (Virtual Function, VF)
-
與物理功能關聯的一種功能。VF 是一種輕量級 PCIe 功能,可以與物理功能以及與同一物理功能關聯的其他 VF 共享一個或多個物理資源。VF 僅允許擁有用於其自身行為的配置資源。
每個 SR-IOV 設備都可有一個物理功能 (Physical Function, PF),並且每個 PF 最多可有 64,000 個與其關聯的虛擬功能 (Virtual Function, VF)。PF 可以通過寄存器創建 VF,這些寄存器設計有專用於此目的的屬性。
一旦在 PF 中啟用了 SR-IOV,就可以通過 PF 的總線、設備和功能編號(路由 ID)訪問各個 VF 的 PCI 配置空間。每個 VF 都具有一個 PCI 內存空間,用於映射其寄存器集。VF 設備驅動程序對寄存器集進行操作以啟用其功能,並且顯示為實際存在的 PCI 設備。創建 VF 后,可以直接將其指定給 IO 來賓域或各個應用程序(如裸機平台上的 Oracle Solaris Zones)。此功能使得虛擬功能可以共享物理設備,並在沒有 CPU 和虛擬機管理程序軟件開銷的情況下執行 I/O。
SR-IOV 的優點
SR-IOV 標准允許在 IO 來賓域之間高效共享 PCIe 設備。SR-IOV 設備可以具有數百個與某個物理功能 (Physical Function, PF) 關聯的虛擬功能 (Virtual Function, VF)。VF 的創建可由 PF 通過設計用來開啟 SR-IOV 功能的寄存器以動態方式進行控制。缺省情況下,SR-IOV 功能處於禁用狀態,PF 充當傳統 PCIe 設備。
具有 SR-IOV 功能的設備可以利用以下優點:
-
性能-從虛擬機環境直接訪問硬件。
-
成本降低-節省的資本和運營開銷包括:
-
節能
-
減少了適配器數量
-
簡化了布線
-
減少了交換機端口
-