Red Hat Training
A Red Hat training course is available for RHEL 8
15.8. 将加密 coprocessors 附加到 IBM Z 上的虚拟机
要在 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
- 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 ...
流程
获取您要分配给虚拟机的设备的十进制值。例如,对于设备
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
的队列的数字值,则该过程成功。将介质设备附加到虚拟机。
为加密卡介质设备创建并打开一个 XML 文件。例如:
# vim crypto-dev.xml
在文件中添加以下行并保存:
<hostdev mode='subsystem' type='mdev' managed='no' model='vfio-ap'> <source> <address uuid='669d9b23-fe1b-4ecb-be08-a2fabca99b71'/> </source> </hostdev>
使用 XML 文件将介质设备附加到虚拟机。例如,要将
crypto-dev.xml
文件中定义的设备永久附加到正在运行的testguest1
虚拟机:# virsh attach-device testguest1 crypto-dev.xml --live --config
--live
选项仅将设备附加到正在运行的虚拟机,在引导间不持久。--config
选项使配置更改持久。您可以只使用--config
选项将设备附加到关闭的虚拟机。请注意,每个 UUID 每次只能分配给一个虚拟机。
将所需的控制域分配给介质设备。
# 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
验证
确定客户端操作系统是否检测到分配的加密设备。
# 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
客户端操作系统中这个命令的输出将与具有相同加密协处理器设备的主机逻辑分区上的输出相同。
在客户端操作系统中,确认控制域已成功分配给了加密设备。
# 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
交集,则控制域分配成功。