搜索

16.8. 将加密 coprocessors 附加到 IBM Z 上的虚拟机

download PDF

要在 IBM Z 主机上的虚拟机中使用硬件加密,请从加密的 coprocessor 设备创建介质设备并将其分配给预期的虚拟机。具体步骤请查看以下说明。

先决条件

  • 您的主机运行在 IBM Z 硬件上。
  • 加密 coprocessor 与设备分配兼容。要进行确认,请确保协处理器的 类型 列为 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
  • 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. 获取您要分配给虚拟机的设备的十进制值。例如,对于设备 05.000405.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. 创建一个定义新介质设备的 XML 片段。

    以下示例演示了定义一个永久介质设备,并将队列分配给它。具体来说,本例中的 vfio_ap.xml XML 片段向介质设备分配一个域适配器 0x05、域队列 0x00040x00ab,以及一个控制域 0x00ab

    # vim vfio_ap.xml
    
    <device>
      <parent>ap_matrix</parent>
      <capability type="mdev">
        <type id="vfio_ap-passthrough"/>
        <attr name='assign_adapter' value='0x05'/>
        <attr name='assign_domain' value='0x0004'/>
        <attr name='assign_domain' value='0x00ab'/>
        <attr name='assign_control_domain' value='0x00ab'/>
      </capability>
    </device>
  5. vfio_ap.xml XML 片段创建一个新的介质设备。

    # virsh nodedev-define vfio_ap.xml
    Node device 'mdev_8f9c4a73_1411_48d2_895d_34db9ac18f85_matrix' defined from 'vfio_ap.xml'
  6. 启动您在上一步中创建的介质设备,本例中为 mdev_8f9c4a73_1411_48d2_895d_34db9ac18f85_matrix

    # virsh nodedev-start mdev_8f9c4a73_1411_48d2_895d_34db9ac18f85_matrix
    Device mdev_8f9c4a73_1411_48d2_895d_34db9ac18f85_matrix started
  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. 将介质设备附加到虚拟机。

    1. 显示您创建的介质设备的 UUID,并保存,以供下一步使用。

      # virsh nodedev-dumpxml mdev_8f9c4a73_1411_48d2_895d_34db9ac18f85_matrix
      
      <device>
        <name>mdev_8f9c4a73_1411_48d2_895d_34db9ac18f85_matrix</name>
        <parent>ap_matrix</parent>
        <capability type='mdev'>
          <type id='vfio_ap-passthrough'/>
          <uuid>8f9c4a73-1411-48d2-895d-34db9ac18f85</uuid>
          <iommuGroup number='0'/>
          <attr name='assign_adapter' value='0x05'/>
          <attr name='assign_domain' value='0x0004'/>
          <attr name='assign_domain' value='0x00ab'/>
          <attr name='assign_control_domain' value='0x00ab'/>
        </capability>
      </device>
    2. 为加密卡介质设备创建并打开一个 XML 文件。例如:

      # vim crypto-dev.xml
    3. 将以下行添加到文件中,并保存。将 uuid 值替换为您在步骤 a 中获取的 UUID。

      <hostdev mode='subsystem' type='mdev' managed='no' model='vfio-ap'>
        <source>
          <address uuid='8f9c4a73-1411-48d2-895d-34db9ac18f85'/>
        </source>
      </hostdev>
    4. 使用 XML 文件将介质设备附加到虚拟机。例如,要将 crypto-dev.xml 文件中定义的设备永久附加到正在运行的 testguest1 虚拟机:

      # virsh attach-device testguest1 crypto-dev.xml --live --config

      --live 选项仅将设备附加到正在运行的虚拟机,在引导间不持久。--config 选项使配置更改持久。您可以只使用 --config 选项将设备附加到关闭的虚拟机。

      请注意,每个 UUID 每次只能分配给一个虚拟机。

验证

  1. 确定客户端操作系统是否检测到分配的加密设备。

    # 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

    客户端操作系统中这个命令的输出将与具有相同加密协处理器设备的主机逻辑分区上的输出相同。

  2. 在客户端操作系统中,确认控制域已成功分配给了加密设备。

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

    如果 lszcrypt -d C 在加密设备矩阵中显示 UB 的相交,则控制域分配成功。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.