pve开启gpu显卡虚拟化

假设pve物理机有一块gpu设备,如何在新建的虚拟机中也包含这块gpu设备呢?

  • 第1步,在pve物理机上设置
#.1.1.配置软件源
cp /etc/apt/sources.list /etc/apt/sources.list.$(date +%Y%m%d%H%M%S)
echo "deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free" > /etc/apt/sources.list
echo "deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free" >> /etc/apt/sources.list
echo "deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free" >> /etc/apt/sources.list
echo "deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free" >> /etc/apt/sources.list
echo "deb https://mirrors.tuna.tsinghua.edu.cn/proxmox/debian bullseye pve-no-subscription" > /etc/apt/sources.list.d/pve-enterprise.list

#.1.2.安装必要的软件包并更新本地包缓存
apt install -y apt-transport-https ca-certificates
apt-get update

#.2.1.开启iommu,其中i915.enable_gvt=1开启共享模式
cp /etc/default/grub /etc/default/grub.$(date +%Y%m%d%H%M%S)
#.intel处理器:sed -i '/^GRUB_CMDLINE_LINUX_DEFAULT.*/c GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt i915.enable_gvt=1 video=efifb:off"' /etc/default/grub
#.amd或者海光:sed -i '/^GRUB_CMDLINE_LINUX_DEFAULT.*/c GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt i915.enable_gvt=1 video=efifb:off"' /etc/default/grub
cat /etc/default/grub | grep "^GRUB_CMDLINE_LINUX_DEFAULT"

#.2.2.更新grub
update-grub

#.3.屏蔽系统中的开源显卡驱动避免开启显卡被系统加载
cat /etc/modprobe.d/blacklist.conf | grep nouveau || echo "blacklist nouveau" >> /etc/modprobe.d/blacklist.conf
cat /etc/modprobe.d/blacklist.conf | grep nvidia || echo "blacklist nvidia" >> /etc/modprobe.d/blacklist.conf
cat /etc/modprobe.d/blacklist.conf | grep nvidiafb || echo "blacklist nvidiafb" >> /etc/modprobe.d/blacklist.conf
echo "options kvm ignore_msrs=1" > /etc/modprobe.d/kvm.conf

#.4.1.加载vfio模块
cp /etc/modules /etc/modules.$(date +%Y%m%d%H%M%S)
echo "vfio" > /etc/modules
echo "vfio_iommu_type1" >> /etc/modules
echo "vfio_pci" >> /etc/modules
echo "vfio_virqfd" >> /etc/modules

#.4.2.更新内核参数
update-initramfs -k all -u

#.5.重启机器生效
reboot
  • 第2步,创建虚拟机的时候,指定 Machine 为 q35,并启用 Qemu Agent

  • 第3步,虚拟机创建之后,在 Hardware 下 Add 对应显卡的 pci 设备

  • 第4步,启用虚拟机的avx指令集支持(创建合合ocr容器或安装Mongodb 5.0及以上版本都要求cpu支持avx指令集),然后重启虚拟机

遇到的问题

  • 问题1:按照第2、第3步创建虚拟机并新增 PCI Device 设备之后,启动虚拟机就会导致物理机重启。最后查阅资料才发现,pve物理机是信创机器(联想SR558H机箱、海光cpu),配置 /etc/default/grub 引导的时候需要使用 amd_iommu=on 而非 intel_iommu=on
root@pve02:~# dmidecode -s processor-version
Hygon C86 5285 16-core Processor
Hygon C86 5285 16-core Processor

root@pve02:~# cat /etc/default/grub | grep "^GRUB_CMDLINE_LINUX_DEFAULT"
GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt video=efifb:off"
Copyright © www.sqlfans.cn 2023 All Right Reserved更新时间: 2024-06-18 20:56:52

results matching ""

    No results matching ""