注意!!
hyperv 运行游戏串 由于技术比较复杂,遇到问题可以一起探讨,不保证每个人一定能成功,本公司不对自己操作错误导致的系统或硬件损坏负责

硬件软件需求

宿主机 windows server 2016
虚拟机 windows 10
主板需要支持虚拟化技术
宿主机至少需要两个显卡,一个自用(可以是核显),其他独立PCI显卡直通给虚拟机
宿主机需要保证电源功率足够,双显卡推荐额定功率650W,三显卡900W
主板和显卡不能太老,理论上要2015年以后的型号,已确认的最低配为显卡1050Ti,主板B250M

宿主机BIOS设置

开启集显
BIOS内开启HyperV 显卡直通相关选项
intel 虚拟化 开启
VT-D 开启 支持SR-IOV 单根IO虚拟化
ASPM 开启 让OS管理PCI设备电源,切断宿主BIOS和PCI设备间的管理关系
如果suverydda依然报错,那么尝试开启主板上其他和PCI-E相关的高级功能。

windows2016 设置

为了让宿主机也可以出租,需要进行以下设置

设置账户和密码不过期
Win + R或CMD,「netplwiz」,如图,去掉『要使用本机,用户必须输入用户名和密码』对勾。应用、输入账户密码即可。
Win + R或CMD,「compmgmt.msc」打开『计算机管理』,『本地用户和组』、『用户』,双击『Administrator』,属性中选中『密码永不过期』。
Win + R或CMD,「gpedit.msc」。「计算机配置 - windows配置 - 安全设置 - 本地策略 - 安全选项」,『交互式登录:无须按ctrl+alt+del』,选中『已启用』。

网卡显卡驱动
有线网卡,进设备厂商“Intel”里找到“Intel(R) Ethernet Connection I219-LM”即可

打开了 添加角色和功能向导,一直默认下一步到左边功能处,勾选DirectPlay 这一项,往下拉 再勾选 无线LAN服务 以及 优质WINDOWS音频视频体验
本地服务器 关闭IE增强设置(这会导致PS4无法登陆)

安装HypderV及win10虚拟机

打开了 添加角色和功能向导, 添加HyperV服务
并安装win10虚拟机

切换PCI设备直通到VM上

Dismount-VMHostAssignableDevice -force -locationpath "path"
Add-VMAssignableDevice -locationpath "path" -vmname vmname
path可以进设备管理器查看

虚拟机安装显卡驱动

如果直通nvidia显卡,需要在虚拟机上安装特殊的破解版驱动
关闭 安全启动 (否则进不了testsign 模式)
bcdedit -set testsigning on
安装破解版nvidia 驱动
使用wuhshowhide.exe禁止驱动更新

虚拟机显示设置

需要给直通后的显卡插上显示器或者虚拟显示器
从hyverV控制台,打开虚拟机windows 10,会发现现在有两个显示器
默认显示器是hyverV虚拟显示器,第二个是直通显卡接的显示器
进入显示设置,强制输入画面到第二个显示器
此后从hyverV控制台将无法获取到虚拟机画面,建议安装teamviewer远程管理

虚拟机声音设置

安装VBCABLE虚拟声卡驱动,否则游戏串无声音

安装虚拟共享存储

如果有两台宿主机(实体主机),可以实现一个小型的集群虚拟共享存储,改善游戏安装配置升级的复杂度

总体架构是ISCSI存储+故障转移集群(基于WorkGroup)+集群共享卷+HyperV共享驱动器 (将来可采用横向伸缩文件服务器SOFS)

首先说存储方面,我选择的是廉价的ISCSI方案(相对于SAS,和Fiber Channel, 单纯的SATA接口是不支持作为集群共享卷的),windows server 2016 自带了iscsi target,基本纯软件就搞定了,唯一问题是ISCSI独立服务器似乎不能与故障转移集群共存,所以需要选择一台主机,作为ISCSI target。注意ISCSI虚拟磁盘文件类型要选固定大小,否则扩容时性能很低。

其次故障转移集群,这个配置起来坑比较多,我选择了不基于活动目录,而是基于WorkGroup的方案,网上有教程,主要步骤,设置私有网络,私有DNS,私有域名后缀,每台集群主机设置相同的用户名密码。另外集群主机需要设置一下 TrustedHosts,用cmd 控制台 winrm set winrm/config/client @{TrustedHosts="*.hyperv.test"}

再次集群共享卷,选择一台主机使用ISCSI发起程序连接ISCSI网络盘,然后这个盘就能添加到集群磁盘了。并创建集群共享卷了,创建好以后位置在C:\ClusterStorage\Volume1
最后就可以给每台集群的HyperV虚拟机添加共享驱动器了,虚拟磁盘文件主要必须保存在集群共享卷。磁盘文件可选动态大小。

理论上,也可以在集群共享卷基础上创建SOFS横向伸缩文件服务器,实现局域网的任意HyperV主机都能用共享驱动器,但是实际操作过程中发现,最后添加虚拟机时有个权限问题,暂时放弃,以后有机会再研究。

TBD