Menu Close
Settings Close

Language and Page Formatting Options

18.8. IBM Z 上の仮想マシンへの暗号化コプロセッサーの割り当て

IBM Z ホストの仮想マシンでハードウェア暗号化を使用するには、暗号化プロセッサーデバイスから仲介デバイスを作成して目的の仮想マシンに割り当てます。詳細な手順は、以下を参照してください。

前提条件

  • お使いのホストを IBM Z ハードウェアで実行している。
  • 暗号化コプロセッサーは、デバイスの割り当てと互換性があります。これを確認するには、コプロセッサーの タイプCEX4 以降として表示されているかをチェックします。

    # lszcrypt -V
    
    CARD.DOMAIN TYPE  MODE        STATUS  REQUESTS  PENDING HWTYPE QDEPTH FUNCTIONS  DRIVER
    --------------------------------------------------------------------------------------------
    05         CEX5C CCA-Coproc  online         1        0     11     08 S--D--N--  cex4card
    05.0004    CEX5C CCA-Coproc  online         1        0     11     08 S--D--N--  cex4queue
    05.00ab    CEX5C CCA-Coproc  online         1        0     11     08 S--D--N--  cex4queue
  • mdevctl パッケージがインストールされている。
  • vfio_ap カーネルモジュールが読み込まれている。確認するには、次のコマンドを実行します。

    # lsmod | grep vfio_ap
    vfio_ap         24576  0
    [...]

    モジュールを読み込むには、以下を使用します。

    # modprobe vfio_ap
  • s390utils バージョンは ap 処理をサポートしています。

    # lszdev --list-types
    ...
    ap           Cryptographic Adjunct Processor (AP) device
    ...

手順

  1. 仮想マシンに割り当てるデバイスの 10 進数値を取得します。たとえば、デバイス 05.0004 および 05.00ab の場合は以下のようになります。

    # echo "obase=10; ibase=16; 04" | bc
    4
    # echo "obase=10; ibase=16; AB" | bc
    171
  2. ホストで、デバイスを vfio-ap ドライバーに再割り当てします。

    # chzdev -t ap apmask=-5 aqmask=-4,-171
    注記

    デバイスを永続的に割り当てるには、-p フラグを使用します。

  3. 暗号化デバイスが正しく再度割り当てられたことを確認します。

    # lszcrypt -V
    
    CARD.DOMAIN TYPE  MODE        STATUS  REQUESTS  PENDING HWTYPE QDEPTH FUNCTIONS  DRIVER
    --------------------------------------------------------------------------------------------
    05          CEX5C CCA-Coproc  -              1        0     11     08 S--D--N--  cex4card
    05.0004     CEX5C CCA-Coproc  -              1        0     11     08 S--D--N--  vfio_ap
    05.00ab     CEX5C CCA-Coproc  -              1        0     11     08 S--D--N--  vfio_ap

    ドメインキューの DRIVER の値が vfio_ap に変更されると、再割り当ては成功します。

  4. デバイスの UUID を生成します。

    # uuidgen
    669d9b23-fe1b-4ecb-be08-a2fabca99b71

    以下の手順では、669d9b23-fe1b-4ecb-be08-a2fabca99b71 は生成した UUID に置き換えます。

  5. UUID を使用して、新しい vfio_ap デバイスを作成します。

    以下の例では、永続的な仲介デバイスを作成してそのデバイスにキューを割り当てます。たとえば、以下のコマンドではドメインアダプター (0x05) およびドメインキュー (0x0004 および 0x00ab) をデバイス (669d9b23-fe1b-4ecb-be08-a2fabca99b71) に割り当てます。

    # mdevctl define --uuid 669d9b23-fe1b-4ecb-be08-a2fabca99b71 --parent matrix --type vfio_ap-passthrough
    # mdevctl modify --uuid 669d9b23-fe1b-4ecb-be08-a2fabca99b71 --addattr=assign_adapter --value=0x05
    # mdevctl modify --uuid 669d9b23-fe1b-4ecb-be08-a2fabca99b71 --addattr=assign_domain --value=0x0004
    # mdevctl modify --uuid 669d9b23-fe1b-4ecb-be08-a2fabca99b71 --addattr=assign_domain --value=0x00ab
  6. 仲介デバイスを起動します。

    # mdevctl start --uuid 669d9b23-fe1b-4ecb-be08-a2fabca99b71
  7. 設定が正しく適用されたことを確認します。

    # cat /sys/devices/vfio_ap/matrix/mdev_supported_types/vfio_ap-passthrough/devices/669d9b23-fe1b-4ecb-be08-a2fabca99b71/matrix
    05.0004
    05.00ab

    出力に vfio-ap に割り当てられたキューの数値が含まれる場合には、プロセスは成功です。

  8. virsh edit コマンドを使用して、暗号化デバイスを使用する仮想マシンの XML 設定を開きます。

    # virsh edit vm-name
  9. 以下の行を XML 設定の <devices> セクションに追加して保存します。

    <hostdev mode='subsystem' type='mdev' managed='no' model='vfio-ap'>
      <source>
        <address uuid='669d9b23-fe1b-4ecb-be08-a2fabca99b71'/>
      </source>
    </hostdev>

    各 UUID は、一度に 1 つの仮想マシンにしか割り当てることができないのでご注意ください。

  10. 仲介されたデバイスに必要な制御ドメインを割り当てます。

    # mdevctl modify --uuid 669d9b23-fe1b-4ecb-be08-a2fabca99b71 --addattr=assign_control_domain --value=0x00ab
    # mdevctl modify --uuid 669d9b23-fe1b-4ecb-be08-a2fabca99b71 --addattr=assign_control_domain --value=0x0004

検証

  1. 仲介デバイスを割り当てた仮想マシンを起動します。
  2. ゲストオペレーティングシステム (OS) の起動後に、割り当てられた暗号化デバイスを検出するようにしてください。

    # lszcrypt -V
    
    CARD.DOMAIN TYPE  MODE        STATUS  REQUESTS  PENDING HWTYPE QDEPTH FUNCTIONS  DRIVER
    --------------------------------------------------------------------------------------------
    05          CEX5C CCA-Coproc  online         1        0     11     08 S--D--N--  cex4card
    05.0004     CEX5C CCA-Coproc  online         1        0     11     08 S--D--N--  cex4queue
    05.00ab     CEX5C CCA-Coproc  online         1        0     11     08 S--D--N--  cex4queue

    ゲスト OS でのこのコマンドの出力は、利用可能な暗号化コプロセッサーデバイスが同じホストの論理パーティションで表示される出力と同じです。

  3. ゲスト OS で、制御ドメインが暗号デバイスに正常に割り当てられていることを確認します。

    # lszcrypt -d C
    
    DOMAIN 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
    ------------------------------------------------------
        00  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
        10  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
        20  .  .  .  .  .  .  .  .  .  .  .  B  .  .  .  .
        30  .  .  B  B  .  .  .  .  .  .  .  .  .  .  .  .
        40  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
        50  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
        60  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
        70  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
        80  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
        90  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
        a0  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
        b0  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
        c0  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
        d0  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
        e0  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
        f0  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
    ------------------------------------------------------

    lszcrypt -d C が暗号デバイスマトリックスに B 交差を表示する場合、制御ドメインの割り当ては成功しています。