ovirt 搭建vgpu(nvidia Tesla 4)

1,官方文档vgpu用户指导手册:

https://docs.nvidia.com/grid/7.0/grid-vgpu-user-guide/index.html#red-hat-el-kvm-install-configure-vgpu

2,证书服务器安装

https://docs.nvidia.com/grid/latest/grid-software-quick-start-guide/index.html

https://docs.nvidia.com/grid/ls/2019.11/grid-license-server-user-guide/index.html 

3. vgpu对应的类型与作用

https://docs.nvidia.com/grid/10.0/grid-vgpu-user-guide/index.html#vgpu-types-tesla-t4

4.部分资料整合

http://vgpu.com.cn/  


前言(唠叨):部署nvidia的vgpu先要申请一个测试账号或者直接购买。部署过程其实还是蛮简单,就是授权有些麻烦。还有一大堆的链接资料看的头晕,事实上,真正有用的信息不多,nvidia把各大虚拟化厂商的部署资料都放在一起了,阅览起来很不爽,而我们主要看的是rhev和kvm的资料。写这篇文章仅仅为了记录一下搭建过程与记录一些坑,防止遗忘。


安装环境:centos7.7, 

                 ovirt4.3

                 nvidia Tesla 4

安装gcc

安装 kernel-devel, kernel-headers(版本需要与内核一致,否则需要从网上下载rpm包,建议直接使用Centos7.7版本,可直接yum)

# yum install gcc
# yum install kernel-devel-$(uname -r)  kernel-headers-$(uname -r)


禁用nouveau驱动

# vi /etc/modprobe.d/blacklist.conf
   blacklist nouveau   options nouveau modeset=0
# mv /boot/initramfs-$(uname -r).img  /boot/initramfs-$(uname -r).img.bak
# dracut /boot/initramfs-$(uname -r).img $(uname -r)

重启 

# reboot


登录nvidia授权用户控制台,点击这里登录


软件下载页面下载对应的软件包,我这里下载是:NVIDIA-GRID-RHEL-7.7-430.83-432.33.zip

解压出来主要有:

NVIDIA-vGPU-rhel-7.7-430.83.x86_64.rpm  用于安装在服务器上的vGPU管理软件

432.33_grid_win7_win8_server2008R2_server2012R2_64bit_international.exe   win虚拟机驱动

432.33_grid_win10_server2016_server2019_64bit_international.exe  win虚拟机驱动

NVIDIA-Linux-x86_64-430.83-grid.run  linux虚拟机驱动

还有其他一些的指导文档。

image.png


安装vGPU管理软件

上传刚才解压出来的NVIDIA-vGPU-rhel-7.7-430.83.x86_64.rpm到服务器上

# rpm -iv NVIDIA-vGPU-rhel-7.7-430.83.x86_64.rpm

重启

# reboot


验证nouveau是否被禁用

# lsmod | grep -i nouveau


验证nvidia的是否在pci接口列表

# lspci | grep -i nvidia


检查内核加载的模块列表中的VFIO驱动程序,验证是否正确安装和加载了NVIDIA vGPU软件包

# lsmod | grep -i vfio
nvidia_vgpu_vfio       49962  0 
nvidia              19075586  10 nvidia_vgpu_vfio
vfio_mdev              12841  0 
mdev                   20336  2 vfio_mdev,nvidia_vgpu_vfio
vfio_iommu_type1       22440  0 
vfio                   32657  3 vfio_mdev,nvidia_vgpu_vfio,vfio_iommu_type1


验证libvirtd服务处于活动状态并且正在运行

# service libvirtd status


使用nvidia-smi命令是否能查看到nvidia驱动正常运行。

# nvidia-smi 
Mon Mar 30 11:22:21 2020       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 430.83       Driver Version: 430.83       CUDA Version: N/A      |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Tesla T4            On   | 00000000:04:00.0 Off |                  Off |
| N/A   54C    P8    18W /  70W |     79MiB / 16383MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+


列出可创建的vgpu类型

# nvidia-smi vgpu -s
GPU 00000000:04:00.0
    GRID T4-1Q     
    GRID T4-2Q     
    GRID T4-4Q     
    GRID T4-8Q     
    GRID T4-16Q    
    GRID T4-1A     
    GRID T4-2A     
    GRID T4-4A     
    GRID T4-8A     
    GRID T4-16A    
    GRID T4-1B     
    GRID T4-1B4    
    GRID T4-2B     
    GRID T4-2B4    
    GRID T4-4C     
    GRID T4-8C     
    GRID T4-16C


