Bereitstellen von Grafikgeräten mit Discrete Device AssignmentDeploy graphics devices using Discrete Device Assignment

Gilt für: Microsoft Hyper-V Server 2016, Windows Server 2016, Windows Server 2019 Microsoft Hyper-V Server 2019Applies to: Microsoft Hyper-V Server 2016, Windows Server 2016, Windows Server 2019, Microsoft Hyper-V Server 2019

Ab Windows Server 2016 können Sie eine diskrete Geräte Zuweisung oder DDA verwenden, um ein gesamtes PCIe-Gerät an eine VM zu übergeben.Starting with Windows Server 2016, you can use Discrete Device Assignment, or DDA, to pass an entire PCIe Device into a VM. Dadurch wird ein hoher Leistungs Zugriff auf Geräte wie nvme-Speicher oder Grafikkarten innerhalb eines virtuellen Computers ermöglicht, während die Gerätesystem eigene Treiber genutzt werden können.This will allow high performance access to devices like NVMe storage or Graphics Cards from within a VM while being able to leverage the devices native drivers. Weitere Informationen zu den einzelnen Geräten, zu den möglichen Auswirkungen auf die Sicherheit usw. finden Sie unter Planen der Bereitstellung von Geräten mit diskreter Geräte Zuweisung .Please visit the Plan for Deploying Devices using Discrete Device Assignment for more details on which devices work, what are the possible security implications, etc.

Die Verwendung eines Geräts mit diskreter Geräte Zuweisung umfasst drei Schritte:There are three steps to using a device with Discrete Device Assignment:

  • Konfigurieren der VM für die diskrete Geräte ZuweisungConfigure the VM for Discrete Device Assignment
  • Aufheben der Einbindung des Geräts von der Host PartitionDismount the Device from the Host Partition
  • Zuweisen des Geräts zum virtuellen GastcomputerAssigning the Device to the Guest VM

Der Befehl "alle" kann auf dem Host in einer Windows PowerShell-Konsole als Administrator ausgeführt werden.All command can be executed on the Host on a Windows PowerShell console as an Administrator.

Konfigurieren des virtuellen Computers für DDAConfigure the VM for DDA

Bei der diskreten Geräte Zuweisung gelten einige Einschränkungen für die VMs, und der folgende Schritt muss ausgeführt werden.Discrete Device Assignment imposes some restrictions to the VMs and the following step needs to be taken.

  1. Konfigurieren Sie die Aktion "automatisches Abbrechen" eines virtuellen Computers, um durch Ausführen vonConfigure the “Automatic Stop Action” of a VM to TurnOff by executing
Set-VM -Name VMName -AutomaticStopAction TurnOff

Für Grafikgeräte sind einige zusätzliche VM-Vorbereitung erforderlich.Some Additional VM preparation is required for Graphics Devices

Einige Hardware Leistung ist besser, wenn der virtuelle Computer auf eine bestimmte Art und Weise konfiguriert ist.Some hardware performs better if the VM in configured in a certain way. Weitere Informationen dazu, ob Sie die folgenden Konfigurationen für Ihre Hardware benötigen, wenden Sie sich an den Hardwarehersteller.For details on whether or not you need the following configurations for your hardware, please reach out to the hardware vendor. Weitere Informationen finden Sie unter Planen der Bereitstellung von Geräten mithilfe der diskreten Geräte Zuweisung und in diesem Blogbeitrag.Additional details can be found on Plan for Deploying Devices using Discrete Device Assignment and on this blog post.

  1. Aktivieren der Schreibweise auf der CPUEnable Write-Combining on the CPU
    Set-VM -GuestControlledCacheTypes $true -VMName VMName
    
  2. Konfigurieren des 32-Bit-MMIO-SpeicherplatzesConfigure the 32 bit MMIO space
    Set-VM -LowMemoryMappedIoSpace 3Gb -VMName VMName
    
  3. Mehr als 32-Bit-MMIO-Speicherplatz konfigurierenConfigure greater than 32 bit MMIO space
    Set-VM -HighMemoryMappedIoSpace 33280Mb -VMName VMName
    

    Tipp

    Die obigen MMIO-Speicherplatz Werte sind sinnvolle Werte, die für das Experimentieren mit einem einzelnen GPU festgelegt werden.The MMIO space values above are reasonable values to set for experimenting with a single GPU. Wenn nach dem Starten des virtuellen Computers ein Fehler im Zusammenhang mit nicht ausreichenden Ressourcen gemeldet wird, müssen Sie diese Werte wahrscheinlich ändern.If after starting the VM, the device is reporting an error relating to not enough resources, you'll likely need to modify these values. Weitere Informationen zur genauen Berechnung von MMIO-Anforderungen finden Sie unter Planen der Bereitstellung von Geräten mit diskreter Geräte Zuweisung .Consult Plan for Deploying Devices using Discrete Device Assignment to learn how to precisely calculate MMIO requirements.

