Pianificare la distribuzione dei dispositivi usando l'assegnazione di dispositivi discreti

Si applica a: Windows Server 2022, Microsoft Hyper-V Server 2019, Windows Server 2019, Microsoft Hyper-V Server 2016, Windows Server 2016

L'assegnazione di dispositivi discreti consente l'accesso diretto dell'hardware PCIe (Peripheral Component Interconnect Express) fisico all'interno di una macchina virtuale. Questo articolo illustra il tipo di dispositivi che possono essere usati, i requisiti di sistema host, le limitazioni imposte alle macchine virtuali e le implicazioni per la sicurezza.

Per l'assegnazione di dispositivi discreti, Microsoft supporta due classi di dispositivi: schede grafiche e dispositivi NVMe Archiviazione. È probabile che altri dispositivi funzionino e i fornitori di hardware siano in grado di offrire istruzioni di supporto per tali dispositivi. Per altri dispositivi, contattare specifici fornitori di hardware per il supporto.

Per informazioni su altri metodi di virtualizzazione GPU, vedere Pianificare l'accelerazione GPU in Windows Server. Se si è pronti per provare l'assegnazione di dispositivi discreti, è possibile passare a Distribuire dispositivi grafici usando l'assegnazione di dispositivi discreti o Distribuire dispositivi NVMe Archiviazione usando l'assegnazione di dispositivi discreti.

Macchine virtuali e sistemi operativi guest supportati

L'assegnazione di dispositivi discreti è supportata per le macchine virtuali di prima o 2 generazione. I guest supportati includono:

  • Windows 10 o versione successiva
  • Windows Server 2016 o versione successiva
  • Windows Server 2012 R2 con l'aggiornamento per aggiungere il supporto per l'assegnazione di dispositivi discreti per Azure.

Per altre informazioni, vedere Macchine virtuali Linux e FreeBSD supportate per Hyper-V in Windows Server e Windows.

Requisiti di sistema

Il sistema deve soddisfare i requisiti hardware per Windows Server e Requisiti di sistema per Hyper-V in Windows Server. L'assegnazione di dispositivi discreti richiede anche hardware di classe server in grado di concedere il controllo del sistema operativo sulla configurazione dell'infrastruttura PCIe (Pci Express Control nativo). Inoltre, il PCIe Root Complex deve supportare Controllo di accesso Services (ACS), che consente a Hyper-V di forzare tutto il traffico PCIe attraverso l'unità di gestione della memoria di input-output.

Queste funzionalità in genere non vengono esposte direttamente nel BIOS del server e sono spesso nascoste dietro altre impostazioni. Se sono necessarie le stesse funzionalità per il supporto SR-IOV e nel BIOS, potrebbe essere necessario impostare "Enable SR-IOV". Contattare il fornitore del sistema se non è possibile identificare l'impostazione corretta nel BIOS.

Per garantire che l'hardware sia in grado di eseguire l'assegnazione di dispositivi discreti, è possibile eseguire lo script del profilo computer in un host abilitato per Hyper-V. Lo script verifica se il server è configurato correttamente e quali dispositivi sono in grado di assegnare dispositivi discreti.

Requisiti dei dispositivi

Non tutti i dispositivi PCIe possono essere usati con l'assegnazione di dispositivi discreti. I dispositivi meno recenti che usano interrupt PCI legacy (INTx) non sono supportati. Per altre informazioni, vedere Assegnazione di dispositivi discreti - Computer e dispositivi. È anche possibile eseguire lo script del profilo computer per visualizzare i dispositivi che possono essere usati per l'assegnazione di dispositivi discreti.

I produttori di dispositivi possono contattare il rappresentante Microsoft per altri dettagli.

Driver di dispositivo

L'assegnazione di dispositivi discreti passa l'intero dispositivo PCIe nella macchina virtuale guest. Non è necessario installare un driver host prima che il dispositivo venga montato all'interno della macchina virtuale. L'unico requisito per l'host è che è possibile determinare il percorso PCIe del dispositivo. Il driver del dispositivo può essere installato per facilitare l'identificazione del dispositivo. Una GPU senza il driver di dispositivo installato nell'host potrebbe apparire come un dispositivo di rendering Microsoft Basic. Se il driver di dispositivo è installato, è probabile che venga visualizzato il produttore e il modello.

Quando il dispositivo viene montato all'interno del guest, il driver di dispositivo del produttore può essere installato come normale all'interno della macchina virtuale guest.

Limitazioni delle macchine virtuali

A causa della natura dell'implementazione dell'assegnazione di dispositivi discreti, alcune funzionalità di una macchina virtuale sono limitate mentre un dispositivo è collegato. Le funzionalità seguenti non sono disponibili:

  • Salvataggio/ripristino della macchina virtuale
  • Migrazione in tempo reale di una macchina virtuale
  • Uso della memoria dinamica
  • Aggiunta della macchina virtuale a un cluster a disponibilità elevata

Sicurezza

L'assegnazione di dispositivi discreti passa l'intero dispositivo alla macchina virtuale. Questo passaggio indica che tutte le funzionalità del dispositivo sono accessibili dal sistema operativo guest. Alcune funzionalità, ad esempio l'aggiornamento del firmware, potrebbero influire negativamente sulla stabilità del sistema. Numerosi avvisi vengono visualizzati all'amministratore quando si smonta il dispositivo dall'host. È consigliabile usare l'assegnazione di dispositivi discreti solo in cui i tenant delle macchine virtuali sono attendibili.

