英伟达独立显卡直通虚拟机
显卡直通KVM虚拟机
1、确认CPU是否支持硬件虚拟化
#egrep -o '(vmx|svm)' /proc/cpuinfo
vmx
vmx
vmx
2、确认内核开启iommu分组支持
先进入bios打开VT-d虚拟化选项为enabled
#vi /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet rd.driver.pre=vfio-pci intel_iommu=on video=efifb:off,vesafb:off"
更新
#sudo grub2-mkconfig -o /boot/grub2/grub.cfg
参数说明:
vfio-pci 显卡直通虚拟话需要的驱动
iommu开启直通分组
efifb:off 禁用efi启动的显示设备
vesafb:off 禁用legacy启动的显示设备
3、加载显卡直通所需的驱动模块
#vi /etc/modules-load.d/vfio.conf
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
4、禁用原本的英伟达显卡驱动,避免直通出错
#vi /etc/modprobe.d/blacklist.conf:
blacklist nouveau
blacklist nvidia
5、指定显卡设备加载对应驱动
首先找出要直通显卡的pci设备号
#lspci | grep NVIDIA
[root@node1 ~]# lspci | grep NVIDIA
01:00.0 VGA compatible controller: NVIDIA Corporation GM107GL [Quadro K2200] (rev a2)
01:00.1 Audio device: NVIDIA Corporation GM107 High Definition Audio Controller [GeForce 940MX] (rev a1)
[root@node1 ~]# lspci -ns 01:00.0
01:00.0 0300: 10de:13ba (rev a2)
[root@node1 ~]# lspci -ns 01:00.1
01:00.1 0403: 10de:0fbc (rev a1)
#vi /etc/modprobe.d/vfio.conf:
options vfio-pci ids=10de:13ba,10de:0fbc
6、重新编译生成initramfs,然后重启机器
# mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak
# dracut -v /boot/initramfs-$(uname -r).img $(uname -r)
#reboot
6、验证是否有iommu分组和查看驱动是否被加载输出
[root@node1 ~]# sudo dmesg | grep -e DMAR -e IOMMU
[ 0.000000] ACPI: DMAR 00000000675e6520 000A8 (v01 INTEL EDK2 00000001 INTL 00000001)
[ 0.000000] DMAR: IOMMU enabled
...
[root@node1 ~]# lsmod | grep vfio
vfio_pci 41993 0
irqbypass 13503 2 kvm,vfio_pci
vfio_iommu_type1 22440 0
vfio 32657 2 vfio_iommu_type1,vfio_pci
#lspci -v
01:00.0 VGA compatible controller: NVIDIA Corporation GM107GL [Quadro K2200] (rev a2) (prog-if 00 [VGA controller])
Subsystem: NVIDIA Corporation Device 1097
.......
Kernel driver in use: vfio-pci
Kernel modules: nouveau
01:00.1 Audio device: NVIDIA Corporation GM107 High Definition Audio Controller [GeForce 940MX] (rev a1)
Subsystem: NVIDIA Corporation Device 1097
........
Kernel driver in use: vfio-pci
Kernel modules: snd_hda_intel
#Kernel driver in use 一定要是vfio-pci才说明配置成功,才应该继续下一步
6、接下来安装配置好一台虚拟机,这里使用virt-manager创建
选择Add Hardware:
最终结果如下图,然后开启虚拟机:
注意:直通设备的时候要直通完分组里的所有设备,比如上面01:00.0和01:00.1是同一个分组
7、进入虚拟机,安装对应的驱动,安装成功之后驱动软件要求重启生效,连接好显卡和显示器,重启以后虚拟机就会有画面输出了
进入官网下载对应驱动:
/Download/index.aspx?lang=cn
安装中:
重启生效,对应连接的显示器上就可以输出画面且成功识别:
注:2021年4月份英伟达公司支持GPU虚拟化,因此可以省去以前大部分欺骗驱动检测配置,直通显卡后的虚拟机体验极佳
英伟达独立显卡直通虚拟机
显卡直通KVM虚拟机
1、确认CPU是否支持硬件虚拟化
#egrep -o '(vmx|svm)' /proc/cpuinfo
vmx
vmx
vmx
2、确认内核开启iommu分组支持
先进入bios打开VT-d虚拟化选项为enabled
#vi /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet rd.driver.pre=vfio-pci intel_iommu=on video=efifb:off,vesafb:off"
更新
#sudo grub2-mkconfig -o /boot/grub2/grub.cfg
参数说明:
vfio-pci 显卡直通虚拟话需要的驱动
iommu开启直通分组
efifb:off 禁用efi启动的显示设备
vesafb:off 禁用legacy启动的显示设备
3、加载显卡直通所需的驱动模块
#vi /etc/modules-load.d/vfio.conf
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
4、禁用原本的英伟达显卡驱动,避免直通出错
#vi /etc/modprobe.d/blacklist.conf:
blacklist nouveau
blacklist nvidia
5、指定显卡设备加载对应驱动
首先找出要直通显卡的pci设备号
#lspci | grep NVIDIA
[root@node1 ~]# lspci | grep NVIDIA
01:00.0 VGA compatible controller: NVIDIA Corporation GM107GL [Quadro K2200] (rev a2)
01:00.1 Audio device: NVIDIA Corporation GM107 High Definition Audio Controller [GeForce 940MX] (rev a1)
[root@node1 ~]# lspci -ns 01:00.0
01:00.0 0300: 10de:13ba (rev a2)
[root@node1 ~]# lspci -ns 01:00.1
01:00.1 0403: 10de:0fbc (rev a1)
#vi /etc/modprobe.d/vfio.conf:
options vfio-pci ids=10de:13ba,10de:0fbc
6、重新编译生成initramfs,然后重启机器
# mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak
# dracut -v /boot/initramfs-$(uname -r).img $(uname -r)
#reboot
6、验证是否有iommu分组和查看驱动是否被加载输出
[root@node1 ~]# sudo dmesg | grep -e DMAR -e IOMMU
[ 0.000000] ACPI: DMAR 00000000675e6520 000A8 (v01 INTEL EDK2 00000001 INTL 00000001)
[ 0.000000] DMAR: IOMMU enabled
...
[root@node1 ~]# lsmod | grep vfio
vfio_pci 41993 0
irqbypass 13503 2 kvm,vfio_pci
vfio_iommu_type1 22440 0
vfio 32657 2 vfio_iommu_type1,vfio_pci
#lspci -v
01:00.0 VGA compatible controller: NVIDIA Corporation GM107GL [Quadro K2200] (rev a2) (prog-if 00 [VGA controller])
Subsystem: NVIDIA Corporation Device 1097
.......
Kernel driver in use: vfio-pci
Kernel modules: nouveau
01:00.1 Audio device: NVIDIA Corporation GM107 High Definition Audio Controller [GeForce 940MX] (rev a1)
Subsystem: NVIDIA Corporation Device 1097
........
Kernel driver in use: vfio-pci
Kernel modules: snd_hda_intel
#Kernel driver in use 一定要是vfio-pci才说明配置成功,才应该继续下一步
6、接下来安装配置好一台虚拟机,这里使用virt-manager创建
选择Add Hardware:
最终结果如下图,然后开启虚拟机:
注意:直通设备的时候要直通完分组里的所有设备,比如上面01:00.0和01:00.1是同一个分组
7、进入虚拟机,安装对应的驱动,安装成功之后驱动软件要求重启生效,连接好显卡和显示器,重启以后虚拟机就会有画面输出了
进入官网下载对应驱动:
/Download/index.aspx?lang=cn
安装中:
重启生效,对应连接的显示器上就可以输出画面且成功识别:
注:2021年4月份英伟达公司支持GPU虚拟化,因此可以省去以前大部分欺骗驱动检测配置,直通显卡后的虚拟机体验极佳