2026年-家庭/工作室/小企业免费的云桌面VDI方案--VDI for PVE8/9

近年来,随着5G网络、云计算和虚拟化技术的快速发展,云手机和云电脑逐渐进入大众视野。无论是企业还是个人用户,都可以通过云端提供的算力,在任意设备(如手机、平板、低配电脑)上流畅运行高性能应用和操作系统。那么如何像云厂商一样在本地构建一套私有化云桌面呢?嘿嘿,还真有。本教程将指导你使用 Proxmox VE (PVE) 来构建一个简单的家庭私有云桌面环境

部署前准备

预期想法:在家里配置一台高性能工作站主机作为服务端,购买一些瘦客户机将瘦终端放在各个房间跟客厅。通过PROXMOX VE + NVIDIA vGPU方案构建一个基于家庭环境的高性能虚拟桌面基础设施(VDI)系统,实现在家庭各个房间无缝访问高性能计算资源。

资源预算情况

部署所需要的资源预算

使用场景系统线程数内存GPU显卡硬盘数量
3D建模/设计/剪辑Window1116线程32G内存vGPU 分配4G显存512GB2台
3A游戏/端游Window1116线程16G内存vGPU 分配8G显存512GB2台
敲代码macOS1516线程32G内存直通A卡512GB1台
日常办公Window108线程8G内存vGPU 分配1G显存256GB1台
看电视(瘦终端直装)AndroidTV4线程4G内存核显120GB1台
总计所需资源88线程136G内存vGPU显存25G+1张A卡2.8TB6台

连接协议说明

1)游戏用串流协议,Sunshine+Moonlight串流方案;
2)3D建模/设计/剪辑用Horizon协议,GPU表现优秀且支持USB重定向;
3)日常办公用RDP或者SPICE协议,其中SPICE协议支持USB重定向和无网络连接可以很好的安全隔离;

模式RDPSPICEVMware HorizonSunshine串流
协议RdpSPICEBlast/PcoipRtp
带宽消耗Blast高/Pcoip低
USB重定向Rdp高级usb重定向usb完全重定向usb完全重定向不支持
解码h.264 444/420h.264 420h.264 hevc AV1h.264 hevc AV1
打印机支持Rdp高级打印USB重定向VMware高级打印/USB重定向不支持
瘦终端要求
vGPU支持良好普通优秀优秀

连接协议说明视频版--点我展开 ↓↓↓

PVE 连接协议说明

视频内容:PVE 云桌面连接协议说明(RDP、SPICE、Horizon、Sunshine)

服务端硬件选配

准备一台高性能PC或者服务器(做服务端)
家用或小工作室就别整机架式服务器了,噪音受不了推荐塔式服务器或工作站。比如戴尔这款Precision 7920 工作站

服务端产品参数10人配置(3D建模/设计/游戏)价格(仅供参考)
准系统Dell Precision 79203.5寸4盘位 主板 机箱 散热 1400w电源3000元
CPU支持2颗 铜牌、银牌、金牌、铂金处理器金牌6248 20核40线程 主频2.5,睿频3.9300元/颗
内存24个内存插槽(DDR4 支持ECC自动纠错)192G内存,三星32G DDR4 ECC*6410元/条
硬盘标配4个3.5硬盘位(最多可以配置10个3.5硬盘位)2TB Nvme + 16TB机械2000元
显卡支持3个双宽显卡2080 Ti 22G 2张 共44G显存2000元/张
网卡英特尔 i219 和 i210 双千兆网卡强烈加个10G网卡,英特尔 X520-DA2 双万兆100元
PCIE7个PCIE3.0插槽扩展nvme硬盘或者PCIE网卡0元
电源1400W电源整机功耗800W左右0元
总价 12160元

客户端硬件选配

准备一些x86_64架构的瘦客户机(做客户端)
小主机:可以找些小主机作为瘦终端,小巧又不占用地方;
移动式:也可以整些云笔记本或者老旧笔记本,外出携带都方便;

客户端产品参数价格(仅供参考)
准系统HP 400G3迷你主机160元
CPUG4560 2核4线程 3.50 GHz13元
内存4G DDR425元
硬盘sata ssd 120G30元
总价228元

资源包获取途径

如果你是萌新或者是对PVE基础较弱的用户,建议用我封装好的PVE镜像包用balenaEtcher烧录工具写入硬盘启动即可。可以做到免部署开机即用。即节约时间又避免部署过程中产生的坑。

预装版PVE镜像包(服务端)

1)预装版就是环境都帮你部署好了,不用你另外联网安装啥的。你只需要烧录硬盘启动即可;
2)镜像无绑定限制,可重复使用。本镜像为无桌面版本,需要用第二台机器做主控机进行管理PVE;
3)对于一些不能接入外网的用户或者多机器想减少重复部署工作的工作室,预装版是个不错的选择;

PVE9镜像包说明:

1)基于PVE 9.0.10 内核Linux 6.14.11-2-pve版本进行封装;
2)该镜像大小32GB,管理账号:root,密码:123456;
3)管理口默认为主机的第一个口,默认IP:10.10.10.123,默认网关:10.10.10.10;
4)预装 NVIDIA vGPU Unlock服务,解除消费卡vGPU限制;
5)预装 NVIDIA vGPU19.0 HOST驱动,在PVE Shell 执行nvidia-smi可以查看;
6)提供fastapi-dls vGPU授权GRID驱动服务的LXC还原包,90天周期,到期自动续;
7)提供办公场景的 Win11 24h2 x64 虚拟机的还原包;提供游戏场景的 Win10 22h2 x64 虚拟机的还原包;
8)预装PVE KVM去虚拟化包,规避虚拟机检测,模拟真实硬件环境,让软件或者端游在虚拟机中运行;
9)默认创建了一个用户为1000的VDI账号,可用于登录瘦客户机做测试,如不需要删除即可。账号:1000密码:12345678
10)提供PVE脚本(更改PVE管理IP|扩容系统盘剩余空间|安装/卸载去虚拟化KVM包|定制硬件信息|模拟显卡信息|批量克隆/同步/删除虚拟机)登录SSH自动运行;

PVE8镜像包说明:

1)基于PVE 8.4.0 内核Linux 6.8.12-9-pve版本进行封装;
2)该镜像大小32GB,账号:root,密码:123456;
3)管理口默认为主机的第一个口,默认IP:10.10.10.123,默认网关:10.10.10.10;
4)预装 NVIDIA vGPU Unlock服务,解除消费卡vGPU限制;
5)预装 NVIDIA vGPU19.0 HOST驱动,在PVE Shell 执行nvidia-smi可以查看;
6)提供fastapi-dls vGPU授权GRID驱动服务的LXC还原包,90天周期,到期自动续;
7)提供办公场景的 Win11 24h2 x64 虚拟机的还原包;提供游戏场景的 Win10 22h2 x64 虚拟机的还原包;
8)预装PVE KVM去虚拟化包,规避虚拟机检测,模拟真实硬件环境,让软件或者端游在虚拟机中运行;
9)修改PVE的VNC显示窗口直接输出vGPU显卡画面,让PVE的Web VNC窗口也支持调用vGPU,添加vgpu显卡时勾选主GPU即可;
10)提供PVE脚本(更改PVE管理IP|扩容系统盘剩余空间|安装/卸载去虚拟化KVM包|定制硬件信息|模拟显卡信息|批量克隆/同步/删除虚拟机)登录SSH自动运行;
11)默认创建了一个用户为1000的VDI账号,可用于登录瘦客户机做测试,如不需要删除即可。账号:1000密码:12345678

服务端PVE镜像使用指南--点我展开 ↓↓↓

PVE VDI服务端使用教学

视频内容:预装版PVE镜像安装指南|NVIDIA vGPU安装指南|Win虚拟机安装指南|VDI角色配置



Linux云桌面OS(客户端)

Lubuntu云桌面OS说明:

1)基于轻量级 Linux 发行版 Lubuntu24.04作为底层 x86_64架构;
2)该镜像大小3.58.GB,支持U盘启动ISO镜像启动硬盘启动支持BIOS及UEFI双模式启动
3)默认登录为vdi用户,密码:123456
4)集成PVEVDI客户端2.0.2PXVDI客户端3.0.4模块,支持 Spice、RDP、VNC 、Horizon等主流协议;
5)模块还加入了常用远程软件如向日葵、ToDesk、RustDesk、Sunshine串流,Parsec串流
6)支持无桌面模式,开机自动运行云桌面客户端,登录后自动进入虚拟机;
7)支持Nvme/Emmc/Msata/Sata/Ide等等全系列协议硬盘。
8)瘦终端硬件最低要求:2核心 2G内存,16G硬盘空间;

Lubuntu云桌面OS镜像使用方法--点我展开 ↓↓↓

