Menu
InformatiWeb Pro
  • Index
  • Admin système
  • Virtualisation

Connexion

Inscription Mot de passe perdu ?
US
  • Windows Server
    • WMS 2012
    • WS2012 R2
    • WS2016
  • Citrix
    • Citrix NetScaler Gateway
    • Citrix XenApp / XenDesktop
    • Citrix XenServer
  • VMware
    • VMware ESXi
    • VMware vSphere
    • VMware Workstation
  • Microsoft
    • Hyper-V
  • RAID
    • Adaptec SmartRAID
  • UPS
    • APC Back-UPS Pro
  • InformatiWeb Pro
  • Virtualisation
  • Citrix
  • PCI passthrough avec Citrix XenServer 6.5

PCI passthrough avec Citrix XenServer 6.5

  • Citrix
  • Citrix XenServer
  • 25 novembre 2015 à 13:51
  • InformatiWeb
  • 2/3
Page précédente

4.2. Passage du contrôleur USB 2 du serveur à la machine virtuelle Debian

Pour "passer" un périphérique PCI du serveur à une machine virtuelle, il faut connaitre son ID.

Pour commencer, dans la console de XenServer, tapez la commande :

Bash

lspci

Cette commande affichera une liste de périphériques PCI dont le contrôleur USB 2 de notre serveur :

Plain Text

02:03.0 USB Controller: VMware USB2 EHCI Controller

"02:03.0" étant l'ID de ce périphérique PCI du coté serveur physique.

Ensuite, pour pouvoir passer un périphérique PCI à une machine virtuelle, il faut d'abord le masquer du serveur physique.
Pour cela, modifiez le fichier "/boot/extlinux.conf" pour ajouter l'option "pciback.hide(02:03.0)".

Bash

vi /boot/extlinux.conf

02:03.0 étant de nouveau l'ID PCI du contrôleur USB 2 de notre serveur physique.

Ensuite, tapez les commandes :

Bash

extlinux -i /boot
reboot

Note : pour masquer plusieurs périphériques PCI du serveur, utiliser cette syntaxe : pciback.hide=(02:02.0)(02:03.0)

Une fois que XenServer aura redémarré, reconnectez XenCenter à XenServer puis allez dans les propriétés de la machine virtuelle Debian.
Dans la partie "Boot Options", ajoutez l'option "iommu=soft".

Pour les options de démarrage, il y a 2 options qui existent.
Comme indiqué dans le wiki de Xen :

  • l'option "swiotlb=force" est obligatoire uniquement pour les machines para-virtualisées avec d'anciens noyaux (linux-2.6.18-xen, RHEL5, SLES10/11 et Debian etch/lenny).
  • pour les noyaux récents (ce qui est notre cas avec le noyau 3.4.9), il faut seulement utiliser l'option : iommu=soft

Toujours dans la console de XenServer, tapez la commande "xe vm-list" pour lister les machines virtuelles disponibles sur votre serveur.

Bash

xe vm-list

Pour passer 1 périphérique PCI à une machine virtuelle

Utilisez la commande "xe vm-param-set other-config:pci=0/0000:[PCI ID] uuid=[VM UUID]" pour passer le périphérique PCI souhaité à la machine virtuelle souhaitée.

Bash

xe vm-param-set other-config:pci=0/0000:02:03.0 uuid=1f08f35f-12ba-321a-49f4-3ac187776f38

Infos :

  • la valeur 0/0000: est suivi par l'ID du périphérique à passer à la machine virtuelle. Ici le périphérique PCI "02:03.0".
  • l'uuid est l'uuid de la machine virtuelle à laquelle vous voulez passer ce périphérique PCI.

Pour passer plusieurs périphériques PCI à une machine virtuelle

Utilisez la commande "xe vm-param-set other-config:pci=0/0000:[un ID PCI],0/0000:[un autre ID PCI] uuid=[VM UUID]".

Bash

xe vm-param-set other-config:pci=0/0000:02:02.0,0/0000:02:03.0 uuid=1f08f35f-12ba-321a-49f4-3ac187776f38

Où "02:02.0" correspond au contrôleur Audio et "02:03.0" au contrôleur USB2 du serveur.

Pour enlever les périphériques PCI passés à une machine virtuelle

Utilisez la commande "xe vm-param-remove uuid=[VM UUID] param-name=other-config param-key=pci".

Bash

xe vm-param-remove uuid=2b1bd48c-fb42-93bb-f91b-f7cbeaf3e0ac param-name=other-config param-key=pci

