代表 Dell Linux 设计部门的 Surya Prabhakar 发表

RHEL 6 在面向虚拟化客户端具有接近本地性能的支持硬件上提供 SR-IOV 功能。

单一根 I/O 虚拟化 (SR-IOV) 规范由 PCI-SIG 引入,详细介绍了单一 PCIe 设备如何能在多种客户操作系统之间实现共享。具有 SR-IOV 功能的设备支持基于物理功能的多个虚拟功能。虚拟功能在硬件中作为轻质的 PCIe 功能启用。操作系统无法发现此功能,因为它不响应 PCI 总线扫描,且需要主机驱动程序的支持。

如同 PCIe 穿透,支持 SR-IOV 的卡的虚拟功能可直接分配至客户操作系统。客户操作系统中运行的虚拟功能驱动程序负责管理此设备。但这样使迁移复杂化。vhost-net 方法可使用 SR-IOV,我将在以后的博文中介绍。

 

SR-IOV 图解

要使 SR-IOV 运行于 RHEL 6,您需要具有 Intel VT-d 或 AMD-VI 硬件的 Dell PowerEdge 服务器,并且在 BIOS 中启用 CPU 虚拟化和 IOMMU。此要求当前对 Dell PowerEdge 11G 服务器及此处所列的相关网络适配器有效,但 Dell 尚未支持。

-       Intel 2 插槽系统:PowerEdge R610、R710、T610

-       Intel 4 插槽系统:PowerEdge R810、R910

-       AMD 4 插槽系统:PowerEdge R715、R815

-       基于 Intel 82576Intel 82599,支持 SR-IOV 的网卡。

在 Dell PowerEdge 服务器上启用基于 Intel 82576 的 SR-IOV 网卡的快速指南:

1.   在内核中启用 IOMMU 功能

将以下内核参数附加至内核命令行(和/或 /etc/grub.conf)

intel_iommu=on 基于 Intel 的系统

amd_iommu=on 基于 AMD 的系统

2.   启动后,确保系统已检测到网络适配器

# lspci | grep 82576

06:00.0 以太网控制器Intel 公司 82576 千兆网络连接修订 01

06:00.1 以太网控制器Intel 公司 82576 千兆网络连接修订 01

 

3.   根据要启用的虚拟功能的数量,创建文件: /etc/modprobe.d/igb.conf

选项 igb max_vfs=2 #igb 是用于 Intel 82576 网卡的 Linux 主机驱动程序。

#max_vfs 是每个物理功能的最大虚拟功能数。

#可根据要求更改此项。

 

4.  在主机上重新加载内核模块。

# modprobe –r igb # 移除模块

# modprobe igb # 重新加载模块

5.  完成后,可确认其是否已启用

#lspci | grep 82576

06:00.0 以太网控制器Intel 公司 82576 千兆网络连接修订 01

06:00.1 以太网控制器Intel 公司 82576 千兆网络连接修订 01

06:10.0 以太网控制器Intel 公司 82576 虚拟功能修订 01

06:10.1 以太网控制器Intel 公司 82576 虚拟功能修订 01

06:10.2 以太网控制器Intel 公司 82576 虚拟功能修订 01

06:10.3 以太网控制器Intel 公司 82576 虚拟功能修订 01

如果您有 2 个物理网卡且对每个物理网卡启用 2 个虚拟功能,则 lspci 的结果显示您有 2 个物理功能和 4 个虚拟功能。

6.  有关如何实现这一切的 Red Hat 文档

现在,PCI 穿透可通过直接将虚拟功能传至客户操作系统来实现。参考

7.  最后一步是在客户操作系统中启用该驱动程序。

# lspci | grep 82576 # 检查设备可用性

# modprobe igbvf # 用于客户操作系统的驱动程序

 

更多精彩文章请关注:

戴尔技术社区