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)



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章