Lubuntu云桌面OS使用方法:

视频内容:Lubuntu云桌面OS安装指南

Porteus云桌面OS说明:

1)基于轻量级 Linux 发行版 Porteus5.0作为底层 x86_64架构;
2)该镜像大小886.1MB,支持U盘启动ISO镜像启动硬盘启动支持BIOS及UEFI双模式启动
3)默认登录为Guest用户,密码:guest提权需要root密码:toor
4)集成PVEVDI客户端2.0.2PXVDI客户端2.0.6模块,支持 Spice、RDP、VNC 、Horizon等主流协议;
5)模块还加入了常用远程软件如向日葵、ToDesk、RustDesk、Sunshine串流,Parsec串流
6)支持无桌面模式,开机自动运行云桌面客户端,登录后自动进入虚拟机;
7)Porteus OS只支持sata协议的硬盘,所以如要安装到硬盘请使用sata/msata/ssd sata/m.2 sata协议的硬盘,其他的nvme/emmc这类硬盘无法正常引导。
8)瘦终端硬件最低要求:2核心 2G内存,4G硬盘空间;

Porteus云桌面OS镜像使用方法--点我展开 ↓↓↓

Porteus云桌面OS使用方法:

视频内容:Porteus云桌面OS安装指南



Win云桌面OS(客户端)

Windows云桌面OS说明:

1)基于Windows 10 LTSC 21h2 X64位 企业版 作为瘦终端系统底层;
2)该镜像大小5.26.GB支持BIOS及UEFI双模式需要安装到硬盘使用;
3)集成PVEVDI客户端2.0.2VMware Horizon客户端2312支持 Spice、RDP、Horizon主流协议;
4)支持Nvme/Emmc/Msata/Sata/Ide等等全系列协议硬盘。
5)瘦终端硬件最低要求:2核心 4G内存,64G硬盘空间;

Windows云桌面OS镜像使用方法--点我展开 ↓↓↓

Windows云桌面OS使用方法:

安装Windows过于简单,教程省略。。。


图文部署 -(服务端)

服务端将采用Proxmox VE(PVE)免费且开源,无需支付高昂的授权费用。采用典型的C/S架构。在PVE中通过虚拟机权限管理,将虚拟机分配给指定用户。当这个用户通过瘦终端进行登录时,则会查询所拥有的虚拟机,随后通过RDP、Spice、 VMware Horizon等协议连接到虚拟机。对于家庭&工作室&小型企业的用户数量不多,PVE自身就能很好管理起来,既不需要搭建复杂的AD域配置和用户权限,也不需要第三方后台接入管理,所以搭建这套方案并不需要过多的专业知识和维护成本。

一、安装Proxmox VE

请在高性能的工作站或者服务器上部署PVE,如果你用的是预装版PVE的IMG镜像,那么你直接将镜像烧录硬盘启动即可,以下只演示定制版PVE ISO镜像的安装过程。

BIOS设置


提前在BIOS开启以下设置

  • 开启VT-d --必须开启,英特尔叫vt-d,AMD叫iommu
  • 开启SRIOV --如有
  • 开启Above 4G --如有
  • 关闭安全启动 --在security菜单 secure boot 改disabled
  • 推荐使用UEFI引导启动

PVE烧录U盘

提前把balenaEtcher烧录工具定制版的PVE镜像下载好,用balenaEtcher烧录工具将镜像写入U盘或者移动硬盘,然后插到主机进行PVE的安装。

PVE图形安装

将U盘或者移动硬盘接入主机引导启动到PVE安装界面,采用第一种图形化界面Install Proxmox VE (Graphical)进行安装。
PVE图形界面手动分区安装示意图:

如果遇到第一种图形界面安装不成功,出现白屏黑屏或者没法继续的时候,更推荐采用第二种终端化界面Install Proxmox VE (Terminal UI)进行安装。
PVE终端化界面手动安装示意图:

PVE初始化设置

安装完成PVE后,在浏览器输入https://你的PVE管理IP:8006来访问你的PVE管理后台了

登录进来后需要对PVE进行一些初始化设置,打开PVE Shell执行脚本①(PVE需要能访问外网,不然无法继续)脚本执行完会对PVE进行自动重启一次。

二、部署NVIDIA vGPU

3D游戏,3D建模、设计作图是需要用到GPU资源的,以下是部署NVIDIA vGPU的内容,如果你没有N卡或者不需要GPU可以跳过这部分安装。
官方支持vGPU的显卡查询:https://docs.nvidia.com/vgpu/gpus-supported-by-vgpu.html
官方非支持vGPU的显卡,需要搭配vGPU_Unlock服务才支持的显卡如下:

NVIDIA vGPU支持的显卡列表 点我展开



以下 Maxwell\Pascal\Turing架构的显卡均支持vGPU,Ampere架构的30系及之后的消费卡暂不支持
Maxwell 架构:(GTX 9xx、Quadro Mxxxx、Tesla Mxx)
Pascal 架构:(GTX 10xx、Quadro Pxxxx、Tesla Pxx)
Turing 架构:(GTX 16xx、RTX 20xx、Quadro RTXxx、Tesla Txx)

