Debian11系统实现KVM显卡直通

本文详细介绍了显卡直通技术的工作原理,以及如何在KVM环境中部署虚拟机,涉及系统准备、BIOS设置、内核支持、驱动禁用、网桥配置、虚拟机部署和TPM绕过等内容,旨在帮助用户提升虚拟机图形性能和降低延迟。
摘要由CSDN通过智能技术生成

一、 背景说明

显卡直通是一种虚拟化技术,允许将物理主机上的显卡(GPU)直接分配给虚拟机,使得虚拟机能够直接访问和使用显卡。这种技术可以提供更好的图形性能和更低的延迟,尤其适用于需要高性能图形处理的应用场景,例如游戏、图形设计、科学计算等。

传统的虚拟化技术通常使用虚拟显卡来模拟图形硬件,但这种方式通常无法满足对图形性能要求较高的应用。通过显卡直通,虚拟机可以直接访问物理显卡,充分发挥其性能,同时避免了虚拟显卡引入的性能损失和延迟。

实施显卡直通通常是出于以下几个原因:

1.提高性能: 对于需要高性能图形处理的应用,直接使用物理显卡可以提供比虚拟显卡更高的性能,包括更高的帧率、更短的响应时间等。

2.降低延迟: 直通技术可以减少虚拟化引入的延迟,提高图形应用的响应速度,特别是对于对延迟敏感的应用,如游戏或虚拟现实。

3.支持专业应用: 对于需要使用专业图形软件或进行科学计算的用户,直通技术可以确保虚拟机能够充分利用物理显卡的性能,从而提高工作效率和计算速度。

二、部署虚拟机前准备

注意:KVM虚拟机直通需要两块以上显卡,因虚拟机直通显卡后,Server端将无法使用显卡。此时可使用CPU的核显或其他显卡来对Server端显示。

2.1 OS系统安装

自行准备 Debian系列或RedHat系列的Linux系统;

注:请安装图形化界面操作系统,非图形化操作系统配置较为繁琐。

以下操作以Debian 11.9图形化操作系统为例。

2.2 BIOS功能

在配置之前首先要在BIOS界面打开虚拟化相关功能,这里以Intel CPU为例,进入到BIOS后,

Advanced→CPU ConfigurationIntel (VMX) Virtualization TechnologyEnable

AdvancedGraphics ConfigurationVT-dEnable

OS下再次确认开启与否

# egrep -c '(vmx|svm)' /proc/cpuinfo

该命令用于查找并统计‘cpuinfo‘文件中’vmx‘或’svm‘字样出现的次数,若输出不为0表明已设置成功。若输出为0,则需要重新回到BIOS进行设置并确认自己的处理器是否支持虚拟化技术。

2.3 确认内核是否支持iommu

IOMMU(Input/Output Memory Management Unit)是一种硬件机制,用于管理设备之间的内存访问,通常用于支持虚拟化和设备直通。

执行以下命令查看是否存在与 IOMMU 相关的启动参数

# cat /proc/cmdline | grep iommu  或

# dmesg | grep IOMMU

若无输出则执行以下步骤进行设置

编辑grub配置文件

# vi /etc/default/grub

在GRUB_CMDLINE_LINUX行,添加intel_iommu=on。(如果是amd的CPU则添加

GRUB_CMDLINE_LINUX="amd_iommu=on")

更新grub配置以应用更改

# sudo update-grub

# sudo reboot

重启后,再次检查,确认开启成功。

# dmesg | grep IOMMU

2.4 禁用NVIDIA或AMD 默认驱动

AMD显卡默认驱动:amdgpu

NVIDIA显卡默认驱动:nouveau

当宿主机启动后,操作系统是接管独立显卡的。如果我们想实现虚拟机直通显卡,则必须让宿主机放弃对独立显卡的控制。

注意:如果已在系统内安装CUDA或nvidia官方驱动,需要先自行卸载!

# vi /etc/modprobe.d/blacklist.conf

文件末尾添加如下配置,禁用默认的amd、nvidia、声卡驱动

blacklist amdgpu

blacklist nouveau

blacklist snd_hda_intel

options nouveau modeset=0

保存退出

更新内核设备信息

# sudo update-initramfs -u

重启设备

# sudo reboot

