问题表象

某品牌x86服务器,Nvidia 2080 Ti GPU卡, CentOS7.3 操作系统, 配置vfio-pci驱动启动报错。

问题的操作步骤

  1. 硬件准备完毕,全部是原厂硬件,一般不会有硬件故障
  2. 安装Centos7.3操作系统,设置启动参数iommu=on等,在其他服务器上对比过,也没有问题。

3. 检查硬件板卡,已经被系统识别

4. 检查GPU卡的驱动状态,并没有启动vfio-pci

5. 检查vfio驱动配置文件,iommu配置,正常

6. 检查dmesg, 发现问题是vfio-pci驱动启动失败

问题定位

从新梳理整个流程,注意到iommu也不正常,iommu对于passthrough很重要。 IOMMU(i/o memory management unit)。iommu有两大功能:控制设备dma地址映射到机器物理地址(dmar),中断重映射(intremap) 。 iommu中dmar出现为虚拟化软件dma访问带来的性能提升,intremap出现为虚拟化软件透传带来了中断消息的安全保证。

而iommu的前提是主板支持Intel® VT-x、VT-d和Linux内核支持Intel® VT-x、VT-d,并在内核启动参数中添加iommu=on。

检查iommu配置,正常

检查CPU vt-d支持,正常

最后就是检查BIOS设置,是否enable VT-d

定位问题极大的可能性是这里VT-d没有enable。

问题修复

BIOS中enable VT-d, 然后重启系统。

检查vfio-pci, iommu. DRAM启动信息,明显比以前多了很多信息。

检查Nvidia驱动信息,vfio-pci挂载成功。

原因分析

有可能这款物理机上的GPU设备暂不支持加载到云主机使用 ,所以BIOS配置中默认关闭了VT-d选项。

参考文章

Openstack GPU Passthrough

Centos 7 + Openstack + PCI passthrough(透传)

OpenStack 企业私有云的若干需求(1):Nova 虚机支持 GPU

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据