设备ID支持的显卡列表可能模拟的显卡型号
21c4TU116 GeForce GTX 1660 SUPERQuadro RTX 6000
21d1TU116BM GeForce GTX 1660 Ti MobileQuadro RTX 6000
2182TU116 GeForce GTX 1660 TiQuadro RTX 6000
2184TU116 GeForce GTX 1660Quadro RTX 6000
2187TU116 GeForce GTX 1650 SUPERQuadro RTX 6000
2188TU116 GeForce GTX 1650Quadro RTX 6000
2191TU116M GeForce GTX 1660 Ti MobileQuadro RTX 6000
2192TU116M GeForce GTX 1650 Ti MobileQuadro RTX 6000
2189TU116 CMP 30HXQuadro RTX 6000
1fbbTU117GLM Quadro T500 MobileQuadro RTX 6000
1fd9TU117BM GeForce GTX 1650 Mobile RefreshQuadro RTX 6000
1ff9TU117GLM Quadro T1000 MobileQuadro RTX 6000
1fddTU117BM GeForce GTX 1650 Mobile RefreshQuadro RTX 6000
1f96TU117M GeForce GTX 1650 Mobile / Max-QQuadro RTX 6000
1fb8TU117GLM Quadro T2000 Mobile / Max-QQuadro RTX 6000
1fb9TU117GLM Quadro T1000 MobileQuadro RTX 6000
1f97TU117M GeForce MX450Quadro RTX 6000
1f98TU117M GeForce MX450Quadro RTX 6000
1f9cTU117M GeForce MX450Quadro RTX 6000
1f9dTU117M GeForce GTX 1650 Mobile / Max-QQuadro RTX 6000
1fb0TU117GLM Quadro T1000 MobileQuadro RTX 6000
1fb1TU117GL T600Quadro RTX 6000
1fb2TU117GLM Quadro T400 MobileQuadro RTX 6000
1fbaTU117GLM T600 MobileQuadro RTX 6000
1f42TU106 GeForce RTX 2060 SUPERQuadro RTX 6000
1f47TU106 GeForce RTX 2060 SUPERQuadro RTX 6000
1f50TU106BM GeForce RTX 2070 Mobile / Max-QQuadro RTX 6000
1f51TU106BM GeForce RTX 2060 MobileQuadro RTX 6000
1f54TU106BM GeForce RTX 2070 MobileQuadro RTX 6000
1f55TU106BM GeForce RTX 2060 MobileQuadro RTX 6000
1f82TU117 GeForce GTX 1650Quadro RTX 6000
1f91TU117M GeForce GTX 1650 Mobile / Max-QQuadro RTX 6000
1f92TU117M GeForce GTX 1650 MobileQuadro RTX 6000
1f94TU117M GeForce GTX 1650 MobileQuadro RTX 6000
1f95TU117M GeForce GTX 1650 Ti MobileQuadro RTX 6000
1f76TU106GLM Quadro RTX 3000 Mobile RefreshQuadro RTX 6000
1f07TU106 GeForce RTX 2070 Rev. AQuadro RTX 6000
1f08TU106 GeForce RTX 2060 Rev. AQuadro RTX 6000
1f09TU106 GeForce GTX 1660 SUPERQuadro RTX 6000
1f0aTU106 GeForce GTX 1650Quadro RTX 6000
1f10TU106M GeForce RTX 2070 MobileQuadro RTX 6000
1f11TU106M GeForce RTX 2060 MobileQuadro RTX 6000
1f12TU106M GeForce RTX 2060 Max-QQuadro RTX 6000
1f14TU106M GeForce RTX 2070 Mobile / Max-Q RefreshQuadro RTX 6000
1f15TU106M GeForce RTX 2060 MobileQuadro RTX 6000
1f36TU106GLM Quadro RTX 3000 Mobile / Max-QQuadro RTX 6000
1f0bTU106 CMP 40HXQuadro RTX 6000
1eb5TU104GLM Quadro RTX 5000 Mobile / Max-QQuadro RTX 6000
1eb6TU104GLM Quadro RTX 4000 Mobile / Max-QQuadro RTX 6000
1eb8TU104GL Tesla T4Quadro RTX 6000
1ec2TU104 GeForce RTX 2070 SUPERQuadro RTX 6000
1ec7TU104 GeForce RTX 2070 SUPERQuadro RTX 6000
1ed0TU104BM GeForce RTX 2080 MobileQuadro RTX 6000
1ed1TU104BM GeForce RTX 2070 SUPER Mobile / Max-QQuadro RTX 6000
1ed3TU104BM GeForce RTX 2080 SUPER Mobile / Max-QQuadro RTX 6000
1f02TU106 GeForce RTX 2070Quadro RTX 6000
1f06TU106 GeForce RTX 2060 SUPERQuadro RTX 6000
1ef5TU104GLM Quadro RTX 5000 Mobile RefreshQuadro RTX 6000
1e81TU104 GeForce RTX 2080 SUPERQuadro RTX 6000
1e82TU104 GeForce RTX 2080Quadro RTX 6000
1e84TU104 GeForce RTX 2070 SUPERQuadro RTX 6000
1e87TU104 GeForce RTX 2080 Rev. AQuadro RTX 6000
1e89TU104 GeForce RTX 2060Quadro RTX 6000
1e90TU104M GeForce RTX 2080 MobileQuadro RTX 6000
1e91TU104M GeForce RTX 2070 SUPER Mobile / Max-QQuadro RTX 6000
1e93TU104M GeForce RTX 2080 SUPER Mobile / Max-QQuadro RTX 6000
1eb0TU104GL Quadro RTX 5000Quadro RTX 6000
1eb1TU104GL Quadro RTX 4000Quadro RTX 6000
1e04TU102 GeForce RTX 2080 TiQuadro RTX 6000
1e07TU102 GeForce RTX 2080 Ti Rev. AQuadro RTX 6000
1e2dTU102 GeForce RTX 2080 Ti Engineering SampleQuadro RTX 6000
1e2eTU102 GeForce RTX 2080 Ti 12GB Engineering SampleQuadro RTX 6000
1e30TU102GL Quadro RTX 6000/8000Quadro RTX 6000
1e36TU102GL Quadro RTX 6000Quadro RTX 6000
1e37TU102GL GRID RTX T10-4/T10-8/T10-16Quadro RTX 6000
1e78TU102GL Quadro RTX 6000/8000Quadro RTX 6000
1e09TU102 CMP 50HXQuadro RTX 6000
1dbaGV100GL Quadro GV100Tesla V100 32GB PCIE
1e02TU102 TITAN RTXQuadro RTX 6000
1cfaGP107GL Quadro P2000Tesla P40
1cfbGP107GL Quadro P1000Tesla P40
1d01GP108 GeForce GT 1030Tesla P40
1d10GP108M GeForce MX150Tesla P40
1d11GP108M GeForce MX230Tesla P40
1d12GP108M GeForce MX150Tesla P40
1d13GP108M GeForce MX250Tesla P40
1d16GP108M GeForce MX330Tesla P40
1d33GP108GLM Quadro P500 MobileTesla P40
1d34GP108GLM Quadro P520Tesla P40
1d52GP108BM GeForce MX250Tesla P40
1d56GP108BM GeForce MX330Tesla P40
1d81GV100 TITAN VTesla V100 32GB PCIE
1cb6GP107GL Quadro P620Tesla P40
1cbaGP107GLM Quadro P2000 MobileTesla P40
1cbbGP107GLM Quadro P1000 MobileTesla P40
1cbcGP107GLM Quadro P600 MobileTesla P40
1cbdGP107GLM Quadro P620Tesla P40
1cccGP107BM GeForce GTX 1050 Ti MobileTesla P40
1ccdGP107BM GeForce GTX 1050 MobileTesla P40
1cb1GP107GL Quadro P1000Tesla P40
1cb2GP107GL Quadro P600Tesla P40
1cb3GP107GL Quadro P400Tesla P40
1c81GP107 GeForce GTX 1050Tesla P40
1c82GP107 GeForce GTX 1050 TiTesla P40
1c83GP107 GeForce GTX 1050 3GBTesla P40
1c8cGP107M GeForce GTX 1050 Ti MobileTesla P40
1c8dGP107M GeForce GTX 1050 MobileTesla P40
1c8fGP107M GeForce GTX 1050 Ti Max-QTesla P40
1c90GP107M GeForce MX150Tesla P40
1c91GP107M GeForce GTX 1050 3 GB Max-QTesla P40
1c92GP107M GeForce GTX 1050 MobileTesla P40
1c94GP107M GeForce MX350Tesla P40
1c96GP107M GeForce MX350Tesla P40
1c36GP106 P106MTesla P40
1c07GP106 P106-100Tesla P40
1c09GP106 P106-090Tesla P40
1c20GP106M GeForce GTX 1060 MobileTesla P40
1c21GP106M GeForce GTX 1050 Ti MobileTesla P40
1c22GP106M GeForce GTX 1050 MobileTesla P40
1c23GP106M GeForce GTX 1060 Mobile Rev. 2Tesla P40
1c30GP106GL Quadro P2000Tesla P40
1c31GP106GL Quadro P2200Tesla P40
1c35GP106M Quadro P2000 MobileTesla P40
1c60GP106BM GeForce GTX 1060 Mobile 6GBTesla P40
1c61GP106BM GeForce GTX 1050 Ti MobileTesla P40
1c62GP106BM GeForce GTX 1050 MobileTesla P40
1bb8GP104GLM Quadro P3000 MobileTesla P40
1bb9GP104GLM Quadro P4200 MobileTesla P40
1bbbGP104GLM Quadro P3200 MobileTesla P40
1bc7GP104 P104-101Tesla P40
1be0GP104BM GeForce GTX 1080 MobileTesla P40
1be1GP104BM GeForce GTX 1070 MobileTesla P40
1c02GP106 GeForce GTX 1060 3GBTesla P40
1c03GP106 GeForce GTX 1060 6GBTesla P40
1c04GP106 GeForce GTX 1060 5GBTesla P40
1c06GP106 GeForce GTX 1060 6GB Rev. 2Tesla P40
1b87GP104 P104-100Tesla P40
1ba0GP104M GeForce GTX 1080 MobileTesla P40
1ba1GP104M GeForce GTX 1070 MobileTesla P40
1ba2GP104M GeForce GTX 1070 MobileTesla P40
1badGP104 GeForce GTX 1070 Engineering SampleTesla P40
1bb0GP104GL Quadro P5000Tesla P40
1bb1GP104GL Quadro P4000Tesla P40
1bb3GP104GL Tesla P4Tesla P40
1bb4GP104GL Tesla P6Tesla P40
1bb5GP104GLM Quadro P5200 MobileTesla P40
1bb6GP104GLM Quadro P5000 MobileTesla P40
1bb7GP104GLM Quadro P4000 MobileTesla P40
1b06GP102 GeForce GTX 1080 TiTesla P40
1b07GP102 P102-100Tesla P40
1b30GP102GL Quadro P6000Tesla P40
1b38GP102GL Tesla P40Tesla P40
1b80GP104 GeForce GTX 1080Tesla P40
1b81GP104 GeForce GTX 1070Tesla P40
1b82GP104 GeForce GTX 1070 TiTesla P40
1b83GP104 GeForce GTX 1060 6GBTesla P40
1b84GP104 GeForce GTX 1060 3GBTesla P40
1b39GP102GL Tesla P10Tesla P40
1b00GP102 TITAN XTesla P40
1b01GP102 GeForce GTX 1080 Ti 10GBTesla P40
1b02GP102 TITAN XpTesla P40
179cGM107 GeForce 940MXTesla M10
17c2GM200 GeForce GTX TITAN XTesla M60
17c8GM200 GeForce GTX 980 TiTesla M60
17f0GM200GL Quadro M6000Tesla M60
17f1GM200GL Quadro M6000 24GBTesla M60
17fdGM200GL Tesla M40Tesla M60
1617GM204M GeForce GTX 980MTesla M60
1618GM204M GeForce GTX 970MTesla M60
1619GM204M GeForce GTX 965MTesla M60
161aGM204M GeForce GTX 980 MobileTesla M60
1667GM204M GeForce GTX 965MTesla M60
174dGM108M GeForce MX130Tesla M10
174eGM108M GeForce MX110Tesla M10
1789GM107GL GRID M3-3020Tesla M10
1402GM206 GeForce GTX 950Tesla M60
1406GM206 GeForce GTX 960 OEMTesla M60
1407GM206 GeForce GTX 750 v2Tesla M60
1427GM206M GeForce GTX 965MTesla M60
1430GM206GL Quadro M2000Tesla M60
1431GM206GL Tesla M4Tesla M60
1436GM206GLM Quadro M2200 MobileTesla M60
15f0GP100GL Quadro GP100Tesla P40
1404GM206 GeForce GTX 960 FAKETesla M60
13d8GM204M GeForce GTX 970MTesla M60
13d9GM204M GeForce GTX 965MTesla M60
13daGM204M GeForce GTX 980 MobileTesla M60
13e7GM204GL GeForce GTX 980 Engineering SampleTesla M60
13f0GM204GL Quadro M5000Tesla M60
13f1GM204GL Quadro M4000Tesla M60
13f2GM204GL Tesla M60Tesla M60
13f3GM204GL Tesla M6Tesla M60
13f8GM204GLM Quadro M5000M / M5000 SETesla M60
13f9GM204GLM Quadro M4000MTesla M60
13faGM204GLM Quadro M3000MTesla M60
13fbGM204GLM Quadro M5500Tesla M60
1401GM206 GeForce GTX 960Tesla M60
13b3GM107GLM Quadro K2200MTesla M10
13b4GM107GLM Quadro M620 MobileTesla M10
13b6GM107GLM Quadro M1200 MobileTesla M10
13b9GM107GL NVS 810Tesla M10
13baGM107GL Quadro K2200Tesla M10
13bbGM107GL Quadro K620Tesla M10
13bcGM107GL Quadro K1200Tesla M10
13bdGM107GL Tesla M10Tesla M10
13c0GM204 GeForce GTX 980Tesla M60
13c2GM204 GeForce GTX 970Tesla M60
13d7GM204M GeForce GTX 980MTesla M60
1389GM107GL GRID M30Tesla M10
1390GM107M GeForce 845MTesla M10
1391GM107M GeForce GTX 850MTesla M10
1392GM107M GeForce GTX 860MTesla M10
1393GM107M GeForce 840MTesla M10
1398GM107M GeForce 845MTesla M10
1399GM107M GeForce 945MTesla M10
139aGM107M GeForce GTX 950MTesla M10
139bGM107M GeForce GTX 960MTesla M10
139cGM107M GeForce 940MTesla M10
139dGM107M GeForce GTX 750 TiTesla M10
13b0GM107GLM Quadro M2000MTesla M10
13b1GM107GLM Quadro M1000MTesla M10
13b2GM107GLM Quadro M600MTesla M10
1347GM108M GeForce 940MTesla M10
1348GM108M GeForce 945M / 945ATesla M10
1349GM108M GeForce 930MTesla M10
134bGM108M GeForce 940MXTesla M10
134dGM108M GeForce 940MXTesla M10
134eGM108M GeForce 930MXTesla M10
134fGM108M GeForce 920MXTesla M10
137aGM108GLM Quadro K620M / Quadro M500MTesla M10
137bGM108GLM Quadro M520 MobileTesla M10
137dGM108M GeForce 940ATesla M10
1380GM107 GeForce GTX 750 TiTesla M10
1381GM107 GeForce GTX 750Tesla M10
1382GM107 GeForce GTX 745Tesla M10
1340GM108M GeForce 830MTesla M10
1341GM108M GeForce 840MTesla M10
1344GM108M GeForce 845MTesla M10
1346GM108M GeForce 930MTesla M10


