Planifier le déploiement de périphériques à l’aide de l’attribution de périphérique en mode discret

S’applique à : Windows Server 2022, Microsoft Hyper-V Server 2019, Windows Server 2019, Microsoft Hyper-V Server 2016, Windows Server 2016

L’attribution de périphérique en mode discret permet au matériel PCIe (Peripheral Component Interconnect Express) physique d’être directement accessible depuis une machine virtuelle. Cet article décrit les types de périphériques qui peuvent être utilisés, la configuration requise du système hôte, les limitations imposées aux machines virtuelles et les implications en matière de sécurité.

Pour Discrete Device Assignment, Microsoft prend en charge deux classes de périphériques : les cartes graphiques et les périphériques de stockage NVMe. D’autres périphériques sont susceptibles de fonctionner, et les fournisseurs de matériel peuvent déclarer que ces périphériques sont compatibles. Pour les autres périphériques, contactez les fournisseurs de matériel pour en savoir plus sur leur prise en charge.

Pour en savoir plus sur les autres méthodes de virtualisation GPU, consultez Planifier l’accélération GPU dans Windows Server. Si vous êtes prêt à essayer l’attribution de périphérique en mode discret, vous pouvez accéder à Déployer des périphériques graphiques à l’aide de l’attribution de périphérique en mode discret ou Déployer des périphériques de stockage NVMe à l’aide de l’attribution de périphérique en mode discret.

Machines virtuelles et systèmes d’exploitation invités pris en charge

L’affectation de périphérique discrète est prise en charge pour les machines virtuelles de génération 1 ou 2. Les invités pris en charge sont les suivants :

Pour plus d’informations, consultez Machines virtuelles Linux et FreeBSD prises en charge pour Hyper-V sur Windows Server et Windows.

Configuration requise

Votre système doit être conforme à la configuration matérielle requise pour Windows Server et à la configuration système requise pour Hyper-V sur Windows Server. L’attribution de périphérique en mode discret nécessite également du matériel de classe serveur capable d’accorder au système d’exploitation le contrôle de la configuration de l’infrastructure PCIe (Native PCI Express Control). Par ailleurs, le complexe racine PCIe doit prendre en charge les services ACS (Access Control Services), qui permettent à Hyper-V de forcer l’ensemble du trafic PCIe à transiter par l’unité de gestion de mémoire d’entrée-sortie (IOMMU).

Ces fonctionnalités ne sont généralement pas exposées directement dans le BIOS du serveur et sont souvent masquées derrière d’autres paramètres. Si les mêmes fonctionnalités sont requises pour la prise en charge de SR-IOV et dans le BIOS, vous devrez peut-être définir « Activer SR-IOV ». Contactez le fournisseur de votre système si vous ne parvenez pas à identifier le paramètre approprié dans votre BIOS.

Pour vérifier que le matériel est compatible avec l’attribution de périphérique en mode discret, vous pouvez exécuter le script de profil d’ordinateur sur un hôte avec Hyper-V. Le script teste si votre serveur est correctement configuré et identifie les périphériques prenant en charge Discrete Device Assignment.

Exigences relatives aux appareils

Tous les périphériques PCIe ne peuvent pas être utilisés avec l’affectation de périphérique discrète. Les anciens périphériques qui utilisent des interruptions PCI (INTx) héritées ne sont pas pris en charge. Pour plus d’informations, consultez Attribution de périphérique en mode discret – Machines et périphériques. Vous pouvez également exécuter le script de profil d’ordinateur pour afficher les périphériques pouvant être utilisés avec Discrete Device Assignment.

Les fabricants de périphériques peuvent contacter leur représentant Microsoft pour obtenir plus de détails.

Pilote de périphérique

L’attribution de périphérique en mode discret transmet l’intégralité du périphérique PCIe à la machine virtuelle invitée. Il n’est pas nécessaire d’installer de pilote hôte avant de monter le périphérique dans la machine virtuelle. La seule exigence sur l’hôte est que le chemin d’accès d’emplacement PCIe du périphérique puisse être déterminé. Le pilote du périphérique peut être installé pour faciliter l’identification du périphérique. Un GPU dont le pilote de périphérique n’est pas installé sur l’hôte peut apparaître en tant que périphérique Microsoft Basic Render Device. Si le pilote de périphérique est installé, son fabricant et son modèle sont probablement affichés.

Lorsque le périphérique est monté dans l’invité, le pilote de périphérique du fabricant peut être installé normalement dans la machine virtuelle invitée.

Limitations liées aux machines virtuelles

En raison de la nature de l’implémentation de l’attribution de périphérique en mode discret, certaines fonctionnalités d’une machine virtuelle sont limitées lorsqu’un périphérique y est attaché. Les fonctionnalités suivantes ne sont pas disponibles :

  • Enregistrer/restaurer des machines virtuelles
  • Migration dynamique d’une machine virtuelle
  • Utilisation de la mémoire dynamique
  • Ajout de la machine virtuelle à un cluster haute disponibilité

Sécurité

L’affectation de périphérique discrète transmet l’ensemble du périphérique à la machine virtuelle. Cela signifie que toutes les fonctionnalités de ce périphérique sont accessibles depuis le système d’exploitation invité. Certaines fonctionnalités, telles que la mise à jour du microprogramme, peuvent nuire à la stabilité du système. De nombreux avertissements sont présentés à l’administrateur lors du démontage du périphérique sur l’hôte. Vous devez uniquement utiliser l’attribution de périphérique en mode discret lorsque les locataires des machines virtuelles sont approuvés.

