Pianificare la distribuzione dei dispositivi utilizzando l'assegnazione di dispositivi discreti
L'assegnazione di dispositivi discreti consente all'hardware fisico PCIe (Peripheral Component Interconnect Express) di essere direttamente accessibile da una macchina virtuale (VM). In questo articolo vengono descritti i tipi di dispositivi che possono essere utilizzati, i requisiti del sistema host, le limitazioni imposte alle macchine virtuali e le implicazioni sulla sicurezza.
Per l'assegnazione di dispositivi discreti, Microsoft supporta due classi di dispositivi: schede grafiche e dispositivi di archiviazione NVMe. È probabile che altri dispositivi funzionino e che i fornitori di hardware possano offrire dichiarazioni di supporto per tali dispositivi. Per altri dispositivi, contattare i fornitori di hardware specifici per ottenere assistenza.
Per informazioni su altri metodi di virtualizzazione della GPU, vedere Pianificare l'accelerazione della GPU in Windows Server. Per provare l'assegnazione di dispositivi discreti, vedere Distribuire dispositivi grafici utilizzando l'assegnazione di dispositivi discreti o Distribuire dispositivi di archiviazione NVMe utilizzando l'assegnazione di dispositivi discreti.
Macchine virtuali supportate e sistemi operativi guest
L'assegnazione di dispositivi discreti è supportata per le macchine virtuali di prima o seconda 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 i requisiti di sistema per Hyper-V in Windows Server. L'assegnazione di dispositivi discreti richiede anche un hardware di classe server in grado di garantire al sistema operativo il controllo della configurazione dell’infrastruttura PCIe (Native PCI Express Control). Inoltre, il complesso radice PCIe deve supportare i servizi di controllo degli accessi (ACS), che consentono a Hyper-V di forzare tutto il traffico PCIe attraverso l'unità di gestione della memoria di input-output.
Queste funzionalità di solito non sono esposte direttamente nel BIOS del server e sono spesso nascoste dietro altre impostazioni. Se le stesse funzionalità sono richieste per il supporto SR-IOV e nel BIOS, potrebbe essere necessario impostare "Abilita SR-IOV". Contattare il fornitore del sistema se non è possibile identificare l'impostazione corretta nel BIOS.
Per garantire che l'hardware possa eseguire l'assegnazione di dispositivi discreti, è possibile eseguire lo script del profilo del computer in un host abilitato per Hyper-V. Lo script verifica se il server è configurato correttamente e quali dispositivi possono eseguire l'assegnazione di dispositivi discreti.
Requisiti dei dispositivi
Non tutti i dispositivi PCIe possono essere utilizzati con l'assegnazione di dispositivi discreti. I dispositivi meno recenti che utilizzano PCI Interrupts legacy (INTx) non sono supportati. Per altre informazioni, vedere Assegnazione di dispositivi discreti - Macchine e dispositivi. Inoltre, è possibile eseguire lo script del profilo del computer per visualizzare quali dispositivi possono essere utilizzati per l'assegnazione di dispositivi discreti.
I produttori di dispositivi possono contattare il proprio rappresentante Microsoft per ulteriori dettagli.
Driver di dispositivo
L'assegnazione di dispositivi discreti passa l'intero dispositivo PCIe nella macchia virtuale guest. Non è necessario installare un driver host prima di montare il dispositivo all'interno della macchia virtuale. L'unico requisito per l'host è la possibilità di determinare il percorso di posizione PCIe del dispositivo. Il driver del dispositivo può essere installato per facilitare l'identificazione. Una GPU senza il driver di periferica installato nell'host potrebbe essere visualizzata come una periferica di rendering di base di Microsoft. Se il driver del dispositivo è installato, è probabile che vengano visualizzati il produttore e il modello.
Quando il dispositivo è montato all'interno del guest, il driver del dispositivo del produttore può essere installato normalmente all'interno della macchina virtuale ospite.
Limitazioni macchina virtuale
A causa della natura dell'implementazione dell'assegnazione di dispositivi discreti, alcune funzionalità di una macchina virtuale sono limitate quando è collegato un dispositivo. Le seguenti funzionalità non sono disponibili:
- Salvataggio/ripristino macchina virtuale
- Migrazione in tempo reale di una macchina virtuale
- L'uso della memoria dinamica
- Aggiunta della macchina virtuale a un cluster a disponibilità elevata
Sicurezza
L'assegnazione di dispositivi discreti passa l'intero dispositivo nella macchia virtuale. Questo passaggio indica che tutte le funzionalità di quel dispositivo sono accessibili dal sistema operativo guest. Alcune funzionalità, come l'aggiornamento del firmware, potrebbero influire negativamente sulla stabilità del sistema. Quando si smonta il dispositivo dall'host, l'amministratore riceve numerosi avvisi. È consigliabile utilizzare l'assegnazione di dispositivi discreti solo se i tenant delle macchine virtuali sono attendibili.
Se l'amministratore vuole utilizzare un dispositivo con un tenant non attendibile, i produttori di dispositivi possono creare un driver di mitigazione del dispositivo che può essere installato nell'host. Contattare il produttore del dispositivo per i dettagli sulla fornitura di un driver di mitigazione del dispositivo.
Per ignorare i controlli di sicurezza per un dispositivo che non dispone di un driver di mitigazione, è necessario passare il parametro -Force
al cmdlet Dismount-VMHostAssignableDevice
. Quando si effettua questo passaggio, viene modificato il profilo di sicurezza del sistema. È consigliabile apportare questa modifica solo durante la creazione di prototipi o in ambienti attendibili.
Percorso posizione PCIe
Il percorso di posizione PCIe è necessario per smontare e montare il dispositivo dall'host. Un percorso di posizione di esempio è PCIROOT(20)#PCI(0300)#PCI(0000)#PCI(0800)#PCI(0000)
. Lo script del profilo del computer restituisce anche il percorso di posizione del dispositivo PCIe.
Ottenere il percorso della posizione utilizzando Gestione dispositivi
- Aprire Gestione dispositivi e individuare il dispositivo.
- Fare clic con il pulsante destro del mouse sul dispositivo e scegliere Proprietà.
- Nella scheda Dettagli, espandere il menu a discesa Proprietà e selezionare Percorsi posizione.
- Fare clic con il pulsante destro del mouse sulla voce che inizia conPCIROOT e selezionare Copia per ottenere il percorso della posizione per il dispositivo.
Spazio MMIO
Alcuni dispositivi, in particolare le GPU, richiedono più spazio MMIO da allocare alla macchina virtuale affinché la memoria di quel dispositivo sia accessibile. Per impostazione predefinita, ogni macchina virtuale inizia con 128 MB di spazio MMIO basso e 512 MB di spazio MMIO alto allocato. Tuttavia, un dispositivo potrebbe richiedere più spazio MMIO o più dispositivi potrebbero assegnati in modo tale che i requisiti combinati superino questi valori. La modifica dello spazio MMIO è semplice e può essere eseguita in PowerShell utilizzando i seguenti comandi:
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 è utilizzare lo script del profilo del compute. Per scaricare ed eseguire lo script del profilo del computer, eseguire i seguenti comandi in una console 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 mostra i requisiti MMIO di un determinato dispositivo. Il seguente script di output è 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 utilizzato solo da sistemi operativi e dispositivi a 32 bit che utilizzano indirizzi a 32 bit. Nella maggior parte delle circostanze, è sufficiente impostare lo spazio MMIO alto di una VM poiché le configurazioni a 32 bit non sono comuni.
Importante
Quando si assegna spazio MMIO a una macchina virtuale, è necessario specificare uno spazio MMIO sufficiente. Lo spazio MMIO deve essere la somma dello spazio MMIO richiesto per tutti i dispositivi assegnati, più un buffer per altri dispositivi virtuali che richiedono alcuni MB di spazio MMIO. Utilizzare i valori MMIO predefiniti precedentemente descritti come buffer per MMIO basso e alto (rispettivamente 128 MB e 512 MB).
Consideriamo l'esempio precedente. Se si assegna una singola GPU K520, impostare lo spazio MMIO della macchina virtuale sul valore emesso dallo script del profilo del computer più un buffer: 176 MB + 512 MB. Se si assegnano tre GPU K520, impostare lo spazio MMIO a tre volte la quantità di base di 176 MB più un buffer, o 528 MB + 512 MB.
Per dettagli sullo spazio MMIO, vedere Assegnazione di dispositivi discreti - GPU sul blog della Tech Community.
Script del profilo del computer
Per identificare se il server è configurato correttamente e quali dispositivi possono essere assegnati utilizzando l'assegnazione di dispositivi discreti, eseguire SurveyDDA.ps1. Script PowerShell.
Prima di utilizzare lo script, assicurarsi di avere installato il ruolo Hyper-V e di eseguire lo script da una finestra di comando di PowerShell con privilegi di amministratore.
Se il sistema non è configurato correttamente per supportare l'assegnazione di dispositivi discreti, lo strumento mostra un messaggio di errore con i dettagli sul problema. Se il sistema è configurato correttamente, lo strumento elenca tutti i dispositivi nel bus PCIe.
Per ogni dispositivo trovato, lo strumento mostra se è possibile utilizzarlo con l'assegnazione di dispositivi discreti. Se un dispositivo viene identificato come incompatibile con l'assegnazione di dispositivi discreti, lo script fornisce un motivo. Quando un dispositivo viene identificato come compatibile, viene visualizzato il percorso di posizione del dispositivo. Inoltre, se quel dispositivo richiede spazio MMIO, viene visualizzato anche questo.