19.9. 将加密 coprocessors 附加到 IBM Z 上的虚拟机
要在 IBM Z 主机上的虚拟机中使用硬件加密,请从加密的 coprocessor 设备创建介质设备并将其分配给预期的虚拟机。具体步骤请查看以下说明。
先决条件
- 您的主机运行在 IBM Z 硬件上。
加密 coprocessor 与设备分配兼容。要进行确认,请确保协处理器的
类型
列为CEX4
或更高版本。Copy to Clipboard Copied! Toggle word wrap Toggle overflow vfio_ap
内核模块已加载 。要验证,请使用:lsmod | grep vfio_ap
# lsmod | grep vfio_ap vfio_ap 24576 0 [...]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要载入模块,请使用:
modprobe vfio_ap
# modprobe vfio_ap
Copy to Clipboard Copied! Toggle word wrap Toggle overflow s390utils
版本支持ap
处理:lszdev --list-types
# lszdev --list-types ... ap Cryptographic Adjunct Processor (AP) device ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
流程
获取您要分配给虚拟机的设备的十进制值。例如,对于设备
05.0004
和05.00ab
:echo "obase=10; ibase=16; 04" | bc echo "obase=10; ibase=16; AB" | bc
# echo "obase=10; ibase=16; 04" | bc 4 # echo "obase=10; ibase=16; AB" | bc 171
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在主机上,将设备重新分配给
vfio-ap
驱动程序:chzdev -t ap apmask=-5 aqmask=-4,-171
# chzdev -t ap apmask=-5 aqmask=-4,-171
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意要永久分配设备,请使用
-p
标志。验证是否正确重新分配了加密设备。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果域队列的 DRIVER 值变为
vfio_ap
,则重新分配成功。创建一个定义新介质设备的 XML 片段。
以下示例演示了定义一个永久的介质设备,并为它分配队列。具体来说,本例中的
vfio_ap.xml
XML 片断向到介质设备分配一个域适配器0x05
、域队列0x0004
和0x00ab
,以及一个控制域0x00ab
。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从
vfio_ap.xml
XML 片断创建一个新的介质设备。virsh nodedev-define vfio_ap.xml
# virsh nodedev-define vfio_ap.xml Node device 'mdev_8f9c4a73_1411_48d2_895d_34db9ac18f85_matrix' defined from 'vfio_ap.xml'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启动您在上一步中创建的介质设备,在本例中为
mdev_8f9c4a73_1411_48d2_895d_34db9ac18f85_matrix
。virsh nodedev-start 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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查配置是否已正确应用
cat /sys/devices/vfio_ap/matrix/mdev_supported_types/vfio_ap-passthrough/devices/669d9b23-fe1b-4ecb-be08-a2fabca99b71/matrix 05.0004 05.00ab
# cat /sys/devices/vfio_ap/matrix/mdev_supported_types/vfio_ap-passthrough/devices/669d9b23-fe1b-4ecb-be08-a2fabca99b71/matrix 05.0004 05.00ab
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果输出中包含您之前分配给
vfio-ap
的队列的数字值,则该过程成功。将介质设备附加到虚拟机。
显示您创建的介质设备的 UUID,并保存它,以供下一步使用。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为加密策略中介设备创建并打开一个 XML 文件。例如:
vim crypto-dev.xml
# vim crypto-dev.xml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将以下行添加到文件中并保存。将
uuid
值替换为您在步骤 a 中获取的 UUID。<hostdev mode='subsystem' type='mdev' managed='no' model='vfio-ap'> <source> <address uuid='8f9c4a73-1411-48d2-895d-34db9ac18f85'/> </source> </hostdev>
<hostdev mode='subsystem' type='mdev' managed='no' model='vfio-ap'> <source> <address uuid='8f9c4a73-1411-48d2-895d-34db9ac18f85'/> </source> </hostdev>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 XML 文件将介质设备附加到虚拟机。例如,要将
crypto-dev.xml
文件中定义的设备永久附加到正在运行的testguest1
虚拟机:virsh attach-device testguest1 crypto-dev.xml --live --config
# virsh attach-device testguest1 crypto-dev.xml --live --config
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --live
选项仅将设备附加到正在运行的虚拟机,不会在引导之间保持持久性。--config
选项使配置更改持久化。您可以只使用--config
选项将设备附加到关闭的虚拟机。请注意,每个 UUID 每次只能分配给一个虚拟机。
验证
确保客户端操作系统检测到了分配的加密设备。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 客户端操作系统中这个命令的输出将与具有同样加密协处理器设备的主机逻辑分区上的输出相同。
在客户端操作系统中,确认控制域已成功分配给加密设备。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果
lszcrypt -d C
在加密设备矩阵中显示U
和B
相交,则控制域分配是成功的。