【科技实验室】[Hyper-V 实战]Hyper-V链接PCIE设备直通显卡 卸载(上线)直通显卡以及恢复显卡

本文章所有PowerShell指令均在管理员下执行

参考资料

英伟达vGPU显卡帮助文档

GRID vGPU User Guide :(英文网页/英文PDF /中文网页[可能打不开])

参考资料-文章(感谢这个大佬): https://www.licc.tech/article?id=35

第一步:查看你的设备是否支持

1.1 硬件和系统需求

系统要求: Windows Server 2016 最新的系统是否支持未知

宿主机主板支持 SR-IOVACS 这些功能

关于硬件可以通过这个页面(Github)的脚本来检测

1.2 如何使用硬件检测的脚本?

下载这个脚本到任意位置,

如果PowerSheel控制台提示禁止使用脚本,可以使用下列指令更改权限

 Set-ExecutionPolicy Unrestricted 

再运行这个下载下来的脚本即可

按照说明可以判断你的硬件是否可以使用

如果最后显示这样 可以洗洗睡了

第二步:创建虚拟机

(建议新建一台来进行实验,也可以用现成的)

2.1 打开新建虚拟机 虚拟机名字为 TEST

2.2.1内存设置

可以不使用动态内存, 如果说使用动态内存那么需要满足启动的RAM和最小的RAM相同

关闭动态内存

2.2.2 自动停止操作内容更改

将“自动停止操作”里面的操作从保存虚拟机状态改为强行关闭虚拟机

2.2.3 检查点类型设置

将检查点类型改为生产检查点,并取消勾选如果......

第三步:从宿主机“下线”设备

3.1 获取设备的位置路径

在设备管理器找到PCIE设备,这里是显卡GTX 750 Ti,并复制其属性中的详细信息中的位置路径的这一项。

即获得的路径是

PCIROOT(0)#PCI(0300)#PCI(0000)

3.2 禁用设备

右键显卡即可禁用设备

3.2 使用Powershell控制台将设备下线

格式规范

 Dismount-VMHostAssignableDevice -LocationPath "设备路径" -force 

我这里填写:

 Dismount-VMHostAssignableDevice -LocationPath "PCIROOT(0)#PCI(0300)#PCI(0000)"  -force 

3.2.1下线后的结果

这个设备将不会在设备管理器中的“按类型列出设备”中找到

但是可以在“列出资源”中看到

第四步:将显卡连接到对应的虚拟机上

4.1 将设备连接至虚拟机

命令格式

  Add-VMAssignableDevice -LocationPath "设备路径" -VMName 虚拟机名称 

我这里输入

 Add-VMAssignableDevice -LocationPath "PCIROOT(0)#PCI(0300)#PCI(0000)" -VMNameTEST

如果一直到这个位置都是正常的 一般情况下是成功了的

4.2检查是否成功绑定上虚拟机

 Get-VMAssignableDevice -VMName TEST  

大功告成

这个是否通常情况下只要硬件没有问题,就可以体验直通过后的显卡了,具体的优化措施与细节可以去看参考内容中的参考资料-文章

无法使用 想要还原?

如果你进行到这一步,发现系统不支持而且不能正常使用

可以将设备与对应虚拟机解除绑定并重新上线设备:

5.1获取设备名称

命令格式

 Get-VMAssignableDevice -VMName 虚拟机名称 

我这里要输入

 Get-VMAssignableDevice -VMName TEST 

获取虚拟机中设备的位置路径

这里的位置路径前面位置路径是一样的

即获得的位置路径是

 "PCIROOT(0)#PCI(0300)#PCI(0000)" 

5.2 解除与虚拟机的绑定

命令格式

 Remove-VMAssignableDevice –LocationPath "位置路径" -VMName 虚拟机名称 

我这里要输入的

 Remove-VMAssignableDevice –LocationPath "PCIROOT(0)#PCI(0300)#PCI(0000)" -VMName TEST 

TIP:从这里复制代码到PowerShell可能会使-LocationPath前面的一个小斜杠“-”消失,暂时不清楚是什么BUG,大家请注意。

5.3 重新上线设备并启用设备

命令格式

 Mount-VMHostAssignableDevice –LocationPath "位置路径"  

我这里要输入的

 Mount-VMHostAssignableDevice –LocationPath  "PCIROOT(0)#PCI(0300)#PCI(0000)"   

重新上线设备成功

这个时候再启用设备即可,和刚刚的禁用设备步骤一样。

----文章完----