• 前言

    前段时间在寝室的服务器上插了显卡给室友玩游戏,但是苦于辣鸡windows不能做到很好的用户隔离和资源分配,导致我使用服务器跑一些高负载服务时,室友不能愉快玩耍。于是考虑到通过PIC-E直通+虚拟化的方式来解决这样的问题,顺便提升后续的扩展性。

准备工作

  • 洋垃圾服务器一台
    • E5-2650v2 双路
    • 64g ECC RAM 双路双通道
    • H710阵列卡 with 21T Raid0 HDD
    • 9260-8i阵列卡 with 12T Raid5 HDD
    • 2T酷鱼
    • 128g Intel SSD
    • 祖传EVGA GTX 750Ti
    • Windows Server 2016 数据中心正版(白嫖)
  • 破解版N卡驱动
  • Moonlight客户端(用于串流)

开始配置

  1. 将主板跳线拨至使用板载集显位置,通过VGA输出视频
  2. 格掉以前的C盘,安装Windows Server操作系统,开启Hyper-V服务(这点很重要,只有server 2016及后续版本才能支持Hyper-V的PCIE设备直通
  3. 配置宿主机的RDP,移除宿主机显示器,配置网络(我的网络环境是所有的路由器都由主路由提供HDCP服务,因此我仅需要配置一个虚拟交换机即可)
  4. 将“自动停止操作”里面的操作从保存虚拟机状态改为强行关闭虚拟机
  5. 将虚拟机检查点类型改为生产检查点,并取消勾选“创建标准检查点”
  6. 从宿主机下线显卡:
    1. 控制面板
    2. 设备管理器
    3. 详细信息
    4. 位置路径(记录下来)
    5. 禁用设备
    6. 通过powershall下线设备:
    	Dismount-VMHostAssignableDevice -LocationPath "设备路径" -force
    
  7. 将显卡挂载到虚拟机:
    	Add-VMAssignableDevice -LocationPath "设备路径" -VMName 虚拟机名称
    	Get-VMAssignableDevice -VMName TEST #检查
    
  8. 开启虚拟机,安装驱动
    1. 关闭 安全启动 (否则进不了testsign 模式)
    	bcdedit -set testsigning on
    
    1. 安装破解版nvidia驱动
    2. 使用gpedit.msc 禁止安装驱动更新:依次选择计算机配置—管理模板—系统—设备安装—设备安装限制,选定禁止安装未由其他策略设置描述的设备,启用
  9. 配置显示器和串流(请务必使用TeamViewer连接虚拟机,并关闭其他方式的连接
    1. 进入显示设置,将画面改为仅输出到连接显卡的显示器上(此时你需要一台显示器帮助进行配置,或者一个HDMI欺骗器)
    2. 打开GeForce Experience中的设置,开启SHIELD,添加一个游戏(随便一个exe也行)
    3. 使用moonlight设备进行连接

最后

其实折腾虚拟化也没什么难度了...以前用过ESXi,PVE,UNRaid,这次尝试的是Windows下的Hyper-V。总的来说体验还是可以的,但是Hyper不支持直通USB,网卡等设备,因为微软认为这样会降低虚拟机的便携性(无语)。总结了一下这几大虚拟机的优缺点如下:、

Hyper-VESXiPVEUNRaid
类型Hyper-Vkvmkvmkvm
兼容性Linux性能损耗大,Windows表现很好内核虚拟化,性能很好内核虚拟化,性能很好磁盘管理兼容性好,NAS系统
虚拟化特性iommuvirtiovirtiovirtio(应该)
缺点虚拟UEFI,无其他硬件直通对宿主机网卡有型号有奇怪的要求命令行太多,记不住不支持Raid直通,有万兆瓶颈

What is broken can be reforged.