安装vGPU驱动

1)打开PVE Shell执行脚本②一键安装NVIDIA vGPU Host驱动(16|17|18|19)和vGPU Unlock-rs服务

2)选择自己要安装的版本,PVE9推荐安装vGPU19,PVE8推荐安装vGPU17

3)重启完成后查看相关服务状态是否正常

# 查看相关服务状态
systemctl status {nvidia-vgpud.service,nvidia-vgpu-mgr.service}
# 重新启动相关服务
systemctl restart {nvidia-vgpud.service,nvidia-vgpu-mgr.service}
# 停止相关服务
systemctl stop {nvidia-vgpud.service,nvidia-vgpu-mgr.service}

正常运转没有错误说明服务正常
以下为输出日志:

root@pve9:~# systemctl status {nvidia-vgpud.service,nvidia-vgpu-mgr.service}
○ nvidia-vgpud.service - NVIDIA vGPU Daemon
   Loaded: loaded (/usr/lib/systemd/system/nvidia-vgpud.service; enabled; preset: enabled)
  Drop-In: /etc/systemd/system/nvidia-vgpud.service.d
           └─vgpu_unlock.conf
   Active: inactive (dead) since Wed 2025-08-27 20:06:00 CST; 3h 46min ago
 Invocation: a74e7620de244604b92a71531071bccb
  Process: 984 ExecStart=/usr/bin/nvidia-vgpud (code=exited, status=0/SUCCESS)
 Main PID: 984 (code=exited, status=0/SUCCESS)
 Mem peak: 7.6M
      CPU: 634ms

Aug 27 20:06:00 pve9 nvidia-vgpud[984]: Encoder Capacity: 0x64
Aug 27 20:06:00 pve9 nvidia-vgpud[984]: BAR1 Length: 0x100
Aug 27 20:06:00 pve9 nvidia-vgpud[984]: Frame Rate Limiter enabled: 0x1
Aug 27 20:06:00 pve9 nvidia-vgpud[984]: Number of Displays: 4
Aug 27 20:06:00 pve9 nvidia-vgpud[984]: Max pixels: 16384000
Aug 27 20:06:00 pve9 nvidia-vgpud[984]: Display: width 5120, height 2880
Aug 27 20:06:00 pve9 nvidia-vgpud[984]: Multi-vGPU Exclusive supported: 0x1
Aug 27 20:06:00 pve9 nvidia-vgpud[984]: License: GRID-Virtual-PC,2.0;Quadro-Virtual-DWS,5.0;GRID-Virtual-WS,2.0;GRID-Virtual-WS-Ext,2.0
Aug 27 20:06:00 pve9 systemd[1]: nvidia-vgpud.service: Deactivated successfully.
Aug 27 20:06:00 pve9 systemd[1]: Finished nvidia-vgpud.service - NVIDIA vGPU Daemon.

● nvidia-vgpu-mgr.service - NVIDIA vGPU Manager Daemon
   Loaded: loaded (/usr/lib/systemd/system/nvidia-vgpu-mgr.service; enabled; preset: enabled)
  Drop-In: /etc/systemd/system/nvidia-vgpu-mgr.service.d
           └─vgpu_unlock.conf
   Active: active (running) since Wed 2025-08-27 20:06:00 CST; 3h 46min ago
 Invocation: f323e4299db44e0e9077dbaa55110d14
  Process: 1200 ExecStart=/usr/bin/nvidia-vgpu-mgr (code=exited, status=0/SUCCESS)
 Main PID: 1208 (nvidia-vgpu-mgr)
    Tasks: 6 (limit: 38267)
   Memory: 37.9M (peak: 78.3M)
      CPU: 7.743s
   CGroup: /system.slice/nvidia-vgpu-mgr.service
           ├─1208 /usr/bin/nvidia-vgpu-mgr
           └─1574 vgpu

随后使用nvidia-smi
以下为输出日志:

root@pve9:~# nvidia-smi
Wed Aug 27 23:54:38 2025       
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 580.65.05              Driver Version: 580.65.05      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. |
|                                         |                        |               MIG M. |
|=========================================+========================+======================|
|   0  NVIDIA P106-100                On  |   00000000:08:00.0 Off |                  N/A |
| 23%   46C    P8              7W /  120W |    1041MiB /   6144MiB |      1%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+

+-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI              PID   Type   Process name                        GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
|    0   N/A  N/A            1574    C+G   vgpu                                   1012MiB |
+-----------------------------------------------------------------------------------------+
root@pve9:~# nvidia-smi vgpu
Wed Aug 27 23:54:44 2025       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 580.65.05              Driver Version: 580.65.05                 |
|---------------------------------+------------------------------+------------+
| GPU  Name                       | Bus-Id                       | GPU-Util   |
|      vGPU ID     Name           | VM ID     VM Name            | vGPU-Util  |
|=================================+==============================+============|
|  0   NVIDIA P106-100            | 00000000:08:00.0             |   0%       |
|      3251634191  GRID T4-1Q     | dd02...  Windows10-22H2,d... |    0%      |
+---------------------------------+------------------------------+------------+

以及mdevctl types查看
以下为输出日志:

