DoraCloud for Proxmox桌面雲上啟用NVIDIA Tesla P4的vGPU功能


Proxmox virtualization environment,簡稱PVE,是一個開源免費的基於linux的企業級虛擬化方案,功能不輸專業收費的VMware。簡單的說,PVE是一個基於Debian的linux系統,內置了一套虛擬機管理工具,並提供了web管理頁面,讓我們可以非常簡單的通過網頁管理虛擬機。

DoraCloud是一套多平台、一體化、分布式的桌面虛擬化方案。基於開放架構,支持多種虛擬化平台(Hyper-V,VMware,Proxmox,XenServer),多種桌面協議(RDP,PCoIP,SPICE)。采用All-in-One的設計模式和虛擬設備的部署方式。

NVIDIA Tesla P4單精度運算能力將達到5.5FLOPS,每秒可進行22萬億次計算,其擁有2560個流處理器,搭配8GB GDDR5顯存。

服務器配置:i7-8700,32G,1TB nvme,配置Tesla P4顯卡。

 

本文描述在服務器上部署 Proxmox、DoraCloud,並創建帶有vGPU的虛擬桌面的過程。

1、下載安裝Proxmox 5.4.1

 
推薦中科大( USTC)的源下載 ISO,然后使用 rufus 制作 啟動U盤。 
 

2、修改中科大源,更新

 

替換中科大的源,更新升級系統。 

cp /etc/apt/sources.list /etc/apt/sources.list.backup
sed -i 's|^deb http://ftp.debian.org|deb https://mirrors.ustc.edu.cn|g' /etc/apt/sources.list
sed -i 's|^deb http://security.debian.org|deb https://mirrors.ustc.edu.cn/debian-security|g' /etc/apt/sources.list

mv /etc/apt/sources.list.d/pve-enterprise.list /etc/apt/sources.list.d/pve-enterprise.list.bak
CODENAME=`cat /etc/os-release |grep PRETTY_NAME |cut -f 2 -d "(" |cut -f 1 -d ")"`
echo "deb https://mirrors.ustc.edu.cn/proxmox/debian $CODENAME pve-no-subscription" > /etc/apt/sources.list.d/pve-no-subscription.list

#更新
apt update && apt dist-upgrade -y

 安裝DKMS 依賴包

#安裝 DKMS 依賴包
apt install pve-headers dkms pve-headers-4.15.18-12-pve -y

 

3、啟用 IOMMU

服務器為Intel 處理器,通過如下腳本啟用IOMMU,如果是AMD處理器,配置有差異。

# 復制如下腳本,啟用IO-MMU

# /etc/default/grub 的GRUB_CMDLINE_LINUX_DEFAULT,增加 intel_iommu=on iommu=pt
sed -i 's/GRUB_CMDLINE_LINUX_DEFAULT="quiet"/GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"/g' /etc/default/grub

update-grub

# 加載 vfio vfio_iommu_type1 vfio_pci vfio_virqfd 4個Modules
echo vfio >> /etc/modules
echo vfio_iommu_type1 >> /etc/modules
echo vfio_pci >> /etc/modules
echo vfio_virqfd >> /etc/modules


echo "options vfio_iommu_type1 allow_unsafe_interrupts=1" > /etc/modprobe.d/iommu_unsafe_interrupts.conf
echo "options kvm ignore_msrs=1" > /etc/modprobe.d/kvm.conf
echo "blacklist nouveau" >> /etc/modprobe.d/blacklist.conf

update-initramfs -u
reboot 


執行完畢腳本,會自動重啟服務器,然后查看日志,確認 IOMMU已經啟用。

root@pveserver:~# dmesg | grep -e DMAR -e IOMMU
[ 0.000000] ACPI: DMAR 0x0000000079A48648 0000A8 (v01 INTEL EDK2 00000002 01000013)
[ 0.000000] DMAR: IOMMU enabled
[ 0.004000] DMAR: Host address width 39
[ 0.004000] DMAR: DRHD base: 0x000000fed90000 flags: 0x0
[ 0.004000] DMAR: dmar0: reg_base_addr fed90000 ver 1:0 cap 1c0000c40660462 ecap 19e2ff0505e
[ 0.004000] DMAR: DRHD base: 0x000000fed91000 flags: 0x1
[ 0.004000] DMAR: dmar1: reg_base_addr fed91000 ver 1:0 cap d2008c40660462 ecap f050da

  

4、安裝DKMS 和 NVIDIA 內核驅動程序

 

#下載nvidia 驅動
wget http://www1.deskpool.com:9000/software/NVIDIA-Linux-x86_64-460.32.03-grid.run
wget http://www1.deskpool.com:9000/software/NVIDIA-Linux-x86_64-460.32.04-vgpu-kvm.run

