OpenStack支持机密虚拟机PCIe设备直通
以NVMe磁盘为例说明机密虚拟机设备直通功能,要求计算节点配置有可用的PCIe设备。
- 在计算节点配置设备信息。
- 安装vfio驱动。
modprobe vfio-pci
- 查看磁盘设备的BDF号,记为${BDF}。
ll /sys/class/nvme
- 修改配置文件“/etc/nova/nova.conf”,以下配置项均在“/etc/nova/nova.conf”中修改。
- 设置直通白名单passthrough_whitelist。
- 方式一:指定BDF号${BDF},仅将该BDF号对应的设备纳入设备池。
[pci] passthrough_whitelist = { "address": "${BDF}" }
- 方式二:指定厂商ID (${vendor_id})和设备ID(${product_id}),将所有同类设备添加到设备池中,此处使用该方式进行说明。
[pci] passthrough_whitelist = { "vendor_id": "${vendor_id}", "product_id": "${product_id}" }
厂商和设备ID可通过以下命令查看,图中红框标识为[${vendor_id}:${product_id}]。
lspci -nn | grep -i nvme
- 方式一:指定BDF号${BDF},仅将该BDF号对应的设备纳入设备池。
- 配置pci.alias,alias用于在flavor指定对应的pci设备,其中name自定义命名,其他参数根据实际情况配置。
[pci] alias = { "vendor_id":"${vendor_id}", "product_id":"${product_id}", "device_type":"type-PCI", "name":"${device_name}" }
- 计算节点配置完成后重启nova-compute服务。
systemctl restart openstack-nova-compute
- 设置直通白名单passthrough_whitelist。
- 安装vfio驱动。
- 在控制节点配置设备信息。
- 修改配置文件“/etc/nova/nova.conf”,以下配置项均在“/etc/nova/nova.conf”中修改。
- 配置filter_scheduler,在enabled_filters选项中追加过滤器PciPassthroughFilter。
[filter_scheduler] enabled_filters = ...,PciPassthroughFilter available_filters = nova.scheduler.filters.all_filters
- pci.alias需要同样配置在控制节点上,该配置要和计算节点配置保持一致。
[pci] alias = { "vendor_id":"${vendor_id}", "product_id":"${product_id}", "device_type":"type-PCI", "name":"${device_name}" }
- 配置完成后重启nova-scheduler和nova-api服务。
systemctl restart openstack-nova-api.service openstack-nova-scheduler.service
- 配置filter_scheduler,在enabled_filters选项中追加过滤器PciPassthroughFilter。
- 修改配置文件“/etc/nova/nova.conf”,以下配置项均在“/etc/nova/nova.conf”中修改。
- 创建设备直通的机密虚拟机。
- 创建具备设备直通属性的flavor,其中${device_name}为需要直通的设备名称,与上文的配置内容保持一致,${device_num}为需要直通的设备数量。
openstack flavor create cca-passthrough --vcpus 4 --ram 8192 --disk 50 \ --property trait:HW_CPU_AARCH64_HISI_VIRTCCA=required \ --property hw:mem_secure=true \ --property sw:qemu_cmdline="tmm-guest,id=tmm0,num-pmu-counters=1" \ --property "pci_passthrough:alias"="${device_name}:${device_num}"
- 基于上述flavor创建机密虚拟机。
openstack server create --image openEuler-image --flavor cca-passthrough --network public-network pci_server
- 创建具备设备直通属性的flavor,其中${device_name}为需要直通的设备名称,与上文的配置内容保持一致,${device_num}为需要直通的设备数量。
父主题: 配置OpenStack支持机密虚拟机