鲲鹏社区首页
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

OpenStack支持机密虚拟机PCIe设备直通

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

  1. 在计算节点配置设备信息。
    1. 安装vfio驱动。
      modprobe vfio-pci
    2. 查看磁盘设备的BDF号,记为${BDF}。
      ll /sys/class/nvme

    3. 修改配置文件“/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

      3. 计算节点配置完成后重启nova-compute服务。
        systemctl restart openstack-nova-compute
  2. 在控制节点配置设备信息。
    1. 修改配置文件“/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. 创建设备直通的机密虚拟机。
    1. 创建具备设备直通属性的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}"
    2. 基于上述flavor创建机密虚拟机。
      openstack server create --image openEuler-image --flavor cca-passthrough --network public-network pci_server