chmod +x NVIDIA-Linux-x86_64-460.32.04-vgpu-kvm.run

#安裝驅動
./NVIDIA-Linux-x86_64-460.32.04-vgpu-kvm.run -dkms 

為了讓DoraCloud桌面雲系統能夠使用nvidia 的GPU資源,需要對Proxmox 5.4 打一個補丁。 該補丁對Proxmox的 API進行了增強。

wget http://www1.deskpool.com:9000/software/patch.tar.gz
tar -zxvf patch.tar.gz  -C /

 

NVIDIA 驅動安裝成功后,運行如下命令,重啟Proxmox 服務器。

systemctl daemon-reload
reboot

 

系統啟動后,檢查日志,確認 vgpu 驅動已經啟動。  可以看到不同類型的vGPU ,后續計划為桌面配置的vGPU TYPE為 0x3f(十進制63),型號為P4-1Q

root@pveserver:~# cat /var/log/syslog |grep P4
Nov 22 21:29:17 pveserver nvidia-vgpud: VGPU Type 0x47: GRID P4-1B Class: NVS
Nov 22 21:29:17 pveserver nvidia-vgpud: VGPU Type 0x3f: GRID P4-1Q Class: Quadro
Nov 22 21:29:17 pveserver nvidia-vgpud: VGPU Type 0x40: GRID P4-2Q Class: Quadro
Nov 22 21:29:17 pveserver nvidia-vgpud: VGPU Type 0x41: GRID P4-4Q Class: Quadro
Nov 22 21:29:17 pveserver nvidia-vgpud: VGPU Type 0x42: GRID P4-8Q Class: Quadro
Nov 22 21:29:17 pveserver nvidia-vgpud: VGPU Type 0x43: GRID P4-1A Class: NVS
Nov 22 21:29:17 pveserver nvidia-vgpud: VGPU Type 0x44: GRID P4-2A Class: NVS
Nov 22 21:29:17 pveserver nvidia-vgpud: VGPU Type 0x45: GRID P4-4A Class: NVS
Nov 22 21:29:17 pveserver nvidia-vgpud: VGPU Type 0x46: GRID P4-8A Class: NVS
Nov 22 21:29:17 pveserver nvidia-vgpud: VGPU Type 0x9d: GRID P4-2B Class: NVS
Nov 22 21:29:17 pveserver nvidia-vgpud: VGPU Type 0xd6: GRID P4-2B4 Class: NVS
Nov 22 21:29:17 pveserver nvidia-vgpud: VGPU Type 0xf3: GRID P4-1B4 Class: NVS
Nov 22 21:29:17 pveserver nvidia-vgpud: VGPU Type 0x121: GRID P4-8C Class: Compute
Nov 22 21:29:17 pveserver nvidia-vgpud: VGPU Type 0x120: GRID P4-4C Class: Compute

 

為了驗證針對Proxmox API生效,可以使用如下命令查看一下。 增強后的API,可以顯示 mdev設備的 name 字段。 如果你的Proxmox名字不是 pveserver,請修改成你的PVE主機名。

