Windows Server系统处理
由于本人使用的是Windows Server2022,如果按照下文直接配置,最后结果会导致虚拟机无法启动并报错如下图。

解决方法有2个:
方法1、不用GPU-PV功能,使用以下命令即可删除下文虚拟机中绑定的显卡(请自行修改 vm_name 为虚拟机名字)
$vm = "vm_name"
Remove-VMGpuPartitionAdapter -VMName $vm
方法2、修改注册表解决报错问题
首先打开使用 Win+R 输入 regedit ,打开注册表编辑器
转到以下路径(如没有请自行建立):
计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\HyperV
然后在HyperV下新建两个 DWORD32 值为0项(创建完后默认为0)
RequireSecureDeviceAssignment
RequireSupportedDeviceAssignment
chatgpt自动生成的reg脚本(可直接创建 *.reg脚本一键建立以上内容)
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\HyperV]
"RequireSecureDeviceAssignment"=dword:00000000
"RequireSupportedDeviceAssignment"=dword:00000000
修改完注册表后无需重启电脑,即可完美解决 Windows Server 中 GPU-PV 虚拟化功能运行报错的问题
GPU-PV 配置
- 要求:
- 理论上,win10 1809 以上都支持这个功能,但是最新的系统有最好的兼容性。
- host 和 vm 可以是不同的系统,但是可能有兼容性问题。
- 因此这里 host 是 win11,vm 也选择 win10 ltsc 2021,保证兼容性。
- 配置
- 管理员权限运行 powershell。
- 依次执行以下命令。(请自行修改
vm_name为虚拟机名字)
$vm = "vm_name"
Add-VMGpuPartitionAdapter -VMName $vm
Set-VMGpuPartitionAdapter -VMName $vm -MinPartitionVRAM 80000000 -MaxPartitionVRAM 100000000 -OptimalPartitionVRAM 100000000 -MinPartitionEncode 80000000 -MaxPartitionEncode 100000000 -OptimalPartitionEncode 100000000 -MinPartitionDecode 80000000 -MaxPartitionDecode 100000000 -OptimalPartitionDecode 100000000 -MinPartitionCompute 80000000 -MaxPartitionCompute 100000000 -OptimalPartitionCompute 100000000
Set-VM -GuestControlledCacheTypes $true -VMName $vm
Set-VM -LowMemoryMappedIoSpace 1GB -VMName $vm
Set-VM -HighMemoryMappedIoSpace 8GB -VMName $vm
上面的 LowMemoryMappedIoSpace 和 HighMemoryMappedIoSpace,原帖中是 1G 和 32G,这里测试 NVIDIA Tesla P4 配置 8G 也能正常跑起来。
- 拷贝驱动
- 找到 host 的驱动文件夹,拷贝到 vm。
- 目录在
C:\Windows\System32\DriverStore\FileRepository\路径中,找到nv开头的文件夹。根据驱动不同文件夹名也会不同,因为我的显卡是Tesla P4,所以文件夹有三个。- 分别为:
nvdimm.inf_amd64_37710613e4f18276nvgridsw.inf_amd64_1ba273002a8f483envraid.inf_amd64_144351277838b429
- 分别为:
- 之后将驱动文件夹拷贝到
C:\Windows\System32\HostDriverStore\FileRepository路径下,注意 Host 和 Vm 的路径不一致!!,文件夹不存在则创建。
最后直接在资源管理器中重新禁用启用该显卡即可。

