---
title: OpenStack支持机密虚拟机PCIe设备直通
description: "以NVMe磁盘为例说明机密虚拟机设备直通功能，要求计算节点配置有可用的PCIe设备。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/251RC2/confidt/kunpengtee_16_0064.html
sourcePath: /source/zh/kunpengboostkithistory/251RC2/confidt/kunpengtee_16_0064.html
indexId: 77084c234b535d4fbfeceb22c06766cde064175feb32bdb66f14841841efbd5f72
---
# OpenStack支持机密虚拟机PCIe设备直通

以NVMe磁盘为例说明机密虚拟机设备直通功能，要求计算节点配置有可用的PCIe设备。

1. 在计算节点配置设备信息。

  a. 安装vfio驱动。

```
modprobe vfio-pci
```


  b. 查看磁盘设备的BDF号，记为${BDF}。

```
ll /sys/class/nvme
```


  c. 修改配置文件“/etc/nova/nova.conf”，以下配置项均在“/etc/nova/nova.conf”中修改。

    1. 设置直通白名单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
```


    2. 配置pci.alias，alias用于在flavor指定对应的pci设备，其中name自定义命名，其他参数根据实际情况配置。

```
[pci]
alias = { "vendor_id":"${vendor_id}", "product_id":"${product_id}", "device_type":"type-PCI", "name":"${device_name}" }
```


      OpenStack设备直通配置可参考OpenStack的官方文档：https://docs.openstack.org/nova/wallaby/admin/pci-passthrough.html(https://docs.openstack.org/nova/wallaby/admin/pci-passthrough.html)。

    3. 计算节点配置完成后重启nova-compute服务。

```
systemctl restart openstack-nova-compute
```


2. 在控制节点配置设备信息。

  a. 修改配置文件“/etc/nova/nova.conf”，以下配置项均在“/etc/nova/nova.conf”中修改。

    1. 配置filter_scheduler，在enabled_filters选项中追加过滤器PciPassthroughFilter。

```
[filter_scheduler]
enabled_filters = ...,PciPassthroughFilter
available_filters = nova.scheduler.filters.all_filters
```


    2. pci.alias需要同样配置在控制节点上，该配置要和计算节点配置保持一致。

```
[pci]
alias = { "vendor_id":"${vendor_id}", "product_id":"${product_id}", "device_type":"type-PCI", "name":"${device_name}" }
```


    3. 配置完成后重启nova-scheduler和nova-api服务。

```
systemctl restart openstack-nova-api.service openstack-nova-scheduler.service
```


3. 创建设备直通的机密虚拟机。

  a. 创建具备设备直通属性的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}"
```


  b. 基于上述flavor创建机密虚拟机。

```
openstack server create --image openEuler-image --flavor
cca-passthrough
--network
public-network
pci_server
```
