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, remplacez 0.0.002c par l'identifiant de votre périphérique DASD.

Procédure

  1. 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, remplacez 0.0.29a8 par l'identifiant de sous-canal détecté pour votre appareil.

  2. 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 :

    1. Retirer l'appareil de la liste cio_ignore.

      # cio_ignore -r 0.0.002c
    2. 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 par cio_ignore=, s'il n'est pas déjà présent.

      cio_ignore=all,!condev,!0.0.002c
    3. Répétez l'étape 1 sur l'hôte pour obtenir l'identifiant du sous-canal.
  3. Lier le sous-canal au pilote vfio_ccw passthrough.

    # driverctl -b css set-override 0.0.29a8 vfio_ccw
    Note

    Cela 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

  4. 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
  5. Arrêter la VM, si elle est en cours d'exécution.
  6. 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>
  7. 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 valeur uuid 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>
  8. 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

  1. 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
  2. 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érique vfio-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.

  3. Démarrez la VM et connectez-vous à son système d'exploitation invité.
  4. 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
  5. 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
Red Hat logoGithubRedditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez leBlog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

© 2024 Red Hat, Inc.