🧭unRAID 11~13 代CPU开启 SR-IOV 实现虚拟机核显直通
00 分钟
2023-3-30
2024-3-28
type
status
date
slug
summary
tags
category
icon
password

1. 背景

Intel 从11代 CPU 开始不再支持 GVT-g,也就是说以前直通核显的方法不再适用于 11 代开始的 CPU 。但 Intel 却没有同步跟进 Linux 下的驱动来让用户去实现核显直通,这个问题被诟病了很久。虽然说在这篇文章之前就已经有网友能够通过一些手段来实现这个目的,但是对于一般的用户而言这种方式门槛很高(包括编译 Linux 内核、安装相关的 Linux 驱动等较为高级的一些操作),并且也不是在 unRAID 上去实现的。
但是就在2023年3月20日左右,一位国内的大佬 @zhtengw 开发了一款插件来实现了这一目的,插件的本质作用在它会下载已经被编译好的支持 SR-IOV 驱动的 Unraid 内核文件并自动配置相关的核显 SR-IOV 参数,本篇文章就教大家如何使用这一插件来完成虚拟核显的直通。

2. 核显虚拟化技术介绍

不同代的 CPU 使用的核显虚拟化技术可能不一样,你可以通过以下链接查看自己的 CPU 使用何种核显虚拟化技术:
需要注意的是,如果你用的 CPU 是 11 代且代号为 Rocket Lake,如果出现在下列列表中,那么此系列的 CPU 不具备 SR-IOV 技术,使用的依然是传统的 GVT-G 虚拟化技术,这意味着你无法使用本篇文章介绍的方法进行核显虚拟化。
不具备 SR-IOV 技术的 11 代 CPU(点击展开)

2.1 什么是 SR-IOV

notion image
在 Intel 的官网介绍中(链接),SR-IOV 技术仅搭载在 11 代及以上 CPU ,并且此项技术将取代原先的 GVT-G (英特尔® Graphics Virtualization Technology –g)核显虚拟化技术。
那么什么是 SR-IOV,为什么 Intel 要用这项技术取代原先核显直通的技术?

2.2 SR-IOV 技术说明

SR-IOV 是 Single Root I/O Virtualization 的缩写。SR-IOV 能够让一个 PCIE 设备向操作系统提供多个虚拟设备(也就是将一个 PCIE 物理设备虚拟化成多个设备来使用,就好像分身)。
SR-IOV 实际上是 PCI Express 提供的功能。
在这种方式中以物理方式存在的设备称为 Physical Function (PF),通过 SR-IOV 虚拟添加的设备称为 Virtual Function (VF)。
我们最常在网卡设备上见到此项技术,比如说 Intel 的很多万兆网卡支持 SR-IOV 功能。(点击展开)

2.3 为什么要用 SR-IOV 技术替代 GVT-G

一方面是因为前者的效率和性能更高,并且相比 GVT-G 而言,SR-IOV 是行业通用的标准,Intel 采用此标准可以让各家厂商降低兼容门槛,对大家来说都是一件好事。

3. 准备工作:开启主板 BIOS 的 SR-IOV 功能

SR-IOV 功能要正常使用,首先要保证主板的 BIOS 中开启了 SR-IOV 的功能,如下图所示:
💡
不同的主板 BIOS 设置有所不同,即使是同一个主板不同的 BIOS 版本可能也会有区别,所以大家如果找不到关于 SR-IOV 的设置,那么可以去查看自己主板的官网说明或者官方提供的主板使用手册。另外,没有 SR-IOV 的相关设置不代表主板没有这项功能,有可能主板已经默认开启了,但没有给到用户开启和关闭的选项而已。
需要说明的是,有些主板需要开启 Re-Size BAR支持 这个功能之后才会显示 SR-IOV 功能开关,比如本图片中的 BIOS 。
需要说明的是,有些主板需要开启 Re-Size BAR支持 这个功能之后才会显示 SR-IOV 功能开关,比如本图片中的 BIOS 。
除了 BIOS 中的 SR-IOV 功能,一般来说还需要保证 Intel 的 VT-DVT-XHVMIntel虚拟化技术Intel Virtualization Technology 等) 和 IOMMU 功能开启,否则 unRAID 无法正常使用虚拟化技术,具体可参考下图:
notion image
notion image
notion image

