Unraid 通过虚拟 SCSI 控制器将硬盘直通给黑群晖虚拟机

写在前面:为什么不将 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 可正常识别和使用硬盘
添加新评论