Red Hat Training

A Red Hat training course is available for RHEL 8

10.8. IBM Z の仮想マシンへの DASD デバイスの割り当て

vfio-ccw 機能を使用すると、直接アクセスストレージデバイス (DASD) を仲介デバイスとして IBM Z ホスト上の仮想マシンに割り当てることができます。これにより、たとえば仮想マシンは z/OS データセットにアクセスできるか、割り当てられた DASD を z/OS マシンに提供できるようになります。

前提条件

  • お使いのホストシステムが IBM Z ハードウェアアーキテクチャーを使用し、FICON プロトコルをサポートしている。
  • ターゲットの仮想マシンが Linux ゲストオペレーティングシステムを使用している。
  • mdevctl パッケージがインストールされている。

    # yum install mdevctl
  • driverctl パッケージがインストールされている。

    # yum install driverctl
  • ホストに必要なカーネルモジュールがロードされている。確認するには、次のコマンドを実行します。

    # lsmod | grep vfio

    出力に以下のモジュールが含まれている必要があります。

    • vfio_ccw
    • vfio_mdev
    • vfio_iommu_type1
  • 仮想マシンによる排他的使用のために予備の DASD デバイスがあり、デバイスの識別子が分かっている。

    この手順では、0.0.002c を例として使用しています。コマンドを実行する場合は、0.0.002c を DASD デバイスーの ID に置き換えます。

手順

  1. 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

    この例では、サブチャンネル ID は 0.0.29a8 として検出されます。以下のコマンドでは、0.0.29a8 を、検出されたデバイスのサブチャンネル ID に置き換えます。

  2. 前の手順の lscss コマンドでヘッダー出力のみが表示され、デバイスインフォメーションが表示されない場合は、以下の手順を実行します。

    1. cio_ignore 一覧からデバイスを削除します。

      # cio_ignore -r 0.0.002c
    2. ゲスト OS で、仮想マシンの edit the kernel command line を編集し、! マークを使用して、cio_ignore= で始まる行にデバイス識別子を追加します (まだ存在しない場合)。

      cio_ignore=all,!condev,!0.0.002c
    3. ホストで手順 1 を繰り返し、サブチャネル識別子を取得します。
  3. サブチャネルは vfio_ccw パススルードライバーにバインドします。

    # driverctl -b css set-override 0.0.29a8 vfio_ccw
    注記

    これにより、0.0.29a8 サブチャンネルが vfio_ccw に永続的にバインドされます。つまり、DASD はホストコンピューターでは使用できなくなります。ホストでデバイスを使用する必要がある場合は、まず 'vfio_ccw' への自動バインディングを削除し、サブチャンネルをデフォルトドライバーに再バインドする必要があります。

    # driverctl -b css unset-override 0.0.29a8

  4. UUID を生成します。

    # uuidgen
    30820a6f-b1a5-4503-91ca-0c10ba12345a
  5. 生成された UUID を使用して DASD 仲介デバイスを作成します。

    # mdevctl start --uuid 30820a6f-b1a5-4503-91ca-0c10ba12345a --parent 0.0.29a8 --type vfio_ccw-io
  6. 仲介デバイスを永続化します。

    # mdevctl define --auto --uuid 30820a6f-b1a5-4503-91ca-0c10ba12345a
  7. 実行中の場合は、仮想マシンをシャットダウンします。
  8. 仲介デバイスを仮想マシンに接続します。これを行うには、virsh edit ユーティリティーを使用して仮想マシンの XML 設定を編集し、以下のセクションを XML に追加します。uuid の値は、前の手順で生成した UUID に置き換えます。

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

検証

  1. libvirt が仲介 DASD デバイスに割り当てた識別子を取得します。これを行うには、仮想マシンの XML 設定を表示して、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>

    この例では、デバイスに割り当てられた識別子は 0.0.0009 です。

  2. 仮想マシンを起動し、ゲスト OS にログインします。
  3. ゲスト OS で、DASD デバイスがリストされていることを確認します。以下に例を示します。

    # lscss | grep 0.0.0009
    0.0.0009 0.0.0007  3390/0c 3990/e9      f0  f0  ff   12212231 00000000
  4. ゲスト OS で、デバイスをオンラインに設定します。以下に例を示します。

    # chccwdev -e 0.0009
    Setting device 0.0.0009 online
    Done