oVirt4.2给虚拟机分配vGPU

1 背景说明

   前一段时间我所参与的一个项目中,有个需求就是要使用到桌面虚拟化的,用户通过桌面协议客户端直接访问虚拟机的桌面进而在虚拟机中使用我们的软件,同时虚拟机需要使用到vGPU;所以当时在做了多方面对比之后我选择使用开源的oVirt虚拟化平台及nvidia的m60 GPU搭建环境;之所以这么选择是因为oVirt使用的桌面协议是spice(这边有个坑,后面会说),该协议在对声音及图像的处理上做得非常不错,然后nvidia m60最多可支持出32个桌面,与我们的业务相符(本来想用m40的,m40可以支持64个桌面且比m60便宜,但可惜的是代理商说这款没卖了);然后我在搭建实验环境的时候就遇到了问题,就是oVirt与Xenserver和VMware不同,使用vGPU不能像它们一样在创建虚拟机时的参数中就能配置,为此我也走了好多弯路问了好多人,甚至找资料,花了好多时间最终才把环境搭建出来,为了避免有人像我一样走弯路,所以决定把我搭建过程中总结出的经验拿出来分享一下,第一次发文,有什么不足之处还望大家担待一下。

2 具体操作

  2.1 环境准备

    首先要准备一套部属了oVirt的环境,具体的部署方式我就不多做说明,CSDN上有许多相关的帖子,并且oVirt官网上也有教程;然后将nvidia tesla m60插到oVirt环境中node节点所在的服务器物理机上(有些服务器是不能直接插GPU的,需要额外买个riser套件,将套件装在服务器上,然后再插GPU),并且安装好驱动和安装License服务器,具体操作你在购买或试用License时,从官方下载的驱动及软件包里有文档教程的,安照那个安装准没错,所以这部我也不细说了。

  2.2 开启pci透传(2019.2.12备注:经后续使用发现,pci透传功能并不需要开启,故此本步骤直接省略,跳至2.3即可)

    1) 登录oVirt平台,点击 计算->主机->编辑->内核,在内核命令中填入intel_iommu=on rablacklist=nouveau然后点击确认

oVirt4.2给虚拟机分配vGPU_第1张图片

    2) 点击确认之后会返回到主机页面,然后点击上方的管理->维护

oVirt4.2给虚拟机分配vGPU_第2张图片

    3) 维护操作完成之后,点击安装->重新安装,重新安装完成以后查看主机信息就会发现pci透传已经启用了

oVirt4.2给虚拟机分配vGPU_第3张图片oVirt4.2给虚拟机分配vGPU_第4张图片

  2.3 将vGPU分配给虚拟机

    1)  登录oVirt Engine的终端,查询GPU的bus-id,如下图所示,我的id分别为44:00.0和45:00.0

oVirt4.2给虚拟机分配vGPU_第5张图片

   2)根据vGPU的实例类型查询vGPU的实例名,实例类型可在相应的vgpu grid用户手册中查到,如下图所示,下图为M60的实例参数

oVirt4.2给虚拟机分配vGPU_第6张图片

进入/sys/bus/pci/devices/0000:<你的bus-id>/mdev_supported_types/目录,使用grep -l "<你所使用实例的类型>" nvidia-*/name命令就能获取到实例名,如下图所示,我的bus-id为44:00.0,需要查询M60-0Q(该实例分配512M)的实例名,查询到的实例名为nvidia-12

    3) 登录oVirt平台,找到你要分配vGPU的虚拟机,编辑虚拟机->自定义属性,添加自定义属性mdev_type,值为2)中查询到的实例名,然后开启虚拟机后,在虚拟机中即可当作普通GPU使用了,直接安装相应的GPU驱动配置License即可

oVirt4.2给虚拟机分配vGPU_第7张图片

oVirt4.2给虚拟机分配vGPU_第8张图片

3 一些问题

  在前面我有说过这边有一个坑,那就是,当你在虚拟机中安装完gpu的驱动再重启生效时,你就会发现spice客户端出不了画面了,是的没有画面,因为这是spice本身的问题,spice直接将vGPU当成第二屏幕了,所以从vGPU中传递过来的图片和声音,spice客户端是捕捉不到的,所以就不会有页面显示了;总结就是spice协议不支持使用vGPU咯,当然你非要使用spice协议也是可以的,那么就得自己修改一下spice协议的底层的,这都是开源的,你在网上就能获取到源码,然后自己修改重新编译打包就行了

  如果觉得该spice协议太费时费力的话,不妨可以换个桌面协议,推荐使用win10操作系统的虚拟机,然后默认使用rdp协议就行了,当然直接远程链接过去GPU是不起效果,还需要配置一下:

     1) win+r输入gpedit.msc进入组策略

     2) 计算机配置->管理模块->Windows组件->远程桌面服务->远程桌面会话主机->远程会话环境
        a 启用'限制最大颜色深度',颜色深度设为32位
        b 启用'将硬件图形适配器应用于所有远程桌面服务会话'
        c 启用'配置远程桌面连接的H.264/AVC硬件编码'
        d 启用'配置RemoteFX自适应图形的图像质量',图像质量设为无损
        e 启用'为专门针对Windows Server 2008 R2 SP1设计的RemoteFX客户端启用RemoteFX编码'
        f 进入RemoteFX for Windows Server 2008 R2目录将里面的三项全启用,其中屏幕捕获速率个屏幕图像质量设为最高(最佳质量),视觉体验设为丰富的多媒体

    3) 重启虚拟机后即可生效

你可能感兴趣的:(桌面虚拟化)