检查是否有输出,如果没有,则已禁用完成。

# lsmod | grep nouveau

2.5 启动VFIO

# vi /etc/modules

添加如下内容:

vfio

vfio_iommu_type1

vfio_pci

vfio_virqfd

保存退出并重启设备

# sudo reboot

三、虚拟机部署

3.1 防火墙及selinux关闭

关闭防火墙和selinux

# systemctl stop firewalld

# systemctl disable firewalld

# setenforce 0

3.2 可靠的源替换

1、Centos建议使用阿里源

# wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo

# yum clean all

# yum makecache

2、ubuntu使用默认源

3、Debian使用阿里源

# sudo vi /etc/apt/sources.list  (操作前请做好相应备份)

将原来的源替换为如下:

        deb https://mirrors.aliyun.com/debian/ bullseye main non-free contrib

deb-src https://mirrors.aliyun.com/debian/ bullseye main non-free contrib

deb https://mirrors.aliyun.com/debian-security/ bullseye-security main

deb-src https://mirrors.aliyun.com/debian-security/ bullseye-security main

deb https://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib

deb-src https://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib

deb https://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib

deb-src https://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib

# sudo apt-get update

3.3 依赖包安装

Debian系列:

# sudo apt-get install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virtinst virt-manager ovmf

RedHat系列:

# yum install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager ovmf virtinst

注:

· qemu-kvm:提供 KVM 虚拟化的基础组件。

· libvirt-daemon-system:提供 libvirt 守护进程。

· libvirt-clients:提供 libvirt 客户端工具。

· bridge-utils:提供用于设置网络桥接的实用工具。

· virt-manager:提供图形化的虚拟机管理器。

· ovmf:提供 OVMF 固件,用于虚拟机的 UEFI 引导。

· virtinst:提供用于创建和配置虚拟机的工具。

3.4 网桥部署

确认网口link状态及要使用桥接的网口

# ip a

3.4.1 配置DHCP网桥

# sudo vi /etc/network/interfaces

添加如下内容:

auto br0

iface br0 inet dhcp

              bridge_ports enp5s0

             bridge_stp on

             bridge_fd 2

             bridge_maxwait 20

重启网络服务

# sudo systemctl restart networking

查看网桥是否配置成功:

# brctl show

3.4.2 配置固定IP的网桥

如果需要配置固定IP的网桥则修改如下:

# sudo vi /etc/network/interfaces

添加以下内容:

auto br0

iface br0 inet static

    address 192.168.1.100

    netmask 255.255.255.0

    gateway 192.168.1.1

    bridge_ports eth0

    bridge_stp on

    bridge_fd 2

    bridge_maxwait 20

重启网络服务

# sudo systemctl restart networking

查看网桥是否配置成功:

# brctl show

3.5 虚拟机部署

提前将要安装的Windows镜像cp到系统下:

找到虚拟机管理软件QEMU。

点击新建虚拟机:

选择本地安装介质

浏览,选择Windows镜像文件

内存和CPU可以先随便给,后续可以修改

安装前部署不再赘述

3.6 绕过TPM检测

为保证Windows系统顺利安装,需要绕过TPM检测,方法如下:

选择修复计算机--选择疑难解答--选择命令行提示符,并输入regedit

在HKEY_LOCAL_MACHINE→SYSTEM→Setup下新建一个名为LabConfig的项

并创建以下5个DWORD值,值为1。

然后关闭注册表编辑器,回到命令行界面输入setup.exe 继续安装。

此处Windows安装过程不在赘述,等待安装完成,重启即可。

四、显卡直通部署

确保虚拟机在关闭状态,重新配置虚拟机。

配置CPU数量:

建议配置为物理CPU线程数量的80%,否则虚拟机进行性能测试时跑分偏低。

如图所示物理CPU共20线程,此时虚拟机配置8个核心,每个核心2个线程,共计16线程。

内存配置,根据实际情况调整。

选择添加硬件,将显卡直通给虚拟机。两个pci设备均需要添加,否则后续安装显卡驱动会报错,两个设备分别为显卡和声卡。

此时再开启虚拟机,显卡就直通给虚拟机使用了,接下来进入虚拟机安装显卡驱动后,即可完成,可在设备管理器下看到显卡。

  • 45
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值