4. 安装 Intel i915 SR-IOV

应用市场搜索 intel i915 sr iov 插件,如果你搜出来两个一样名字的插件(如下图),那请按照下面的说明选择安装。
这两个插件的作用是一样的,区别只是说原作者 zhtengw 的插件并没有对 ≥ 6.12.4 版本的 Unraid 编译相应的内核文件,所以就有其他的开发者接手了这一工作,因此你只需要根据下面的提示选择对应的插件安装即可。
  • 如果你的 Unraid 版本 ≥ 6.12.4 版本,那么选择 giganode 作者的插件进行下载,如下图所示:
    • notion image
      notion image
  • 如果你的 Unraid 版本 < 6.12.4 那么请选择 zhtengw 作者的插件:
    • notion image

4.2 绑定虚拟核显设备到 VFIO-PCI

重启之后,正常情况下就会在系统设备中看到虚拟化出来的设备,例如:
notion image
此时需要将相应的设备绑定,然后再重启一次 unRAID
💡
2024-03-20 补充:其实这里是不需要将虚拟核显进行 vfio-pci 绑定的,如果你在绑定之后遇到了虚拟机无法自动启动的情况,那么请取消绑定,具体细节请看下文的 “6.5 虚拟机无法自动启动,且提示 vfio-pci-errors ” 。
notion image
绑定 VFIO-PCI 的方法:勾选设备前面的方框,然后点击“在引导时对 VFIO 选择了绑定”,最后重启 unRAID 即可。
请注意,不要将核显设备绑定到 VFIO-PCI,比如:
如果你已经绑定了,请取消绑定:取消勾选,然后点击“在引导时对 VFIO 选择了绑定”,最后重启 unRAID 生效
如果你已经绑定了,请取消绑定:取消勾选,然后点击“在引导时对 VFIO 选择了绑定”,最后重启 unRAID 生效

4.4 创建虚拟机并直通虚拟设备

创建虚拟机时在显卡设备中选择虚拟的核显然后启动虚拟机:
notion image
进入虚拟机之后,比如说 Windows 虚拟机,需要在系统中安装好核显驱动(Intel核显驱动下载地址),安装好之后即可正常使用核显:
notion image

5. 其他参考资料(持续更新)

这里有另一篇同样关于本主题的恩山教程:

6. 常见问题(持续更新)

6.1 能否实现虚拟化GPU的视频输出?

答:不能
notion image

6.2 已经按照流程完整的配置好了,但就是 Windows 虚拟机系统中提示核显驱动43错误。

解决办法:请尝试重新安装核显驱动(Intel核显驱动下载地址),并且安装的时候选择 清洁安装

6.3 虚拟机是否支持多个虚拟和弦设备直通?

对于 Linux 虚拟机没有限制,但是如果是 Windows 虚拟机直通多个 VF 设备就会出现 43 驱动错误。

6.4 直通后的 Win 虚拟机分辨率低且无法调整该如何解决

请参考下面的 B 站教程:

6.5 虚拟机无法自动启动,且提示 vfio-pci-errors

问题的原因在于 SR-IOV 插件还没有将虚拟核显配置出来的时候,系统 vfio-pci 就先一步绑定了虚拟核显设备,但此时对应的设备又没有,所以就会提示报错,进而使用了虚拟核显设备的虚拟机就无法自启动。
notion image
如果遇到这个问题,那么你可以取消虚拟 GPU 的 vfio-pci 绑定(取消绑定实际上不不影响直通的):
notion image
取消之后重启 Unraid ,这时候虚拟机应该就可以自动启动了,而且报错也不会再有。

评论