19.8. IBM Z의 가상 머신에 암호화 공동 프로세서 연결
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
vfio_ap
커널 모듈이 로드됩니다. 확인하려면 다음을 사용합니다.# lsmod | grep vfio_ap vfio_ap 24576 0 [...]
모듈을 로드하려면 다음을 사용합니다.
# modprobe vfio_ap
s390utils
버전은ap
처리를 지원합니다.# lszdev --list-types ... ap Cryptographic Adjunct Processor (AP) device ...
프로세스
VM에 할당할 장치의 10진수 값을 가져옵니다. 예를 들어 장치
05.0004
및05.00ab
의 경우 :# echo "obase=10; ibase=16; 04" | bc 4 # echo "obase=10; ibase=16; AB" | bc 171
호스트에서 장치를
vfio-ap
드라이버에 다시 할당합니다.# chzdev -t ap apmask=-5 aqmask=-4,-171
참고장치를 영구적으로 할당하려면
-p
플래그를 사용합니다.암호화 장치가 올바르게 다시 할당되었는지 확인합니다.
# 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
로 변경되면 재할당이 성공했습니다.새 미디어 장치를 정의하는 XML 스니펫을 만듭니다.
다음 예제에서는 영구 중재 장치를 정의하고 큐를 할당하는 방법을 보여줍니다. 특히 이 예제의
vfio_ap.xml
XML 스니펫에서는 도메인 어댑터0x05
, 도메인 대기열0x0004
및0x00ab
, 제어 도메인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>
vfio_ap.xml
XML 스니펫에서 새 중재 장치를 만듭니다.# virsh nodedev-define vfio_ap.xml Node device 'mdev_8f9c4a73_1411_48d2_895d_34db9ac18f85_matrix' defined from 'vfio_ap.xml'
이전 단계에서 생성한 미디어 장치를 시작합니다. 이 경우
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
구성이 올바르게 적용되었는지 확인합니다.
# 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
에 할당한 대기열의 숫자 값이 출력에 포함된 경우 프로세스가 성공적으로 수행되었습니다.중앙 집중식 장치를 VM에 연결합니다.
생성한 중재 장치의 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>
암호화 카드 중재 장치에 대한 XML 파일을 만들고 엽니다. 예를 들면 다음과 같습니다.
# vim crypto-dev.xml
다음 행을 파일에 추가하고 저장합니다.
uuid
값을 단계a에서 얻은 UUID로 바꿉니다.<hostdev mode='subsystem' type='mdev' managed='no' model='vfio-ap'> <source> <address uuid='8f9c4a73-1411-48d2-895d-34db9ac18f85'/> </source> </hostdev>
XML 파일을 사용하여 미디어 장치를 VM에 연결합니다. 예를 들어
crypto-dev.xml
파일에 정의된 장치를 실행 중인testguest1
VM에 영구적으로 연결하려면 다음을 수행합니다.# virsh attach-device testguest1 crypto-dev.xml --live --config
--live
옵션은 부팅 간 지속성 없이 실행 중인 VM에만 장치를 연결합니다.--config
옵션을 사용하면 구성을 영구적으로 변경합니다.--config
옵션만으로는 장치를 종료 VM에 연결할 수 있습니다.각 UUID는 한 번에 하나의 VM에만 할당할 수 있습니다.
검증
게스트 운영 체제가 할당된 암호화 장치를 감지하는지 확인합니다.
# 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
게스트 운영 체제의 이 명령의 출력은 사용 가능한 동일한 암호화 coprocessor 장치가 있는 호스트 논리 파티션에서와 동일합니다.
게스트 운영 체제에서 제어 도메인이 암호화 장치에 성공적으로 할당되었는지 확인합니다.
# 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
가 암호화 장치 매트릭스에U
및B
교집합을 표시하는 경우 제어 도메인 할당에 성공했습니다.