Aufheben der Einbindung des Geräts von der Host PartitionDismount the Device from the Host Partition

Optional: Installieren des Partitionierungs TreibersOptional - Install the Partitioning Driver

Die diskrete Geräte Zuweisung bietet Hardware-Hersteller die Möglichkeit, einen Sicherheits Entschärfungs Treiber für Ihre Geräte bereitzustellen.Discrete Device Assignment provide hardware venders the ability to provide a security mitigation driver with their devices. Beachten Sie, dass dieser Treiber nicht mit dem Gerätetreiber identisch ist, der auf der Gast-VM installiert wird.Note that this driver is not the same as the device driver that will be installed in the guest VM. Es liegt an dem Ermessen des Hardware Anbieters, diesen Treiber bereitzustellen. Wenn Sie ihn jedoch bereitstellen, installieren Sie ihn, bevor Sie das Gerät von der Host Partition trennen.It's up to the hardware vendor's discretion to provide this driver, however, if they do provide it, please install it prior to dismounting the device from the host partition. Wenden Sie sich an den Hardwarehersteller, um weitere Informationen darüber zu erhalten, ob ein Entschärfungs Treiber vorhanden ist.Please reach out to the hardware vendor for more information on if they have a mitigation driver

Wenn kein Partitionierungs Treiber bereitgestellt wird, müssen Sie während der Aufhebung der Bereitstellung die- -force Option verwenden, um die Sicherheitswarnung zu umgehen.If no Partitioning driver is provided, during dismount you must use the -force option to bypass the security warning. Weitere Informationen zu den Sicherheits Implikationen finden Sie unter Planen der Bereitstellung von Geräten mit diskreter Geräte Zuweisung.Please read more about the security implications of doing this on Plan for Deploying Devices using Discrete Device Assignment.

Suchen des Speicher Orts des GerätsLocating the Device's Location Path

Der PCI-Speicherort Pfad ist erforderlich, um das Gerät vom Host zu entfernen und zu binden.The PCI Location path is required to dismount and mount the device from the Host. Ein Beispiel für einen Speicherort Pfad sieht wie folgt aus: "PCIROOT(20)#PCI(0300)#PCI(0000)#PCI(0800)#PCI(0000)" .An example location path looks like the following: "PCIROOT(20)#PCI(0300)#PCI(0000)#PCI(0800)#PCI(0000)". Weitere Informationen zum Speicherort Pfad finden Sie hier: Planen der Bereitstellung von Geräten mit diskreter Geräte Zuweisung.More details on located the Location Path can be found here: Plan for Deploying Devices using Discrete Device Assignment.

Deaktivieren des GerätsDisable the Device

Stellen Sie mithilfe von Geräte-Manager oder PowerShell sicher, dass das Gerät "deaktiviert" ist.Using Device Manager or PowerShell, ensure the device is “disabled.”

Aufheben der Einbindung des GerätsDismount the Device