Si l’administrateur souhaite utiliser un périphérique avec un locataire non approuvé, le fabricant du périphérique peut créer un pilote d’atténuation des risques qui peut être installé sur l’hôte. Contactez le fabricant du périphérique pour savoir s’il propose un pilote d’atténuation de périphérique.

Si vous souhaitez contourner les vérifications de sécurité d’un périphérique qui n’a pas de pilote d’atténuation de périphérique, vous devez passer le paramètre -Force à l’applet de commande Dismount-VMHostAssignableDevice. À cette occasion, vous avez modifié le profil de sécurité de ce système. Vous ne devez apporter cette modification que pendant la phase de prototypage ou dans des environnements approuvés.

Chemin d’emplacement PCIe

Le chemin d’emplacement PCIe est nécessaire pour démonter et monter le périphérique sur l’hôte. Voici un exemple de chemin d’emplacement : PCIROOT(20)#PCI(0300)#PCI(0000)#PCI(0800)#PCI(0000). Le script de profil de machine retourne également le chemin d’emplacement du périphérique PCIe.

Obtenir le chemin d’emplacement à l’aide du Gestionnaire de périphériques

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

  1. Ouvrez Gestionnaire de périphériques et recherchez le périphérique.
  2. Cliquez avec le bouton droit sur le périphérique, puis sélectionnez Propriétés.
  3. Sous l’onglet Détails, développez le menu déroulant Propriété, puis sélectionnez Chemins d’emplacement.
  4. Cliquez avec le bouton droit sur l’entrée qui commence par PCIROOT et sélectionnez Copier pour obtenir le chemin d’emplacement du périphérique.

Espace MMIO

Certains périphériques, en particulier les GPU, nécessitent que plus d’espace MMIO soit alloué à la machine virtuelle pour que la mémoire de ce périphérique soit accessible. Par défaut, chaque machine virtuelle démarre avec une allocation de 128 Mo d’espace MMIO faible et de 512 Mo d’espace MMIO élevé. Cependant, un périphérique peut nécessiter plus d’espace MMIO, ou plusieurs périphériques peuvent être transmis à la fois, si bien que les besoins combinés dépassent ces valeurs. Il est facile de modifier l’espace MMIO. Cette opération peut être effectuée dans PowerShell à l’aide des commandes suivantes :

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

Le moyen le plus simple de déterminer la quantité d’espace MMIO à allouer consiste à utiliser le script de profil d’ordinateur. Pour télécharger et exécuter le script de profil de machine, exécutez les commandes suivantes dans une console PowerShell :

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

Pour les périphériques qui peuvent être affectés, le script affiche les besoins MMIO d’un périphérique donné. La sortie de script suivante est un exemple :

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

L’espace MMIO faible est utilisé uniquement par les systèmes d’exploitation et les périphériques 32 bits qui utilisent des adresses 32 bits. Dans la plupart des cas, la définition de l’espace MMIO élevé d’une machine virtuelle suffit, car les configurations 32 bits ne sont pas courantes.

Important

Lorsque vous affectez de l’espace MMIO à une machine virtuelle, veillez à spécifier un espace MMIO suffisant. L’espace MMIO doit être la somme de l’espace MMIO demandé pour tous les périphériques affectés en question, à laquelle s’ajoute un tampon pour les périphériques virtuels qui ont besoin de quelques Mo d’espace MMIO. Utilisez les valeurs MMIO par défaut décrites précédemment comme mémoire tampon pour l’espace MMIO faible et l’espace MMIO élevé (128 Mo et 512 Mo, respectivement).

Reprenons l’exemple précédent. Si vous affectez un seul GPU K520, attribuez à l’espace MMIO de la machine virtuelle la valeur générée par le script de profil de machine plus un tampon, soit : 176 Mo + 512 Mo. Si vous affectez trois GPU K520, attribuez un espace MMIO représentant trois fois la quantité de base de 176 Mo plus un tampon, soit : 528 Mo + 512 Mo.

Pour plus d’informations sur l’espace MMIO, consultez le billet Discrete Device Assignment - GPUs sur le blog TechCommunity.

Script de profil de machine

Pour déterminer si le serveur est correctement configuré et identifier les périphériques qui peuvent être transmis en utilisant l’attribution de périphérique en mode discret, exécutez le script PowerShell SurveyDDA.ps1.

Avant d’utiliser le script, vérifiez que le rôle Hyper-V est installé et que vous exécutez le script à partir d’une fenêtre de commande PowerShell disposant de privilèges d’administrateur.

Si la configuration du système ne permet pas une prise en charge de l’attribution de périphérique en mode discret, l’outil affiche un message d’erreur avec des détails sur le problème. Si le système est mal configuré, l’outil énumère tous les périphériques situés sur le bus PCIe.

Pour chaque périphérique trouvé, l’outil indique s’il peut être utilisé avec Discrete Device Assignment. Si un périphérique est identifié comme étant compatible avec Discrete Device Assignment, le script fournit une raison. Quand un périphérique est correctement identifié comme étant compatible, le chemin d’emplacement du périphérique est affiché. Si ce périphérique nécessite de l’espace MMIO, cela est également indiqué.

Screenshot of the requirements displayed in SurveyDDA.ps1.