Démarrez la machine virtuelle Debian et vérifiez que le message "Device offline" n'apparait pas.
Comme vous pouvez le voir, Debian nous affiche ceci :

Plain Text

... pcifront pci-0: Could not claim resources 0000:00:00.0/0! Device offline. Try using e820_host=1 in the guest config.

Ainsi que des avertissements à propos d'une ressource 32 Bits.

La solution indiquée dans cette erreur n'a pas fonctionné dans notre cas, et après avoir chercher une solution sur Internet, nous avons trouvé ce signalement de bug : Bogue 1673 - 3GB memory restriction for pv domU with PCI

Comme indiqué dans ce rapport, ce problème se produit lorsque l'OS invité (Debian dans notre cas) possède plus de 3 GB de RAM. Ce qui est effectivement le cas.
Du coup, nous avons arrêté la machine Debian, nous avons mis 2 GB de RAM (2048 MB) pour cette machine virtuelle.

Ensuite, au démarrage de la machine virtuelle, cette erreur a disparue.

On se connecte en root sur la machine virtuelle Debian, et on liste les périphériques PCI avec la commande "lspci".

Bash

root@debian:~# lspci
00:00.0 USB Controller: VMware USB2 EHCI Controller

Comme vous pouvez le voir, le périphérique PCI a un ID différent dans la machine virtuelle (00:00.0) et dans le serveur physique (02:03.0).

Ensuite, on liste les périphériques USB avec la commande lsusb.

Bash

root@debian:~# lsusb
Bus 001 Device 002: ID 0930:6545 Toshiba Corp. Kingston DataTraveler 102 Flash Drive / HEMA Flash Drive 2 GB / PNY Attache 4 GB Stick
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Donc, Debian reconnait bien notre clé USB branchée physiquement sur le serveur XenServer.

Pour utiliser la clé USB, il suffit de monter la clé USB grâce à la commande "mount" de linux.
Mais pour cela, il faut connaitre le chemin de la partition présente sur la clé USB.

Pour le connaitre, tapez la commande "fdisk -l".
Cette commande nous affiche :

  • le disque dur de la machine virtuelle. Dont sa taille est 53.7 GB.
  • et la clé USB de 16 GB

Comme vous pouvez le voir sur cette image, la partition de notre clé USB est "/dev/sda1" et le système de fichiers est FAT32 (compatible avec Windows et linux).

Nous montons la clé USB grâce à ces commandes linux :

Bash

mkdir /mnt/my-usb-key
mount /dev/sda1 /mnt/my-usb-key

On va dans le dossier "/mnt/my-usb-key" et on liste les fichiers qui s'y trouvent.
Et comme vous pouvez le voir sur cette image, le fichier "tuto-iw.txt" que l'on avait créé sur la clé USB est bien affiché.
Tentons d'ouvrir ce fichier grâce à vi.

Le contenu s'affiche.
Voilà, notre machine virtuelle a accès directement à la clé USB branchée sur le serveur XenServer grâce à la technologie "PCI passthrough".

Page suivante

Partager ce tutoriel

Partager
Tweet

A voir également

  • Citrix XenServer 6.2 - Installation, configuration et maj

    Citrix 30/12/2014

    Citrix XenServer 6.2 - Installation, configuration et maj

  • Citrix XenServer 6.5 - Pools et haute disponibilité (HA)

    Citrix 27/10/2016

    Citrix XenServer 6.5 - Pools et haute disponibilité (HA)

  • Citrix XenServer 6.5 - Sécuriser la connexion via SSL (HTTPS)

    Citrix 30/4/2015

    Citrix XenServer 6.5 - Sécuriser la connexion via SSL (HTTPS)

  • Citrix XenServer 6.5 - VGA passthrough

    Citrix 21/5/2016

    Citrix XenServer 6.5 - VGA passthrough

Commentaires

Pas de commentaire

Donnez-nous votre avis

Contenu épinglé

  • Logiciels (Admin système)
  • Logiciels Linux
  • Nos programmes
  • Conditions générales
  • Donnez votre avis

Contact

  • Livre d'or
  • Support technique
  • Contact

® InformatiWeb-Pro.net - InformatiWeb.net 2008-2022 - © Lionel Eppe - Tous droits réservés.

Toute reproduction totale ou partielle de ce site est interdite et constituerait une contrefaçon sanctionnée par les articles L.335-2 et suivants du Code de la propriété intellectuelle.