UNRAID使用NVIDIA显卡(直通篇)

在UNRAID下想要利用NVIDIA显卡,最为传统的方法是创建一个虚拟机,并将显卡直通进去。最早使用1080测试了直通功能,只需要在虚拟机设置里的Other PCI Devices选中1080即可。但20系显卡因为多了一个type c接口,情况有些变化,之前在知乎上分享了URNIAD 6.6.6直通2080ti的经历,特地将其转载过来。

错误

之前在Unraid里建立了一个使用GTX1080的虚拟机,想用RTX 2080Ti替换了GTX1080。修改虚拟机配置后,启动虚拟机时很不幸地报错了:

fio error: 0000:02:00.0: group 27 is not viable Please ensure all devices within the iommu_group are bound to their vfio bus driver.

这是因为2080Ti新增了一个USB Type-C接口,默认情况下Unraid的VM manager并不会将这个接口同时分配给虚拟机。
在TOOLS->System Devices->PCI Devices and IOMMU Groups可以看到该USB控制器与显示控制器在同一个IOMMU group内。

IOMMU group 27: [10de:1e04] 02:00.0 VGA compatible controller: NVIDIA Corporation TU102 [GeForce RTX 2080 Ti] (rev a1) [10de:10f7] 02:00.1 Audio device: NVIDIA Corporation TU102 High Definition Audio Controller (rev a1) [10de:1ad6] 02:00.2 USB controller: NVIDIA Corporation TU102 USB 3.1 Controller (rev a1) [10de:1ad7] 02:00.3 Serial bus controller [0c80]: NVIDIA Corporation TU102 UCSI Controller (rev a1)

因此只将显示控制器分配给IOMMU,就会出现上面的错误。

解决方案

将显示控制器与USB控制器分离开放到不同的IOMMU group内

该方案最简单,只需要将Unraid->SETTINGS->PCIe ACS overide改成Both,然后重启计算机就行。

IOMMU group 31: [10de:1e04] 02:00.0 VGA compatible controller: NVIDIA Corporation TU102 [GeForce RTX 2080 Ti] (rev a1) IOMMU group 32: [10de:10f7] 02:00.1 Audio device: NVIDIA Corporation TU102 High Definition Audio Controller (rev a1) IOMMU group 33: [10de:1ad6] 02:00.2 USB controller: NVIDIA Corporation TU102 USB 3.1 Controller (rev a1) IOMMU group 34: [10de:1ad7] 02:00.3 Serial bus controller [0c80]: NVIDIA Corporation TU102 UCSI Controller (rev a1)

重启完之后显示控制器与USB控制器就处于不同的IOMMU group了,虚拟机的设置也不用改。

UNRAID使用NVIDIA显卡(直通篇)

将USB控制器也直通给虚拟机

如果不想修改PCIe ACS overide,可以把USB控制器也直通给虚拟机。这一部分主要是参考了youtube上的视频教程:https://www.youtube.com/watch?time_continue=202&v=UilWLtMYd-U。

作者提供了两条辅助命令非常方便。

for usb_ctrl in $(find /sys/bus/usb/devices/usb* -maxdepth 0 -type l); do pci_path=”$(dirname “$(realpath “${usb_ctrl}”)”)”; echo “Bus $(cat “${usb_ctrl}/busnum”) –> $(basename $pci_path) (IOMMU group $(basename $(realpath $pci_path/iommu_group)))”; lsusb -s “$(cat “${usb_ctrl}/busnum”):”; echo; done

第一条命令可以显示出USB设备与控制器的详细信息,比如Unraid启动盘是在哪个控制器下面。这一步其实对于我来说用处不大,因为我只想把2080Ti上的USB控制器直通给虚拟机。这主要是针对那些想把板载USB控制器直通的人,他们需要这些信息。

for iommu_group in $(find /sys/kernel/iommu_groups/ -maxdepth 1 -mindepth 1 -type d);do echo “IOMMU group $(basename “$iommu_group”)”; for device in $(ls -1 “$iommu_group”/devices/); do if [[ -e “$iommu_group”/devices/”$device”/reset ]]; then echo -n “[RESET]”; fi; echo -n $’t’;lspci -nns “$device”; done; done

