Red Hat Training
A Red Hat training course is available for RHEL 8
15.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 ...
手順
仮想マシンに割り当てるデバイスの 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
に変更されると、再割り当ては成功します。デバイスの UUID を生成します。
# uuidgen 669d9b23-fe1b-4ecb-be08-a2fabca99b71
以下の手順では、
669d9b23-fe1b-4ecb-be08-a2fabca99b71
は生成した UUID に置き換えます。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
仲介デバイスを起動します。
# mdevctl start --uuid 669d9b23-fe1b-4ecb-be08-a2fabca99b71
設定が正しく適用されたことを確認します。
# 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
に割り当てられたキューの数値が含まれる場合には、プロセスは成功です。virsh edit
コマンドを使用して、暗号化デバイスを使用する仮想マシンの XML 設定を開きます。# virsh edit vm-name
以下の行を XML 設定の
<devices>
セクションに追加して保存します。<hostdev mode='subsystem' type='mdev' managed='no' model='vfio-ap'> <source> <address uuid='669d9b23-fe1b-4ecb-be08-a2fabca99b71'/> </source> </hostdev>
各 UUID は、一度に 1 つの仮想マシンにしか割り当てることができないのでご注意ください。
仲介されたデバイスに必要な制御ドメインを割り当てます。
# 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
検証
- 仲介デバイスを割り当てた仮想マシンを起動します。
ゲストオペレーティングシステム (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 でのこのコマンドの出力は、利用可能な暗号化コプロセッサーデバイスが同じホストの論理パーティションで表示される出力と同じです。
ゲスト 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
交差を表示する場合、制御ドメインの割り当ては成功しています。