Red Hat Training

A Red Hat training course is available for RHEL 8

10.9. Adjuntar dispositivos DASD a máquinas virtuales en IBM Z

Los dispositivos de almacenamiento de acceso directo (DASD) proporcionan una serie de características de almacenamiento específicas. Utilizando la función vfio-ccw, puede asignar DASDs como dispositivos mediados a sus máquinas virtuales (VMs) en hosts IBM Z. Esto, por ejemplo, hace posible que la VM acceda a un conjunto de datos de z/OS, o que comparta los DASDs asignados con una máquina z/OS.

Requisitos previos

  • Su sistema anfitrión utiliza la arquitectura de hardware IBM Z y soporta el protocolo FICON.
  • La máquina virtual de destino utiliza un sistema operativo invitado Linux.
  • Los módulos del kernel necesarios se han cargado en el host. Para comprobarlo, utilice:

    # lsmod | grep vfio

    La salida debe contener los siguientes módulos:

    • vfio_ccw
    • vfio_mdev
    • vfio_iommu_type1
  • Tiene un dispositivo DASD de repuesto para uso exclusivo de la VM.

Procedimiento

  1. Obtenga el identificador del dispositivo DASD. La utilidad lsdasd lo muestra como Bus-ID.

    # lsdasd
    Bus-ID    Status    Name      Device  Type         BlkSz  Size      Blocks
    ================================================================================
    0.0.002c  active    dasdh     94:0    ECKD         4096   21129MB   5409180

    En los siguientes comandos de este procedimiento, sustituya 0.0.002c por el identificador de dispositivo detectado de su dispositivo.

  2. Obtener la ruta del subcanal del dispositivo DASD.

    # lscss | grep 0.0.002c
    0.0.002c 0.0.24ac  3390/0c 3990/e9 yes  f0  f0  ff   01021112 00000000

    En este ejemplo, la ruta del subcanal se detecta como 0.0.24ac. En los siguientes comandos de este procedimiento, sustituya 0.0.24ac por la ruta de subcanal detectada de su dispositivo.

  3. Desvincula el dispositivo DASD de su subcanal en el host.

    # echo 0.0.002c > /sys/bus/ccw/devices/0.0.002c/driver/unbind
  4. Desvincula el subcanal del controlador del subcanal de E/S.

    # echo 0.0.24ac > /sys/bus/css/devices/0.0.24ac/driver/unbind
  5. Vincula el subcanal al controlador de paso de vfio_ccw.

    # echo 0.0.24ac > /sys/bus/css/drivers/vfio_ccw/bind
  6. Generar un UUID.

    # uuidgen
    30820a6f-b1a5-4503-91ca-0c10ba12345a
  7. Crear el dispositivo mediado por DASD utilizando el UUID generado

    # echo "30820a6f-b1a5-4503-91ca-0c10ba12345a" > /sys/bus/css/devices/0.0.24ac/mdev_supported_types/vfio_ccw-io/create
  8. Adjunte el dispositivo mediado a la VM. Para ello, utilice la utilidad virsh edit para editar la configuración XML de la VM, añada la siguiente sección al XML y sustituya el valor uuid por el UUID que generó en el paso anterior.

    <hostdev mode='subsystem' type='mdev' model='vfio-ccw'>
      <source>
        <address uuid="30820a6f-b1a5-4503-91ca-0c10ba12345a"/>
      </source>
    </hostdev>

Verificación

  1. Obtenga el identificador que libvirt asignó al dispositivo DASD mediado. Para ello, visualice la configuración XML de la VM y busque un dispositivo 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>

    En este ejemplo, el identificador asignado al dispositivo es 0.0.0009.

  2. Inicie sesión en el sistema operativo invitado de la VM y confirme que el dispositivo aparece en la lista. Por ejemplo:

    # lscss | grep 0.0.0009
    0.0.0009 0.0.0007  3390/0c 3990/e9      f0  f0  ff   12212231 00000000
  3. Poner el dispositivo en línea. Por ejemplo:

    # chccwdev -e 0.0009
    Setting device 0.0.0009 online
    Done