Partager via


Déployer des périphériques à l’aide de l’attribution discrète de périphériques

La technologie Discrete Device Assignment permet au matériel PCIe (Peripheral Component Interconnect Express) physique d’être directement accessible depuis une machine virtuelle (VM). 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 la technologie 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 sont en mesure d’offrir des instructions de prise en charge pour ces périphériques. Pour les autres périphériques, contactez les fournisseurs de matériel spécifiques 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 la technologie Discrete Device Assignment, vous pouvez accéder à Déployer des périphériques graphiques à l’aide de la technologie Discrete Device Assignment ou Déployer des périphériques de stockage NVMe à l’aide de la technologie Discrete Device Assignment.

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 :

  • Windows 10 ou version ultérieure
  • Windows Server 2016 ou version ultérieure

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

Configuration système 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. La technologie Discrete Device Assignment nécessite également du matériel de classe serveur capable d’accorder au système d’exploitation le contrôle de la configuration de la structure 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 le BIOS.

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

Configuration requise pour l’appareil

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 en savoir plus, consultez Discrete Device Assignment : 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 en savoir plus.

Pilote de périphérique

La technologie Discrete Device Assignment 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 s’afficher 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 devraient s’afficher.

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

Limitations des machines virtuelles

En raison de la nature de l’implémentation de Discrete Device Assignment, 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 :

  • Enregistrement/restauration de machine virtuelle
  • Migration dynamique d’une machine virtuelle
  • Utilisation de la mémoire dynamique
  • Ajout de la machine virtuelle à un cluster haute disponibilité

Security

L’affectation de périphérique discrète transmet l’ensemble du périphérique à la machine virtuelle. Autrement dit, 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 Discrete Device Assignment avec les locataires approuvés des machines virtuelles.

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 appareils 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 des appareils.

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

Chemin d’accès à l’emplacement PCIe

Le chemin d’accès à l’emplacement PCIe est requis pour démonter et monter l’appareil à partir de l’hôte. Voici un exemple de chemin d’accès à l’emplacement : PCIROOT(20)#PCI(0300)#PCI(0000)#PCI(0800)#PCI(0000). Le script de profil de machine renvoie également le chemin d’accès à l’emplacement du périphérique PCIe.

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

Capture d’écran du gestionnaire de périphériques, qui illustre les sélections permettant de rechercher un chemin de périphérique.

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

Espace MMIO

Certains périphériques, en particulier les GPU, nécessitent l’allocation de plus d’espace MMIO à la machine virtuelle afin que la mémoire de ces périphériques 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 utilisés à 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 d’ordinateur, 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é. Voici un exemple de script de sortie :

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, définissez l’espace MMIO de la machine virtuelle sur la valeur générée par le script de profil d’ordinateur plus un tampon, soit : 176 Mo + 512 Mo. Si vous affectez trois GPU K520, définissez un espace MMIO sur trois fois la quantité de base de 176 Mo plus un tampon, soit : 528 Mo + 512 Mo.

Pour en savoir plus sur l’espace MMIO, consultez Discrete Device Assignment : GPU sur le blog Tech Community.

Script de profil d’ordinateur

Pour identifier si le serveur est correctement configuré et quels appareils peuvent être transmis à l’aide de l’affectation d’appareil discrète, exécutez le SurveyDDA.ps1. Script PowerShell.

Avant d’utiliser ce 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 la prise en charge de Discrete Device Assignment, l’outil affiche un message d’erreur avec des détails sur le problème. Si le système est configuré correctement, 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 incompatible avec Discrete Device Assignment, le script fournit une raison. Lorsqu’un périphérique est correctement identifié comme étant compatible, le chemin d’accès à l’emplacement du périphérique s’affiche. En outre, si cet appareil nécessite un espace MMIO, il est également affiché.

Capture d’écran de la configuration requise s’affichant dans SurveyDDA.ps1.