root@pve9:~# mdevctl types
0000:08:00.0
nvidia-222
  Available instances: 15
  Device API: vfio-pci
  Name: GRID T4-1B
  Description: num_heads=4, frl_config=45, framebuffer=1024M, max_resolution=5120x2880, max_instance=16
nvidia-223
  Available instances: 0
  Device API: vfio-pci
  Name: GRID T4-2B
  Description: num_heads=4, frl_config=45, framebuffer=2048M, max_resolution=5120x2880, max_instance=8
nvidia-224
  Available instances: 0
  Device API: vfio-pci
  Name: GRID T4-2B4
  Description: num_heads=4, frl_config=45, framebuffer=2048M, max_resolution=5120x2880, max_instance=8
nvidia-225
  Available instances: 15
  Device API: vfio-pci
  Name: GRID T4-1A
  Description: num_heads=1, frl_config=60, framebuffer=1024M, max_resolution=1280x1024, max_instance=16
nvidia-226
  Available instances: 0
  Device API: vfio-pci
  Name: GRID T4-2A
  Description: num_heads=1, frl_config=60, framebuffer=2048M, max_resolution=1280x1024, max_instance=8
nvidia-227
  Available instances: 0
  Device API: vfio-pci
  Name: GRID T4-4A
  Description: num_heads=1, frl_config=60, framebuffer=4096M, max_resolution=1280x1024, max_instance=4
nvidia-228
  Available instances: 0
  Device API: vfio-pci
  Name: GRID T4-8A
  Description: num_heads=1, frl_config=60, framebuffer=8192M, max_resolution=1280x1024, max_instance=2
nvidia-229
  Available instances: 0
  Device API: vfio-pci
  Name: GRID T4-16A
  Description: num_heads=1, frl_config=60, framebuffer=16384M, max_resolution=1280x1024, max_instance=1
nvidia-230
  Available instances: 15
  Device API: vfio-pci
  Name: GRID T4-1Q
  Description: num_heads=4, frl_config=60, framebuffer=1024M, max_resolution=5120x2880, max_instance=16

Ampere架构显卡开启vGPU

Ampere架构的显卡在PVE安装好vGPU HOST驱动后,还需要开启VF才能使用vGPU,开启VF前你需要在BIOS打开SR-IOV功能。(用的不是Ampere架构以上的显卡请跳过这部分@零帧起手
在PVE Shell 新建一个Systemd自启动服务,开机自启动VF

cat > /etc/systemd/system/nvidia-sriov.service <<EOF
[Unit]
Description=Enable NVIDIA SR-IOV
After=network.target nvidia-vgpud.service nvidia-vgpu-mgr.service
Before=pve-guests.service

[Service]
Type=oneshot
ExecStartPre=/bin/sleep 5
ExecStart=/usr/lib/nvidia/sriov-manage -e ALL

[Install]
WantedBy=multi-user.target
EOF

打开VF后,就可以选Mdev类型开启vGPU给虚拟机了。

# 重新加载服务
systemctl daemon-reload
# 设置nvidia-sriov.service,开机自启动
systemctl enable nvidia-sriov.service
# 启动VF
systemctl restart nvidia-sriov.service


像RTX A5000/A6000这类带显示接口的显卡,还需要切换到无显示模式才能用vGPU,先切换好无显示模式再来安装驱动顺序不能乱。

# 先下载displaymodeselector工具上传到PVE根目录
https://share.feijipan.com/s/zOZHGpgP
# 授权可执行文件
chmod  +x displaymodeselector
# 切换无显示模式,跟着提示步骤进行关闭
./displaymodeselector --gpumode
# 重启PVE后生效
reboot

演示图为Windows下操作,Linux也是一样的

创建vGPU资源映射

如果机器的PCI设备列表有很多,或者设备里存在多张显卡又或者在用Ampere架构及以上的显卡采用的是SR-IOV拆分,会多出很多个VF设备。直接从原始设备中添加vGPU的时候很难查找。

这时就可以来创建PCI设备的资源映射,这样在添加vGPU设备时能更快的选择到我们vGPU设备。
A5000采用SR-IOV拆分,会多出很多个VF设备,只需要全部勾选

添加PCI设备时,在映射的设备列表就能找到我们需要的vGPU设备。

搭建fastapi-dls授权服务

NVIDIA vGPU并非免费产品,需要对vGPU驱动购买许可才能正常使用vGPU,这里我用的是技术社区fastapi-dls项目来取得90天的试用许可。我这里提供一个PVE的LXC容器,使用docker服务部署的fastapi-dls授权。


LXC容器信息:
NVIDIA vGPU 驱动授权服务器(90天授权期,客户端在每13天12点续订1次许可证,授权服务需要保持运行才能自动续期)
FASTAPI-DLS 版本:2.0.2
CT容器IP:10.10.10.99
登录LXC账号:root
登录LXC密码:123123

1)将下载下来的LXC容器还原包vzdump-lxc-100-2025_09_20-FASTAPI-DLS_Version_2.0.2_90day.tar.zst上传到PVE的/var/lib/vz/dump/路径下。然后进行还原

2)并将原来的IP改为自己局域网的IP,这里我用10.10.10.251

3)开机并登录LXC容器(账号:root密码:123123)并创建fastapi-dls授权服务。注意下边的IP10.10.10.251改为自己的IP。

docker run --restart always --name fastapi-dls -d -e DLS_URL=10.10.10.251 -e DLS_PORT=443 -p 443:443 makedie/fastapi-dls:2.0.2
# 检查fastapi-dls容器是否正在运行
docker ps

三、创建虚拟机(Win11)

在PVE上创建一个Win11虚拟机

资源下载

# WINDOWS镜像ISO
https://next.itellyou.cn/
# virtio-win驱动
https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/

四、安装虚拟机(Win11)

启动虚拟机,开始安装Win11

五、配置虚拟机(Win11)

1)安装virtio驱动
安装好Win11后,把Virtio驱动给打上,进到CD光驱盘运行virtio-win-guest-tools直接下一步直至安装完成

2)启用QEMU Guest Agent
安装好后,PVE的虚拟机概要处上可以看到ip信息,如果看不到ip信息,请在关闭虚拟机,在虚拟机的选项中,启用QEMU Guest Agent

3)开启RDP远程桌面
在系统设置开启RDP远程桌面

4)允许RDP显卡加速
RDP 支持无显卡运行,在远程桌面的时候默认是不调用显卡,可以开启它,让它支持显卡加速。
首先打开虚拟机上的组策略gpedit.msc,依次找到计算机配置->管理模板->Windows组件->远程桌面服务->远程桌面会话主机->远程会话环境在右边选择将硬件图形适配器应用于所有远程桌面服务会话 右键编辑,选择已启用,确定保存。

5)解除RDP 30帧限制
RDP 默认的帧率限制在30帧,可以设置为60帧传输。
在注册表打开该路径 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations

在空白处右键->新建->DWORD(32位)值,命名为DWMFRAMEINTERVAL,双击刚添加的这一项,基数选择为十进制,数值数据填写15,确定保存重启生效。

6)关闭防火墙
关闭Windows防火墙,或者放行3389远程桌面端口

7)关闭睡眠/屏幕
在系统设置中,把屏幕超时改为从不

六、配置vGPU(Guest驱动)

1)添加vGPU设备
PCI设备:选nvidia显卡(勾选ROM-Bar和PCIE在Mdev类型中选择vgpu设备230)

音频设备:ich9-intel-hda/后端驱动器:无(不添加的话,串流玩游戏时是没有声音的)


其中 GRID T4-1Q (nvidia-230) 是 mdev 的名字,GRID T4--显卡名,1--1G 显存,Q 代表 vWS,nvidia-230 代表ID
关于最后一位字母,如下:
Q:为需要Quadro技术的性能和功能的创意和技术专业人员提供的虚拟工作站 - CUDA OpenGL
C:计算密集型服务器工作负载,如人工智能、深度学习或高性能计算。- CUDA Only
B:为业务专业人员和知识工作者提供的虚拟桌面 - 45FPS MAX
A:为虚拟应用的用户,提供应用流或基于会话的解决方案 - Good for RDSH
3D渲染,游戏,AI运算,请选择Q系列型号即可

2)安装Guest驱动
从vGPU 18.x开始(17版本及之前的直接安装驱动即可),NVIDIA技术团队添加了 NLS ROOT CA 证书验证来保护vGPU授权数据,所以要想正常使用GRID显卡驱动还得想办法把驱动证书强校验给破解。以下是在网上找到的破解方法patched-nvidia-grid-drivers,通过FastAPI-DLS搭配patched-nvidia-grid-driver来跳过证书检查。
将GRID驱动和nvxdapix.dll补丁复制到虚拟机

