写在前面:为什么不将 SAS 卡整体直通给虚拟机?如果能做到,我也不用研究硬盘直通了……
在 Unraid 系统下建立虚拟机的时候,存储设备可以选 USB、SATA、SCSI。
- USB 即虚拟成 U 盘,对于黑群晖这种需要 U 盘引导的系统来说很方便,不需要像 Proxmox VE 那样在 VM 设置里加一大堆 QEMU args
- SATA 即通过虚拟 SATA 控制器(Intel ICH9)挂载硬盘
- SCSI 即通过虚拟 SCSI 控制器(默认为 virtio-scsi)挂载硬盘
底层 libvirt 提供了几种不同的 SCSI 虚拟控制器,可以通过修改 XML 的方式更换控制器。(更改 model)
<controller type='scsi' index='0' model='virtio-scsi' />
根据 Redhat 文档,我实验了以下几个型号。(仅记录目前最新版黑群晖引导 24.6.0 的使用情况)
virtio-scsi
- 默认型号
- 使用驱动 virtio_blk
- 目前 可以识别并加载,但是与 SATA 硬盘存在编号冲突,混合使用 SATA 和 SCSI 方式挂载硬盘有大概率会丢盘。
lsilogic
- 虚拟成 LSI 53c895a
- 使用驱动 sym53c8xx
- rr 本身支持,但是没有提供 DSM modules,进入 DSM 后无法识别控制器
lsisas1068
- 虚拟成 LSI SAS1068
- 使用驱动 mptsas
- 仅支持 2TB 以下硬盘,2TB 以上硬盘系统无法识别,猜测是默认用了 IR 模式
lsisas1078
- 虚拟成 LSI MegaRAID SAS 1078
- 使用驱动 megaraid_sas
- 在 DSM 里可以识别硬盘但无法正常使用,猜测是因为没有启用 JBOD 模式
vmpvscsi
- 虚拟成 VMware PVSCSI
- 使用驱动 vmw_pvscsi
- 需要在 XML 设置里将挂载硬盘的 target 和 unit 的值对调(target 值递增,unit 值为 0),否则会报错 bad scsi device lun
- 进入 DSM 可正常识别和使用硬盘