列出ovirt主机(vdsm)可用的mdev设备, -m1代表筛选第一个匹配的mdev,-A48,代表显示mdev行以下的48行

# vdsm-client Host hostdevListByCaps | grep -m1 -A48  mdev 

"mdev": {
                "nvidia-224": {
                    "name": "GRID T4-2B4", 
                    "available_instances": "8"
                }, 
                "nvidia-225": {
                    "name": "GRID T4-1A", 
                    "available_instances": "16"
                }, 
                "nvidia-233": {
                    "name": "GRID T4-8Q", 
                    "available_instances": "2"
                }, 

...........................
...........................这里只截取前面3个


把mdev设备加入到虚拟机上

1.在做下面步骤前,先打开虚拟机的RDP协议,保证能连接进去,一般开启远程服务关闭防火墙即可。

2.再关闭虚拟机,编辑虚拟机,把把显示类型qxl改成vga模式

3.编辑自定义选项mdev_type,根据之前列出来的mdev型号,这里选nvidia-232,显存4G(不同物理显卡都不一样这里以Tesla4为例,后面再做说明)

image.png


虚拟机开机后,加了mdev设备后,用控制台连接进去是没有任何显示的

(不知道是不是只是我这样,这个情况官方文档没看到说会有这种情况,其他博主也只是说装完驱动才会黑屏)


用RDP协议连接进去后,我这里是win10系统,安装刚才解压出来的432.33_grid_win10_server2016_server2019_64bit_international.exe驱动,若是其他系统请解压包里的选择其他驱动。正常安装后,驱动显示是正常的。但是接下来还需要授权,才能完美运行。


安装证书服务器

* 新建一台虚拟机搭建证书服务器,用于授权给其他虚拟机,且确保IP地址与MAC地址固定(物理机也行,网络能通就可以,但还是推荐虚拟机,具体原由自己体会)

1,下载证书服务器的安装软件,登录nvidia授权用户控制台,点击这里登录,在登录软件下载右上角,下载对应系统的证书服务器管理软件,我下载的是NVIDIA-ls-Windows-2019.11.0.27609831.zip

image.png


2,安装jdk(注意版本,64位与32位必须与前面的证书管理软件一致),openjdk下载地址

这里推荐下载这个版本,作者尝试安装其他版本jdk,但是tomcat服务启不来,需要手动打开apache才可。

java-11-openjdk-jre-11.0.6.10-1.windows.ojdkbuild.x86_64.msi

Screen capture showing the OpenJDK setup wizard.


安装完设JAVA_HOME环境变量的路径,把bin执行路径加入PATH,以例子(根据你实际情况):

C:\Program Files\ojdkbuild\java-1.8.0-openjdk-1.8.0.201-1\bin  加入PATH

C:\Program Files\ojdkbuild\java-1.8.0-openjdk-1.8.0.201-1\jre  加入JAVA_HOME


3,安装许可证服务器软件

Screen capture showing license agreements for the license server on Windows.

 安装成功完成后,单击"完成"以退出安装程序。

Screen capture showing the selection of the destination folder for the license server on Windows.

  • 端口 7070 已打开,使远程客户端能够从服务器访问许可证。

  • 端口 8080 已关闭,以确保管理界面只能通过在许可证服务器主机上本地运行的 Web 浏览器可用。


Screen capture showing firewall settings for the license server on Windows.

Screen capture showing the window that appears when the license server installation is complete on Windows.


获取许可证服务器的 MAC 地址

     许可证服务器的以太网 MAC 地址唯一地标识您的服务器到NVIDIA 许可门户。您需要此地址才能向NVIDIA 许可门户注册许可证服务器以生成许可证文件。           

  1. 在许可证服务器主机上打开 Web 浏览器并连接到 URL http://localhost:8080/licserver。

  2. 在许可证服务器管理界面中,选择"配置"。

  3. 在打开的"许可证服务器配置"页上,在"服务器主机 ID"下拉列表中,选择平台的 ETHERNET 地址。

Screen capture showing the License Server Configuration page with the Server host ID property highlighted.



管理您的许可证服务器并获取许可证文件

NVIDIA 许可门户上创建许可证服务器

image.png


NVIDIA 许可门户仪表板上,单击"创建许可证服务器 "。",单击"创建许可证服务器"。(注意Product需要选DWS,而不是APP,否则后面会出现失败)


image.png


下载许可证文件


image.png

上传许可文件到证书服务器

Screen capture that shows a file browser that is opened from the License Management page.



登录虚拟机,填写授权证书服务器的地址与端口

  1. 打开NVIDIA 控制面板

  • 右键单击 Windows 桌面并从菜单中选择NVIDIA 控制面板

  • 打开Windows 控制面板并双击NVIDIA 控制面板图标。

NVIDIA 控制面板中,在导航窗格的"许可"部分中选择"管理许可证"任务。

   image.png


现在已经可以正常vgpu了。


如果要要设定显卡显存大小,则要修改mdev对应的vgpu类型,一般选Q系列就好。

不同vgpu类型的作用查看此链接

注意的是,一个物理GPU只能选一个类型。

比如:一个虚拟机已经选了GRID T4-4Q类型,对应的是nvidia-232,那么所有cpu都要使用nvidia-232,那意思就是虚拟机的vgpu的显存都是一样的了。

要创建不同显存的vgpu,只能用多种显卡了,这是问厂商所得出的答案。


开启关闭ECC

nvidia-smi -e 0   关闭

nvidia-smi -e 1   开启


RHEL KVM 添加vGPU设备链接


tensorflow要使用vgpu需要安装cuda-toolkit,cudnn 参考链接


故障排错:

检查内核是否加载nvidia模块
#lsmod|grep nvidia

检查vgpu管理软件rpm是否安装,这里应该对应你安装的包
rpm -q vgpu-manager-rpm-package-name


查看vmiop输出是否有报错
#grep vmiop /var/log/messages
#grep vmiop_log: /var/log/messages[2019-10-25 04:46:12] vmiop_log: [2019-10-25 04:46:12] notice: vmiop-env: guest_max_gpfn:0x11f7ff 
[2019-10-25 04:46:12] vmiop_log: [2019-10-25 04:46:12] notice: pluginconfig: /usr/share/nvidia/vgx/grid_m60-1q.conf,gpu-pci-id=0000:06:00.0 
[2019-10-25 04:46:12] vmiop_log: [2019-10-25 04:46:12] notice: Loading Plugin0: libnvidia-vgpu 
[2019-10-25 04:46:12] vmiop_log: [2019-10-25 04:46:12] notice: Successfully update the env symbols! 
[2019-10-25 04:46:12] vmiop_log: [2019-10-25 04:46:12] notice: vmiop_log: gpu-pci-id : 0000:06:00.0 
[2019-10-25 04:46:12] vmiop_log: [2019-10-25 04:46:12] notice: vmiop_log: vgpu_type : quadro 
[2019-10-25 04:46:12] vmiop_log: [2019-10-25 04:46:12] notice: vmiop_log: Framebuffer: 0x38000000 
[2019-10-25 04:46:12] vmiop_log: [2019-10-25 04:46:12] notice: vmiop_log: Virtual Device Id: 0x13F2:0x114D 
[2019-10-25 04:46:12] vmiop_log: [2019-10-25 04:46:12] notice: vmiop_log: ######## vGPU Manager Information: ######## 
[2019-10-25 04:46:12] vmiop_log: [2019-10-25 04:46:12] notice: vmiop_log: Driver Version: 410.137[2019-10-25 04:46:12] vmiop_log: [2019-10-25 04:46:12] notice: vmiop_log: Init frame copy engine: syncing... 
[2019-10-25 05:09:14] vmiop_log: [2019-10-25 05:09:14] notice: vmiop_log: ######## Guest NVIDIA Driver Information: ######## 
[2019-10-25 05:09:14] vmiop_log: [2019-10-25 05:09:14] notice: vmiop_log: Driver Version: 412.47 [2019-10-25 05:09:14] vmiop_log: [2019-10-25 05:09:14] notice: vmiop_log: Current max guest pfn = 0x11a71f! 
[2019-10-25 05:12:09] vmiop_log: [2019-10-25 05:12:09] notice: vmiop_log: vGPU license state: (0x00000001)



猜你喜欢

转载自blog.51cto.com/5437315/2483099