14.8. Attacher des périphériques DASD à des machines virtuelles sur IBM Z
En utilisant la fonction vfio-ccw
, vous pouvez attribuer des périphériques de stockage à accès direct (DASD) en tant que périphériques médiatisés à vos machines virtuelles (VM) sur des hôtes IBM Z. Cela permet par exemple à la VM d'accéder à un ensemble de données z/OS ou de fournir des DASD assignés à une machine z/OS. Cela permet par exemple à la VM d'accéder à un ensemble de données z/OS ou de fournir les DASD attribués à une machine z/OS.
Conditions préalables
- Vous disposez d'un système doté d'une architecture matérielle IBM Z compatible avec le protocole FICON.
- Vous disposez d'une VM cible d'un système d'exploitation Linux.
Le paquetage driverctl est installé.
# dnf install driverctl
Les modules nécessaires du noyau
vfio
ont été chargés sur l'hôte.# lsmod | grep vfio
La sortie de cette commande doit contenir les modules suivants :
-
vfio_ccw
-
vfio_mdev
-
vfio_iommu_type1
-
Vous disposez d'un périphérique DASD de rechange destiné à l'usage exclusif de la VM et vous connaissez l'identifiant de ce périphérique.
La procédure suivante utilise
0.0.002c
comme exemple. Lors de l'exécution des commandes, remplacez0.0.002c
par l'identifiant de votre périphérique DASD.
Procédure
Obtenir l'identifiant du sous-canal du dispositif DASD.
# lscss -d 0.0.002c Device Subchan. DevType CU Type Use PIM PAM POM CHPIDs ---------------------------------------------------------------------- 0.0.002c 0.0.29a8 3390/0c 3990/e9 yes f0 f0 ff 02111221 00000000
Dans cet exemple, l'identifiant du sous-canal est détecté comme étant
0.0.29a8
. Dans les commandes suivantes de cette procédure, remplacez0.0.29a8
par l'identifiant de sous-canal détecté pour votre appareil.Si la commande
lscss
de l'étape précédente n'a affiché que l'en-tête et aucune information sur le périphérique, procédez comme suit :Retirer l'appareil de la liste
cio_ignore
.# cio_ignore -r 0.0.002c
Dans le système d'exploitation invité, modifiez la ligne de commande du noyau de la VM et ajoutez l'identifiant du périphérique avec une marque
!
à la ligne qui commence parcio_ignore=
, s'il n'est pas déjà présent.cio_ignore=all,!condev,!0.0.002c
- Répétez l'étape 1 sur l'hôte pour obtenir l'identifiant du sous-canal.
Lier le sous-canal au pilote
vfio_ccw
passthrough.# driverctl -b css set-override 0.0.29a8 vfio_ccw
NoteCela lie le sous-canal 0.0.29a8 à
vfio_ccw
de manière persistante, ce qui signifie que le DASD ne sera pas utilisable sur l'hôte. Si vous devez utiliser le périphérique sur l'hôte, vous devez d'abord supprimer la liaison automatique à 'vfio_ccw' et lier à nouveau le sous-canal au pilote par défaut :# driverctl -b css unset-override 0.0.29a8
Définir et démarrer le dispositif à médiation DASD.
# cat nodedev.xml <device> <parent>css_0_0_29a8</parent> <capability type="mdev"> <type id="vfio_ccw-io"/> </capability> </device> # virsh nodedev-define nodedev.xml Node device 'mdev_30820a6f_b1a5_4503_91ca_0c10ba12345a_0_0_29a8' defined from 'nodedev.xml' # virsh nodedev-start mdev_30820a6f_b1a5_4503_91ca_0c10ba12345a_0_0_29a8 Device mdev_30820a6f_b1a5_4503_91ca_0c10ba12345a_0_0_29a8 started
- Arrêter la VM, si elle est en cours d'exécution.
Affichez l'UUID de l'appareil précédemment défini et enregistrez-le pour l'étape suivante.
# virsh nodedev-dumpxml mdev_30820a6f_b1a5_4503_91ca_0c10ba12345a_0_0_29a8 <device> <name>mdev_30820a6f_b1a5_4503_91ca_0c10ba12345a_0_0_29a8</name> <parent>css_0_0_29a8</parent> <capability type='mdev'> <type id='vfio_ccw-io'/> <uuid>30820a6f-b1a5-4503-91ca-0c10ba12345a</uuid> <iommuGroup number='0'/> <attr name='assign_adapter' value='0x02'/> <attr name='assign_domain' value='0x002b'/> </capability> </device>
Attachez le dispositif médiatisé à la VM. Pour ce faire, utilisez l'utilitaire
virsh edit
pour modifier la configuration XML de la VM, ajoutez la section suivante au XML et remplacez la valeuruuid
par l'UUID que vous avez obtenu à l'étape précédente.<hostdev mode='subsystem' type='mdev' model='vfio-ccw'> <source> <address uuid="30820a6f-b1a5-4503-91ca-0c10ba12345a"/> </source> </hostdev>
Optional: Configurer le périphérique médiatisé pour qu'il démarre automatiquement au démarrage de l'hôte.
# virsh nodedev-autostart mdev_30820a6f_b1a5_4503_91ca_0c10ba12345a_0_0_29a8
Vérification
Assurez-vous que le dispositif médiatisé est correctement configuré.
# virsh nodedev-info mdev_30820a6f_b1a5_4503_91ca_0c10ba12345a_0_0_29a8 Name: mdev_30820a6f_b1a5_4503_91ca_0c10ba12345a_0_0_29a8 Parent: css_0_0_0121 Active: yes Persistent: yes Autostart: yes
Obtenez l'identifiant que
libvirt
a attribué au périphérique DASD médiatisé. Pour ce faire, affichez la configuration XML de la VM et recherchez un périphériquevfio-ccw
.# virsh dumpxml vm-name <domain> [...] <hostdev mode='subsystem' type='mdev' managed='no' model='vfio-ccw'> <source> <address uuid='10620d2f-ed4d-437b-8aff-beda461541f9'/> </source> <alias name='hostdev0'/> <address type='ccw' cssid='0xfe' ssid='0x0' devno='0x0009'/> </hostdev> [...] </domain>
Dans cet exemple, l'identifiant attribué à l'appareil est
0.0.0009
.- 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 DASD est répertorié. Par exemple, dans le système d'exploitation invité, confirmez que le périphérique DASD est répertorié :
# lscss | grep 0.0.0009 0.0.0009 0.0.0007 3390/0c 3990/e9 f0 f0 ff 12212231 00000000
Dans le système d'exploitation invité, mettez le périphérique en ligne. Par exemple :
# chccwdev -e 0.0009 Setting device 0.0.0009 online Done
Ressources supplémentaires