Abhängig davon, ob der Anbieter einen Entschärfungs Treiber bereitgestellt hat, müssen Sie entweder die Option "-Force" verwenden oder nicht.Depending on if the vendor provided a mitigation driver, you'll either need to use the “-force” option or not.

  • Bei Installation eines Entschärfungs TreibersIf a Mitigation Driver was installed
    Dismount-VMHostAssignableDevice -LocationPath $locationPath
    
  • Wenn ein Entschärfungs Treiber nicht installiert wurdeIf a Mitigation Driver was not installed
    Dismount-VMHostAssignableDevice -force -LocationPath $locationPath
    

Zuweisen des Geräts zum virtuellen GastcomputerAssigning the Device to the Guest VM

Der letzte Schritt besteht darin, Hyper-V mitzuteilen, dass ein virtueller Computer Zugriff auf das Gerät haben soll.The final step is to tell Hyper-V that a VM should have access to the device. Zusätzlich zu dem oben gefundenen Speicherort Pfad müssen Sie den Namen des virtuellen Computers kennen.In addition to the location path found above, you'll need to know the name of the vm.

Add-VMAssignableDevice -LocationPath $locationPath -VMName VMName

Nächste SchritteWhat's Next

Nachdem ein Gerät erfolgreich auf einem virtuellen Computer bereitgestellt wurde, können Sie diesen virtuellen Computer starten und mit dem Gerät interagieren, wie Sie es normalerweise bei einem Bare-Metal-System ausführen würden.After a device is successfully mounted in a VM, you're now able to start that VM and interact with the device as you normally would if you were running on a bare metal system. Dies bedeutet, dass Sie jetzt die Treiber des Hardware Anbieters auf dem virtuellen Computer installieren können und Anwendungen sehen können, dass die Hardware vorhanden ist.This means that you're now able to install the Hardware Vendor's drivers in the VM and applications will be able to see that hardware present. Sie können dies überprüfen, indem Sie in der Gast-VM den Geräte-Manager öffnen und sehen, dass die Hardware jetzt angezeigt wird.You can verify this by opening device manager in the Guest VM and seeing that the hardware now shows up.

Entfernen eines Geräts und Zurückgeben des Geräts an den HostRemoving a Device and Returning it to the Host

Wenn Sie das Gerät wieder in den ursprünglichen Zustand zurücksetzen möchten, müssen Sie den virtuellen Computer unterbinden und folgendes ausgeben:If you want to return he device back to its original state, you will need to stop the VM and issue the following:

#Remove the device from the VM
Remove-VMAssignableDevice -LocationPath $locationPath -VMName VMName
#Mount the device back in the host
Mount-VMHostAssignableDevice -LocationPath $locationPath

Anschließend können Sie das Gerät im Geräte-Manager erneut aktivieren, und das Host Betriebssystem kann erneut mit dem Gerät interagieren.You can then re-enable the device in device manager and the host operating system will be able to interact with the device again.

BeispielExample

Einbinden einer GPU an einen virtuellen ComputerMounting a GPU to a VM

In diesem Beispiel verwenden wir PowerShell, um einen virtuellen Computer mit dem Namen "ddatest1" zu konfigurieren, mit dem die erste von der Hersteller-NVIDIA verfügbare GPU übernommen und der VM zugewiesen wird.In this example we use PowerShell to configure a VM named “ddatest1” to take the first GPU available by the manufacturer NVIDIA and assign it into the VM.

#Configure the VM for a Discrete Device Assignment
$vm =   "ddatest1"
#Set automatic stop action to TurnOff
Set-VM -Name $vm -AutomaticStopAction TurnOff
#Enable Write-Combining on the CPU
Set-VM -GuestControlledCacheTypes $true -VMName $vm
#Configure 32 bit MMIO space
Set-VM -LowMemoryMappedIoSpace 3Gb -VMName $vm
#Configure Greater than 32 bit MMIO space
Set-VM -HighMemoryMappedIoSpace 33280Mb -VMName $vm

