<Précédent | Table des matières | Suivant>
1.5.3. Passthrough de périphérique / Hotplug
Si au lieu de la connexion à chaud décrite ici, vous souhaitez toujours passer par un appareil, ajoutez le contenu XML de l'appareil à votre représentation xml d'invité statique via par exemple virsh modifier. Dans ce cas, vous n'avez pas besoin d'utiliser attacher/détacher. Il existe différents types de passthrough. Les types disponibles dépendent de votre configuration matérielle et logicielle.
• Connexion à chaud/passthrough USB
• VF hotplug/passthrough
![]()
3 https://libvirt.org/migration.html#offline
4 https://libvirt.org/migration.html
5 http://wiki.qemu.org/Features/PostCopyLiveMigration
6 https://wiki.ubuntu.com/QemuKVMMigration
Mais les deux types sont gérés de manière très similaire et bien qu'il existe différentes manières de le faire (par exemple, également via le moniteur qemu), il est recommandé de conduire un tel changement via libvirt. De cette façon, libvirt peut essayer de gérer toutes sortes de cas particuliers pour vous et masque également quelque peu les différences de version.
En général, lorsque vous conduisez hotplug via libvirt, vous créez un extrait XML qui décrit le périphérique comme vous le feriez dans une description d'invité statique.7 Un périphérique USB est généralement identifié par les identifiants du fournisseur/produit :
Les fonctions virtuelles sont généralement attribuées via leur PCI-ID (domaine, bus, slot, fonction).
![]()
Obtenir la fonction virtuelle en premier lieu dépend beaucoup de l'appareil et ne peut donc pas être entièrement couvert ici. Mais en général il s'agit de mettre en place un iommu, de s'inscrire via VFIO8 et parfois demander un certain nombre de VF. Voici un exemple sur ppc64el pour obtenir 4 VF sur un appareil :
$ sudo modprobe vfio-pci
# identifier l'appareil
$ lspci -n -s 0005:01:01.3 0005:01:01.3 0200: 10df:e228 (rév 10)
# s'inscrire et demander des VF
$ écho 10df e228 | sudo tee /sys/bus/pci/drivers/vfio-pci/new_id
$ écho 4 | sudo tee /sys/bus/pci/devices/0005\:01\:00.0/sriov_numvfs
Vous attachez ou détachez ensuite l'appareil via libvirt en associant l'invité à l'extrait de code xml.
virsh attach-device
# Utilisez l'appareil dans l'invité
virsh detach-device
![]()
Il existe plusieurs problèmes connus associés à la protection de l'apparence qui protège « trop ». Vous devrez peut-être modifier les exceptions dans les profils d'apparmor jusqu'à ce que les bogues 15522419 (pour USB) et https://bugs.launchpad.net/ubuntu/+source/apparmor/+bug/1679704 (pour l'affectation VF) sont résolus. Pour vérifier si vous êtes concerné, regardez dmesg pendant que vous utilisez la fonction USB/VF passthrough/hotplug et vérifiez si vous voyez apparmor denies10.
![]()
7 https://libvirt.org/formatdomain.html
8 https://www.kernel.org/doc/Documentation/vfio.txt
9 https://bugs.launchpad.net/ubuntu/+source/libvirt/+bug/1552241
10 http://wiki.apparmor.net/index.php/AppArmor_Failures#Messages_in_the_Log_files
Documentation