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
vfio
ont été chargés sur l'hôte.lsmod | grep vfio
# lsmod | grep vfio
Copy 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-name
Copy 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
address
par 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 valeursuid
etfid
, 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,
libvirt
les 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-name
Copy 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