文章目录

  • UnRaid系列文章目录
  • 0.前言
  • 1.为什么要折腾直通?
  • 2.最常用的直通方法
  • 2.1.直通硬盘:
  • 2.2. 直通显卡:
  • 3.直通控制器
  • 3.1.在系统设备中VFIO绑定控制器
  • 3.2.在虚拟机中绑定控制器
  • 4.直通USB设备
  • 4.1.虚拟机独占模式
  • 4.2.按需挂载模式
  • 5.iGVT虚拟显卡直通
  • 6.SR-IOV虚拟网卡直通
  • 7.cdrom光驱直通



0.前言

从接触UnRaid近2年来,一直在学习和摸索其硬件直通的无限奥妙,既学会了常规的基于硬件(比如硬盘、显卡、声卡)的直通,也学会了可移动硬件(比如U盘、移动硬盘、蓝牙接收器——键鼠、蓝牙音箱等)的直通,更学会了基于控制器(比如硬盘控制器)的直通、虚拟化直通(比如SR-IOV、iGVT……)等多种直通方案,在此记录备忘,也分享给有同样需求的读者。


1.为什么要折腾直通?

我们在用UnRaid创建虚拟机的时候,默认都是以虚拟磁盘、虚拟网卡等方式配置虚拟机的磁盘和网卡等,虽然方便,但副作用也是显而易见的——虚拟磁盘相当于是在UnRaid磁盘阵列中的某块硬盘上建立一个虚拟磁盘镜像文件,虚拟机把此镜像文件当作一个磁盘,因此其读写效率是有限的。有没有什么办法将需要的硬件直接绑定到虚拟机上,所有的操作都不经过UnRaid宿主机层面呢?答案是肯定的,那就是硬件直通!接下来我将本人已经测试成功的各种直通方法与大家逐一分享。

2.最常用的直通方法

2.1.直通硬盘:

在网上搜到的大多数直通方案于此类似,即以id方式来直通硬盘(如下图所示:)

unraid启动docker unraid启动后可以拔掉优盘吗_ios


创建虚拟机虚拟磁盘总线可在Virtio、SCSI、SATA、IDE、USB中选择(试想一下,如果你的硬盘是Nvme的高速SSD,被迫虚拟成SATA会是什么样的感觉?)。尤其要注意的是虚拟磁盘位置选择【手动】,后面紧跟的位置要手动录入,其id通过如下方式获得:进入UnRaid的ssh,输入ls /dev/disk/by-id,然后找到尚未分配给UnRaid阵列的硬盘id(需要直通的硬盘是不能加入UnRaid磁盘阵列的),比如我的是ata-ASint_AS606_512GB_AA000000000000000631,则在虚拟磁盘位置后手工输入/dev/disk/by-id/ata-ASint_AS606_512GB_AA000000000000000631即可将此磁盘直通给虚拟机。

2.2. 直通显卡:

在显卡处直接选择你有的显卡,并加载相应bios文件(bios文件下载地址),下图以直通核显为例(我的需要加载vbios_gvt_uefi.rom这个虚拟核显bios才行,有些机器也许不需要):

unraid启动docker unraid启动后可以拔掉优盘吗_unraid启动docker_02


但要注意的是:

1.虚拟机先只设定vnc显卡,通过vnc登录后打开远程桌面

2.再在虚拟机中添加核显

3.以远程桌面方式登录虚拟机,安装virtio-win光驱的驱动,同时安装virtio-win-guest-tools.exe,然后正确安装各项驱动程序(若系统不能自动搜索安装,可先通过浏览virtio-win光驱安装,再不行就360驱动等第三方驱动来安装)

4.核显在虚拟机中正常工作

如果虚拟机直通了核显,虚拟机开启后,UnRaid宿主机是不能再调用核显——包括显示、硬件加速等——要破此题,继续往下看)

3.直通控制器

由于2.1.方式直通的硬盘是以单个硬盘的方式直通的,且磁盘总线没有Nvme等pci高速模式,磁盘效能大打折扣,如果有多块硬盘还有一个一个的去添加id,很是繁琐,稍不注意还会搞错。于是就有了另外一种直通方式——控制器直通。

3.1.在系统设备中VFIO绑定控制器

首先在UnRaid【工具】→【系统设备】中对欲直通的设备进行vfio绑定(将设备对应的□打勾,并点击底部右侧【在引导时对VFIO选择了绑定】,再重启UnRaid系统),参照下图(这是6.9.x的新方式,之前的版本还是需要在Syslinux 配置中手工添加代码进行绑定,此处略)。

unraid启动docker unraid启动后可以拔掉优盘吗_直通_03

3.2.在虚拟机中绑定控制器

只需要在虚拟机设置页面末尾,其他PCI设备中将与直通给虚拟机的控制器或设备(上一步已VFIO绑定过的设备会在此处出现)勾选即可。比如Intel 200 Series SATA controller(这是我的主板集成的硬盘控制器,有4个SATA口),则插在本SATA控制器上的所有硬盘均直通给了虚拟机,你不需要去关心直通的每一块硬盘的顺序,就像在物理机中使用硬盘一样。

unraid启动docker unraid启动后可以拔掉优盘吗_ios_04

4.直通USB设备

又分为2种情形:虚拟机独占模式、按需挂载模式。

4.1.虚拟机独占模式

即在虚拟机设置中进行绑定,比如蓝牙键鼠接收器、usb网卡(声卡)等等,只需要在虚拟机设置页面靠近末尾部分的USB设备中勾选所要直通的USB设备即可:

unraid启动docker unraid启动后可以拔掉优盘吗_unraid启动docker_05

4.2.按需挂载模式

比如U盘、USB移动硬盘等移动设备,只需要在读写其资料时挂载,则可以通过安装Hotplug USB插件来实现。该插件是第三方提供的,不能直接在应用apps中安装,需要在插件页手工安装,插件地址部分输入https://github.com/dlandon/libvirt.hotplug.usb/raw/master/libvirt.hotplug.usb.plg即可。

unraid启动docker unraid启动后可以拔掉优盘吗_直通_06


安装成功后,进入虚拟机页面,按下图备注可实现USB设备的挂载和卸载(只针对已经运行的虚拟机进行挂载和卸载)

unraid启动docker unraid启动后可以拔掉优盘吗_iGVT_07