Se l'amministratore desidera usare un dispositivo con un tenant non attendibile, il dispositivo produce un driver di mitigazione dei dispositivi che può essere installato nell'host. Contattare il produttore del dispositivo per informazioni dettagliate sul fatto che forniscano un driver di mitigazione dei dispositivi.

Se si vuole ignorare i controlli di sicurezza per un dispositivo che non dispone di un driver di mitigazione dei dispositivi, è necessario passare il -Force parametro al Dismount-VMHostAssignableDevice cmdlet. Quando si effettua questo passaggio, il profilo di sicurezza del sistema è stato modificato. È consigliabile apportare questa modifica solo durante la creazione di prototipi o ambienti attendibili.

Percorso percorso PCIe

Il percorso PCIe è necessario per smontare e montare il dispositivo dall'host. Un percorso di esempio è PCIROOT(20)#PCI(0300)#PCI(0000)#PCI(0800)#PCI(0000). Lo script del profilo computer restituisce anche il percorso del dispositivo PCIe.

Ottenere il percorso usando Gestione dispositivi

Screenshot of the device manager, showing the selections for finding a device path.

  1. Aprire Gestione dispositivi e individuare il dispositivo.
  2. Fare clic con il pulsante destro del mouse sul dispositivo e scegliere Proprietà.
  3. Nella scheda Dettagli espandere il menu a discesa Proprietà e selezionare Percorsi percorso.
  4. Fare clic con il pulsante destro del mouse sulla voce che inizia con PCIROOT e selezionare Copia per ottenere il percorso del dispositivo.

Spazio MMIO

Alcuni dispositivi, in particolare le GPU, richiedono più spazio MMIO da allocare alla macchina virtuale per rendere accessibile la memoria del dispositivo. Per impostazione predefinita, ogni macchina virtuale inizia con 128 MB di spazio MMIO basso e 512 MB di spazio MMIO elevato allocato. Tuttavia, un dispositivo potrebbe richiedere più spazio MMIO o più dispositivi possono essere passati in modo che i requisiti combinati superino questi valori. La modifica dello spazio MMIO è semplice e può essere eseguita in PowerShell usando i comandi seguenti:

Set-VM -LowMemoryMappedIoSpace 3Gb -VMName $vm
Set-VM -HighMemoryMappedIoSpace 33280Mb -VMName $vm

Il modo più semplice per determinare la quantità di spazio MMIO da allocare consiste nell'usare lo script del profilo computer. Per scaricare ed eseguire lo script del profilo computer, eseguire i comandi seguenti in una console di PowerShell:

curl -o SurveyDDA.ps1 https://raw.githubusercontent.com/MicrosoftDocs/Virtualization-Documentation/live/hyperv-tools/DiscreteDeviceAssignment/SurveyDDA.ps1
.\SurveyDDA.ps1

Per i dispositivi che possono essere assegnati, lo script visualizza i requisiti MMIO di un determinato dispositivo. L'output dello script seguente è un esempio:

NVIDIA GRID K520
Express Endpoint -- more secure.
    ...
    And it requires at least: 176 MB of MMIO gap space
...

Lo spazio MMIO basso viene usato solo dai sistemi operativi a 32 bit e dai dispositivi che usano indirizzi a 32 bit. Nella maggior parte dei casi, l'impostazione dello spazio MMIO elevato di una macchina virtuale è sufficiente perché le configurazioni a 32 bit non sono comuni.

Importante

Quando si assegna spazio MMIO a una macchina virtuale, assicurarsi di specificare spazio MMIO sufficiente. Lo spazio MMIO deve essere la somma dello spazio MMIO richiesto per tutti i dispositivi assegnati desiderati e un buffer per altri dispositivi virtuali che richiedono alcuni MB di spazio MMIO. Usare i valori MMIO predefiniti descritti in precedenza come buffer per MMIO basso e alto (rispettivamente 128 MB e 512 MB).

Si consideri l'esempio precedente. Se si assegna una SINGOLA GPU K520, impostare lo spazio MMIO della macchina virtuale sul valore restituito dallo script del profilo computer più un buffer: 176 MB + 512 MB. Se si assegnano tre GPU K520, impostare lo spazio MMIO su tre volte la quantità di base di 176 MB più un buffer o 528 MB + 512 MB.

Per un'analisi più approfondita dello spazio MMIO, vedere Assegnazione di dispositivi discreti - GPU nel blog tech community.

Script del profilo computer

Per identificare se il server è configurato correttamente e quali dispositivi possono essere passati tramite l'assegnazione di dispositivi discreti, eseguire SurveyDDA.ps1. Script di PowerShell.

Prima di usare lo script, assicurarsi di avere installato il ruolo Hyper-V ed eseguire lo script da una finestra di comando di PowerShell con privilegi Amministrazione istrator.

Se il sistema non è configurato correttamente per supportare l'assegnazione di dispositivi discreti, lo strumento visualizza un messaggio di errore con informazioni dettagliate sul problema. Se il sistema è configurato correttamente, lo strumento enumera tutti i dispositivi che si trovano nel bus PCIe.

Per ogni dispositivo trovato, lo strumento visualizza se è in grado di essere usato con l'assegnazione di dispositivi discreti. Se un dispositivo viene identificato come compatibile con l'assegnazione di dispositivi discreti, lo script fornisce un motivo. Quando un dispositivo viene identificato correttamente come compatibile, viene visualizzato il percorso del dispositivo. Inoltre, se tale dispositivo richiede spazio MMIO, viene visualizzato anche.

Screenshot of the requirements displayed in SurveyDDA.ps1.