Sommaire
I. Présentation
Le but est de montrer comment attribuer une carte graphique physiquement dans le serveur Proxmox, à une machine virtuelle. Cela permet d’avoir les performances de la carte graphique.
Voici schématiquement comment cela fonctionne:
Nous allons donc voir comment on peut mettre cela en place sous Proxmox.
II. Pré-requis
Votre serveur doit avoir les pré-requis suivant:
- Un processeur supportant la virtualisation (Intel = VT-X, AMD = AMD-Vi)
- Une carte mère supportant les instruction de virtualisation (Intel = VT-d, AMD = IOMMU)
- Et bien sûr mettre notre carte graphique
Tout d’abord rendez-vous dans le BIOS/UEFI pour activer dans mon cas les IOMMU:
Voila maintenant passons à la configuration du Proxmox.
III. Configuration de Proxmox
ATTENTION: Il vous faudra deux cartes graphique sur votre serveur. Une pour l’affichage de votre Proxmox et la deuxième que l’on va dédier à une VM. Dans mon cas j’utilise la sortie HDMI d’une AMD RADEON HD 5450 et je vais dédier une NVIDIA GTX650 à ma VM.
Nous allons modifier le fichier grub par défaut:
nano /etc/default/grub
Et changer la ligne suivante:
GRUB_CMDLINE_LINUX_DEFAULT="quiet"
Par celle-la:
CPU INTEL : GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=onvfio_iommu_type1.allow_unsafe_interrupts=1"
CPU AMD : GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on vfio_iommu_type1.allow_unsafe_interrupts=1"
On va mettre à jour le grub:
update-grub
Puis on redémarre.
IV. Vérifications
Une fois redémarré, nous allons vérifier si nous avons bien les instructions de virtualisation. Pour cela nous allons regarder dans le fichier dmesg:
dmesg | grep "AMD-Vi\|Intel VT-d"
[ 1.123089] AMD-Vi: Found IOMMU at 0000:00:00.2 cap 0x40
[ 1.123090] AMD-Vi: Interrupt remapping enabled
[ 1.123203] AMD-Vi: Lazy IO/TLB flushing enabled
Deux choses sont indispensables:
- Found IOMMU at 0000:00:00.2 cap 0x40 –> Activé dans le BIOS/UEFI
- AMD-Vi: Interrupt remapping enabled –> Activé grâce à notre commande dans le grub
Nous allons également vérifier si notre carte graphique est bien vu par Proxmox:
nano lspci | grep VGA
01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Caicos [Radeon HD 6450/7450/8450 / R5 230 OEM]
02:00.0 VGA compatible controller: NVIDIA Corporation GK107 [GeForce GTX 650] (rev a1)
Nous pouvons passons à la configuration de notre VM
V. Configuration de la VM
Installer votre VM comme d’habitude ou prenez en une déjà installée.
RECOMMANDATION: Activé la connexion à distance dans le cas où vous n’auriez pas d’affichage de votre VM
Voici ce que doit contenir le fichier de votre VM: Où VMID = numéro de votre VM par exemple 138
nano /etc/pve/qemu-server/VMID.conf
args: -cpu host,kvm=off
balloon: 0
bios: seabios
bootdisk: virtio0
cores: 3
cpu: host
hostpci0: 02:00,pcie=1,x-vga=on
hotplug: disk,network,usb,memory,cpu
ide2: none,media=cdrom
machine: q35
memory: 4096
name: W10-NVIDIA-PASSTHROUGH
net0: e1000=1A:28:09:DF:64:17,bridge=vmbr0
numa: 1
ostype: win8
scsihw: virtio-scsi-pci
smbios1: uuid=ff55a7ae-42f5-4f15-8cf2-4e82b77e0756
sockets: 2
usb0: host=7-1
usb1: host=7-2
vcpus: 2
vga: none
virtio0: DATAS:138/vm-138-disk-1.raw,cache=writeback,size=32G
En gras souligné ce sont les éléments à rajouter ou modifier.
Il ne vous reste plus qu’à démarrer votre vM:
Ou par l’interface graphique comme vous préféré.
VI. La VM
Une fois dans votre VM téléchargé et installé les drivers de votre carte graphique et normalement vous avez cela:
VII. Aller plus loin
Maintenant que nous avons notre carte graphique pour notre VM nous pouvons brancher un écran derriere celle-ci. Mais il va nous manquer deux choses… le clavier et la souris. Oui c’est mieux non ?? 😀
Alors nous allons procéder de la même manière. Il suffit de repérer les numéro de BUS de notre matériel:
lsusb
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 007 Device 003: ID 04f3:02f4 Elan Microelectronics Corp. 2.4G Cordless Mouse
Bus 007 Device 002: ID 413c:2107 Dell Computer Corp.
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 009 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 008 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Alors ici nous avons en BUS 007 deux matériels : Devices 002 = clavier et Devices 003 = souris
Nous allons affiner notre recherche:
lsusb -t
/: Bus 09.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M
/: Bus 08.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 480M
/: Bus 07.Port 1: Dev 1, Class=root_hub, Driver=ohci-pci/4p, 12M
|__ Port 1: Dev 2, If 0, Class=Human Interface Device, Driver=usbfs, 1.5M
|__ Port 2: Dev 3, If 0, Class=Human Interface Device, Driver=usbfs, 1.5M
/: Bus 06.Port 1: Dev 1, Class=root_hub, Driver=ohci-pci/2p, 12M
/: Bus 05.Port 1: Dev 1, Class=root_hub, Driver=ohci-pci/5p, 12M
/: Bus 04.Port 1: Dev 1, Class=root_hub, Driver=ohci-pci/5p, 12M
/: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/4p, 480M
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/5p, 480M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/5p, 480M
Nous avons donc notre clavier en Bus 07 Port 1 et notre souris en Bus 07 Port 2.
Voici comment les rajouter dans notre fichier de configuration de notre VM:
usb0: host=7-1
usb1: host=7-2
VIII. Conclusion
Le fait qu’une VM peut directement utiliser une ressource physique et très intéressant du point de vue des performances. Bien sûr nous n’auront jamais 100% des performance de la carte mais de l’ordre de 90-95% ce qui est très acceptable.
Je n’ai pas compris à quel moment vous intégrer votre carte graphique en PASSTHROUGH OU ACCÈS DIRECT sur votre VM. Votre documentation manque d élément pour etre pris en compte.
Bonjour,
Il suffit avant tout de connecter (physiquement) la carte graphique que vous voulez dédier à la VM. Puis tout se passe la l’étape V dans la configuration de la VM. Ces deux paramètres explique à la VM qu’il faudra utiliser la carte graphique en direct et non pas d’émuler un écran: hostpci0: 02:00,pcie=1,x-vga=on & vga: none
Bonne journée.
Salut,
je voudrais savoir si il est vraiment obligatoire d’avoir 2 carte graphique ? vue que sur mon serveur je n’utilise pas d’écran je me connecte que sur l’interface web.
Merci d’avance 😀
Bonjour, dans votre cas effectivement une seule suffit.
Mais si vous devez intervenir physiquement sur votre serveur vous n’aurai pas de retour vidéo.
Cordialement.
Bonjour,
J’ai un serveur Proliant DL360G6 et j’ai installé physiquement une carte son Xfi Xtrem en PCIe de Sound Blaster.
J’ai fait mon installation de Promox en V6.
J’essaye de passer ma carte son du hôte vers une VM en suivant votre procédure malheureusement sans résultat, j’ai toujours le même problème « No IOMMU detected » quand je veux mettre la carte son dans ma VM.
La carte son est bien activé dans le bios et le passthrough semble actif.
D’avance merci de votre aide.
Bonjour,
Sous proxmox VE 6, la procédure est grandement simplifiée. Vous pouvez directement ajour un périphérique pci depuis l’interface à votre VM dans la rubrique Matériel/Hardware. L’option de virtualisation IOMMU à bien était pris en compte dans le BIOS ?