# Windows GRID驱动程序
580.88_grid_win10_win11_server2022_dch_64bit_international.exe
# vGPU19.0的nvxdapix.dll补丁用于修补WIN GRID驱动程序
https://github.com/rbqvq/patched-nvidia-grid-drivers/blob/master/patched/19.0/nvxdapix.dll


双击打开GRID驱动程序,等待程序解压完成,并前往程序解压好的路径

将下载下来的nvxdapix.dll补丁替换到Display.Driver文件夹下,然后开始安装GRID驱动程序

安装GRID驱动选择精简安装,遇到Windows安全中心的弹窗选择始终安装此驱动程序软件即可。

3)授权GRID驱动
在浏览器访问fastapi-dls授权服务:https://10.10.10.251/-/client-token会自动下载好授权文件

将文件放入C:\Program Files\NVIDIA Corporation\vGPU Licensing\ClientConfigToken\这个目录下

3) 重启NVIDIA Display Container Ls服务,即可获得授权

授权失败怎么办?
① 需要检查虚拟机的时间是否对得上授权服务器时间;
② fastapi-dls授权服务是否为2.X版本,vGPU18.x后版本必须升级到2.X版本;

4)通过远程桌面工具连接虚拟机跑个鲁大师测试一下显卡是否正常工作
Q系列模型帧率限制在60帧


想解除60帧?
编辑nano /etc/vgpu_unlock/profile_override.toml文件,加入以下信息关闭虚拟机重新开机生效。

[profile.nvidia-230]
cuda_enabled = 1
frl_enabled = 0
vgpu_type = "NVS"

参数说明:
[profile.nvidia-230]nvidia-230 为vgpu型号的参数。如选的不是230则改成自己选的那个型号。
cuda_enabled = 1是否开启cuda
frl_enabled = 0 是否限制帧数,0为不限制
vgpu_type = "NVS" 修复Q系列OpenGL性能异常问题
解除帧率后的效果

七、配置VDI角色

PVE8角色配置

在PVE8的角色菜单创建一个VDIVMUsers的角色,并分配以下特权:VM.Audit VM.Console VM.PowerMgmt VM.Monitor VM.Snapshot.Rollback(可选)

角色权限说明:
VM.Audit
权限说明:允许查看/审计虚拟机的配置和状态(只读权限)。

VM.Console
权限说明:允许通过控制台访问虚拟机(如NoVNC、SPICE或xterm.js)。

VM.PowerMgmt
权限说明:允许对虚拟机进行电源管理操作。

VM.Monitor
权限说明:允许查看虚拟机的实时监控数据(如CPU、内存、磁盘I/O等)。

VM.Snapshot.Rollback
权限说明:将虚拟机回滚到其某个快照。


PVE9角色配置

在PVE9的角色菜单创建一个VDIVMUsers的角色,并分配以下特权:VM.Audit VM.Console VM.PowerMgmt VM.GuestAgent.FileWrite VM.GuestAgent.FileRead VM.GuestAgent.FileSystemMgmt VM.GuestAgent.Audit VM.GuestAgent.Unrestricted VM.Snapshot.Rollback(可选)

角色权限说明:
VM.Audit
权限说明:允许查看/审计虚拟机的配置和状态(只读权限)。

VM.Console
权限说明:允许通过控制台访问虚拟机(如NoVNC、SPICE或xterm.js)。

VM.PowerMgmt
权限说明:允许对虚拟机进行电源管理操作。

VM.GuestAgent.FileWrite
权限说明:通过 QEMU 客户机代理向客户机写入文件。

VM.GuestAgent.FileRead
权限说明:通过 QEMU 客户机代理从客户机读取文件。

VM.GuestAgent.FileSystemMgmt
权限说明:通过 QEMU 客户机代理冻结/解冻/修剪文件系统。

VM.GuestAgent.Audit
权限说明:发出信息性 QEMU 客户机代理命令。

VM.GuestAgent.Unrestricted
权限说明:发出任意 QEMU 客户机代理命令。

VM.Snapshot.Rollback
权限说明:将虚拟机回滚到其某个快照。

八、配置VDI用户

在PVE的用户菜单创建一个1000的用户。其中领域选择Proxmox VE authentication server

添加好后就能看到用户了,同时在这个页面还支持修改、删除用户信息和密码。

九、给VDI用户分配虚拟机使用权

在PVE里选中要给VDI用户的虚拟机,点击权限,选择添加,把刚才添加的用户和角色选择进来即可。

到这服务端的设置全部完成了,可以退出root账户,使用VDI账户登录PVE管理后台,网页进行管理资源了,由于网页管理虚拟机只有vnc窗口,要想使用完整云桌面功能还是得配置个瘦客户端,接着我们来设置瘦客户端。

图文部署 -(客户端)

PVE的VDI客户端,个人觉得比较简单好用的一个是Github开源的 PVE-VDIClient另一个是梨儿方科技开发的 PXVDI。2款都支持SPICE协议,满足日常云桌面需求。以下客户端设置内容以Porteus5.0云桌面OS为例。该云桌面系统资源占用率低,即使在老旧的硬件上也能流畅运行,很适合放在瘦客户机上跑。系统集成了PVE VDIClient 和 PXVDI 2款PVE的VDI的客户端模块,以及一些常用的远程软件如向日葵、ToDesk、RustDesk、sunshine串流,Parsec串流。

一、配置PVE VDIClient客户端

PVE-VDIClient开源且免费,支持RDP和SPICE协议
1)打开终端,切换到root权限,去编辑VDIClient的配置文件将自己正确的PVE地址填入即可。

# 切换root权限
sudo -i
# 使用nano命令编辑vdiclient.ini文件
nano /etc/vdiclient/vdiclient.ini


在节点,主机这里能查看到自己PVE的主机名

2)配置sudo允许guest用户提权,做这步是为了在重定向USB设备防止权限不足。

# vi命令编辑sudoers文件
sudo visudo
# 在文件末尾添加以下参数,允许 guest 无密码运行所有命令
guest ALL=(ALL) NOPASSWD: ALL 

最后就是给软件加上sudo权限右键软件快捷方式,点击属性,在命令前面加上sudo即可提权。

3)登录 PVE VDIClient客户端,输入服务端创建好的用户1000。进行登录

4)登录进来就可以使用RDP协议进行远程了。

5)如要切换成SPICE协议,需要调整一下虚拟机配置。将显示调整为SPICE,并添加USB和音频重定向。
显示:调整为Spice单显示器,SPICE dual monitor表示为2个显示器,最多可添加4个显示器
USB:添加USB,后端选择spice。添加几个USB就代表客户端支持多少个USB重定向
音频:添加声卡,设备选择ich9-intel-hda 后端选择spice

6)同时在虚拟机的选项处,把SPICE增强启用。

返回客户端就可以使用SPICE协议进行远程了。

二、配置PXVDI客户端

PXVDI客户端由梨儿方科技开发,支持RDP、SPICE、VMware Horizon(blast/pcoip)3个协议,Linux端的客户端全部免费使用,最后一个支持直连模式是3.0.7版本,之后的版本仅维护总控模式。总控模式接入AD域,更合规和统一管理,有这方面需求可以访问官网了解报价

1)打开PXVDI客户端,在设置中配置好服务器信息并保存。

2)高级设置中,还可以对各个协议进行定制调整。

高级设置

全屏开关
控制软件是否全屏,以及以后的连接是否全屏。所有的协议均能控制
Debug
启用DEBUG模式
自动登录
用户登录客户端后,自动登录到虚拟机
允许还原
允许用户使用快照回滚桌面
连接方式
可选SPICE/Freerdp/Horizon协议。
freerdp设置
freerdp版本:配置freerdp的版本,3是最新版本,修复了2存在的bug,2是稳定版本。
编解码:配置freerdp的解码方式,推荐使用420,如果不支持硬件解码,请使用软件解码
色深:配置freerdp的色彩深度,值越大,色彩越好。
缩放:配置freerdp的缩放比率,适合在高分辨率屏中使用
网络速率:wan外网,lan内网,auto自动
VMware设置
连接协议:Blast和PCOIP,PCOIP适合性能差的瘦客户机。
状态栏开关:是否显示连接的状态栏,开启后,可以在云桌面中显示高级选项,如USB重定向,配置连接解码方式等
网关设置:
AD模式:将用户的登录信息作为云桌面的登录账户,用户无需输入2次密码,如果配置自动登录,用户可以开机登录到桌面。需要云桌面和服务器端加域。
使用网关:配置使用rdp的网关。在ipv6启用的情况下,会忽略网关。
使用用户账号密码:将用户的账户密码作为rdp网关凭据
网关账号:rdp网关账号
网关密码:rdp网关密码。 该功能可以让外部客户端访问内网桌面。
iP设置
是否开启IPV6
资源设置:
多监视器:允许使用多个屏幕,勾选此项之后,无论是否全屏,云桌面都会全屏。
驱动器重定向:允许重定向瘦客户端的磁盘,如移动磁盘、内置磁盘等等。
声音重定向:允许云桌面播放声音,并从瘦客户端发出来。
打印重定向:允许云桌面使用本地打印机。
usb重定向:允许云桌面读取本地的USB设备。
麦克风重定向:允许云桌面使用麦克风。
剪切板重定向:运行云桌面进行剪切板同步。


