CentOS下KVM虚拟机USB和GPU直通配置

生也有涯,知也无涯。这篇文章主要讲述CentOS下KVM虚拟机USB和GPU直通配置相关的知识,希望能为你提供帮助。
关于直通方面的配置有很多讲解,此处只是我个人自己总结笔记下。
背景一工作站笔记本配N卡,USB外接一个其它设备,7x24运行(真是一时用一时爽,一直用...),严谨的工程实现真对他们是不用考虑的:(。
环境

  • 宿主机CentOS7(本想用8的,由于一些其它因素妥协了)
  • 虚拟机Windows2016
  • 直通宿主机的USB3.0和PCIe的GPU卡 实现其实过程很简单,配置也比较傻瓜,只是有个别的地方需要注意。
    1.安装带图形界面的KVM虚拟化环境(命令行的大佬略过)
    sudo yum install libvirt virt-manager

    这台服务器本来就要开启vnc远程链接服务器,提供经典的gnome桌面,所以用的桌面环境下的virt-manager,当然没有vnc需求的搞个cockpit更好。
    配置USB直通【CentOS下KVM虚拟机USB和GPU直通配置】除了选对需要的USB设备,另外要注意USB控制器的类型,CentOS7下的virt-manager默认的虚拟机是2.0的,刚好我这次是3.0的设备,所以需要更改设置Edit-> Virtual Machine Details-> Controller USB 0。
    配置GPU直通先来个Nvidia官网查考
    https://docs.nvidia.com/grid/5.0/grid-vgpu-user-guide/index.html#using-gpu-pass-through-red-hat-el-kvm-virt-manager
    看看也很简单,说说注意的地方:
    1. VMX和SVM
      Bios和UEFI去打开VT-D和AMD-V
    2. IOMMU
      IOMMU(I/O Memory Management Unit)。其有两大功能:
  • 控制设备DMA地址映射到机器物理地址(DMAR)
  • 中断重映射(IntreMap)(可选)
    确认内核是否支持IOMMU
    cat /proc/cmdline | grep iommu

    有输出则正常,如果没有输出,将intel_iommu=on添加到grub启动文件当中
    sudo vim /etc/default/grub

...
GRUB_CMDLINE_LINUX=" intel_iommu=on crashkernel=auto spectre_v2=retpoline rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet"
...
重新生成内核

sudo grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
再次验证

cat /proc/cmdline | grep iommu
如果不行试试重启主机


    推荐阅读