18.8. IBM Z의 가상 머신에 암호화 coprocessors 연결

IBM Z 호스트의 VM(가상 머신)에서 하드웨어 암호화를 사용하려면 암호화 coprocessor 장치에서 중재된 장치를 생성하여 원하는 VM에 할당합니다. 자세한 지침은 아래를 참조하십시오.

사전 요구 사항

  • 호스트는 IBM Z 하드웨어에서 실행됩니다.
  • 암호화 coprocessor는 장치 할당과 호환됩니다. 이를 확인하려면 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
  • 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. VM에 할당할 장치에 대한 10진수 값을 가져옵니다. 예를 들어 장치 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. 장치 UUID를 생성합니다.

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

    이 절차의 다음 단계에서 669d9b23-fe1b-4ecb-be08-a2fabca99b71 을 생성된 UUID로 바꿉니다.

  5. UUID를 사용하여 새 vfio_ap 장치를 만듭니다.

    다음 예제에서는 영구 중재 장치를 생성하고 큐를 할당하는 방법을 보여줍니다. 예를 들어, 다음 명령은 도메인 어댑터 0x05 및 도메인 대기열 0x00040x00ab 을 장치 669d9b23-fe1b-4ecb-be08-a2fab99b71 에 할당합니다.

    # 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 명령을 사용하여 암호화 장치를 사용하려는 VM의 XML 구성을 엽니다.

    # virsh edit vm-name
  9. XML 구성의 &lt ;devices& gt; 섹션에 다음 행을 추가하고 저장합니다.

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

    각 UUID는 한 번에 하나의 VM에만 할당할 수 있습니다.

  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. 중재된 장치가 할당된 VM을 시작합니다.
  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에서 이 명령의 출력은 사용 가능한 동일한 암호화 coprocessor 장치가 있는 호스트 논리 파티션의 출력과 동일합니다.

  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 교집합을 표시하는 경우 컨트롤 도메인 할당에 성공했습니다.