root@pveserver:~# pvesh get /nodes/pveserver/hardware/pci/01:00.0/mdev
┌───────────┬─────────────────────────────────────────────────────────────────────────────────────────┬─────────────┬────────────┐
│ available │ description                                                                             │ name        │ type       │
├───────────┼─────────────────────────────────────────────────────────────────────────────────────────┼─────────────┼────────────┤
│         1 │ num_heads=4, frl_config=60, framebuffer=8192M, max_resolution=7680x4320, max_instance=1 │ GRID P4-8Q  │ nvidia-66  │
├───────────┼─────────────────────────────────────────────────────────────────────────────────────────┼─────────────┼────────────┤
│         1 │ num_heads=1, frl_config=60, framebuffer=8192M, max_resolution=1280x1024, max_instance=1 │ GRID P4-8A  │ nvidia-70  │
├───────────┼─────────────────────────────────────────────────────────────────────────────────────────┼─────────────┼────────────┤
│         1 │ num_heads=1, frl_config=60, framebuffer=8192M, max_resolution=4096x2160, max_instance=1 │ GRID P4-8C  │ nvidia-289 │
├───────────┼─────────────────────────────────────────────────────────────────────────────────────────┼─────────────┼────────────┤
│         2 │ num_heads=1, frl_config=60, framebuffer=4096M, max_resolution=4096x2160, max_instance=2 │ GRID P4-4C  │ nvidia-288 │
├───────────┼─────────────────────────────────────────────────────────────────────────────────────────┼─────────────┼────────────┤
│         2 │ num_heads=1, frl_config=60, framebuffer=4096M, max_resolution=1280x1024, max_instance=2 │ GRID P4-4A  │ nvidia-69  │
├───────────┼─────────────────────────────────────────────────────────────────────────────────────────┼─────────────┼────────────┤
│         2 │ num_heads=4, frl_config=60, framebuffer=4096M, max_resolution=7680x4320, max_instance=2 │ GRID P4-4Q  │ nvidia-65  │
├───────────┼─────────────────────────────────────────────────────────────────────────────────────────┼─────────────┼────────────┤
│         4 │ num_heads=4, frl_config=45, framebuffer=2048M, max_resolution=5120x2880, max_instance=4 │ GRID P4-2B  │ nvidia-157 │
├───────────┼─────────────────────────────────────────────────────────────────────────────────────────┼─────────────┼────────────┤
│         4 │ num_heads=1, frl_config=60, framebuffer=2048M, max_resolution=1280x1024, max_instance=4 │ GRID P4-2A  │ nvidia-68  │
├───────────┼─────────────────────────────────────────────────────────────────────────────────────────┼─────────────┼────────────┤
│         4 │ num_heads=4, frl_config=60, framebuffer=2048M, max_resolution=7680x4320, max_instance=4 │ GRID P4-2Q  │ nvidia-64  │
├───────────┼─────────────────────────────────────────────────────────────────────────────────────────┼─────────────┼────────────┤
│         4 │ num_heads=4, frl_config=45, framebuffer=2048M, max_resolution=5120x2880, max_instance=4 │ GRID P4-2B4 │ nvidia-214 │
├───────────┼─────────────────────────────────────────────────────────────────────────────────────────┼─────────────┼────────────┤
│         8 │ num_heads=1, frl_config=60, framebuffer=1024M, max_resolution=1280x1024, max_instance=8 │ GRID P4-1A  │ nvidia-67  │
├───────────┼─────────────────────────────────────────────────────────────────────────────────────────┼─────────────┼────────────┤
│         8 │ num_heads=4, frl_config=60, framebuffer=1024M, max_resolution=5120x2880, max_instance=8 │ GRID P4-1Q  │ nvidia-63  │
├───────────┼─────────────────────────────────────────────────────────────────────────────────────────┼─────────────┼────────────┤
│         8 │ num_heads=4, frl_config=45, framebuffer=1024M, max_resolution=5120x2880, max_instance=8 │ GRID P4-1B  │ nvidia-71  │
├───────────┼─────────────────────────────────────────────────────────────────────────────────────────┼─────────────┼────────────┤
│         8 │ num_heads=4, frl_config=45, framebuffer=1024M, max_resolution=5120x2880, max_instance=8 │ GRID P4-1B4 │ nvidia-243 │
└───────────┴─────────────────────────────────────────────────────────────────────────────────────────┴─────────────┴────────────┘

  

5、部署 DoraCloud 

為了驗證vGPU效果,我們在Proxmox 上部署DoraCloud。可以采用如下腳本在線安裝 DoraCloud

cd /var/lib/vz/dump; wget -qO- https://dl.doracloud.cn/dpinstall.pl --referer https://doracloud.cn | perl

   

重啟完畢后,然后瀏覽器登錄 DoraCloud 管理后台,輸入 賬號  admin  DoraCloud,登錄后台。

 

根據配置向導,完成DoraCloud的初始化配置。

 

 

 

 

 

 

 

 

 

接下來,我們下載支持vGPU的桌面模板。 win10LTSC2019GPU。

 

  然后創建桌面池,選擇 win10LTSC2019GPU這個模板。 GPU型號選擇 NVIDIA P4,vGPU類型選擇 GRID P4-1Q

 

 

 配置桌面池內創建4個桌面。然后設置桌面池的綁定賬號為 administrator  123456 。這樣賬號是windows7x64模板的Windows 賬號。

啟用綁定賬號后,終端可以識別這個綁定賬號,登陸桌面windows。

 

 桌面創建完畢后,可以在PVE中查看桌面虛擬的硬件配置,確認桌面虛擬機正常配置了 PCI device。

 

  

 接下來回到DoraCloud管理后台,添加用戶,為用戶分配桌面池。

 

 

6、登錄桌面,驗證vGPU效果

DoraCloud有多種登錄方式,我們選擇網頁登錄DoraCloud,輸入用戶賬號  user01,密碼123456。 然后打開一個 RDP 文件,輸入管理員賬號 administrator  123456,即可登錄 windows 桌面。

 

 進入桌面后,通過dxdiag,查看系統的顯卡,顯示為 NVIDIA GRID P4-1Q。

 

接下來,可以進行3D性能的測試了。 推薦兩個在線測試的網站。

基於WebGL的水母       https://akirodic.com/p/jellyfish/

基於WebGL的網頁游戲    https://www.crazygames.com/

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM