Citrix XenServer - VGA passthrough

Page 1 / 5
  • Publié le : 21 mai 2016 à 11:19
  • Par Lionel Eppe

Grâce au serveur de virtualisation XenServer de Citrix, il est possible de dédier une vraie carte graphique à une machine virtuelle de son choix via la technologie nommée "VGA passthrough".

Cette technologie est présente dans le projet Xen dont le site officiel est "xenproject.org" et dont le wiki (la documentation) se trouve sur "wiki.xenproject.org" et "wiki.xen.org".
Vous trouverez notamment des informations intéressantes sur la page "Xen VGA Passthrough" du wiki de Xen.

Cependant, même si cette technologie à l'air intéressante (notamment pour faire fonctionner AutoCAD ou d'autres programmes gourmands en ressources graphiques), il faut savoir que sa mise en place n'est pas si facile.
En effet, le VGA passthrough ne fonctionne pas avec n'importe quel matériel (processeur, carte mère et carte graphique).

  1. Présentation
  2. Configuration requise
  3. Configuration utilisée
  4. Configuration du BIOS du serveur
  5. Vérification de l'activation de l'IOMMU ou Intel VT-d
  6. Vérification de la disponibilité des cartes graphiques sur le serveur
  7. Création d'une machine virtuelle Windows 7 x64
  8. Installation de Windows 7
  9. Activer la connexion distante via le bureau à distance (Remote Desktop)
  10. Assigner une carte graphique à votre machine virtuelle
  11. Installation du pilote graphique NVIDIA
  12. Bonus : NVIDIA GRID

1. Présentation

Pourquoi utiliser cette fonctionnalité ?

Si vous voulez utiliser des applications gourmandes en ressources graphiques, il est intéressant de pouvoir lier une carte graphique du serveur à une machine virtuelle spécifique. Ainsi, la machine reste isolée du système (grâce à la virtualisation de la machine), mais elle aura directement accès à la carte graphique que l'on aura associée à cette machine virtuelle.

Le VGA passthrough vous permettra aussi d'utiliser la fonction "HDX 3D Pro Graphics" de Citrix XenDesktop.

Notez que la carte graphique principale du serveur ne peut pas être passée à une machine virtuelle via VGA passthrough.
Pour pallier à ce problème, il suffit de forcer l'utilisation de la carte graphique interne à la carte mère et de brancher une carte graphique dans le serveur.
Pour cela, consultez notre tutoriel : Forcer l'utilisation de la carte graphique interne (Onboard VGA)

Comment empêcher les attaques par DMA (accès direct à la mémoire) via la carte graphique passée en VGA passthrough ?

C'est très simple, il suffit d'activer l'IOMMU (ou VT-D chez Intel) dans le BIOS de votre carte mère. Cette fonctionnalité permet de "remapper" les accès au matériel et à la mémoire pour limiter les accès au périphérique associé à la machine virtuelle.

En résumé, la machine virtuelle pourra utiliser la carte graphique, mais elle n'aura pas accès au reste du matériel du serveur.
Note : IOMMU (Input–output memory management unit) s'occupe des entrées / sorties et MMU (Memory management unit) s'occupe des accès à la mémoire.

2. Configuration requise

IOMMU ou VT-D est obligatoire pour utiliser le "VGA passthrough" ?

Oui, comme indiqué sur le site de Citrix, IOMMU (pour AMD) ou VT-D (pour les processeurs Intel) doit être obligatoirement activé dans le BIOS de votre carte mère.
Si le BIOS de votre carte mère ne supporte pas l'IOMMU ou VT-D, le VGA passthrough sera impossible.

De plus, sachez que certains BIOS ne supportent pas correctement l'IOMMU ou VT-D. Ce qui, comme indiqué sur la page "Xen PCI Passthrough" de Xen, force Xen à désactiver le support de la virtualisation des entrées / sorties (I/O virtualization).

Code : Plain Text

Citation :
Unfortunately there are many buggy BIOSes causing Xen to disable IO virtualization because of errors in the BIOS DMAR/ACPI tables. Xen tries to workaround these bugs in the BIOS, but sometimes it's not possible. Please report all the details about your hardware and software to xen-devel mailinglist if IO virtualization gets disabled due to buggy BIOS.

Quelle version de Xen faut-il utiliser ?

Comme indiqué sur le wiki de Xen, la version 4.0.0 de Xen est la première version à supporter le VGA passthrough.
Dans notre cas, nous utiliserons la version 6.5 de XenServer.

Quel matériel faut-il utiliser ?

De préférence, un matériel référencé sur le site Citrix XenServer Hardware Compatibility List.

Quelle carte mère faut-il utiliser ?

Une carte mère qui supporte la virtualisation du processeur (Intel vt-x ou AMD-V) et l'IOMMU ou VT-d étant donné que son support est obligatoire. Sans cette technologie, vous ne pourrez pas démarrer de machine virtuelle avec une carte graphique passée en passthrough.
De plus, vérifiez qu'elle dispose d'une carte graphique interne pour éviter de devoir utiliser une carte graphique Nvidia ou ATI pour la console de XenServer.

Quelle carte graphique faut-il utiliser ?

De préférence, une carte graphique présente dans une de ces listes de compatibilités :

Quel processeur faut-il utiliser ?

De préférence, un processeur présent sur le site Citrix XenServer Hardware Compatibility List.

Sinon, un processeur supportant ces technologies pourra aussi faire l'affaire :

  • la virtualisation : Intel VT-x ou AMD-V
  • et VT-d (Directed I/O) ou IOMMU

Conclusion

La principale difficulté pour faire du VGA passthrough se situe au niveau de la compatibilité avec le matériel existant (carte mère, carte graphique et processeur).

3. Configuration utilisée

Nous avons utilisé notre propre ordinateur pour tester ce VGA passthrough. Cette configuration n'utilise pas de composants référencés sur le site de Citrix ou de Xen, mais elle nous a permis d'approfondir ce sujet et d'arriver presque jusqu'à la fin de sa mise en place.
Si vous suivez ce tutoriel avec une configuration compatible avec le VGA passthrough, il vous permettra surement de le faire jusqu'au bout.

Voici notre configuration :

  • Processeur : Intel Core i5-4460
  • Carte mère : ASUS Z97-PRO ‏(Wi-Fi ac)
  • Carte graphique : Asus GTX750TI

La carte mère propose les options "Intel Virtualization Technology" et "VT-d" dans son BIOS.

Le site d'Intel indique que notre processeur "Intel Core i5-4460" supporte :
- la virtualisation : Intel® Virtualization Technology (VT-x)
- la virtualisation des entrées / sorties (I/O) : Intel® Virtualization Technology for Directed I/O (VT-d)

Et qu'il possède aussi un processeur graphique "Intel® HD Graphics 4600".