第二条命令才是我真正需要的,直接找到IOMMU group 27,看到两个控制器的id为10de:1ad6与10de:1ad7。

IOMMU group 27 [RESET] 02:00.0 VGA compatible controller [0300]: NVIDIA Corporation TU102 [GeForce RTX 2080 Ti] [10de:1e04] (rev a1) 02:00.1 Audio device [0403]: NVIDIA Corporation TU102 High Definition Audio Controller [10de:10f7] (rev a1) 02:00.2 USB controller [0c03]: NVIDIA Corporation TU102 USB 3.1 Controller [10de:1ad6] (rev a1) 02:00.3 Serial bus controller [0c80]: NVIDIA Corporation TU102 UCSI Controller [10de:1ad7] (rev a1)

然后将vfio-pci.ids=10de:1ad6,10de:1ad7加入syslinux设置,然后重启计算。

default menu.c32 menu title Lime Technology, Inc. prompt 0 timeout 50 label unRAID OS menu default kernel /bzimage append vfio-pci.ids=10de:1ad6,10de:1ad7 initrd=/bzroot

打开虚拟机设置,将两个控制器分配给虚拟机。

UNRAID使用NVIDIA显卡(直通篇)

最终效果

在设备管理器已经可以看到了2080Ti带的USB控制器了。买了一个绿联的拓展坞,测试后可以正常使用。如果需要一台高性能的游戏虚拟机,20系显卡是非常适合的。之前没有直通 USB 控制器的时候,每当临时插上 USB 设备,就要去 Unraid 网页分配一次,非常繁琐。而直通主板的 USB 控制器又有相当多的限制,如果单独购买 PCI-E 转 usb 扩展卡又太过于浪费。

(0)
PipitaPipita
上一篇 2020-05-02
下一篇 2020-05-23

相关文章

  • Tewa-708G admin password

    0. 假设你光猫的局域网ip是 192.168.1.11. 光猫插入u盘,fat32文件系统。2. 常规用户登陆 http://192.168.1.1:80803. 切换到 管理-设备管理4. 浏览器进入调试模式,在console处,从top切换到MD_Device.html5. 在console内执行`http://192.168.1.1:8080/usb…

    无关专业 2020-12-01
  • PROXMOX PVE 设置国内源

    目前Proxmox中文社区源已正式提供镜像服务,镜像更新频率为每10小时,镜像站机房存放在法国巴黎online机房使用阿里云、华为云融合提供国内CDN加速服务。 地址 http://download.proxmox.wiki # 删除企业源 rm -rf /etc/apt/sources.list.d/pve-enterprise.list #下载秘钥 wg…

    无关专业 2020-12-01
  • 利用 Caddy 一键反代网站并签发证书SSL

    安装Caddy 运行以下命令: 配置文件 以下所有示例域名为boluo.link,请注意替换为自己的域名 ! 1、服务器IP反向代理 下面是一个,用你服务器的IP来反向代理一个http协议的网站http://www.baidu.com 。 服务器IP也可以反向代理HTTPS协议的网站,但是需要自签SSL证书,现在的浏览器一般都不会认自签的SSL证书,所以不建…

    无关专业 2020-12-01
  • Docker+Nextcloud快速部署个人网盘

    实验环境:小伙伴的阿里云服务器,安装的是Centos7的系统,要安装的网盘叫Nextcloud如果是debain,需要先修改一下源。在/etc/apt/sources.list文件下添加一条源 然后执行apt-get update命令更新源。 下面开始安装第一步老规矩,先安装Docker环境.命令如下: 我这里已经安装完成就不重复安装了。启动docker并设…

    无关专业 2020-10-12
  • #脚本#SSH端口怎么防止被暴力破解攻击?使用一键脚本自动拉黑

    SSH端口两种防御脚本 方法1: 超过10次登陆失败就封掉IP,创建shell脚本:secure_ssh.sh 123456789101112 #! /bin/bashcat /var/log/secure|awk ‘/Failed/{print $(NF-3)}’|sort|uniq -c|awk&nbsp…

    无关专业 2021-09-20