R740 KVM vgpu

20.03LTS SP3 部署Nvidia vGPU

环境信息

服务器型号:Dell R740

操作系统版本:20.03LTSP3

架构:x86_64

GPU型号: Nvidia A10

 20.03LTS SP3 KVM HOST部署Nvidia vGPU

1. 重新编译内核,将vGPU的patch合入内核,详细操作步骤请参考《openEuler内核合入patch的编译安装流程》。

2. 修改BIOS配置,使能VT和SR-IOV

3. 安装编译依赖的软件包:

dnf install -y gcc-c++ tar make

4. 修改系统启动项,使能VT-d的iommu功能和SR-IOV。

vi /boot/efi/EFI/openeuler/grub.cfg

5. 重启机器,查看SR-IOV的使能情况,回显中应出现上一步设置的信息。

reboot

cat /proc/cmdline

 6. 禁用开源驱动nouveau

rmmod nouveau

echo “blacklist nouveau” >> /etc/modprobe.d/blacklist.conf

nouveau驱动和Nvidia的vGPU驱动冲突,所以要禁用nouveau。

查看驱动,如果没有回显表示驱动已经成功禁用。

lsmod | grep nouveau

7. 从Nvidia官网下载驱动,然后安装驱动

bash NVIDIA-Linux-x86_64-510.47.03-vgpu-kvm.run

安装过程中,请使用DKMS进行自动编译(出现选项时,选择YES)

8. 重启机器, 重启完成后查看内核加载的驱动模块

reboot

lsmod | grep vfio

9. 执行nvidia-smi,如果出现以下界面,表示驱动成功安装

10. 执行以下命令启用SRIOV, 如果看到命令回显出现注册信息,表示使能SR-IOV成功。

/usr/lib/nvidia/sriov-manage -e ALL

每次重启后vGPU的SRIOV都会关闭,所以重启后需要重新执行命令使能SRIOV。

      

11. 使能SRIOV成功后,在/sys/class/mdev_bus/目录下会列出所有可以用于创建vGPU的VF设备的BDF。

ls /sys/class/mdev_bus/

12. 进入对应的vGPU设备下,执行以下命令可以查看每个VF目录所能创建的vGPU类型和数量。

cd /sys/class/mdev_bus/0000:3b:00.4/mdev_supported_types

for i in * ; do echo “  “ $(cat $i/name) available: $(cat $i/avai*); done

13. 执行以下命令查看当前VF支持的mdev设备名称和vGPU设备可用数量

for i in * ; do echo $i, $(cat $i/name) $(cat $i/ava*) ; done

14. 创建vGPU MDEV设备

uuidgen > nvidia-588/create

ls nvidia-588/devices

创建完成后查看已分配vGPU的VF可用的剩余vGPUU 实例数,全部为 0。意味着当前VF已经不能再创建新的 vGPU 设备,如果要再创建新的 vGPU,需要选择其他VF。

重启物理机后,分配的vGPU会被删除,所以重启后需要重新生成uuid分配给虚拟机。

openEuler 20.03LTS SP3 VM部署Nvidia vGPU Guest

1. 创建虚拟机,详细创建方式请参考《openEuler x86_64虚拟机创建流程》。

2. 执行virsh list –all命令查看当前机器里已创建的虚拟机。

3. 修改虚拟机的配置文件,将之前vGPU生成的uuid写入虚拟机的配置文件在devices节点下,添加以下信息:

virsh edit testVM01

4. 启动虚拟机

virsh start testVM01

 

5. 将vGPU的客户端驱动scp到虚拟机上 

6. 进入虚拟机

virsh console testVM01

7. 查看/lib/modules/4.19.90目录下是否存在build、source 目录,如果这两个目录不存在,下载内核源码,进行编译使源码目录下存在编译好的文件,然后创建软链接指向源码目录。

dnf install -y kernel-source rpm-build openssl-devel bc rsycn gcc gcc-c++ flex bison m4 elfutils-libelf-devel

cd /usr/src/linux-4.19.90-2202.1.0.0136.oe1.x86_64/

make openeuler_defconfig

make binrpm-pkg -j{cpu_num}

ln -s /usr/src/linux-4.19.90-2202.1.0.0136.oe1.x86_64/ /lib/modules/4.19.90/build

ln -s /usr/src/linux-4.19.90-2202.1.0.0136.oe1.x86_64/ /lib/modules/4.19.90/source

8. 安装Nvidia Guest vGPU驱动

bash /opt/ NVIDIA-Linux-x86_64-510.47.03-grid.run

9. 使用nvidia-smi查看相关信息,驱动安装成功

10. 查看虚拟机挂载的显卡

dnf install pciutils

lspci | grep -i vga

11. 使用nvidia-smi查看服务端的vGPU使用情况

Agenda

1. 物理机安装Nvidia vGPU驱动失败

如果出现以下报错,表示安装驱动时缺少编译安装依赖的软件包。

请安装以下软件包:

dnf install -y gcc-c++ tar make

2. 虚拟机安装驱动失败

如果在虚拟机安装驱动出现以下报错,需要手动安装kernel-source源码包,并在/lib/modules目录下设置软链接,因为驱动安装过程中会去读取内核build、source目录下的信息。

3. 使能SRIOV出现“Kernel doesn’t support SRIOV based vGPU”的错误

如果执行SRIOV使能时出现以下错误,说明patch没有成功打入kernel,kernel不支持vGPU SRIOV。

请编译内核,将以下patch合入内核,详细流程请参考《openEuler 内核合入patch的编译安装流程》。

patch链接:

https://patchwork.kernel.org/project/kvm/patch/20190213040301.23021-8-baolu.lu@linux.intel.com/

      

4. nvidia-smi执行失败

如果使用nvidia-smi查看vGPU相关信息时,出现了以下的报错,表示驱动安装失败,请卸载当前安装的驱动并重新进行安装。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

frank0060071

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值