#Find the Location Path and disable the Device
#Enumerate all PNP Devices on the system
$pnpdevs = Get-PnpDevice -presentOnly
#Select only those devices that are Display devices manufactured by NVIDIA
$gpudevs = $pnpdevs |where-object {$_.Class -like "Display" -and $_.Manufacturer -like "NVIDIA"}
#Select the location path of the first device that's available to be dismounted by the host.
$locationPath = ($gpudevs | Get-PnpDeviceProperty DEVPKEY_Device_LocationPaths).data[0]
#Disable the PNP Device
Disable-PnpDevice  -InstanceId $gpudevs[0].InstanceId

#Dismount the Device from the Host
Dismount-VMHostAssignableDevice -force -LocationPath $locationPath

#Assign the device to the guest VM.
Add-VMAssignableDevice -LocationPath $locationPath -VMName $vm

ProblembehandlungTroubleshooting

Wenn Sie eine GPU an eine VM übermittelt haben, Remotedesktop oder eine Anwendung die GPU nicht erkennt, überprüfen Sie die folgenden häufigen Probleme:If you've passed a GPU into a VM but Remote Desktop or an application isn't recognizing the GPU, check for the following common issues:

  • Stellen Sie sicher, dass Sie die neueste Version des unterstützten Treibers des GPU-Anbieters installiert haben und dass der Treiber keine Fehler meldet, indem Sie den Gerätestatus in Geräte-Manager überprüfen.Make sure you've installed the most recent version of the GPU vendor's supported driver and that the driver isn't reporting errors by checking the device state in Device Manager.
  • Stellen Sie sicher, dass auf Ihrem Gerät ausreichend MMIO-Speicherplatz innerhalb der VM zugeordnet ist.Make sure your device has enough MMIO space allocated within the VM. Weitere Informationen finden Sie unter MMIO-Speicherplatz.To learn more, see MMIO Space.
  • Stellen Sie sicher, dass Sie eine GPU verwenden, die der Anbieter unterstützt, die in dieser Konfiguration verwendet wird.Make sure you're using a GPU that the vendor supports being used in this configuration. Beispielsweise verhindern einige Anbieter, dass Ihre verbraucherkarten funktionieren, wenn Sie an einen virtuellen Computer übermittelt werden.For example, some vendors prevent their consumer cards from working when passed through to a VM.
  • Stellen Sie sicher, dass die Anwendung, die ausgeführt wird, auf einem virtuellen Computer ausgeführt wird und dass sowohl die GPU als auch die zugehörigen Treiber von der Anwendung unterstützt werden.Make sure the application being run supports running inside a VM, and that both the GPU and its associated drivers are supported by the application. Einige Anwendungen verfügen über Zulassungs Listen mit GPUs und Umgebungen.Some applications have allow-lists of GPUs and environments.
  • Wenn Sie die Remotedesktop-Sitzungshost-Rolle oder Windows MultiPoint Services auf dem Gast verwenden, müssen Sie sicherstellen, dass ein bestimmter Gruppenrichtlinie Eintrag festgelegt ist, um die Verwendung der Standard-GPU zuzulassen.If you're using the Remote Desktop Session Host role or Windows Multipoint Services on the guest, you will need to make sure that a specific Group Policy entry is set to allow use of the default GPU. Wenn Sie ein Gruppenrichtlinie Objekt verwenden, das auf den Gast angewendet wird (oder die Editor für lokale Gruppenrichtlinien auf dem Gast), navigieren Sie zu folgendem Gruppenrichtlinie Element: Computer Konfiguration > Administrator Vorlagen > Windows-Komponenten > Remotedesktopdienste > Remotedesktop-Sitzungshost > Remote Sitzungs Umgebung > verwenden Sie den Hardware-Standard Grafikadapter für alle Remotedesktopdienste Sitzungen.Using a Group Policy Object applied to the guest (or the Local Group Policy Editor on the guest), navigate to the following Group Policy item: Computer Configuration > Administrator Templates > Windows Components > Remote Desktop Services > Remote Desktop Session Host > Remote Session Environment > Use the hardware default graphics adapter for all Remote Desktop Services sessions. Legen Sie diesen Wert auf aktiviert fest, und starten Sie den virtuellen Computer neu, sobald die Richtlinie angewendet wurde.Set this value to Enabled, then reboot the VM once the policy has been applied.