3)登录PXVDI客户端,输入服务端创建好的用户1000进行登录。格式:用户@pve

4)登录进来就能正常远程了。PXVDI客户端更多的使用教学建议到官方文档查阅:PXVDI文档

三、配置Horizon客户端

PVE本身不支持VMware Horizon(blast/pcoip)这类协议,但是可以通过在PVE虚拟机安装Horizon Agent插件直连的方式来实现使用VMware Horizon Client客户端连接我们的PVE虚拟机

1)需要在Win11虚拟机上将Omnissa-Horizon-AgentOmnissa-Horizon-Agent-Direct-Connection安装包放到虚拟机桌面。

2)由于我们PVE是没有安装Horizo​​n Connection Server服务的,安装时得从命令行安装 Horizo​​n Agent,跳过Horizo​​n Connection Server 注册的参数。相关说明可见官方Horizo​​n Agent使用文档

# 管理员运行CMD,安装 Horizo​​n Agent时加入安装/v VDM_SKIP_BROKER_REGISTRATION=1参数
Omnissa-Horizon-Agent-x86_64-2503-8.15.0-14304348675.exe /v VDM_SKIP_BROKER_REGISTRATION=1


执行后会弹出安装窗口,按提示安装即可。

3)接着安装Horizon-Agent-Direct-Connection这个双击运行安装就行,不需要命令行安装。

4)安装好后重启虚拟机。通过虚拟机IP使用Horizon客户端连接即可。

5)到这PVE虚拟机也可以使用VMware Horizon(blast/pcoip)这类协议了。

四、游戏党配置Sunshine串流

在云端玩游戏推荐采用串流的方式,使用RDP或者SPICE协议来玩游戏会出现丢帧体验不好,建议采用Sunshine串流或Parsec串流方式。客户端云桌面OS已经集成了moonlight,Parsec2款串流工具。只需要在虚拟机配置好串流设置就行,并在虚拟机添加个音频。不然游戏没有声音。

Sunshine+Moonlight串流教学可以看这视频

Sunshine+Moonlight串流【保姆级教学】

异地访问

要让云桌面在异地也能正常使用,可以通过公网+端口映射或者VPN组网的方式。如果没有公网也可以在腾讯云或者阿里云买台大带宽VPS做端口转发。下边演示在本地爱快做端口映射实现异地访问。在此之前你需要将宽带改桥接在爱快上拨号,并且宽带运营商有提供公网ipv4或者ipv6就可以继续往下看了。

IPV4


服务端信息
OS:PVE8.4.5
主机名:pve8.lan
IPv4地址:10.10.10.252
PVE管理端口:8006
Spice API端口:3128

1)在爱快的端口映射分别将80063128端口映射。如果运营商给你分配的是动态ipv4那你还需要做ddns动态域名解析,通过域名访问→爱快动态域名解析教程看这里←


2)返回到瘦客户端OS将公网信息填写到PVE VDIClient客户端PXVDI客户端
PVE VDIClient客户端修改nano /etc/vdiclient/vdiclient.ini

PXVDI客户端直接在服务器配置填写公网IP或者域名即可

IPV6

1)在爱快开启ipv6,开启方法可以见官方教程→ipv6设置

2)在服务端PVE启用ipv6地址,使用nano命令编辑网络配置文件
nano /etc/network/interfaces

# 在你的vmbr虚拟网桥底下加入以下参数,如虚拟网桥vmbr0
post-up echo "2" > /proc/sys/net/ipv6/conf/vmbr0/accept_ra

修改后效果:

auto lo
iface lo inet loopback

iface eno1 inet manual

auto vmbr0
iface vmbr0 inet static
        address 10.10.10.250/24
        gateway 10.10.10.10
        bridge-ports eno1
        bridge-stp off
        bridge-fd 0
        post-up echo "2" > /proc/sys/net/ipv6/conf/vmbr0/accept_ra

