「IT数码小君」实战DDA硬件直通:Hyper


虚拟机可以把一台电脑模拟成许多台完整的系统 , 并在他们当中安装运行各自的操作系统和软件应用 。 在使用虚拟机的时候我们既可以利用NVMe固态硬盘的性能 , 同时承载多个虚拟机的读写请求 , 也可以让其中某个需要重负载读写的虚拟机独享它的性能 , 这时就需要用到DDA硬件直通 。
「IT数码小君」实战DDA硬件直通:Hyper
本文插图
【「IT数码小君」实战DDA硬件直通:Hyper】
DDA离散设备分配通常被玩家称“硬件直通” , 它是Windows Server 2016之后版本中Hyper-V所具备的特性 , 微软为它赋予了直通独立显卡和NVMe固态硬盘的能力 。 还有一些玩家利用该功能成功直通了第三方SATA控制器等硬件 。
「IT数码小君」实战DDA硬件直通:Hyper
本文插图
笔者使用了东芝RD500 1TB NVMe固态硬盘作为试验对象 。 RD500是铠侠(原东芝存储)在2019年末发布的新一代旗舰级NVMe固态硬盘 , 使用PCIe 3.0 x4接口、NVMe 1.3协议 , 由8通道东芝主控搭配96层堆叠的BiCS4闪存 。
「IT数码小君」实战DDA硬件直通:Hyper
本文插图
Hyper-V虚拟机中硬盘有三种使用方式:虚拟硬盘、直接使用物理硬盘、DDA硬件直通 。
虚拟硬盘方式:默认的选项 , 可以自由指定容量大小 , 可以在多个虚拟机之间共享硬盘 。 虚拟机设备管理器中磁盘驱动器名称为“Microsoft虚拟磁盘” 。
「IT数码小君」实战DDA硬件直通:Hyper
本文插图
使用物理硬盘:在磁盘管理中让东芝RD500处于“脱机”状态后 , 可以将其整体用于单个虚拟机独享 , 虚拟机设备管理器中直接显示RD500的名称 , 但存储控制器中没有NVMe控制器 。 但这种模式下虚拟机并不是直接访问硬件设备 , 效率没有下面要说的DDA硬件直通高 。
「IT数码小君」实战DDA硬件直通:Hyper
本文插图
DDA硬件直通:由单个虚拟机直接访问并控制硬件 。 硬件直通常见于直通显卡 , 可在虚拟机内高效玩游戏 。 这里笔者将东芝RD500 1TB固态硬盘直通给指定的虚拟机 , 使其获得强悍的硬盘性能 , 可用于数据库等重负载读写硬盘的应用 。
「IT数码小君」实战DDA硬件直通:Hyper
本文插图
三种模式下CrystalDiskMark测速对照:DDA硬件直通模式在随机读写性能上更强 。
「IT数码小君」实战DDA硬件直通:Hyper
本文插图
DDA硬件直通模式下 , 在虚拟机内可以直接使用CrystalDiskInfo或SSD Utility工具箱软件识别和管理东芝RD500 , 而在其他两种模式下无法识别到NVMe固态硬盘 。
「IT数码小君」实战DDA硬件直通:Hyper
本文插图
DDA硬件直通实现步骤:
DDA硬件直通需要CPU支持并开启虚拟化功能 , 在英特尔平台上需开启VT-d , AMD平台需开启SVM Mode 。 除此之外 , 为了满足SR-IOV的要求 , 主板还需要开启IOMMU特性(并非所有主板都具备该功能) 。
「IT数码小君」实战DDA硬件直通:Hyper
本文插图
在将东芝RD500直通给虚拟机之前 , 首先需要在宿主机设备管理器中禁用RD500对应的“标准NVM Express控制器” , 并在属性中找到“位置路径” , 记录下它的值 。 然后以管理员身份打开Windows Powershell , 执行Dismount-VMHostAssignableDevice –Force –LocationPath 位置路径 , 将RD500从宿主机中脱离 。 然后再执行Add-VMAssignableDevice –VMName 虚拟机名称 –LocationPath 位置路径 , 将RD500挂载至指定的虚拟机上 。


推荐阅读