Unraid 直通SATA控制器方式
环境
Dell的R220机架式服务器, E3-1220V3 + 6G ECC内存.
背景
之前裸黑裙和ESXi+黑裙 PVE+黑裙都尝试过, 都有或大或小的问题.
本次安装Unraid之前都一直PVE+黑裙跑了很长时间, PVE安装在U盘上,使用了一个PCIE转NVME/M2的转接卡接了256G东芝固态当主存储,主存储上安装了黑裙虚拟机,直通SATA(AHCI)控制器给黑裙.
之后U盘引导坏掉, 我一直懒得修. 今天有空闲时间, 加上最近Unraid相当受欢迎于是把这套玩意重装一个Unraid来玩.
直通相关
安装基本都是照着司波图的教程来, 感谢司波图大佬, 视频和教程真的做的非常好
不过到黑裙部分时, 我发现司波图和其他绝大部分教程一样, 都是使用单硬盘直通, 本质上还是RDM磁盘映射那一套, 对我这种直通党有点不太能接受, 毕竟我当时放弃了我非常喜欢的ESXi而改用又难用又坑爹的PVE就是为了SATA控制器直通.
于是一通谷歌, 找到直通方式, 再填了一些坑实现了直通效果.
图懒得截了, 以下纯文字:
- 确保此sata控制器上的硬盘都没有加入到array中, 也就是宿主机没有使用这些设备.
- 先在unraid的
tools/系统设备
中查看sata控制器的总线id和IOMMU编组, 我这里是IOMMU group 7: [8086:8c52] 00:1f.0 ISA bridge: Intel Corporation C222 Series Chipset Family Server Essential SKU LPC Controller (rev 05) [8086:8c02] 00:1f.2 SATA controller: Intel Corporation 8 Series/C220 Series Chipset Family 6-port SATA Controller 1 [AHCI mode] (rev 05) [8086:8c22] 00:1f.3 SMBus: Intel Corporation 8 Series/C220 Series Chipset Family SMBus Controller (rev 05)
第二行的SATA Controller
就是我要直通的目标, 其属于IOMMU第7组, 总线ID为[8086:8c02]
组内还有一个SMBus设备,总线ID为[8086:8c22]
那个ISA bridge是这个组的总线桥, 不用管. 带bridge字样的都并非实际设备.
- 进入unraid的
main
菜单, 选择启动设备
,点击那个flash
也就是unraid系统所在的U盘, 再修改Syslinux配置
项目.- 右上角将
菜单视图
切换为文本视图
, 这样就能对引导项进行编辑 - 将对应的引导项修改为如下内容
label Unraid OS menu default kernel /bzimage append vfio-pci.ids=8086:8c02,8086:8c22 initrd=/bzroot
- 所谓
对应的引导项
一般就是第一项和第二项, 如果你从来不用第二项(开启本地GUI服务),那只改第一项也行 - 修改方式是在引导项条目的
append
后面加上直通参数, 也就是vfio-pci.ids=8086:8c02,8086:8c22
. 如果你需要直通的设备独立为IOMMU组, 那只需要填一个设备就行, 我这里因为IOMMU第7组里有两个设备, 必须两个都直通(本质好像是提供驱动?)
- 右上角将
- 保存修改好的引导选项, 并重新启动unraid, 之后再新建虚拟机时, 你就能看到选项最底下有一个或多个PCI设备, 比如我这里的SATA Controller, 勾选这个设备就能将其直通给虚拟机(我的黑裙).
其他
国内的教程都没有找到相关内容, 我的测试成功主要感谢forums.unraid.net/topic/71675…
如果单是直通某个PCIE设备其实是比较简单的, 就是如我前面所述的加引导参数, 但我只直通sata控制器[8086:8c02]却会失败, 原因在视频里有讲解:PCIE设备出于不够用和不浪费的原因, 很多时候会把设备通过桥接连起来形成一个IOMMU的组, 节省PCIE通道. 如果你需要直通的设备独立为一个组, 说明运气比较好, 把设备ID直接加到引导参数里就行. 但很多简单的设备都是以组的形式合并的, 这就需要自己查看设备所在的IOMMU组, 找到组内其他(除了bridge类以外的)设备ID, 全都加到直通列表里
注意
这种做法其实还有个问题: 如果所选设备单独为一组, 直接直通此设备就好. 如果与其他不重要的设备为一组, 把组内设备全直通也行. 但如果主板厂坑爹, 把你要直通的设备和其他如USB/SATA/网卡等放在一组, 那最好放弃直通, 因为你把这些设备也添加到直通列表里意味着宿主机的unraid也不能使用这些设备, USB还好说, 一般主板都会有几组USB, 换接口或许还行, 但网卡也不给用那这机器就废了.