source /etc/network/interfaces.d/*

3)重启服务端PVE,输入ip -c a就能查看获取的ipv6地址

root@pve8:~# ip -c a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master vmbr0 state UP group default qlen 1000
    link/ether e0:d5:5e:a8:2c:c4 brd ff:ff:ff:ff:ff:ff
    altname enp0s31f6
3: vmbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether e0:d5:5e:a8:2c:c4 brd ff:ff:ff:ff:ff:ff
    inet 10.10.10.250/24 scope global vmbr0
       valid_lft forever preferred_lft forever
    inet6 2408:8256:f183:5cb:e1d5:8eff:fea8:2cc4/64 scope global dynamic mngtmpaddr 
       valid_lft 255773sec preferred_lft 169373sec
    inet6 fe80::e2d5:5eff:fea8:2cc4/64 scope link 

4)最后就是准备好自己的域名在爱快使用动态域名绑定服务端PVE的ipv6。通过解析的域名填到上面的PXVDI和PVEVDI客户端去(使用ipv6异地访问的话,瘦终端网络必须也要有ipv6环境才能成功访问

集群管理

当服务端资源不足了,后面想再增加几台机器做服务端,那么可以在PVE创建集群,把各个服务端节点加入到集群集中管理。

创建PVE集群

在任意一个服务端创建集群作为主节点,创建集群直接在web创建。
步骤:数据中心 ➡️ 集群 ➡️ 创建集群 ➡️ 设置集群名称 ➡️ 选择网络 ➡️ 创建集群

加入PVE集群

加入集群需要确保节点下没有虚拟机/LXC 容器才可以正常加入集群。在需要加入的节点点击
步骤:数据中心 ➡️ 集群 ➡️ 加入集群 ➡️ 粘贴集群加入信息 ➡️ 输入集群 root 密码 ➡️ 选择网络确认加入集群

如果要弄成高可用分布式的集群方案可以看这篇文章。

FAQ问答

一、NVIDIA vGPU部分

Q1: 我的显卡是Tesla P4,安装好了vGPU驱动,在Windows虚拟机看到显卡变成了T4或者RTXA6000

A1: NVIDIA vGPU HOST驱动是做了修补的,所以你看到p4变成P40或者RTXA6000都是正常的并不会影响其性能。当然p4本身就是支持的vGPU卡,在17版本前直接用原生NVIDIA vGPU HOST驱动就行

Q2:我的显卡有6GB显存,选用GRID T4-1Q(nvidia-230)模型,那显示可用数16个,我是不是能开16个?

A2:错的!nvidia-230模型每开一个vgpu会占用1024M显存,6G显存理论就是1G+1G+1G+1G+1G+1G=6个。16是这个230模型最大可用数
Q2

Q3:为啥我给虚拟机使用nvidia-230模型后,其他虚拟机想再使用其他模型就不让选择了可用数为0。只能用nvidia-230模型。

A3:对的,默认vGPU是置于相等大小模式,一旦选了这个模型后,所有虚拟机都将采用该模型,你不能一台虚拟机使用nvidia-230模型,另一台虚拟机使用nvidia-231模型。但是从vGPU18版本后NVIDIA开始对老显卡非SRIOV的虚拟化也支持了混合模式即支持不同显存大小。打脸的是我们用的消费卡/非支持的专业卡依旧不能使用官方方法开启混合模式,卡不支持还是得用vGPU Unlock解锁修改。

官方开启GPU混合大小模式
1)使用nvidia-smi -q命令列出所有物理 GPU 的状态,并检查异构时间分片 vGPU 大小是否受支持。当Heterogeneous Time-Slice Sizes项如果是Supported状态,说明你的显卡支持开启混合模式.

...
Attached GPUs                       : 1
GPU 00000000:41:00.0
...
        Heterogeneous Time-Slice Sizes : Supported
...

2)使用以下命令开启混合大小模式。将id值改自己显卡获取到的数字

# 开启混合大小模式
nvidia-smi vgpu -i id -shm 1
# 例如:
nvidia-smi vgpu -i 0 -shm 1
# 输出以下信息说明开启成功
Enabled vGPU heterogeneous mode for GPU 00000000:41:00.0

使用nvidia-smi -q命令检查 vGPU 异构模式是否已启用,以确认 GPU 现在处于混合大小模式。

        ...
        vGPU Heterogeneous Mode           : Enabled
        ...

如要切换回GPU置于相等大小模式,使用-shm 0选项运行此命令即可。

Q4:我显卡不支持官方方法开启GPU混合大小模式,我要怎么给每台虚拟机分配不同大小的显存?

A4:可以配合vGPU Unlock,通过修改framebuffer、framebuffer_reservation这2个值就能给每台虚拟机自定义显存大小。显存大小不建议低于1GB,低于1GB将无法启用NVENC视频编解码器,虽可改512M,384M,但你的显卡核心性能就在那,拆分的越多性能越弱,与其减小显存多开,不如多买几张卡。

例如:我要使用nvidia-230模型给101虚拟机分配4G显存,102虚拟机分配2G显存,那么我就这样写即可

nano命令编辑nano /etc/vgpu_unlock/profile_override.toml

# 自定义nvidia-230模型
[profile.nvidia-230]

# 启用cuda支持
cuda_enabled = 1

# 解除帧率限制
frl_enabled = 0

# 修复Q系列OpenGL异常问题
vgpu_type = "NVS"

# 配置1GB显存的值
framebuffer = 939524096
framebuffer_reservation = 134217728

[vm.101]
# 给101虚拟机设置4G显存
framebuffer = 3959422976
framebuffer_reservation = 335544320

[vm.102]
# 给102虚拟机设置2G显存
framebuffer = 1946157056
framebuffer_reservation = 201326592

Q5:我的显卡明明有6GB显存,用1GB显存的nvidia-230模型开了6台虚拟机,启动到第6台虚拟机发现无法启动是怎么回事?

A5:总显存值剩余不足1GB,所以到第6台时就没法启动了,可以执行nvidia-smi查看剩余显存,通过改小第6台虚拟机显存大小再启动即可,或者把nvidia-230模型整体显存改小

以下是些换算好的显存值,有需要可以替换到profile_override.toml文件

# 设置384M显存
framebuffer = 318767104
framebuffer_reservation = 83886080
# 设置512M显存
framebuffer = 436207616
framebuffer_reservation = 100663296
# 设置896M显存
framebuffer = 822083584
framebuffer_reservation = 117440512
# 设置1GB显存
framebuffer = 939524096
framebuffer_reservation = 134217728
# 设置2GB显存
framebuffer = 1946157056
framebuffer_reservation = 201326592
# 设置3GB显存
framebuffer = 2952790016
framebuffer_reservation = 268435456
# 设置4GB显存
framebuffer = 3959422976
framebuffer_reservation = 335544320
# 设置5GB显存
framebuffer = 4966055936
framebuffer_reservation = 402653184
# 设置6GB显存
framebuffer = 5972688896
framebuffer_reservation = 469762048
# 设置8GB显存
framebuffer = 7985954816
framebuffer_reservation = 603979776
# 设置10GB显存
framebuffer = 9999220736
framebuffer_reservation = 738197504
# 设置12GB显存
framebuffer = 12012486656
framebuffer_reservation = 872415232
# 设置16GB显存
framebuffer = 16039018496
framebuffer_reservation = 1140850688
# 设置20GB显存
framebuffer = 20065550336
framebuffer_reservation = 1409286144
# 设置24GB显存
framebuffer = 24092082176
framebuffer_reservation = 1677721600
# 设置32GB显存
framebuffer = 32145145856
framebuffer_reservation = 2214592512
# 设置48GB显存
framebuffer = 48001712128
framebuffer_reservation = 3537895424

Q6:我已经用FASTAPI-DLS生成的授权文件给虚拟机NVIDIA GRID驱动成功授权了,这个有数量限制吗?

A6:目前暂未遇到数量上限,FASTAPI-DLS 授权服务器只要一直开着,GRID驱动就能长期正常使用。如遇到授权失败,需要检查虚拟机的时间是否与授权服务器一致,必须一致才能取得授权。

Q7:你的显卡驱动程序已过期,不符合运行《暗黑破坏神IV》的最低要求。请更新驱动程序并重试。当前版本:551.61,最低要求版本:552.74

A7:游戏需要较新的驱动才能游戏,可以尝试直接在虚拟机安装552.74的驱动,如果安装了新的Guest驱动报43代码错误,则你还需要升级PVE宿主机的vGPU Host驱动。升级宿主机vGPU驱动前记得先卸载驱动再安装

Q8:为啥我在PVE网页虚拟机控制台里打完显卡驱动后,就不能操作了呢?

A8:请配置好远程桌面或者安装第三方远程工具,确认能通过远程连上虚拟机再来安装显卡驱动,如果你没配置就安装了显卡驱动,则需要先删除显卡设备,配置好远程再添加上显卡设备。因为你一旦安装好显卡驱动后系统就会呈现双显示器状态,这样就会导致PVE网页虚拟机控制台黑屏,或者是副屏状态,使得无法操作虚拟机。这里推荐把PVE控制台窗口显示给关闭,即在【虚拟机→硬件→显示】改成“无”,只保留vGPU一个显示器,通过远程操作虚拟机。

如果你要在PVE控制台操作虚拟机,不想借助外部的远程工具,可以用ToDesk远程到虚拟机,把显示屏设置改为仅控制台窗口显示,这样PVE的Web显示就能操作了。(注意:PVE控制台的窗口是独立的虚拟显卡并不调用VGPU;UEFI安装的虚拟机修改PVE的Web窗口分辨率需要在虚拟机BIOS修改,SeaBIOS安装的虚拟机在系统显示设置进行修改分辨率)

UEFI虚拟机修改PVE Web窗口分辨率操作
步骤:虚拟机开机按esc键进入BIOS → Device Manager → OVMF Platform Configuration

Q9:我用的是CMP系列的30HX/40HX/50HX的挖矿卡,为啥一切都正常,虚拟机就是无法启动。

A9:CMP系列的挖矿卡寄存器BAR1只有64MB,要启用vGPU实例默认需要256MB,需要将vGPU配置信息重写。将换算好的64M的bar1值,写入profile_override.toml文件
1)使用命令lspci -v -s 硬件ID查看自己显卡bar1大小,如30hx:

2)nano命令编辑nano /etc/vgpu_unlock/profile_override.toml

# 配置nvidia-230重写文件
[profile.nvidia-230]

# 将bar1_length参数调整为64MB
bar1_length = 0x40

二、虚拟机部分

Q1:我虚拟机分配的内存给多少pve就占用多少,且在pve控制台不能操作关机和不显示IP是怎么回事?

Q1
A1:VMware平台有VMwareTools,KVM平台有qemu-guest-agent。PVE下给虚拟机安装qemu-guest-agent可解决虚拟机无法关机和内存不同步IP不显示等问题。在PVE先给虚拟机开启qemu-guest-agent再安装qemu-guest-agent
qemu-guest-agent

Windows虚拟机为例
访问网站 Virtio驱动下载页 下载 Virtio 驱动,例如 virtio-win-0.1.240.iso,上传到虚拟机。加载镜像文件后安装 virtio-win-gt-x64.msivirtio-win-guest-tools.exe,然后重启系统。
qemu-ga-x86_64.exe

Q2:我的虚拟机运行的多了,虚拟机变卡了怎么办?

A2:既要马儿跑,又要马儿不吃草的道理,机器做了虚拟化,CPU,硬盘,网卡等硬件都得依靠处理器去协调,所以结合自己硬件合理分配资源;
1)CPU:游戏场景请选用单核性能强的处理器;3D建模、做图请给多一点线程和GPU显存;
2)硬盘:硬盘IO读写越快虚拟机越流畅,不要把所有虚拟机都跑在一个硬盘,推荐2-3个虚拟机一个硬盘,强烈推荐用nvme硬盘,10块机械硬盘组的raid0都不如一块nvme来的实际
3) 网卡:3-5个虚拟机千兆物理网卡足矣,其他的建议升级万兆网卡

三、瘦终端部分

Q1:Lubuntu云桌面OS能否取消登录密钥环认证弹窗?免密码登录呢?


A1:可以的,打开终端执行以下命令将vdi账户密码删除,并清理登录密钥环认证即可

# 清除登录密钥环
rm ~/.local/share/keyrings/login.keyring
# 删掉vdi账户密码
sudo passwd -d vdi

Q2:我有公网IP,服务端PVE做好了端口映射,异地访问只能使用SPICE协议连接虚拟机,其他协议连不上是咋回事?

A1:是的,Spice协议是走PVE通信的所以可以连接,RDP,Horizon协议是直连模式需要独立映射虚拟机远程端口才能连接。最好的方案是搭建VPN组网而非端口映射,比如wireguard组网,这样就能使用任何协议连接虚拟机了且更安全。

广告:PROXMOX-VE 技术支持,疑难解答,有需要可以闲鱼与我联系↓↓↓

PVE技术支持
最后修改:2025 年 12 月 03 日
如果觉得我的文章对你有用,请随意赞赏