14.10. Attacher des périphériques PCI à des machines virtuelles sur IBM Z
En utilisant le pilote de périphérique vfio-pci, vous pouvez affecter des périphériques PCI en mode pass-through à vos machines virtuelles (VM) sur les hôtes IBM Z. Cela permet par exemple à la VM d'utiliser des disques flash NVMe pour gérer les bases de données.
Conditions préalables
- Vous disposez d'un système hôte doté de l'architecture matérielle IBM Z.
- Vous disposez d'une VM cible du système d'exploitation Linux.
Les modules nécessaires du noyau
vfioont été chargés sur l'hôte.lsmod | grep vfio
# lsmod | grep vfioCopy to Clipboard Copied! Toggle word wrap Toggle overflow La sortie de cette commande doit contenir les modules suivants :
-
vfio_pci -
vfio_pci_core -
vfio_iommu_type1
-
Procédure
Obtenez l'identifiant de l'adresse PCI de l'appareil que vous souhaitez utiliser.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Ouvrez la configuration XML de la VM à laquelle vous souhaitez attacher le périphérique PCI.
virsh edit vm-name
# virsh edit vm-nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow Ajoutez la configuration suivante
<hostdev>à la section<devices>du fichier XML.Remplacez les valeurs de la ligne
addresspar l'adresse PCI de votre appareil. Par exemple, si l'adresse de l'appareil est0003:00:00.0, utilisez la configuration suivante :Copy to Clipboard Copied! Toggle word wrap Toggle overflow Optional: Pour modifier la façon dont le système d'exploitation invité détectera le périphérique PCI, vous pouvez également ajouter un sous-élément
<zpci>à l'élément<address>. Dans la ligne<zpci>, vous pouvez ajuster les valeursuidetfid, ce qui modifie l'adresse PCI et l'ID de fonction du périphérique dans le système d'exploitation invité.Copy to Clipboard Copied! Toggle word wrap Toggle overflow Dans cet exemple :
-
uid="0x0008"définit l'adresse PCI de domaine du périphérique dans la VM à0008:00:00.0. fid="0x001807"définit la valeur de l'emplacement de l'appareil à0x001807. Par conséquent, la configuration du périphérique dans le système de fichiers de la VM est enregistrée à l'adresse/sys/bus/pci/slots/00001087/address.Si ces valeurs ne sont pas spécifiées,
libvirtles configure automatiquement.
-
- Sauvegarder la configuration XML.
Si la VM est en cours d'exécution, arrêtez-la.
virsh shutdown vm-name
# virsh shutdown vm-nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Vérification
- Démarrez la VM et connectez-vous à son système d'exploitation invité.
Dans le système d'exploitation invité, vérifiez que le périphérique PCI est répertorié.
Par exemple, si l'adresse de l'appareil est
0003:00:00.0, utilisez la commande suivante :lspci -nkD | grep 0003:00:00.0
# lspci -nkD | grep 0003:00:00.0 0003:00:00.0 8086:9a09 (rev 01)Copy to Clipboard Copied! Toggle word wrap Toggle overflow